{"version":3,"file":"BackNavigation.DPRhZJdr.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/ekF0A3t2g6vrH3LDRMRY/NVKPYJUJbfwwURh8OJ9u/BackNavigation.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";/**\n * Tillägg som gör att Tillbaka i webbläsaren fungerar för element som byter\n * innehåll utan att byta sida.\n *\n * Framer skriver ingen adress när en komponent byter variant. Går besökaren\n * vidare från en annan flik och sedan tillbaka, visas standardfliken igen.\n */const TAB_PARAM=\"malgrupp\";const TABS=[{slug:\"grundskola\",label:\"Grundskola\"},{slug:\"forskola\",label:\"F\\xf6rskola\"},{slug:\"anpassad-skola\",label:\"Anpassad skola\"},{slug:\"hemma\",label:\"Hemma\"}];function readTabIndex(){if(typeof window===\"undefined\")return-1;const slug=new URLSearchParams(window.location.search).get(TAB_PARAM);return TABS.findIndex(tab=>tab.slug===slug);}/**\n * replaceState, inte pushState: ett flikbyte ska inte bli ett eget steg i\n * historiken. Framers egen state följer med, annars tappar routern bort sig.\n */function writeTab(slug){const url=new URL(window.location.href);if(url.searchParams.get(TAB_PARAM)===slug)return;url.searchParams.set(TAB_PARAM,slug);window.history.replaceState(window.history.state,\"\",url.toString());}/**\n * Läggs på «Use Case Tab» på startsidan (varianter 01–04, med «- Phone» på\n * telefon). Vald flik skrivs som ?malgrupp=… och läses när sidan monteras,\n * också efter Tillbaka. Varianten sätts först efter montering, så att\n * serverns markup och klienten stämmer vid hydreringen.\n */export function withTabInUrl(Component){return props=>{const[index,setIndex]=useState(-1);useEffect(()=>{setIndex(readTabIndex());},[]);const onClickCapture=event=>{let el=event.target;const root=event.currentTarget;while(el&&el!==root){const text=el.innerText?.trim();const tab=TABS.find(t=>t.label===text);if(tab){writeTab(tab.slug);return;}el=el.parentElement;}};const suffix=typeof props.variant===\"string\"&&props.variant.endsWith(\" - Phone\")?\" - Phone\":\"\";const variant=index>=0?`0${index+1}${suffix}`:props.variant;return /*#__PURE__*/_jsx(\"span\",{style:{display:\"contents\"},onClickCapture:onClickCapture,children:/*#__PURE__*/_jsx(Component,{...props,variant:variant})});};}const MENU_FLAG=\"kattaloMenuOpen\";function menuStepOnTop(){return!!(window.history.state&&window.history.state[MENU_FLAG]);}/**\n * Läggs på sidhuvudet (komponenten med varianterna «Tablet - Open» och\n * «Phone - Open») i mallarna Main och Content.\n *\n * Öppen meny = ett eget steg i historiken med samma adress, så att Tillbaka\n * stänger menyn i stället för att lämna sidan.\n *\n * Stängs menyn med knappen ligger steget kvar – vi backar INTE då. Ett\n * history.back() får Framer att rita om sidan och bryter menyns\n * stängningsanimation (syns som ett blink). Steget återanvänds om menyn\n * öppnas igen, och trycker besökaren Tillbaka med stängd meny hoppar vi\n * vidare direkt, så ett tryck räcker för att lämna sidan.\n */export function withMenuHistory(Component){return props=>{const ref=useRef(null);const openRef=useRef(false);const stepOnTopRef=useRef(false);const[resetKey,setResetKey]=useState(0);useEffect(()=>{if(typeof window===\"undefined\")return;const node=ref.current;if(!node)return;const isOpen=()=>!!node.querySelector('[data-framer-name$=\" - Open\"]');const sync=()=>{const open=isOpen();if(open===openRef.current)return;openRef.current=open;if(open){if(!menuStepOnTop()){window.history.pushState({...window.history.state||{},[MENU_FLAG]:true},\"\",window.location.href);}stepOnTopRef.current=true;}// Stängd med knappen: gör ingenting med historiken.\n};const onPopState=()=>{if(openRef.current){// Tillbaka med öppen meny: stäng genom att montera om i\n// utgångsvarianten och stanna på sidan.\nopenRef.current=false;stepOnTopRef.current=false;setResetKey(key=>key+1);}else if(stepOnTopRef.current||menuStepOnTop()){// Menysteget är redan förbrukat (menyn stängd), eller vi\n// har landat på ett kvarlämnat steg: fortsätt bakåt.\nstepOnTopRef.current=false;window.history.back();}};const observer=new MutationObserver(sync);observer.observe(node,{subtree:true,childList:true,attributes:true,attributeFilter:[\"data-framer-name\"]});window.addEventListener(\"popstate\",onPopState);return()=>{observer.disconnect();window.removeEventListener(\"popstate\",onPopState);};},[resetKey]);return /*#__PURE__*/_jsx(\"span\",{ref:ref,style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{...props},resetKey)});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withTabInUrl\":{\"type\":\"reactHoc\",\"name\":\"withTabInUrl\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withMenuHistory\":{\"type\":\"reactHoc\",\"name\":\"withMenuHistory\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BackNavigation.map"],"mappings":"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"}