{"version":3,"file":"script_main.DAZvaZce.mjs","names":["useState","_Fragment","useRef","React.useId","React.createElement","Template1","Framer.PageRoot","Framer.lazy","Framer.useCurrentRoute","Framer.useLocaleInfo","Framer.useRouter","React.Fragment","React.memo","React.useCallback","React.useEffect","React.useRef","React.useState","Framer.LibraryFeaturesProvider","Framer.GracefullyDegradingErrorBoundary","Framer.PageEffectsProvider","breakpoints","Framer.patchRoutesForABTesting","Framer.inferInitialRouteFromPath","Framer.yieldToMain","React.startTransition","Framer.ErrorPlaceholder","React.Suspense","React.lazy"],"sources":["https:/framerusercontent.com/modules/A8XunIUBOajvR6jmv3kD/jrHTpEoM2OA5ot1dW1Eb/AssetChecker_3.js","https:/framerusercontent.com/modules/RFx2IOv4yxk3WpkDWC4u/7CVRyu4uT4zqcLTOF1QJ/RHMZYBBuG.js","framer:toplevel/main"],"sourcesContent":["// Supabase Asset Checker Component\n// Fetches asset by id from Supabase, redirects if not active\n// SUMMARY: Checks if a Supabase asset is active by id. If inactive, redirects to given URL. Renders a blocking overlay while checking or redirecting.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,startTransition}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * AssetChecker\n *\n * Checks a Supabase asset by id. If asset is inactive, redirects to given URL. Otherwise, does nothing.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function AssetChecker(props){const{assetId,supabaseUrl,supabaseAnonKey}=props;// Visual step status state\nconst[step,setStep]=useState(\"Init\");const[result,setResult]=useState(\"\");const[action,setAction]=useState(\"\");const[fetching,setFetching]=useState(false);// WaitForComponentLoader timeout error typically means no visible DOM output. Fix by rendering an empty but visible placeholder in Canvas and Export\nif(RenderTarget.current()===RenderTarget.canvas||RenderTarget.current()===RenderTarget.export||RenderTarget.current()===RenderTarget.thumbnail){return /*#__PURE__*/_jsx(\"div\",{style:{minHeight:\"5px\",minWidth:\"5px\",width:\"100%\",height:\"100%\"}});}useEffect(()=>{if(!assetId||!supabaseUrl||!supabaseAnonKey)return;if(typeof window===\"undefined\")return;if(RenderTarget.current()!==RenderTarget.preview)return;startTransition(()=>setFetching(true));startTransition(()=>setStep(\"Checking asset status...\"));fetch(`${supabaseUrl}/rest/v1/assets?id=eq.${assetId}`,{headers:{apikey:supabaseAnonKey,Authorization:`Bearer ${supabaseAnonKey}`,Accept:\"application/json\"}}).then(res=>res.json()).then(data=>{if(!Array.isArray(data)||!data.length){startTransition(()=>{setResult(\"Not found: no asset for the given id or API returned no result\");setAction(\"Doing nothing\");setFetching(false);});return;}const asset=data[0];if(typeof asset===\"undefined\"||asset===null){startTransition(()=>{setResult(\"Asset not found: The id exists in the request but not in the table. Table columns are: id, name, created_at, active (no logo)\");setAction(\"Doing nothing\");setFetching(false);});return;}if(asset&&asset.active===false){startTransition(()=>{setResult(\"Inactive\");setAction(\"Redirecting...\");});// do not dismiss overlay if inactive, let it stay until redirect\nsetTimeout(()=>{window.location.assign(`https://chaldeastudios.com/assets/${assetId}`);},1500);}else{startTransition(()=>{setResult(\"Active\");setAction(\"Staying on page\");setFetching(false);});}}).catch(err=>{startTransition(()=>{setResult(\"Error: \"+(err?.message||\"Failed to fetch data from Supabase; check URL, key, and connectivity.\"));setAction(\"Doing nothing\");setFetching(false);});});},[assetId,supabaseUrl,supabaseAnonKey]);return /*#__PURE__*/_jsxs(_Fragment,{children:[fetching&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,width:\"100vw\",height:\"100vh\",background:\"#fff\",opacity:1,pointerEvents:\"auto\",zIndex:2147483647}}),/*#__PURE__*/_jsx(\"div\",{style:{minHeight:\"5px\",minWidth:\"5px\",width:\"100%\",height:\"100%\"}})]});}addPropertyControls(AssetChecker,{assetId:{type:ControlType.String,title:\"Asset ID\",placeholder:\"Type asset UUID\",defaultValue:\"\"},supabaseUrl:{type:ControlType.String,title:\"Supabase URL\",placeholder:\"https://xxxx.supabase.co\",defaultValue:\"\"},supabaseAnonKey:{type:ControlType.String,title:\"Supabase Anon Key\",placeholder:\"Paste anon key…\",obscured:true,defaultValue:\"\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AssetChecker\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AssetChecker_3.map","// Generated by Framer (569b461)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,GeneratedComponentContext,getFonts,RenderTarget,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,withCSS}from\"framer\";import{LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import AssetChecker from\"https://framerusercontent.com/modules/A8XunIUBOajvR6jmv3kD/jrHTpEoM2OA5ot1dW1Eb/AssetChecker_3.js\";const AssetCheckerFonts=getFonts(AssetChecker);const breakpoints={};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-EEOCn\";const variantClassNames={BO1oyS6lr:\"framer-v-1e47xbg\"};const breakpointRules={};const breakpointKeys=Object.keys(breakpointRules);const rules=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-EEOCn.framer-1uv0otw, .framer-EEOCn .framer-1uv0otw { display: block; }\",\".framer-EEOCn.framer-1e47xbg { align-content: center; align-items: center; background-color: #ffffff; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-EEOCn .framer-1sob5y6 { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-EEOCn .framer-prdrjl-container { flex: none; height: auto; left: 0px; order: 1001; position: absolute; top: 0px; width: auto; z-index: 10; }\",'[data-layout-template=\"true\"] > #overlay { margin-bottom: -0px; }'];const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const getProps=({height,id,width,...props})=>{return{...props};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,children,...restProps}=getProps(props);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);useCustomCursors({});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{isLayoutTemplate:true,primaryVariantId:\"BO1oyS6lr\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??defaultLayoutId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\":root body { background: rgb(255, 255, 255); }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-1e47xbg\",className),\"data-layout-template\":true,ref:refBinding,style:{...style},children:[children,/*#__PURE__*/_jsx(\"div\",{className:\"framer-1sob5y6\"}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-prdrjl-container\",\"data-code-component-plugin-id\":\"84d4c1\",isAuthoredByUser:true,isModuleExternal:true,nodeId:\"VfhV_pv5t\",scopeId:\"RHMZYBBuG\",children:/*#__PURE__*/_jsx(AssetChecker,{assetId:\"27e7579e-c84a-448c-9765-6f9605bad90d\",height:\"100%\",id:\"VfhV_pv5t\",layoutId:\"VfhV_pv5t\",supabaseAnonKey:\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im9kZHV3cGFjbWxkeWFwbmVncmlsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTk0Mzc2NzMsImV4cCI6MjA3NTAxMzY3M30.qh5HOjGo_jzlGHW8oHBfVZ3VMVXq_7LH7fbqjM1VZT8\",supabaseUrl:\"https://odduwpacmldyapnegril.supabase.co\",width:\"100%\"})})})]}),/*#__PURE__*/_jsx(\"div\",{id:\"template-overlay\"})]})});});const css=target=>{const isStaticRenderer=target===RenderTarget.canvas||target===RenderTarget.export;if(!isStaticRenderer){return[...rules,...breakpointKeys.map(key=>{const query=breakpointRules[key];return`@media ${query} { ${breakpointRules[key].join(\" \")} }`;})];}return[...rules,...breakpointKeys.flatMap(key=>{const selector=breakpointRules[key];return breakpointRules[key].map(rule=>`${selector} {${rule}}`);})];};/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 1000\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerHitTargets {\"BO1oyS6lr\":[\".framer-prdrjl-container\"]}\n * @framerBreakpoints {\"BO1oyS6lr\":{\"canvasClassName\":\"framer-1e47xbg-override\",\"minHeight\":1000,\"name\":\"Desktop\",\"width\":1200,\"rootFontSize\":16}}\n * @framerDefaultVariant BO1oyS6lr\n * @framerLayoutTemplate\n */const FramerRHMZYBBuG=withCSS(Component,css,\"framer-EEOCn\");export default FramerRHMZYBBuG;FramerRHMZYBBuG.displayName=\"Template\";FramerRHMZYBBuG.defaultProps={height:1e3,width:1200};addFonts(FramerRHMZYBBuG,[{explicitInter:true,fonts:[]},...AssetCheckerFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerRHMZYBBuG\",\"slots\":[],\"annotations\":{\"framerHitTargets\":\"{\\\"BO1oyS6lr\\\":[\\\".framer-prdrjl-container\\\"]}\",\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerBreakpoints\":\"{\\\"BO1oyS6lr\\\":{\\\"canvasClassName\\\":\\\"framer-1e47xbg-override\\\",\\\"minHeight\\\":1000,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16}}\",\"framerContractVersion\":\"1\",\"framerLayoutTemplate\":\"\",\"framerDefaultVariant\":\"BO1oyS6lr\",\"framerAutoSizeImages\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerIntrinsicHeight\":\"1000\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","\r\n        import * as Framer from \"framer\";\r\nimport * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport * as ReactDOM from \"react-dom/client\";\r\nimport Template1 from \"https://framerusercontent.com/modules/RFx2IOv4yxk3WpkDWC4u/7CVRyu4uT4zqcLTOF1QJ/RHMZYBBuG.js\";\r\n\r\n        const routes = {augiA20Il: {elements: {nac4JIqLJ: \"top\", OBr5SGreb: \"image-1\", VEs2GNkaw: \"image-2\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/nZ242VE52J4plP6EmABW/u8ncLbAWYsgvk0FYoHKr/augiA20Il.js\")), path: \"/\"}, do537ZQkd: {elements: {Sv3kanvJx: \"top\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/pgMerCL1k3FeDByfujyi/e3ka0MMszm035aFNmn5e/do537ZQkd.js\")), path: \"/about\"}, AkOIicI1y: {elements: {MjR7vExHy: \"top\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/yxOkLSiR5EIGcvURc6AB/HmxxZy6JzzbWjgDPgHBG/AkOIicI1y.js\")), path: \"/work\"}, v1MMai_cu: {elements: {xWMThVlxb: \"top\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/komC274aZnS0hdF2T6lr/1ac6CRC9BFOR7vJjJwGf/v1MMai_cu.js\")), path: \"/contact\"}, uVdpZqf_w: {elements: {Hqb0urJu9: \"top\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/uqOARX5wxmosrdR8TmlY/laVtSO2bBwRZ23vfRQwt/uVdpZqf_w.js\")), path: \"/blog\"}, er2VFJAFt: {elements: {anCeed4O5: \"top\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/7GCrbPv9mQ5gxB3IM2RY/3c5rzjBGnieFnYEmJSSu/er2VFJAFt.js\")), path: \"/404\"}, plMC03D6_: {collectionId: \"f4zWXyw63\", elements: {LG5LjjEZw: \"top\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/2uk0g2yN9fWwbg3BT2Wi/Rqu71VxkyGv5Dtg8i96p/plMC03D6_.js\")), path: \"/work/:rTVbj0tcf\"}, tfKVKHbwJ: {collectionId: \"LH_pkMQDd\", elements: {Ip7Il3wUv: \"top\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/9IQrScLl44xZ7rBpWI27/9yArpcFV7mbs6pPrjapG/tfKVKHbwJ.js\")), path: \"/blog/:mKasZUkWD\"}}\r\n\r\n        const locales = [{code: \"en\", id: \"default\", name: \"English\", slug: \"\", textDirection: \"ltr\"}]\r\n        const collectionUtils = {f4zWXyw63: async () => (await import(\"https://framerusercontent.com/modules/znUZoMfdEsf0GaP3VVq2/AByK09xM8s3rsPzPjLdA/f4zWXyw63.js\"))?.[\"utils\"], LH_pkMQDd: async () => (await import(\"https://framerusercontent.com/modules/wSl9V1p6Sb4EWP8Pkba3/Ik9OqdQDMzSaMeF23Ifk/LH_pkMQDd.js\"))?.[\"utils\"]}\r\n        const framerSiteId = \"7e91a77f42f48663ea54a709af8ccffe4f50d25f75d3d0f0ed16c5375e91ee8b\"\r\n        function Template({webPageId, children, style, ...rest}) {const templateProps = {}\r\nconst props = templateProps[webPageId] ?? {}\r\nswitch (webPageId) {case \"augiA20Il\":\r\ncase \"do537ZQkd\":\r\ncase \"AkOIicI1y\":\r\ncase \"v1MMai_cu\":\r\ncase \"uVdpZqf_w\":\r\ncase \"er2VFJAFt\":\r\ncase \"plMC03D6_\":\r\ncase \"tfKVKHbwJ\":\r\nreturn React.createElement(Template1, {...props, key: \"Template1\", style}, children(true));\r\ndefault: { return children(false) }}}\r\nexport function getLayoutTemplateBreakpoints(routeId) {switch (routeId) {case \"augiA20Il\":\r\ncase \"do537ZQkd\":\r\ncase \"AkOIicI1y\":\r\ncase \"v1MMai_cu\":\r\ncase \"uVdpZqf_w\":\r\ncase \"er2VFJAFt\":\r\ncase \"plMC03D6_\":\r\ncase \"tfKVKHbwJ\":\r\nreturn [{hash: \"1e47xbg\"}]\r\ndefault: { return undefined }}}\r\n\r\n        export async function getPageRoot({ routeId, pathVariables, localeId }) {\r\n            const rootPreload = routes[routeId].page.preload()\r\n\r\n            const content = React.createElement(\r\n                Framer.PageRoot,\r\n                {\r\n                    isWebsite: true,\r\n                    routeId,\r\n                    pathVariables,\r\n                    routes,\r\n                    collectionUtils,\r\n                    framerSiteId,\r\n                    notFoundPage: Framer.lazy(() => import(\"https://framerusercontent.com/modules/7GCrbPv9mQ5gxB3IM2RY/3c5rzjBGnieFnYEmJSSu/er2VFJAFt.js\")),\r\n                    isReducedMotion: undefined,\r\n                    localeId,\r\n                    locales,\r\n                    preserveQueryParams: undefined,\r\n                    siteCanonicalURL: \"https://thistle-view-830888.framer.app\",\r\n                    EditorBar: \r\n            typeof window !== \"undefined\" ? (() => {\r\n                const isBot = /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent)\r\n                if (isBot) {\r\n                    console.log(\"[Framer On-Page Editing] Unavailable because navigator is bot\")\r\n                    return\r\n                }\r\n\r\n                return Framer.lazy(async () => {\r\n                    const dependencies = {\r\n                        __version: 2,\r\n                        framer: {\r\n                            useCurrentRoute: Framer.useCurrentRoute,\r\n                            useLocaleInfo: Framer.useLocaleInfo,\r\n                            useRouter: Framer.useRouter,\r\n                        },\r\n                        react: {\r\n                            createElement: React.createElement,\r\n                            Fragment: React.Fragment,\r\n                            memo: React.memo,\r\n                            useCallback: React.useCallback,\r\n                            useEffect: React.useEffect,\r\n                            useRef: React.useRef,\r\n                            useState: React.useState,\r\n                        },\r\n                        \"react-dom\": { createPortal },\r\n                    }\r\n\r\n                    window.__framer_editorBarDependencies = dependencies\r\n\r\n                    const { createEditorBar } = await import(\"https://framer.com/edit/init.mjs\")\r\n                    return {\r\n                        default: createEditorBar(),\r\n                    }\r\n                })\r\n            })() : undefined\r\n        ,\r\n                    adaptLayoutToTextDirection: false,\r\n                    LayoutTemplate: Template,\r\n                }\r\n            )\r\n\r\n            const contentWithFeaturesContext = React.createElement(\r\n                Framer.LibraryFeaturesProvider,\r\n                {\r\n                    children: content,\r\n                    value: {advancedSpamProtection: true, customCodeSiteSettings: false, editorBarDisableFrameAncestorsSecurity: false, motionDivToDiv: false, onPageLocalizationSupport: false, onPageMoveTool: false, synchronousNavigationOnDesktop: false, yieldOnTap: false}\r\n                }\r\n            )\r\n\r\n            const contentWithGracefullyDegradingErrorBoundary = React.createElement(Framer.GracefullyDegradingErrorBoundary, {\r\n                children: contentWithFeaturesContext\r\n            })\r\n\r\n            \r\n            const page = React.createElement(Framer.PageEffectsProvider, {\r\n                children: contentWithGracefullyDegradingErrorBoundary,\r\n                value: {routes: {}}\r\n            })\r\n\r\n            // We don't want the initial render to immediately have to suspend.\r\n            await rootPreload\r\n            return page\r\n        }\r\n\r\n        const isBrowser = typeof document !== \"undefined\"\r\n        if (isBrowser) {\r\n            window.__framer_importFromPackage = (packageAndFilename, exportIdentifier) => () => {\r\n                return React.createElement(Framer.ErrorPlaceholder, { error: 'Package component not supported: \"' + exportIdentifier + '\" in \"' + packageAndFilename + '\"' })\r\n            }\r\n\r\n            window.__framer_events = window.__framer_events || []\r\n\r\n            // Fallback support for stack gaps\r\n            Framer.installFlexboxGapWorkaroundIfNeeded()\r\n\r\n            const container = document.getElementById(\"main\")\r\n            // We know that #main is parsed before this script, so we don't need to wait for DOMContentLoaded or similar events.\r\n            if (\"framerHydrateV2\" in container.dataset) main(true, container)\r\n            else main(false, container)\r\n        }\r\n\r\n        function track() {\r\n            if (!isBrowser) return\r\n            window.__framer_events.push(arguments)\r\n        }\r\n\r\n        async function main(shouldHydrate, container) {\r\n            function handleError(error, errorInfo, recoverable = true) {\r\n                if (error.caught || window.__framer_hadFatalError) return // we already logged it\r\n\r\n                const componentStack = errorInfo?.componentStack\r\n                if (recoverable) {\r\n                    console.warn(\"Caught a recoverable error. The site is still functional, but might have some UI flickering or degraded page load performance. If you are the author of this website, update external components and check recently added custom code or code overrides to fix the following server/client mismatches:\\n\", error, componentStack)\r\n                    // we only want to collect 1%, because this can be quite noisy (floods the data pipeline)\r\n                    if (Math.random() > 0.01) return\r\n                } else {\r\n                    console.error(\"Caught a fatal error. Please report the following to the Framer team via https://www.framer.com/contact/:\\n\", error, componentStack)\r\n                }\r\n                track(recoverable ? \"published_site_load_recoverable_error\" : \"published_site_load_error\", {\r\n                    message: String(error),\r\n                    componentStack, // componentStack is more useful\r\n                    stack: componentStack ? undefined : error instanceof Error && typeof error.stack === \"string\" ? error.stack : null,\r\n                })\r\n            }\r\n\r\n            try {\r\n                let routeId, localeId, pathVariables, breakpoints\r\n                if (shouldHydrate) {\r\n                    const routeData = JSON.parse(container.dataset[\"framerHydrateV2\"])\r\n                    routeId = routeData.routeId\r\n                    localeId = routeData.localeId\r\n                    pathVariables = routeData.pathVariables\r\n                    breakpoints = routeData.breakpoints\r\n\r\n                    routeId = Framer.patchRoutesForABTesting(routes, routeId) // Prioritize optimized route id to avoid flickering in browsers not supporting the server-timing header (Safari older than 16.4)\r\n                } else {\r\n                    Framer.patchRoutesForABTesting(routes, undefined) // This must happen before inferInitialRouteFromPath\r\n\r\n                    \r\n                    const routeData = Framer.inferInitialRouteFromPath(routes, decodeURIComponent(location.pathname), true, locales)\r\n                    routeId = routeData.routeId\r\n                    localeId = routeData.localeId\r\n                    pathVariables = routeData.pathVariables\r\n                    \r\n                }\r\n\r\n                const pagePromise = getPageRoot({ routeId, localeId, pathVariables })\r\n\r\n                \r\nif (typeof window !== \"undefined\") {\r\n    void (async () => {\r\n        const route = routes[routeId]\r\n\r\n        const defaultLocaleId = \"default\"\r\n        const framerLocale = locales.find(({ id }) => !localeId ? id === defaultLocaleId : id === localeId).code\r\n\r\n        let collectionItemId = null\r\n        if (route?.collectionId && collectionUtils) {\r\n              const utils = await collectionUtils[route.collectionId]?.()\r\n              const [slug] = Object.values(pathVariables)\r\n              if (utils && typeof slug === \"string\") {\r\n                  collectionItemId = (await utils.getRecordIdBySlug(slug, framerLocale || undefined)) ?? null\r\n              }\r\n        }\r\n\r\n        const resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions()\r\n        const timezone = resolvedDateTimeOptions.timeZone\r\n        const locale = resolvedDateTimeOptions.locale\r\n\r\n        // wait for the page to be activated before sending the pageview event\r\n        // https://developer.chrome.com/docs/web-platform/prerender-pages#impact-on-analytics\r\n        await new Promise((resolve) => {\r\n            if (document.prerendering) {\r\n                document.addEventListener(\"prerenderingchange\", resolve, { once: true })\r\n            } else {\r\n                resolve()\r\n            }\r\n        })\r\n\r\n        window.__framer_events.push([\r\n            \"published_site_pageview\",\r\n            {\r\n                framerSiteId: framerSiteId ?? null,\r\n                version: 2,\r\n                routePath: route?.path || \"/\",\r\n                collectionItemId,\r\n                framerLocale: framerLocale || null,\r\n                webPageId: route?.abTestingVariantId ?? routeId,\r\n                abTestId: route?.abTestId,\r\n                referrer: document.referrer || null,\r\n                url: window.location.href,\r\n                hostname: window.location.hostname || null,\r\n                pathname: window.location.pathname || null,\r\n                hash: window.location.hash || null,\r\n                search: window.location.search || null,\r\n                timezone,\r\n                locale,\r\n            },\r\n            \"eager\"\r\n        ])\r\n\r\n        // Yield to avoid blocking the main thread with the user code\r\n        await Framer.yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" })\r\n\r\n        document.dispatchEvent(new CustomEvent(\"framer:pageview\", {\r\n            detail: { framerLocale: framerLocale || null }\r\n        }))\r\n    })()\r\n}\r\n\r\n\r\n                const page = await pagePromise\r\n                if (shouldHydrate) {\r\n                    \r\n\r\n                    Framer.withPerformanceMarks(\"framer-rewrite-breakpoints\", () => {\r\n                        Framer.removeHiddenBreakpointLayersV2(breakpoints)\r\n                        window.__framer_onRewriteBreakpoints?.(breakpoints)\r\n                    })\r\n\r\n                    \r\n\r\n                    const startTransition = React.startTransition\r\n                    startTransition(() => {\r\n                        Framer.markHydrationStart()\r\n                        if (true) Framer.turnOffReactEventHandling()\r\n                        ReactDOM.hydrateRoot(container, page, { onRecoverableError: handleError })\r\n                    })\r\n                } else {\r\n                    \r\n                    ReactDOM.createRoot(container, { onRecoverableError: handleError }).render(page)\r\n                }\r\n            } catch (error) {\r\n                handleError(error, undefined, false)\r\n                throw error\r\n            }\r\n        }\r\n\r\n        \r\n\r\n        \r\n        ;(function () {\r\n            if (!isBrowser) return\r\n\r\n            React.startTransition(() => {\r\n                ReactDOM.hydrateRoot(\r\n                    document.getElementById(\"__framer-badge-container\"),\r\n                    React.createElement(React.Suspense, {}, React.createElement(React.lazy(() => import(\"__framer-badge\"))))\r\n                )\r\n            })\r\n        })()\r\n    "],"mappings":"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"}