Scale image on scroll, sticky to top

I’m trying to achieve a similar effect to the images on this page: https://sameold.com except I only want the images to scale in the y direction.

I’m currently experimenting with using a scale3d(1, (height of image minus y position of image / image height), 1 ) when ever I scroll either up or down.

However the image does not stick to the top of the screen when I scroll.

I’m unsure if I’m having the right approach. I also suspect that the ratio is changing as the height of the getBoundingBoxRect changes.

    let section = document.querySelectorAll("div");
    var scrollPos = 0;

    function fracOfHeight(imgH, y) {
    return (imgH + y) / imgH;
    }

    window.addEventListener("scroll", function () {
    if (document.body.getBoundingClientRect().top < scrollPos) {
        section.forEach(function (v) {
        let rect = v.getBoundingClientRect();
        let rectH = rect.height;
        let y = rect.top;
        let frac = fracOfHeight(rectH, y);

        if (y < 0) {
            console.log("down", y, v.style.transform);
            v.style.transform = `scale(${frac <= 1 && frac >= 0 ? frac : 0})`; // largern than 1 or smaller than 0
        } else {
            v.style.transform = `scale(0)`;
        }
        });

        scrollPos = document.body.getBoundingClientRect().top;
    }

    if (document.body.getBoundingClientRect().top > scrollPos) {
        section.forEach(function (v) {
        let rect = v.getBoundingClientRect();
        let rectH = rect.height;
        let y = rect.top;
        let frac = fracOfHeight(rectH, y);

        if (y < 0) {
            console.log(
            "down",
            y,
            v.style.transform,
            fracOfHeight(rectH, y),
            rect.height
            );
            v.style.transform = `scale(${frac <= 1 && frac >= 0 ? frac : 0})`;
        } else {
            v.style.transform = `scale(1)`;
        }
        scrollPos = document.body.getBoundingClientRect().top;
        });
    }
    });

jQuery MaskedInput placeholder text repeating

Trying to use MaskedInput plugin to format a date input form field but the placeholder text is repeated.

Using MVC 4,jQuery 3.6.3 and jQuery.maskedinput 1.3.1

I want the placeholder text to be “mm/dd/yyy”
here is the code and output
$("#BirthDate").mask("99/99/9999", {placeholder: "mm/dd/yyyy" });
enter image description here

here is a better example
$("#BirthDate").mask("99/99/9999", {placeholder: "h" });
enter image description here

how can I create a privet route [duplicate]

hey I have an issue in my code I can go to protected routes without registering or login so when I go to …/ or …/all-jobs I can see the content of the protected routes this is my code

App.js
function App() {
  return (
    <>
      <Routes>
        <Route path="/" element={
          <ProtectedRoute>
          <SharedLayout />
          </ProtectedRoute>
        }>
          <Route index element={<Stats />} />
          <Route path="all-jobs" element={<AllJobs />} />
          <Route path="add-job" element={<AddJob />} />
          <Route path="profile" element={<Profile />} />
        </Route>
        <Route path="/landing" element={<Landing />} />
        <Route path="/register" element={<Register />} />
        <Route path="*" element={<Error />} />
      </Routes>
    </>
  );
}

ProtectedRoutes.js 

