{"version":3,"file":"Preserve_Mode_scroll.nAVImmof.mjs","names":["__legacyOverrideHOC_DataObserverContext","_jsx"],"sources":["https:/framerusercontent.com/modules/N28AX8CLxO3tHm7N8Uqy/eDJcMgrHH3Mez1ByYuVi/Preserve_Mode_scroll.js"],"sourcesContent":["// PreserveWindowScroll.tsx\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";function keyForRoute(){if(typeof window===\"undefined\")return\"ssr\";const{pathname,search,hash}=window.location;return`${pathname}${search}${hash}`;}export function PreserveWindowScroll(){React.useEffect(()=>{const key=keyForRoute();// Did we come here via the mode switch button?\nconst shouldRestore=sessionStorage.getItem(\"modeSwitch\")===\"1\";const savedFromButton=parseInt(sessionStorage.getItem(\"modeScrollY\")||\"0\",10);// Decide scroll target\nconst saved=shouldRestore?savedFromButton:0;// Clear the flag for future navigations\nsessionStorage.removeItem(\"modeSwitch\");sessionStorage.removeItem(\"modeScrollY\");// Restore after layout paints (retry to beat late layout shifts)\nlet raf=null;let tries=0;const restore=()=>{window.scrollTo(0,saved);tries++;if(tries<20&&Math.abs(window.scrollY-saved)>1){raf=requestAnimationFrame(restore);}};raf=requestAnimationFrame(restore);// Save current scroll continuously (optional, handy if user scrolls then switches)\nconst onScroll=()=>{sessionStorage.setItem(\"modeScrollY\",String(window.scrollY));};window.addEventListener(\"scroll\",onScroll,{passive:true});// Attach click handler to the mode switch button\nconst btn=document.getElementById(\"modeSwitchButton\");const onModeClick=()=>{// mark that the next page should restore to this Y\nsessionStorage.setItem(\"modeSwitch\",\"1\");sessionStorage.setItem(\"modeScrollY\",String(window.scrollY));};if(btn)btn.addEventListener(\"click\",onModeClick);// Safety save before unload\nconst onBeforeUnload=()=>{sessionStorage.setItem(\"modeScrollY\",String(window.scrollY));};window.addEventListener(\"beforeunload\",onBeforeUnload);return()=>{window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"beforeunload\",onBeforeUnload);if(btn)btn.removeEventListener(\"click\",onModeClick);if(raf)cancelAnimationFrame(raf);};},[]);return{};}import{useContext as __legacyOverrideHOC_useContext}from\"react\";import{DataObserverContext as __legacyOverrideHOC_DataObserverContext}from\"framer\";export function withPreserveWindowScroll(C){return props=>{__legacyOverrideHOC_useContext(__legacyOverrideHOC_DataObserverContext);return _jsx(C,{...props,...PreserveWindowScroll(props)});};}withPreserveWindowScroll.displayName=\"PreserveWindowScroll\";\nexport const __FramerMetadata__ = {\"exports\":{\"withPreserveWindowScroll\":{\"type\":\"reactHoc\",\"name\":\"withPreserveWindowScroll\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PreserveWindowScroll\":{\"type\":\"override\",\"name\":\"PreserveWindowScroll\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Preserve_Mode_scroll.map"],"mappings":"wLACuE,SAAS,GAAa,CAAC,GAAU,IAAS,OAAY,MAAM,MAAM,GAAK,CAAC,WAAS,SAAO,QAAM,EAAO,SAAS,MAAM,GAAG,IAAW,IAAS,IAAQ,SAAgB,GAAsB,CAQgG,OAR/F,MAAoB,CAAW,GAAa,CAC7S,IAAM,EAAc,eAAe,QAAQ,aAAa,GAAG,IAAU,EAAgB,SAAS,eAAe,QAAQ,cAAc,EAAE,IAAI,GAAG,CACtI,EAAM,EAAc,EAAgB,EAC1C,eAAe,WAAW,aAAa,CAAC,eAAe,WAAW,cAAc,CAChF,IAAI,EAAI,KAAS,EAAM,EAAQ,MAAY,CAAC,EAAO,SAAS,EAAE,EAAM,CAAC,IAAW,EAAM,IAAI,KAAK,IAAI,EAAO,QAAQ,EAAM,CAAC,IAAG,EAAI,sBAAsB,EAAQ,GAAI,EAAI,sBAAsB,EAAQ,CACpM,IAAM,MAAa,CAAC,eAAe,QAAQ,cAAc,OAAO,EAAO,QAAQ,CAAC,EAAG,EAAO,iBAAiB,SAAS,EAAS,CAAC,QAAQ,GAAK,CAAC,CAC5I,IAAM,EAAI,SAAS,eAAe,mBAAmB,CAAO,MAAgB,CAC5E,eAAe,QAAQ,aAAa,IAAI,CAAC,eAAe,QAAQ,cAAc,OAAO,EAAO,QAAQ,CAAC,EAAM,GAAI,EAAI,iBAAiB,QAAQ,EAAY,CACxJ,IAAM,MAAmB,CAAC,eAAe,QAAQ,cAAc,OAAO,EAAO,QAAQ,CAAC,EAA0D,OAAvD,EAAO,iBAAiB,eAAe,EAAe,KAAW,CAAC,EAAO,oBAAoB,SAAS,EAAS,CAAC,EAAO,oBAAoB,eAAe,EAAe,CAAI,GAAI,EAAI,oBAAoB,QAAQ,EAAY,CAAI,GAAI,qBAAqB,EAAI,GAAK,EAAE,CAAC,CAAO,EAAE,CAAqJ,SAAgB,EAAyB,EAAE,CAAC,MAAO,KAAQ,EAA+BA,EAAwC,CAAQC,EAAK,EAAE,CAAC,GAAG,EAAM,GAAG,EAAqB,EAAM,CAAC,CAAC,uBAR7oB,IAA4B,IAQsb,CAA+L,EAAyB,YAAY"}