{"version":3,"file":"BackButton.DxgnNzyV.mjs","names":["React.useRef","React.useCallback","Framer.useRouter","__esmMin","init_npm_react_18_3_1","ne","init_ssg_sandbox_shims","window","p","J","init_jsx_runtime","ce","de","addPropertyControls","init_framer_BL70qLPA","ControlType","useRouter","storageSet","key","value","storageGet","storageRemove","requestProjectsRestore","PROJECTS_RESTORE_KEY","withProjectsScrollMemory","shouldRestore","projectsMemory","target","PROJECTS_SCROLL_KEY","restoring","rafId","startedAt","stableSince","scrollToTarget","lenis","tick","now","save","y","onUserInput","Component","props","navigateToPath","routes","router","routeId","id","targetPath","canGoBackWithinSite","nav","entries","index","prevUrl","BackButton","useFramerRouter","fallbackTimer","clearFallback","editorial","close","event","currentUrl","fallbackPath","fallback","style","textSize","light","label","init_BackButton"],"sources":["https:/framerusercontent.com/modules/tEbWjqhF7YegZfLvvb4Y/3YwU0io7NBqhtvXoEZI5/BackButton.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import*as Framer from\"framer\";import{addPropertyControls,ControlType}from\"framer\";// Framer's internal router (exported at runtime, not in the public typings).\nconst useFramerRouter=Framer.useRouter??(()=>null);const PROJECTS_SCROLL_KEY=\"fs:projects-scroll\";const PROJECTS_RESTORE_KEY=\"fs:projects-restore\";// In-memory store (works inside the Framer preview iframe, where\n// sessionStorage can be blocked). sessionStorage is only a backup for\n// full page reloads on the published site.\nconst projectsMemory={scroll:0,restore:false};function storageSet(key,value){try{window.sessionStorage.setItem(key,value);}catch{}}function storageGet(key){try{return window.sessionStorage.getItem(key);}catch{return null;}}function storageRemove(key){try{window.sessionStorage.removeItem(key);}catch{}}function requestProjectsRestore(){projectsMemory.restore=true;storageSet(PROJECTS_RESTORE_KEY,\"1\");}/** Put on the Projects page: remembers the scroll position when you leave\n * (e.g. clicking a project) and restores it when you come back via Go back. */export function withProjectsScrollMemory(Component){return /*#__PURE__*/React.forwardRef(function ProjectsScrollMemory(props,ref){React.useEffect(()=>{if(typeof window===\"undefined\")return;const shouldRestore=projectsMemory.restore||storageGet(PROJECTS_RESTORE_KEY)===\"1\";const target=projectsMemory.scroll||Number(storageGet(PROJECTS_SCROLL_KEY)||0);projectsMemory.restore=false;storageRemove(PROJECTS_RESTORE_KEY);let restoring=shouldRestore&&target>0;let rafId=0;const startedAt=performance.now();let stableSince=0;const scrollToTarget=()=>{const lenis=window.lenis;if(lenis&&typeof lenis.scrollTo===\"function\"){try{lenis.scrollTo(target,{immediate:true,force:true});}catch{}}window.scrollTo(0,target);document.documentElement.scrollTop=target;};const tick=()=>{if(!restoring)return;const now=performance.now();const off=Math.abs(window.scrollY-target)>2;if(off){scrollToTarget();stableSince=0;}else if(!stableSince){stableSince=now;}// Keep enforcing until the position holds for 400ms, max 2.5s\nif(stableSince&&now-stableSince>400||now-startedAt>2500){restoring=false;return;}rafId=requestAnimationFrame(tick);};if(restoring)rafId=requestAnimationFrame(tick);const save=()=>{if(restoring)return;const y=Math.round(window.scrollY);projectsMemory.scroll=y;storageSet(PROJECTS_SCROLL_KEY,String(y));};const onUserInput=()=>{if(restoring){restoring=false;cancelAnimationFrame(rafId);}};document.addEventListener(\"pointerdown\",save,true);document.addEventListener(\"click\",save,true);window.addEventListener(\"pagehide\",save);window.addEventListener(\"wheel\",onUserInput,{passive:true});window.addEventListener(\"touchstart\",onUserInput,{passive:true});return()=>{restoring=false;cancelAnimationFrame(rafId);document.removeEventListener(\"pointerdown\",save,true);document.removeEventListener(\"click\",save,true);window.removeEventListener(\"pagehide\",save);window.removeEventListener(\"wheel\",onUserInput);window.removeEventListener(\"touchstart\",onUserInput);};},[]);return /*#__PURE__*/_jsx(Component,{...props,ref:ref});});}/** Navigates with Framer's internal router so it works both in the Framer\n * preview (which runs under framer.com) and on the published site. */function navigateToPath(router,targetPath){try{const routes=router?.routes;if(routes&&typeof router.navigate===\"function\"){const routeId=Object.keys(routes).find(id=>routes[id]?.path===targetPath);if(routeId){router.navigate(routeId);return;}}}catch{}window.location.assign(targetPath);}/** True only when the previous history entry belongs to this same site.\n * Prevents \"Go back\" from leaving the site (e.g. to the Framer dashboard\n * in preview, or to Google when a visitor lands directly on a project). */function canGoBackWithinSite(){if(typeof window===\"undefined\")return false;try{const nav=window.navigation;if(nav&&typeof nav.canGoBack===\"boolean\"){if(!nav.canGoBack)return false;const entries=typeof nav.entries===\"function\"?nav.entries():null;const index=nav.currentEntry?.index;if(entries&&typeof index===\"number\"&&index>0){const prevUrl=entries[index-1]?.url;if(prevUrl)return new URL(prevUrl).origin===window.location.origin;}return true;}}catch{}try{if(window.self!==window.top)return false;}catch{return false;}try{return!!document.referrer&&new URL(document.referrer).origin===window.location.origin;}catch{return false;}}/** @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed */export default function BackButton({style,light=false,close=false,editorial=false,label=\"Go back\",textSize=64}){const router=useFramerRouter();const fallbackTimer=React.useRef(null);const clearFallback=React.useCallback(()=>{if(fallbackTimer.current!==null){clearTimeout(fallbackTimer.current);fallbackTimer.current=null;}},[]);React.useEffect(()=>{if(editorial&&\"scrollRestoration\"in window.history){window.history.scrollRestoration=\"auto\";}return clearFallback;},[editorial,clearFallback]);const goBack=event=>{event.preventDefault();event.stopPropagation();clearFallback();if(editorial)requestProjectsRestore();const currentUrl=window.location.href;const fallbackPath=editorial?\"/projects\":\"/\";const fallback=()=>{fallbackTimer.current=null;if(window.location.href===currentUrl){navigateToPath(router,fallbackPath);}};if(!canGoBackWithinSite()){fallback();return;}window.history.scrollRestoration=\"auto\";fallbackTimer.current=setTimeout(fallback,900);try{window.history.back();}catch{clearFallback();fallback();}};return /*#__PURE__*/_jsxs(\"button\",{type:\"button\",\"aria-label\":close?\"Cerrar v\\xeddeo\":\"Volver a la p\\xe1gina anterior\",onClick:close?undefined:goBack,style:{...style,width:\"100%\",height:\"100%\",boxSizing:\"border-box\",border:editorial?\"none\":\"1px solid currentColor\",borderRadius:editorial?0:close?\"50%\":16,padding:close?0:\"8px 16px\",fontFamily:\"Geist, sans-serif\",fontSize:editorial?textSize:close?36:14,fontWeight:editorial?300:close?400:500,lineHeight:1.15,cursor:\"pointer\",color:editorial?\"#111111\":light?\"white\":\"#141414\",background:editorial?\"transparent\":light?\"rgba(20,20,20,.75)\":\"white\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:editorial?\"0.12em\":0,whiteSpace:\"nowrap\"},children:[editorial&&/*#__PURE__*/_jsx(\"svg\",{\"aria-hidden\":\"true\",width:\"1em\",height:\"0.8em\",viewBox:\"0 0 80 64\",fill:\"none\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M77 32H4M30 6L4 32L30 58\",stroke:\"currentColor\",strokeWidth:\"2.5\"})}),editorial?label:close?\"\\xd7\":\"Volver\"]});}addPropertyControls(BackButton,{light:{type:ControlType.Boolean,title:\"Claro\",defaultValue:false},close:{type:ControlType.Boolean,title:\"Bot\\xf3n de cierre\",defaultValue:false},editorial:{type:ControlType.Boolean,title:\"Estilo Go back\",defaultValue:false},label:{type:ControlType.String,title:\"Texto\",defaultValue:\"Go back\",hidden:p=>!p.editorial},textSize:{type:ControlType.Number,title:\"Tama\\xf1o\",defaultValue:64,min:20,max:120,hidden:p=>!p.editorial}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BackButton\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"\"}},\"withProjectsScrollMemory\":{\"type\":\"reactHoc\",\"name\":\"withProjectsScrollMemory\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BackButton.map"],"mappings":"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"}