export default function ProtectedRoute({ children }) {
  const [cookie] = useCookies(['user']);
  const navigate = useNavigate();


  useEffect(() => {
      if (!cookie.user) {
      return navigate('/landing'); 
    }
  }, [cookie.user, navigate]);

  return children;

I tried this response in stack overflow but I didn’t work

 import { Navigate, Outlet } from 'react-router-dom';

const PrivateRoutes = () => {

  return authLogin 
    ? <Outlet />
    : <Navigate to="/landing" />;
}

//and also this 
import { Navigate } from "react-router-dom";

function RequireAuth({ children }) {
  const [cookie] = useCookies(['user']);
  return cookie.user ? children : <Navigate to={redirectTo} />;
}

HTML CSS Js – Collapsible Tree, Show Collapsed on Open

I’m using the example here https://codepen.io/ac_coding/pen/wMmKgb to create a collapsible menu, however I’d like the menu to be fully collapsed on opening.

I’ve tried adding a few changes to the Javascript such as

$('toggleClass').click() 

but so far I’ve had no luck.

The Javascript is quite difficult to follow as I’m still quite new to it.

Any help would be much appreciated on how I can ensure the page opens with all options collapsed.

HTML:

<ul class="flowchart">
<li>*collapse*Element 01 (level 01)</li>
<ul>
<li>Child 01 of Element 01 (level 02)</li>
</ul>
<li>Element 02 (level 01)</li>
<ul>
<li>Child 01 of Element 02 (level 02)</li>
<ul>
<li>Child of Element 02 (level 03)</li>
<ul>
<li>Child of Element 02 (level 04)</li>
</ul>
</ul>
<li>Child 02 of Element 02 (level 02)</li>
</ul>
<li>Element 03 (level 01)</li>
</ul>

CSS

html, body {}

.flowchart{width: 500px;margin:0 auto 15px;}
.flowchart .longer{
/*  border-left:1px solid #C5C5C5; */
    padding-left: 15%;
    margin-left: -15px /*!important*/;
    display:none;
}
.flowchart .short{
    padding-left: 15%;
    margin-left: -15px /*!important*/;
    display:none;
}
.flowchart p, .flowchart a, .flowchart li, .flowchart span{color:#fff !important;*color:#000;text-align:left;text-decoration: none;text-decoration: none !important;border-bottom:none !important;}
.flowchart ul{list-style:none;margin: 0;padding: 0;}
.flowchart ul li{margin-top: 10px;}
.flowchart ul li p{margin:0;padding: 5px;padding-left: 30px;background: #f47321;}
.flowchart ul li ul li p{background: #A8B2BB;}
.flowchart ul ul{margin-left: 70px;}
.flowchart ul ul li{
    border-left:1px solid #C5C5C5;
    margin: 0 0 0 -15px;
    padding: 8px 0 0 15px;
}
.flowchart ul ul li:after{
    content: "-";
    color: #fff;
    float: left;
    margin-left: -16px;
    margin-top: -21px;
    border-left: 1px solid #C5C5C5;
    border-bottom: 1px solid #C5C5C5;
    padding-right: 10px;
}
.flowchart ul ul li p{background:#7686c2;}
.flowchart ul ul ul{margin-left: 15%;}
.flowchart .short ul ul ul ul ul ul ul ul, .flowchart .longer ul ul ul ul ul ul ul ul{padding-left: 40px;}

/** COMPARE LATER WITH MENUBOX OF SIDENAV **/
.flowchart .menuBox{
cursor: pointer;
width: 18px;
float: left;
height: 22px;
margin-left: 6px; /* IE8 and below */
margin-top:3px9;
}
.flowchart .unfoldArrow{
    width: 18px;
    float: left;
    height: 22px;
    margin-left: 6px;
    background: url(/images/sidebarMenu/downMenu-arrow-white.gif) no-repeat 9px 4px;
}
.flowchart .finalLink{
background-image: url(/images/sidebarMenu/menu-arrow-white.gif);
background-repeat: no-repeat;
background-position:9px 4px;
}
.flowchart .firstLevel{
background-color:#f47321;
}
.flowchart .secondLevel{
background-color:#7686c2;
}
.flowchart .thirstLevel{
background-color:#98a2d2;
}
.flowchart span {
margin-top: -2px;
display: list-item;
-webkit-box-shadow: 0 10px 0 1px #fff, 0 16px 0 1px #fff, 0 22px 0 1px #fff;
box-shadow: 0 10px 0 1px #fff, 0 16px 0 1px #fff, 0 22px 0 1px #fff;
    
background:url(/images/sidebarMenu/menu_icon_for_IE.gif) no-repeat9; /* IE8 and below */
margin-top: 3px9; /* IE8 and below */
height:16px9; /* IE8 and below */
}
.flowchart .clicked{
    margin-left: 9px;
    width: 1px;
    -webkit-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    -moz-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    -o-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    -ms-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    
    margin-left: 8px9; /* IE8 and below */
    width: 4px9; /* IE8 and below */
}
.flowchart .notclicked{
    width: 16px;
    -webkit-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    -moz-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    -o-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    -ms-transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    transition: width 0.2s ease-out, margin-left 0.2s ease-out;
    
    width:20px9; /* IE8 and below */
    height:16px9; /* IE8 and below */
}

JavaScript

/*
    THIS CODE WILL HELP (IT'S NECESSARY) TO CREATE THE "FLOWCHART VIEW" STYLE
    ON THE LIST WITH "FLOWCHART" STYLE SELECTED.
*/
$(document).ready(function(){

    // THIS FUNCTION ALLOW IE TO DEAL WITH "GET ELEMENTS BY CLASS NAME"
    function getElementsByClassName(node, classname) {
        var a = [];
        var re = new RegExp('(^| )'+classname+'( |$)');
        var els = node.getElementsByTagName("*");
        for(var i=0,j=els.length; i<j; i++)
            if(re.test(els[i].className))a.push(els[i]);
        return a;
    }

    // this variable will just check if we are on a template with a flowchart inside.
    var flowcharts = getElementsByClassName(document.body,'flowchart');  // no document
    
    // IN CASE THERE IS A FLOWCHART LIST, THE FUN WILL START
    if($(flowcharts).html() != undefined){
    // FIRSTLY IT'S COUNTED HOW MANY FLOWCHART ARE THERE
    for(var m = 0; m < flowcharts.length; m++){
            var tempFlowchart = flowcharts[m];
            var collapseOption = ''; // THIS VARIABLE WILL BE USED AS A SETTING TO FOLD OR NOT THE FLOWCHART
            
            // UMBRACO RETURN THE TEXT INSIDE "LI" WITHOUT "P", SO WE NEED TO GET ALL OF THEM AND MAKE IT PROPERLY
            var paragraphsList = tempFlowchart.getElementsByTagName('li');
            for(var i = 0; i < paragraphsList.length; i++){
                var tempParagraph = paragraphsList[i];
                
                // NEXT CONDITION WILL LOOK FOR THE SETTING TO FOLD OR UNFOLD THE FLOWCHART
                if(collapseOption === ''){
                // IF THE WORD COLLAPSE IS IN THE FIRST PARAGRAPH BETWEEN '*' ...
                var settingsRemoved = $(tempParagraph).html(),
                    settings = settingsRemoved.split('*');
                // ...WE TAKE IT OUT FROM THE TEXT, AND SAVE IT FOR LATER IN A VARIABLE
                collapseOption = settings[1];
                // THE ORIGINAL HTML IS OVERWRITTEN WITH THE NEW ONE, WITHOUT "COLLAPSE" ON IT
                $(tempParagraph).html(settings[2]);
                }
                
                // THIS FUNCTION WILL CUT OUT ANY TEXT BETWEEN [ AND ], AND IT WILL BE ADDED AS "TITLE" TO THE PARAGRAPH
                var html = $(tempParagraph).html(),
                    lText = html.split('['),
                    rText = html.split(']');
                    
                if (typeof rText[0] === "undefined")
                    {rText[0] = ""}  
                if (typeof rText[1] === "undefined")
                    {rText[1] = ""}  
                if (typeof lText[0] === "undefined")
                    {lText[0] = ""} 
                if (typeof lText[1] === "undefined")
                    {lText[1] = ""}
                    
                var titleText = lText[1].split(']');
                $(tempParagraph).attr({ title: titleText[0] });
                $(tempParagraph).html(lText[0]+rText[1]);
                
                var finalParagraph = $(tempParagraph).html();
                
                // IF THERE IS NOT CHILDS, IN WON'T HAVE FOLDED MENU ICON
                if($(tempParagraph).next('ul').text() == ''){
                    $(tempParagraph).text('');
                    if($(tempParagraph).parent().prop("class") === 'flowchart'){
                        $(tempParagraph).append("<p class='finalLink firstLevel'>"+ finalParagraph +"</p>");
                    }else if($(tempParagraph).parent().parent().prop("class") === 'flowchart'){
                        $(tempParagraph).append("<p class='finalLink secondLevel'>"+ finalParagraph +"</p>");
                    }else{
                        $(tempParagraph).append("<p class='finalLink thirstLevel'>"+ finalParagraph +"</p>");
                    }
                }else // IT WILL HAVE FOLDED MENU ICON IF THERE IS CHILDS
                {
                    $(tempParagraph).text('');
                    if(collapseOption =="collapse"){
                        $(tempParagraph).append("<div class='menuBox'><span class='notclicked'></span></div><p>"+ finalParagraph +"</p>");
                    }else{
                        $(tempParagraph).append("<div class='unfoldArrow'></div><p>"+ finalParagraph +"</p>");
                    }
                }
            };
            
            // WITH THE NEXT CLASSES WE WILL ADD A LINE AT LEFT SIDE IN CASE THERE IS MORE SECTIONS IN THE SAME LEVEL
            var list = tempFlowchart.getElementsByTagName('ul');
            for(var i = 0; i < list.length; i++){
                var temp = list[i];
                if($(temp).next('li').text() != ''){
                    // LONGER WILL ADD THE LINE
                   $(temp).addClass('longer');
                }else{
                    // SHORT WON'T ADD THE LINE
                    $(temp).addClass('short');
                }
            }
            
                // CREATE A NEW DIV WITH A CLASS CALLED "FLOWCHART"
            $(tempFlowchart).before("<div class='flowchart flowchartSerial_" + (m+1) + "'></div>");
                // SAVE THE CONTENT OF OUR NEW DIV
            var flowChartDiv = $('div.flowchartSerial_'+ (m+1));
            $(flowChartDiv).append($(tempFlowchart));
            
            // IF 'COLLAPSE' WAS WRITTEN AT THE BEGINNIG OF THE FLOWCHART, IT WILL BE COLLAPSED
            if(collapseOption == "collapse"){
                $(flowChartDiv).children('ul').children('ul').addClass('opened');
                $(flowChartDiv).children('ul').children('ul').slideToggle(350);
                $(flowChartDiv).children('ul').children('li').children('.menuBox').children('span').toggleClass("clicked");
                $(flowChartDiv).children('ul').children('li').children('.menuBox').children('span').toggleClass("notclicked");
                flowchartSlideTest(flowChartDiv);
            // OTHERWISE, IT WILL BE NO COLLAPSED
            }else{
                // THE CLASSES LONGER AND SHORT HAVE A DISPLAY:NONE PROPERTY
                // SO THIS WILL OVERWRITE THAT PROPERTIES AND WILL EXPAND ALL
                $(flowChartDiv).find('.longer').show();
                $(flowChartDiv).find('.short').show();
            }
        }
    }
});

function flowchartSlideTest(variable){

$(variable).find('.menuBox').click(function(event){
    var div = $(this).parent('li').next('ul');
    
    if($(div).html() != undefined){
        var open = $(variable).children('ul').children('ul').find('.opened');
        // IF WE OPENED ANOTHER SECTION BEFORE, IT WILL BE CLOSED BEFORE OPENING THE NEW ONE
        if($(open).html() != $(div).html()){
            if(!$(this).parent().parent().hasClass('opened')){
                $(open).each(function() {
                $(this).toggleClass("opened");
                $(this).slideToggle(350);
                $(this).prev('li').children().children().toggleClass("clicked");
                $(this).prev('li').children().children().toggleClass("notclicked");
            });
            }
        }
        
        $(div).each(function(i) {
            $(div).slideToggle(350);
            $(div).toggleClass("opened");
        });
        
        $(this).children().toggleClass("clicked");
        $(this).children().toggleClass("notclicked");
    };

$(variable).children('ul').children('ul').removeClass('opened');
});
};

Many Thanks in advance.

My getMaxDate function not working as I expect (unknown reason)

I wrote a function getMaxDate

function getMaxDate(contacts){
    let maxDate = new Date(0);
    for(let contact of contacts){
        if(Date(contact.Account.LastModifiedDate) > maxDate){
            maxDate = Date(contact.Account.LastModifiedDate)
        }
    }
    console.log('max', maxDate)
    return maxDate;
}

This logs / returns Jan 1, 1970… when I know for a fact that there are dates in the input that are higher.

At first, I didn’t have the date conversions, so I added those, but it still doesn’t work

What’s going on here?

Note: I have not stepped through the code because I ended up using some other code I previously wrote which actually looks at more dates (and works!):

function getMaxDate(contacts){
  let maxDate = new Date(0);
  for(let contact of contacts){
    let contactUpdateDate = [new Date(contact.Account.LastModifiedDate), new Date(contact.LastModifiedDate)].sort((a, b) => b - a)[0]
    if (contactUpdateDate > maxDate) { maxDate = contactUpdateDate }
   }
  return maxDate
}

My web banners have a delay in displaying [closed]

I’m a graphic designer who is self taught HTML – sorry. Pretty good with HTML and but not so much jquery or javascript. I bought this theme from Themeforest so not my original code. I can’t figure out why the home page banner images take a second to load. Checked all browsers. I don’t think it’s a sizing issue but not sure what to look for in the code. Was hoping people smarter than me could point out the issue and maybe walk me through fixing it. The website is: https://www.poadvisory.com/

No-transition on CSS toggle switch when state modified by JS code (and not by the user)

With this toggle switch:

* { box-sizing: border-box; }
.switch { appearance: none; padding: 9px 18px; border-radius: 13px; background: radial-gradient(circle 9px, #007722 100%, transparent 100%) transparent -9px; border: 1px solid #007722; transition: all 0.3s; }
.switch:checked { background-position: 9px; }
<input type="checkbox" class="switch"></div>

I’d like the CSS smooth transition animation to happen if and only if the state change is done by the user.

On the other hand, if the state change is triggered by JS code (item.checked = false), then no transition happens.

Is there a more elegant solution than removing the transition CSS with JS, changing the state with JS, and set again the transition CSS with JS?

Maybe is there a CSS attribute for transition triggered by user only?

Reducing object array into smaller array

I’m trying to reduce the an array of Expenses:

interface Expense {
price: number,
date: number,
category: {
name: string
}
}

So that I get an array of objects where each date is unique and the properties are added on if a new one is found.

So basically I want to turn:

[{date: 1, price: 300, category: 'Bills'}, {date: 1, price: 20, category: 'Entertainment'}] 

into:

[ {date: 1, Bills: 300, Entertainment: 20 } ]

Here’s what I have, except it’s creating a new object if the date already exists, instead of adding to the current object:

const newData = months.reduce(
    (acc, curr) => {
      for (let i = 0; i < acc.length; i++) {
        if (curr.date === acc[i].date) {
          return [
            ...acc,
            {
              ...acc[i],
              date: curr.date,
              [curr.category.name]: curr.price,
            },
          ];
        }
      }
      return [
        ...acc,
        {
          date: curr.date,
          [curr.category.name]: curr.price,
        },
      ];
    },
    [{ date: 0 }]
  );

So my output is this instead:

  Array(10) [
    { date: 0 }, { date: 0, Entertainment: 100 }, { date: 1, Entertainment: 30 }, { date: 1, Entertainment: 30, School: 80 },
    { date: 2, Health: 40 }, { date: 3, Food: 200 }, { date: 4, Transportation: 70 }, { date: 5, Bills: 900 }, { date: 6, Food: 5 },
    { date: 6, Food: 5, Health: 50 }
  ]

I’m super close, but I’m not sure how to fix

React Uploading image in front-end (no back-end) only with AntD library

I am trying to upload an image and display it in the front-end ( using React.js)

I get this error Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8010/v2/5cc8019d300000980a055e76. (Reason: CORS request did not succeed). Status code: (null). 2

I tried enabling Cors
with these steps : npm install -g local-cors-proxy
here’s the code maybe i missed something? :


import React, { useState } from 'react';
import './uploadBody.css';
import { InboxOutlined } from '@ant-design/icons';
import { message, Upload } from 'antd';

const { Dragger } = Upload;

const UploadImage = () => {
  const [uploadedImage, setUploadedImage] = useState(null);

  const props = {
    name: 'file',
    multiple: false,
    action: 'https://www.mocky.io/v2/5cc8019d300000980a055e76',
    onChange(info) {
      const { status, response } = info.file;
      if (status === 'done') {
        message.success(`${info.file.name} file uploaded successfully.`);
        setUploadedImage(response.url);
      } else if (status === 'error') {
        message.error(`${info.file.name} file upload failed.`);
      }
    },
  };

  if (uploadedImage) {
    return (
      <div className="container">
        <img src={uploadedImage} alt="Uploaded" />
      </div>
    );
  } else {
    return (
      <div className="container">
        <Dragger {...props}>
          <p className="ant-upload-drag-icon">
            <InboxOutlined />
          </p>
          <p className="ant-upload-text">Click or drag file to this area to upload</p>
          <p className="ant-upload-hint">
            Support for a single upload. Strictly prohibited from uploading company data or other banned files.
          </p>
        </Dragger>
      </div>
    );
  }
};

export default UploadImage;

JavaScript clone a div but instead of cloning it once at a time, it multiplies

I’m currently working on a quiz management system and creating the frontend for a create quiz page. Usually in question forms you can click on add new question/new answer and a new element showed up. But right now instead of creating one by one it start to multiply.

        <div class="createContainer">
            <form method="post" action="">
                <div id="createTable">
                    <div>
                        <label for="question">Question:</label>
                        <input type="text" name="question"></textarea>
                    </div>
                    <div id="createAnswer">
                        <label for="option">Option:</label>
                        <input type="text" name="option" />
                        <input type="radio" name="isCorrect">
                    </div>
                    <button type="button" class="btn-copy" onclick="duplicateAnswer()">New     Answer</button>
                </div>
                
                <button type="button" class="btn-copy" onclick="duplicateQuestion()">New     Question</button>
                <button type="submit">Create Quiz</button>
            </form>
        </div>
        
        <script>
            function duplicateQuestion() {
                const node = document.getElementById("createTable");
                const clone = node.cloneNode(true);
                document.getElementById("createTable").appendChild(clone);
            }

            function duplicateAnswer() {
                const node = document.getElementById("createAnswer");
                const clone = node.cloneNode(true);
                document.getElementById("createAnswer").appendChild(clone);
            }
        </script>

I am new to JS so please enlighten me

node:internal/modules/cjs/loader:1080 throw err;

I installed Node.js (LTS version) via their website on my Windows, created a new folder called “mynode” and a text file inside this folder called “hellonode.js, opened the command prompt and changed to the directory “mynode” but when I run node hellonode.js, I get the “Cannot find module” error.

C:UsersMina>cd mynode

C:UsersMinamynode>node hellonode.js
node:internal/modules/cjs/loader:1080
  throw err;
  ^

Error: Cannot find module 'C:UsersMinamynodehellonode.js'
←[90m    at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)←[39m
←[90m    at Module._load (node:internal/modules/cjs/loader:922:27)←[39m
←[90m    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)←[39m
←[90m    at node:internal/main/run_main_module:23:47←[39m {
  code: ←[32m'MODULE_NOT_FOUND'←[39m,
  requireStack: []
}

Node.js v18.16.1

I already searched for solutions and I tried some suggestions:

Frist I deinstalled Node.js and reinstalled it, but nothing changed.

As suggested here: “internal/modules/cjs/loader.js:582 throw err” I ran npm init so that a “package.json” file was created (I left everything as in the default settings.) and then npm install and afterwards npm start, but this got me the “Missing script: “start”” error, so that I added "start": "node hellonode.js" under “scripts” in the “package.json” file, and run npm start again, but this again got me the same main error from above: Cannot find module ‘C:UsersMinamynodehellonode.js’.

What else can I do? Am I missing a step?

Here you can see the files in the path:

Verzeichnis von C:UsersMinamynode

03.07.2023  18:16    <DIR>          .
03.07.2023  18:16    <DIR>          ..
03.07.2023  18:01               593 hellonode.js.txt
03.07.2023  18:17               199 package-lock.json
03.07.2023  18:16               202 package.json
               3 Datei(en),            994 Bytes
               2 Verzeichnis(se),  3.924.852.736 Bytes frei

Remove crypto-browserify from NextJS build

I’ve been focusing on reducing the build size of my app to as small as possible and I’ve noticed that crypto-browserify has been taking a large chunk of space. I understand that next polyfills the node module if required but I would like to specify that crypto-browserify is removed or replaced using the default crypto module.

Here’s my current node_module bundle analized -> enter image description here

Any help would be great!

I did come across this Github issue which is very closely related, though I don’t want to disable all of the polyfills.