{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/tfq8EDfrazNLXzc9LJte/hLcdFz4t8UjInDMvzq41/utils.js"],
  "sourcesContent": ["import{isBrowser}from\"framer-motion\";import{useLayoutEffect}from\"react\";export const DEFAULT_FONT_FAMILY=`\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;export function getFlexboxValues(position){const positionParts=position.split(\"-\");let justifyContent,alignItems;switch(positionParts[0]){case\"top\":alignItems=\"flex-start\";break;case\"bottom\":alignItems=\"flex-end\";break;case\"center\":alignItems=\"center\";break;default:alignItems=\"initial\";break;}switch(positionParts[1]){case\"left\":justifyContent=\"flex-start\";break;case\"right\":justifyContent=\"flex-end\";break;case\"center\":justifyContent=\"center\";break;default:justifyContent=\"initial\";break;}return{justifyContent,alignItems};}export function getMultipleShadows(...shadows){const output=[];shadows.forEach(shadow=>{return shadow&&output.push(shadow);});return output.join(\", \");}export function getShadow(shadow){if(shadow){return`${shadow.shadowX}px ${shadow.shadowY}px ${shadow.shadowBlur}px ${shadow.shadowColor}`;}else return null;}export function safeJSONParse(jsonString,onError){try{return JSON.parse(jsonString);}catch{if(onError)onError();}}export const getCookie=(name,cookies)=>{cookies=cookies?cookies:isBrowser?document.cookie:\"\";var _cookies_match;const[,,cookie]=(_cookies_match=cookies.match(`(^|;) ?${name}=([^;]*)(;|$)`))!==null&&_cookies_match!==void 0?_cookies_match:[null,null,null];return cookie;};/**\n * Yields to main thread before continuing execution, which might allow the browser to paint.\n * If `options.priority` is 'user-blocking', it will asynchronously resolve in older browsers.\n * @param {object} options - see https://github.com/WICG/scheduling-apis/blob/main/explainers/yield-and-continuation.md\n * @see interactionResponse for guaranteeing execution after a paint\n */export function yieldToMain(options){if(\"scheduler\"in window){if(\"yield\"in scheduler)return scheduler.yield(options);if(\"postTask\"in scheduler)return scheduler.postTask(()=>{},options);}if((options===null||options===void 0?void 0:options.priority)===\"user-blocking\"){// `setTimeout` could suffer from being delayed for longer: https://developer.chrome.com/blog/introducing-scheduler-yield-origin-trial#the_problem_with_current_yielding_strategies\n// so for browsers not supporting yield, we guarantee execution for high priority actions, but this does not create space for a paint opportunity as trade-off.\nreturn Promise.resolve();}return new Promise(resolve=>{setTimeout(resolve);});}/**\n * Helper function for `yieldToMain`, which yields before calling `fn`.\n * @see yieldToMain\n */export async function yieldBeforeCb(fn,options){await yieldToMain(options);return fn();}/**\n * Similar to `yieldToMain`, but also waits for the next animation frame before yielding (with a fallback of 100ms if the animation frame never fires).\n * Compared to `yieldToMain`, it guarantees improved INP, but might make processing a little slower. Use only if necessary.\n * @see yieldToMain\n */export function interactionResponse(options){return new Promise(resolve=>{setTimeout(resolve,200)// Fallback for the case where the animation frame never fires.\n;requestAnimationFrame(()=>{void yieldBeforeCb(resolve,options);});});}/**\n * Runs `fn` after the next paint. Similar to `useEffect`, but *guarantees* that the function is run after the next paint.\n * @important Does not support a cleanup fn.\n * @see https://thoughtspile.github.io/2021/11/15/unintentional-layout-effect/\n */export function useAfterPaintEffect(fn,deps,options){useLayoutEffect(()=>{const runAfterPaint=async()=>{await interactionResponse(options);fn();};void runAfterPaint();// eslint-disable-next-line react-hooks/exhaustive-deps -- deps are passed in\n},deps);}\nexport const __FramerMetadata__ = {\"exports\":{\"useAfterPaintEffect\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getCookie\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"safeJSONParse\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getFlexboxValues\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"yieldBeforeCb\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getShadow\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getMultipleShadows\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FlexboxPosition\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"yieldToMain\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"interactionResponse\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEFAULT_FONT_FAMILY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./utils.map"],
  "mappings": "yCAA+E,IAAMA,EAAoB,oKAA2K,SAASC,EAAiBC,EAAS,CAAC,IAAMC,EAAcD,EAAS,MAAM,GAAG,EAAME,EAAeC,EAAW,OAAOF,EAAc,CAAC,EAAE,CAAC,IAAI,MAAME,EAAW,aAAa,MAAM,IAAI,SAASA,EAAW,WAAW,MAAM,IAAI,SAASA,EAAW,SAAS,MAAM,QAAQA,EAAW,UAAU,KAAM,CAAC,OAAOF,EAAc,CAAC,EAAE,CAAC,IAAI,OAAOC,EAAe,aAAa,MAAM,IAAI,QAAQA,EAAe,WAAW,MAAM,IAAI,SAASA,EAAe,SAAS,MAAM,QAAQA,EAAe,UAAU,KAAM,CAAC,MAAM,CAAC,eAAAA,EAAe,WAAAC,CAAU,CAAE,CAAQ,SAASC,KAAsBC,EAAQ,CAAC,IAAMC,EAAO,CAAC,EAAE,OAAAD,EAAQ,QAAQE,GAAgBA,GAAQD,EAAO,KAAKC,CAAM,CAAG,EAASD,EAAO,KAAK,IAAI,CAAE,CAAQ,SAASE,EAAUD,EAAO,CAAC,OAAGA,EAAc,GAAGA,EAAO,aAAaA,EAAO,aAAaA,EAAO,gBAAgBA,EAAO,cAA2B,IAAK,CAAQ,SAASE,EAAcC,EAAWC,EAAQ,CAAC,GAAG,CAAC,OAAO,KAAK,MAAMD,CAAU,CAAE,MAAC,CAASC,GAAQA,EAAQ,CAAE,CAAC,CAKvrC,SAASC,EAAYC,EAAQ,CAAC,GAAG,cAAcC,EAAO,CAAC,GAAG,UAAU,UAAU,OAAO,UAAU,MAAMD,CAAO,EAAE,GAAG,aAAa,UAAU,OAAO,UAAU,SAAS,IAAI,CAAC,EAAEA,CAAO,EAAG,OAA4CA,GAAQ,WAAY,gBAEtP,QAAQ,QAAQ,EAAU,IAAI,QAAQE,GAAS,CAAC,WAAWA,CAAO,CAAE,CAAC,CAAE,CAG3E,eAAsBC,EAAcC,EAAGJ,EAAQ,CAAC,aAAMD,EAAYC,CAAO,EAASI,EAAG,CAAE,CAIhF,SAASC,EAAoBL,EAAQ,CAAC,OAAO,IAAI,QAAQE,GAAS,CAAC,WAAWA,EAAQ,GAAG,EAClG,sBAAsB,IAAI,CAAMC,EAAcD,EAAQF,CAAO,CAAE,CAAC,CAAE,CAAC,CAAE",
  "names": ["DEFAULT_FONT_FAMILY", "getFlexboxValues", "position", "positionParts", "justifyContent", "alignItems", "getMultipleShadows", "shadows", "output", "shadow", "getShadow", "safeJSONParse", "jsonString", "onError", "yieldToMain", "options", "window", "resolve", "yieldBeforeCb", "fn", "interactionResponse"]
}
