{
  "version": 3,
  "sources": ["ssg:https://ga.jspm.io/npm:react@18.1.0/index.js", "ssg:https://app.framerstatic.com/chunk-ANWZDK7P.js", "ssg:https://app.framerstatic.com/framer.G34L3KPS.js"],
  "sourcesContent": ["var e={};var t=Symbol.for(\"react.element\"),r=Symbol.for(\"react.portal\"),n=Symbol.for(\"react.fragment\"),o=Symbol.for(\"react.strict_mode\"),u=Symbol.for(\"react.profiler\"),a=Symbol.for(\"react.provider\"),c=Symbol.for(\"react.context\"),i=Symbol.for(\"react.forward_ref\"),f=Symbol.for(\"react.suspense\"),s=Symbol.for(\"react.memo\"),l=Symbol.for(\"react.lazy\"),p=Symbol.iterator;function A(e){if(null===e||\"object\"!==typeof e)return null;e=p&&e[p]||e[\"@@iterator\"];return\"function\"===typeof e?e:null}var y={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},d=Object.assign,_={};function E(e,t,r){this.props=e;this.context=t;this.refs=_;this.updater=r||y}E.prototype.isReactComponent={};E.prototype.setState=function(e,t){if(\"object\"!==typeof e&&\"function\"!==typeof e&&null!=e)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")};E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(e,t,r){this.props=e;this.context=t;this.refs=_;this.updater=r||y}var m=G.prototype=new F;m.constructor=G;d(m,E.prototype);m.isPureReactComponent=!0;var h=Array.isArray,v=Object.prototype.hasOwnProperty,b={current:null},C={key:!0,ref:!0,__self:!0,__source:!0};function M(e,r,n){var o,u={},a=null,c=null;if(null!=r)for(o in void 0!==r.ref&&(c=r.ref),void 0!==r.key&&(a=\"\"+r.key),r)v.call(r,o)&&!C.hasOwnProperty(o)&&(u[o]=r[o]);var i=arguments.length-2;if(1===i)u.children=n;else if(1<i){for(var f=Array(i),s=0;s<i;s++)f[s]=arguments[s+2];u.children=f}if(e&&e.defaultProps)for(o in i=e.defaultProps,i)void 0===u[o]&&(u[o]=i[o]);return{$$typeof:t,type:e,key:a,ref:c,props:u,_owner:b.current}}function N(e,r){return{$$typeof:t,type:e.type,key:r,ref:e.ref,props:e.props,_owner:e._owner}}function O(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===t}function escape(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+e.replace(/[=:]/g,(function(e){return t[e]}))}var w=/\\/+/g;function Q(e,t){return\"object\"===typeof e&&null!==e&&null!=e.key?escape(\"\"+e.key):t.toString(36)}function R(e,n,o,u,a){var c=typeof e;\"undefined\"!==c&&\"boolean\"!==c||(e=null);var i=!1;if(null===e)i=!0;else switch(c){case\"string\":case\"number\":i=!0;break;case\"object\":switch(e.$$typeof){case t:case r:i=!0}}if(i)return i=e,a=a(i),e=\"\"===u?\".\"+Q(i,0):u,h(a)?(o=\"\",null!=e&&(o=e.replace(w,\"$&/\")+\"/\"),R(a,n,o,\"\",(function(e){return e}))):null!=a&&(O(a)&&(a=N(a,o+(!a.key||i&&i.key===a.key?\"\":(\"\"+a.key).replace(w,\"$&/\")+\"/\")+e)),n.push(a)),1;i=0;u=\"\"===u?\".\":u+\":\";if(h(e))for(var f=0;f<e.length;f++){c=e[f];var s=u+Q(c,f);i+=R(c,n,o,s,a)}else if(s=A(e),\"function\"===typeof s)for(e=s.call(e),f=0;!(c=e.next()).done;)c=c.value,s=u+Q(c,f++),i+=R(c,n,o,s,a);else if(\"object\"===c)throw n=String(e),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===n?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":n)+\"). If you meant to render a collection of children, use an array instead.\");return i}function S(e,t,r){if(null==e)return e;var n=[],o=0;R(e,n,\"\",\"\",(function(e){return t.call(r,e,o++)}));return n}function T(e){if(-1===e._status){var t=e._result;t=t();t.then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}));-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var $={current:null},k={transition:null},g={ReactCurrentDispatcher:$,ReactCurrentBatchConfig:k,ReactCurrentOwner:b};e.Children={map:S,forEach:function(e,t,r){S(e,(function(){t.apply(this,arguments)}),r)},count:function(e){var t=0;S(e,(function(){t++}));return t},toArray:function(e){return S(e,(function(e){return e}))||[]},only:function(e){if(!O(e))throw Error(\"React.Children.only expected to receive a single React element child.\");return e}};e.Component=E;e.Fragment=n;e.Profiler=u;e.PureComponent=G;e.StrictMode=o;e.Suspense=f;e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=g;e.cloneElement=function(e,r,n){if(null===e||void 0===e)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+e+\".\");var o=d({},e.props),u=e.key,a=e.ref,c=e._owner;if(null!=r){void 0!==r.ref&&(a=r.ref,c=b.current);void 0!==r.key&&(u=\"\"+r.key);if(e.type&&e.type.defaultProps)var i=e.type.defaultProps;for(f in r)v.call(r,f)&&!C.hasOwnProperty(f)&&(o[f]=void 0===r[f]&&void 0!==i?i[f]:r[f])}var f=arguments.length-2;if(1===f)o.children=n;else if(1<f){i=Array(f);for(var s=0;s<f;s++)i[s]=arguments[s+2];o.children=i}return{$$typeof:t,type:e.type,key:u,ref:a,props:o,_owner:c}};e.createContext=function(e){e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};e.Provider={$$typeof:a,_context:e};return e.Consumer=e};e.createElement=M;e.createFactory=function(e){var t=M.bind(null,e);t.type=e;return t};e.createRef=function(){return{current:null}};e.forwardRef=function(e){return{$$typeof:i,render:e}};e.isValidElement=O;e.lazy=function(e){return{$$typeof:l,_payload:{_status:-1,_result:e},_init:T}};e.memo=function(e,t){return{$$typeof:s,type:e,compare:void 0===t?null:t}};e.startTransition=function(e){var t=k.transition;k.transition={};try{e()}finally{k.transition=t}};e.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\")};e.useCallback=function(e,t){return $.current.useCallback(e,t)};e.useContext=function(e){return $.current.useContext(e)};e.useDebugValue=function(){};e.useDeferredValue=function(e){return $.current.useDeferredValue(e)};e.useEffect=function(e,t){return $.current.useEffect(e,t)};e.useId=function(){return $.current.useId()};e.useImperativeHandle=function(e,t,r){return $.current.useImperativeHandle(e,t,r)};e.useInsertionEffect=function(e,t){return $.current.useInsertionEffect(e,t)};e.useLayoutEffect=function(e,t){return $.current.useLayoutEffect(e,t)};e.useMemo=function(e,t){return $.current.useMemo(e,t)};e.useReducer=function(e,t,r){return $.current.useReducer(e,t,r)};e.useRef=function(e){return $.current.useRef(e)};e.useState=function(e){return $.current.useState(e)};e.useSyncExternalStore=function(e,t,r){return $.current.useSyncExternalStore(e,t,r)};e.useTransition=function(){return $.current.useTransition()};e.version=\"18.1.0\";const j=e.Children,I=e.Component,x=e.Fragment,P=e.Profiler,D=e.PureComponent,V=e.StrictMode,L=e.Suspense,U=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,q=e.cloneElement,z=e.createContext,B=e.createElement,H=e.createFactory,W=e.createRef,Y=e.forwardRef,J=e.isValidElement,K=e.lazy,X=e.memo,Z=e.startTransition,ee=e.unstable_act,te=e.useCallback,re=e.useContext,ne=e.useDebugValue,oe=e.useDeferredValue,ue=e.useEffect,ae=e.useId,ce=e.useImperativeHandle,ie=e.useInsertionEffect,fe=e.useLayoutEffect,se=e.useMemo,le=e.useReducer,pe=e.useRef,ye=e.useState,de=e.useSyncExternalStore,_e=e.useTransition,me=e.version;export{j as Children,I as Component,x as Fragment,P as Profiler,D as PureComponent,V as StrictMode,L as Suspense,U as __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,q as cloneElement,z as createContext,B as createElement,H as createFactory,W as createRef,e as default,Y as forwardRef,J as isValidElement,K as lazy,X as memo,Z as startTransition,ee as unstable_act,te as useCallback,re as useContext,ne as useDebugValue,oe as useDeferredValue,ue as useEffect,ae as useId,ce as useImperativeHandle,ie as useInsertionEffect,fe as useLayoutEffect,se as useMemo,le as useReducer,pe as useRef,ye as useState,de as useSyncExternalStore,_e as useTransition,me as version};\n\n//# sourceMappingURL=index.js.map", "var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\nvar __accessCheck = (obj, member, msg) => {\n  if (!member.has(obj))\n    throw TypeError(\"Cannot \" + msg);\n};\nvar __privateGet = (obj, member, getter) => {\n  __accessCheck(obj, member, \"read from private field\");\n  return getter ? getter.call(obj) : member.get(obj);\n};\nvar __privateAdd = (obj, member, value) => {\n  if (member.has(obj))\n    throw TypeError(\"Cannot add the same private member more than once\");\n  member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n};\nvar __privateSet = (obj, member, value, setter) => {\n  __accessCheck(obj, member, \"write to private field\");\n  setter ? setter.call(obj, value) : member.set(obj, value);\n  return value;\n};\n\n// ../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\nvar require_memoize_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/memoize/dist/memoize.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function memoize(fn) {\n      var cache = {};\n      return function(arg) {\n        if (cache[arg] === void 0)\n          cache[arg] = fn(arg);\n        return cache[arg];\n      };\n    }\n    exports.default = memoize;\n  }\n});\n\n// ../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\nvar require_is_prop_valid_browser_cjs = __commonJS({\n  \"../../../node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.cjs.js\"(exports) {\n    \"use strict\";\n    Object.defineProperty(exports, \"__esModule\", { value: true });\n    function _interopDefault(ex) {\n      return ex && typeof ex === \"object\" && \"default\" in ex ? ex[\"default\"] : ex;\n    }\n    var memoize = _interopDefault(require_memoize_browser_cjs());\n    var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\n    var index = memoize(\n      function(prop) {\n        return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91;\n      }\n      /* Z+1 */\n    );\n    exports.default = index;\n  }\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs\nimport { createContext } from \"react\";\nvar MotionConfigContext = createContext({\n  transformPagePoint: (p) => p,\n  isStatic: false,\n  reducedMotion: \"never\"\n});\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs\nimport { createContext as createContext2 } from \"react\";\nvar MotionContext = createContext2({});\n\n// ../../../node_modules/framer-motion/dist/es/context/PresenceContext.mjs\nimport { createContext as createContext3 } from \"react\";\nvar PresenceContext = createContext3(null);\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-browser.mjs\nvar isBrowser = typeof document !== \"undefined\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs\nimport { useLayoutEffect, useEffect } from \"react\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\n// ../../../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs\nimport { createContext as createContext4 } from \"react\";\nvar LayoutGroupContext = createContext4({});\n\n// ../../../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs\nimport { createContext as createContext5 } from \"react\";\nvar SwitchLayoutGroupContext = createContext5({});\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nimport * as React from \"react\";\nimport { forwardRef, useContext as useContext3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nimport { useContext, useRef, useInsertionEffect, useEffect as useEffect2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/LazyContext.mjs\nimport { createContext as createContext6 } from \"react\";\nvar LazyContext = createContext6({ strict: false });\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs\nfunction useVisualElement(Component2, visualState, props, createVisualElement2) {\n  const { visualElement: parent } = useContext(MotionContext);\n  const lazyContext = useContext(LazyContext);\n  const presenceContext = useContext(PresenceContext);\n  const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n  const visualElementRef = useRef();\n  createVisualElement2 = createVisualElement2 || lazyContext.renderer;\n  if (!visualElementRef.current && createVisualElement2) {\n    visualElementRef.current = createVisualElement2(Component2, {\n      visualState,\n      parent,\n      props,\n      presenceContext,\n      blockInitialAnimation: presenceContext ? presenceContext.initial === false : false,\n      reducedMotionConfig\n    });\n  }\n  const visualElement = visualElementRef.current;\n  useInsertionEffect(() => {\n    visualElement && visualElement.update(props, presenceContext);\n  });\n  const canHandoff = useRef(Boolean(window.HandoffAppearAnimations));\n  useIsomorphicLayoutEffect(() => {\n    if (!visualElement)\n      return;\n    visualElement.render();\n    if (canHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n  });\n  useEffect2(() => {\n    if (!visualElement)\n      return;\n    visualElement.updateFeatures();\n    if (!canHandoff.current && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\n    window.HandoffAppearAnimations = void 0;\n    canHandoff.current = false;\n  });\n  return visualElement;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nimport { useCallback } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs\nfunction isRefObject(ref) {\n  return typeof ref === \"object\" && Object.prototype.hasOwnProperty.call(ref, \"current\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs\nfunction useMotionRef(visualState, visualElement, externalRef) {\n  return useCallback(\n    (instance) => {\n      instance && visualState.mount && visualState.mount(instance);\n      if (visualElement) {\n        instance ? visualElement.mount(instance) : visualElement.unmount();\n      }\n      if (externalRef) {\n        if (typeof externalRef === \"function\") {\n          externalRef(instance);\n        } else if (isRefObject(externalRef)) {\n          externalRef.current = instance;\n        }\n      }\n    },\n    /**\n     * Only pass a new ref callback to React if we've received a visual element\n     * factory. Otherwise we'll be mounting/remounting every time externalRef\n     * or other dependencies change.\n     */\n    [visualElement]\n  );\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nimport { useContext as useContext2, useMemo } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs\nfunction isVariantLabel(v) {\n  return typeof v === \"string\" || Array.isArray(v);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs\nfunction isAnimationControls(v) {\n  return typeof v === \"object\" && typeof v.start === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs\nvar variantPriorityOrder = [\n  \"animate\",\n  \"whileInView\",\n  \"whileFocus\",\n  \"whileHover\",\n  \"whileTap\",\n  \"whileDrag\",\n  \"exit\"\n];\nvar variantProps = [\"initial\", ...variantPriorityOrder];\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs\nfunction isControllingVariants(props) {\n  return isAnimationControls(props.animate) || variantProps.some((name) => isVariantLabel(props[name]));\n}\nfunction isVariantNode(props) {\n  return Boolean(isControllingVariants(props) || props.variants);\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs\nfunction getCurrentTreeVariants(props, context) {\n  if (isControllingVariants(props)) {\n    const { initial, animate: animate2 } = props;\n    return {\n      initial: initial === false || isVariantLabel(initial) ? initial : void 0,\n      animate: isVariantLabel(animate2) ? animate2 : void 0\n    };\n  }\n  return props.inherit !== false ? context : {};\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs\nfunction useCreateMotionContext(props) {\n  const { initial, animate: animate2 } = getCurrentTreeVariants(props, useContext2(MotionContext));\n  return useMemo(() => ({ initial, animate: animate2 }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate2)]);\n}\nfunction variantLabelsAsDependency(prop) {\n  return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/definitions.mjs\nvar featureProps = {\n  animation: [\n    \"animate\",\n    \"variants\",\n    \"whileHover\",\n    \"whileTap\",\n    \"exit\",\n    \"whileInView\",\n    \"whileFocus\",\n    \"whileDrag\"\n  ],\n  exit: [\"exit\"],\n  drag: [\"drag\", \"dragControls\"],\n  focus: [\"whileFocus\"],\n  hover: [\"whileHover\", \"onHoverStart\", \"onHoverEnd\"],\n  tap: [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"],\n  pan: [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"],\n  inView: [\"whileInView\", \"onViewportEnter\", \"onViewportLeave\"],\n  layout: [\"layout\", \"layoutId\"]\n};\nvar featureDefinitions = {};\nfor (const key in featureProps) {\n  featureDefinitions[key] = {\n    isEnabled: (props) => featureProps[key].some((name) => !!props[name])\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/load-features.mjs\nfunction loadFeatures(features) {\n  for (const key in features) {\n    featureDefinitions[key] = {\n      ...featureDefinitions[key],\n      ...features[key]\n    };\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs\nvar motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\n// ../../../node_modules/framer-motion/dist/es/motion/index.mjs\nfunction createMotionComponent({ preloadedFeatures: preloadedFeatures2, createVisualElement: createVisualElement2, useRender, useVisualState: useVisualState2, Component: Component2 }) {\n  preloadedFeatures2 && loadFeatures(preloadedFeatures2);\n  function MotionComponent(props, externalRef) {\n    let MeasureLayout2;\n    const configAndProps = {\n      ...useContext3(MotionConfigContext),\n      ...props,\n      layoutId: useLayoutId(props)\n    };\n    const { isStatic } = configAndProps;\n    const context = useCreateMotionContext(props);\n    const visualState = useVisualState2(props, isStatic);\n    if (!isStatic && isBrowser) {\n      context.visualElement = useVisualElement(Component2, visualState, configAndProps, createVisualElement2);\n      const initialLayoutGroupConfig = useContext3(SwitchLayoutGroupContext);\n      const isStrict = useContext3(LazyContext).strict;\n      if (context.visualElement) {\n        MeasureLayout2 = context.visualElement.loadFeatures(\n          // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n          configAndProps,\n          isStrict,\n          preloadedFeatures2,\n          initialLayoutGroupConfig\n        );\n      }\n    }\n    return React.createElement(\n      MotionContext.Provider,\n      { value: context },\n      MeasureLayout2 && context.visualElement ? React.createElement(MeasureLayout2, { visualElement: context.visualElement, ...configAndProps }) : null,\n      useRender(Component2, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)\n    );\n  }\n  const ForwardRefComponent = forwardRef(MotionComponent);\n  ForwardRefComponent[motionComponentSymbol] = Component2;\n  return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n  const layoutGroupId = useContext3(LayoutGroupContext).id;\n  return layoutGroupId && layoutId !== void 0 ? layoutGroupId + \"-\" + layoutId : layoutId;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs\nvar scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n  Object.assign(scaleCorrectors, correctors);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs\nvar isMotionValue = (value) => Boolean(value && value.getVelocity);\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs\nvar transformPropOrder = [\n  \"transformPerspective\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"translateX\",\n  \"translateY\",\n  \"translateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\"\n];\nvar transformProps = new Set(transformPropOrder);\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs\nvar translateAlias = {\n  x: \"translateX\",\n  y: \"translateY\",\n  z: \"translateZ\",\n  transformPerspective: \"perspective\"\n};\nvar numTransforms = transformPropOrder.length;\nfunction buildTransform(transform2, { enableHardwareAcceleration = true, allowTransformNone = true }, transformIsDefault, transformTemplate) {\n  let transformString = \"\";\n  for (let i = 0; i < numTransforms; i++) {\n    const key = transformPropOrder[i];\n    if (transform2[key] !== void 0) {\n      const transformName = translateAlias[key] || key;\n      transformString += `${transformName}(${transform2[key]}) `;\n    }\n  }\n  if (enableHardwareAcceleration && !transform2.z) {\n    transformString += \"translateZ(0)\";\n  }\n  transformString = transformString.trim();\n  if (transformTemplate) {\n    transformString = transformTemplate(transform2, transformIsDefault ? \"\" : transformString);\n  } else if (allowTransformNone && transformIsDefault) {\n    transformString = \"none\";\n  }\n  return transformString;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/clamp.mjs\nvar clamp = (min, max, v) => Math.min(Math.max(v, min), max);\n\n// ../../../node_modules/framer-motion/dist/es/value/types/utils.mjs\nvar sanitize = (v) => Math.round(v * 1e5) / 1e5;\nvar floatRegex = /(-)?([\\d]*\\.?[\\d])+/g;\nvar colorRegex = /(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nvar singleColorRegex = /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n  return typeof v === \"string\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs\nvar createUnitType = (unit) => ({\n  test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n  parse: parseFloat,\n  transform: (v) => `${v}${unit}`\n});\nvar degrees = createUnitType(\"deg\");\nvar percent = createUnitType(\"%\");\nvar px = createUnitType(\"px\");\nvar vh = createUnitType(\"vh\");\nvar vw = createUnitType(\"vw\");\nvar progressPercentage = {\n  ...percent,\n  parse: (v) => percent.parse(v) / 100,\n  transform: (v) => percent.transform(v * 100)\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs\nvar validMotionProps = /* @__PURE__ */ new Set([\n  \"animate\",\n  \"exit\",\n  \"variants\",\n  \"initial\",\n  \"style\",\n  \"values\",\n  \"variants\",\n  \"transition\",\n  \"transformTemplate\",\n  \"transformValues\",\n  \"custom\",\n  \"inherit\",\n  \"onLayoutAnimationStart\",\n  \"onLayoutAnimationComplete\",\n  \"onLayoutMeasure\",\n  \"onBeforeLayoutMeasure\",\n  \"onAnimationStart\",\n  \"onAnimationComplete\",\n  \"onUpdate\",\n  \"onDragStart\",\n  \"onDrag\",\n  \"onDragEnd\",\n  \"onMeasureDragConstraints\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"_dragX\",\n  \"_dragY\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"onViewportEnter\",\n  \"onViewportLeave\",\n  \"ignoreStrict\",\n  \"viewport\"\n]);\nfunction isValidMotionProp(key) {\n  return key.startsWith(\"while\") || key.startsWith(\"drag\") && key !== \"draggable\" || key.startsWith(\"layout\") || key.startsWith(\"onTap\") || key.startsWith(\"onPan\") || validMotionProps.has(key);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs\nvar shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n  if (!isValidProp)\n    return;\n  shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\ntry {\n  loadExternalIsValidProp(require_is_prop_valid_browser_cjs().default);\n} catch (_a) {\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n  const filteredProps = {};\n  for (const key in props) {\n    if (key === \"values\" && typeof props.values === \"object\")\n      continue;\n    if (shouldForward(key) || forwardMotionProps === true && isValidMotionProp(key) || !isDom && !isValidMotionProp(key) || // If trying to use native HTML drag events, forward drag listeners\n    props[\"draggable\"] && key.startsWith(\"onDrag\")) {\n      filteredProps[key] = props[key];\n    }\n  }\n  return filteredProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs\nvar isKeyframesTarget = (v) => {\n  return Array.isArray(v);\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/resolve-value.mjs\nvar isCustomValue = (v) => {\n  return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = (v) => {\n  return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs\nfunction resolveMotionValue(value) {\n  const unwrappedValue = isMotionValue(value) ? value.get() : value;\n  return isCustomValue(unwrappedValue) ? unwrappedValue.toValue() : unwrappedValue;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nimport { useContext as useContext4 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs\nfunction resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n  if (typeof definition === \"function\") {\n    definition = definition(custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n  }\n  if (typeof definition === \"string\") {\n    definition = props.variants && props.variants[definition];\n  }\n  if (typeof definition === \"function\") {\n    definition = definition(custom !== void 0 ? custom : props.custom, currentValues, currentVelocity);\n  }\n  return definition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-constant.mjs\nimport { useRef as useRef2 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef2(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs\nfunction makeState({ scrapeMotionValuesFromProps: scrapeMotionValuesFromProps3, createRenderState, onMount }, props, context, presenceContext) {\n  const state = {\n    latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps3),\n    renderState: createRenderState()\n  };\n  if (onMount) {\n    state.mount = (instance) => onMount(props, instance, state);\n  }\n  return state;\n}\nvar makeUseVisualState = (config) => (props, isStatic) => {\n  const context = useContext4(MotionContext);\n  const presenceContext = useContext4(PresenceContext);\n  const make = () => makeState(config, props, context, presenceContext);\n  return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n  const values = {};\n  const motionValues = scrapeMotionValues(props, {});\n  for (const key in motionValues) {\n    values[key] = resolveMotionValue(motionValues[key]);\n  }\n  let { initial, animate: animate2 } = props;\n  const isControllingVariants$1 = isControllingVariants(props);\n  const isVariantNode$1 = isVariantNode(props);\n  if (context && isVariantNode$1 && !isControllingVariants$1 && props.inherit !== false) {\n    if (initial === void 0)\n      initial = context.initial;\n    if (animate2 === void 0)\n      animate2 = context.animate;\n  }\n  let isInitialAnimationBlocked = presenceContext ? presenceContext.initial === false : false;\n  isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n  const variantToSet = isInitialAnimationBlocked ? animate2 : initial;\n  if (variantToSet && typeof variantToSet !== \"boolean\" && !isAnimationControls(variantToSet)) {\n    const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n    list.forEach((definition) => {\n      const resolved = resolveVariantFromProps(props, definition);\n      if (!resolved)\n        return;\n      const { transitionEnd, transition, ...target } = resolved;\n      for (const key in target) {\n        let valueTarget = target[key];\n        if (Array.isArray(valueTarget)) {\n          const index = isInitialAnimationBlocked ? valueTarget.length - 1 : 0;\n          valueTarget = valueTarget[index];\n        }\n        if (valueTarget !== null) {\n          values[key] = valueTarget;\n        }\n      }\n      for (const key in transitionEnd)\n        values[key] = transitionEnd[key];\n    });\n  }\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/noop.mjs\nvar noop = (any) => any;\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/render-step.mjs\nvar Queue = class {\n  constructor() {\n    this.order = [];\n    this.scheduled = /* @__PURE__ */ new Set();\n  }\n  add(process2) {\n    if (!this.scheduled.has(process2)) {\n      this.scheduled.add(process2);\n      this.order.push(process2);\n      return true;\n    }\n  }\n  remove(process2) {\n    const index = this.order.indexOf(process2);\n    if (index !== -1) {\n      this.order.splice(index, 1);\n      this.scheduled.delete(process2);\n    }\n  }\n  clear() {\n    this.order.length = 0;\n    this.scheduled.clear();\n  }\n};\nfunction createRenderStep(runNextFrame) {\n  let thisFrame = new Queue();\n  let nextFrame = new Queue();\n  let numToRun = 0;\n  let isProcessing = false;\n  let flushNextFrame = false;\n  const toKeepAlive = /* @__PURE__ */ new WeakSet();\n  const step = {\n    /**\n     * Schedule a process to run on the next frame.\n     */\n    schedule: (callback, keepAlive = false, immediate = false) => {\n      const addToCurrentFrame = immediate && isProcessing;\n      const queue = addToCurrentFrame ? thisFrame : nextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (queue.add(callback) && addToCurrentFrame && isProcessing) {\n        numToRun = thisFrame.order.length;\n      }\n      return callback;\n    },\n    /**\n     * Cancel the provided callback from running on the next frame.\n     */\n    cancel: (callback) => {\n      nextFrame.remove(callback);\n      toKeepAlive.delete(callback);\n    },\n    /**\n     * Execute all schedule callbacks.\n     */\n    process: (frameData2) => {\n      if (isProcessing) {\n        flushNextFrame = true;\n        return;\n      }\n      isProcessing = true;\n      [thisFrame, nextFrame] = [nextFrame, thisFrame];\n      nextFrame.clear();\n      numToRun = thisFrame.order.length;\n      if (numToRun) {\n        for (let i = 0; i < numToRun; i++) {\n          const callback = thisFrame.order[i];\n          callback(frameData2);\n          if (toKeepAlive.has(callback)) {\n            step.schedule(callback);\n            runNextFrame();\n          }\n        }\n      }\n      isProcessing = false;\n      if (flushNextFrame) {\n        flushNextFrame = false;\n        step.process(frameData2);\n      }\n    }\n  };\n  return step;\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/batcher.mjs\nvar stepsOrder = [\n  \"prepare\",\n  \"read\",\n  \"update\",\n  \"preRender\",\n  \"render\",\n  \"postRender\"\n];\nvar maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n  let runNextFrame = false;\n  let useDefaultElapsed = true;\n  const state = {\n    delta: 0,\n    timestamp: 0,\n    isProcessing: false\n  };\n  const steps2 = stepsOrder.reduce((acc, key) => {\n    acc[key] = createRenderStep(() => runNextFrame = true);\n    return acc;\n  }, {});\n  const processStep = (stepId) => steps2[stepId].process(state);\n  const processBatch = () => {\n    const timestamp = performance.now();\n    runNextFrame = false;\n    state.delta = useDefaultElapsed ? 1e3 / 60 : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n    state.timestamp = timestamp;\n    state.isProcessing = true;\n    stepsOrder.forEach(processStep);\n    state.isProcessing = false;\n    if (runNextFrame && allowKeepAlive) {\n      useDefaultElapsed = false;\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const wake = () => {\n    runNextFrame = true;\n    useDefaultElapsed = true;\n    if (!state.isProcessing) {\n      scheduleNextBatch(processBatch);\n    }\n  };\n  const schedule = stepsOrder.reduce((acc, key) => {\n    const step = steps2[key];\n    acc[key] = (process2, keepAlive = false, immediate = false) => {\n      if (!runNextFrame)\n        wake();\n      return step.schedule(process2, keepAlive, immediate);\n    };\n    return acc;\n  }, {});\n  const cancel = (process2) => stepsOrder.forEach((key) => steps2[key].cancel(process2));\n  return { schedule, cancel, state, steps: steps2 };\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/frame.mjs\nvar { schedule: frame, cancel: cancelFrame, state: frameData, steps } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\n// ../../../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs\nvar isPrimaryPointer = (event) => {\n  if (event.pointerType === \"mouse\") {\n    return typeof event.button !== \"number\" || event.button <= 0;\n  } else {\n    return event.isPrimary !== false;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/event-info.mjs\nfunction extractEventInfo(event, pointType = \"page\") {\n  return {\n    point: {\n      x: event[pointType + \"X\"],\n      y: event[pointType + \"Y\"]\n    }\n  };\n}\nvar addPointerInfo = (handler) => {\n  return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\n// ../../../node_modules/framer-motion/dist/es/events/add-dom-event.mjs\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n  target.addEventListener(eventName, handler, options);\n  return () => target.removeEventListener(eventName, handler);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs\nfunction addPointerEvent(target, eventName, handler, options) {\n  return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/pipe.mjs\nvar combineFunctions = (a, b) => (v) => b(a(v));\nvar pipe = (...transformers) => transformers.reduce(combineFunctions);\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs\nfunction createLock(name) {\n  let lock = null;\n  return () => {\n    const openLock = () => {\n      lock = null;\n    };\n    if (lock === null) {\n      lock = name;\n      return openLock;\n    }\n    return false;\n  };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag2) {\n  let lock = false;\n  if (drag2 === \"y\") {\n    lock = globalVerticalLock();\n  } else if (drag2 === \"x\") {\n    lock = globalHorizontalLock();\n  } else {\n    const openHorizontal = globalHorizontalLock();\n    const openVertical = globalVerticalLock();\n    if (openHorizontal && openVertical) {\n      lock = () => {\n        openHorizontal();\n        openVertical();\n      };\n    } else {\n      if (openHorizontal)\n        openHorizontal();\n      if (openVertical)\n        openVertical();\n    }\n  }\n  return lock;\n}\nfunction isDragActive() {\n  const openGestureLock = getGlobalLock(true);\n  if (!openGestureLock)\n    return true;\n  openGestureLock();\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs\nvar camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs\nvar optimizedAppearDataId = \"framerAppearId\";\nvar optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\n// ../../../node_modules/framer-motion/dist/es/utils/errors.mjs\nvar warning = noop;\nvar invariant = noop;\nif (false) {\n  warning = (check, message) => {\n    if (!check && typeof console !== \"undefined\") {\n      console.warn(message);\n    }\n  };\n  invariant = (check, message) => {\n    if (!check) {\n      throw new Error(message);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs\nvar calcBezier = (t, a1, a2) => (((1 - 3 * a2 + 3 * a1) * t + (3 * a2 - 6 * a1)) * t + 3 * a1) * t;\nvar subdivisionPrecision = 1e-7;\nvar subdivisionMaxIterations = 12;\nfunction binarySubdivide(x, lowerBound, upperBound, mX1, mX2) {\n  let currentX;\n  let currentT;\n  let i = 0;\n  do {\n    currentT = lowerBound + (upperBound - lowerBound) / 2;\n    currentX = calcBezier(currentT, mX1, mX2) - x;\n    if (currentX > 0) {\n      upperBound = currentT;\n    } else {\n      lowerBound = currentT;\n    }\n  } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);\n  return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n  if (mX1 === mY1 && mX2 === mY2)\n    return noop;\n  const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n  return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/ease.mjs\nvar easeIn = cubicBezier(0.42, 0, 1, 1);\nvar easeOut = cubicBezier(0, 0, 0.58, 1);\nvar easeInOut = cubicBezier(0.42, 0, 0.58, 1);\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs\nvar mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\n// ../../../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs\nvar reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\n// ../../../node_modules/framer-motion/dist/es/easing/circ.mjs\nvar circIn = (p) => 1 - Math.sin(Math.acos(p));\nvar circOut = reverseEasing(circIn);\nvar circInOut = mirrorEasing(circOut);\n\n// ../../../node_modules/framer-motion/dist/es/easing/back.mjs\nvar backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nvar backIn = reverseEasing(backOut);\nvar backInOut = mirrorEasing(backIn);\n\n// ../../../node_modules/framer-motion/dist/es/easing/anticipate.mjs\nvar anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\n// ../../../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs\nvar number = {\n  test: (v) => typeof v === \"number\",\n  parse: parseFloat,\n  transform: (v) => v\n};\nvar alpha = {\n  ...number,\n  transform: (v) => clamp(0, 1, v)\n};\nvar scale = {\n  ...number,\n  default: 1\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/utils.mjs\nvar isColorString = (type, testProp) => (v) => {\n  return Boolean(isString(v) && singleColorRegex.test(v) && v.startsWith(type) || testProp && Object.prototype.hasOwnProperty.call(v, testProp));\n};\nvar splitColor = (aName, bName, cName) => (v) => {\n  if (!isString(v))\n    return v;\n  const [a, b, c, alpha2] = v.match(floatRegex);\n  return {\n    [aName]: parseFloat(a),\n    [bName]: parseFloat(b),\n    [cName]: parseFloat(c),\n    alpha: alpha2 !== void 0 ? parseFloat(alpha2) : 1\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs\nvar clampRgbUnit = (v) => clamp(0, 255, v);\nvar rgbUnit = {\n  ...number,\n  transform: (v) => Math.round(clampRgbUnit(v))\n};\nvar rgba = {\n  test: isColorString(\"rgb\", \"red\"),\n  parse: splitColor(\"red\", \"green\", \"blue\"),\n  transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" + rgbUnit.transform(red) + \", \" + rgbUnit.transform(green) + \", \" + rgbUnit.transform(blue) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\"\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hex.mjs\nfunction parseHex(v) {\n  let r = \"\";\n  let g = \"\";\n  let b = \"\";\n  let a = \"\";\n  if (v.length > 5) {\n    r = v.substring(1, 3);\n    g = v.substring(3, 5);\n    b = v.substring(5, 7);\n    a = v.substring(7, 9);\n  } else {\n    r = v.substring(1, 2);\n    g = v.substring(2, 3);\n    b = v.substring(3, 4);\n    a = v.substring(4, 5);\n    r += r;\n    g += g;\n    b += b;\n    a += a;\n  }\n  return {\n    red: parseInt(r, 16),\n    green: parseInt(g, 16),\n    blue: parseInt(b, 16),\n    alpha: a ? parseInt(a, 16) / 255 : 1\n  };\n}\nvar hex = {\n  test: isColorString(\"#\"),\n  parse: parseHex,\n  transform: rgba.transform\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs\nvar hsla = {\n  test: isColorString(\"hsl\", \"hue\"),\n  parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n  transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n    return \"hsla(\" + Math.round(hue) + \", \" + percent.transform(sanitize(saturation)) + \", \" + percent.transform(sanitize(lightness)) + \", \" + sanitize(alpha.transform(alpha$1)) + \")\";\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/types/color/index.mjs\nvar color = {\n  test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n  parse: (v) => {\n    if (rgba.test(v)) {\n      return rgba.parse(v);\n    } else if (hsla.test(v)) {\n      return hsla.parse(v);\n    } else {\n      return hex.parse(v);\n    }\n  },\n  transform: (v) => {\n    return isString(v) ? v : v.hasOwnProperty(\"red\") ? rgba.transform(v) : hsla.transform(v);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix.mjs\nvar mix = (from, to, progress2) => -progress2 * from + progress2 * to + from;\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs\nvar checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nvar isCSSVariableName = checkStringStartsWith(\"--\");\nvar isCSSVariableToken = checkStringStartsWith(\"var(--\");\nvar cssVariableRegex = /var\\s*\\(\\s*--[\\w-]+(\\s*,\\s*(?:(?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)+)?\\s*\\)/g;\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/index.mjs\nfunction test(v) {\n  var _a, _b;\n  return isNaN(v) && isString(v) && (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) + (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) > 0;\n}\nvar cssVarTokeniser = {\n  regex: cssVariableRegex,\n  countKey: \"Vars\",\n  token: \"${v}\",\n  parse: noop\n};\nvar colorTokeniser = {\n  regex: colorRegex,\n  countKey: \"Colors\",\n  token: \"${c}\",\n  parse: color.parse\n};\nvar numberTokeniser = {\n  regex: floatRegex,\n  countKey: \"Numbers\",\n  token: \"${n}\",\n  parse: number.parse\n};\nfunction tokenise(info, { regex, countKey, token, parse }) {\n  const matches = info.tokenised.match(regex);\n  if (!matches)\n    return;\n  info[\"num\" + countKey] = matches.length;\n  info.tokenised = info.tokenised.replace(regex, token);\n  info.values.push(...matches.map(parse));\n}\nfunction analyseComplexValue(value) {\n  const originalValue = value.toString();\n  const info = {\n    value: originalValue,\n    tokenised: originalValue,\n    values: [],\n    numVars: 0,\n    numColors: 0,\n    numNumbers: 0\n  };\n  if (info.value.includes(\"var(--\"))\n    tokenise(info, cssVarTokeniser);\n  tokenise(info, colorTokeniser);\n  tokenise(info, numberTokeniser);\n  return info;\n}\nfunction parseComplexValue(v) {\n  return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n  const { values, numColors, numVars, tokenised } = analyseComplexValue(source);\n  const numValues = values.length;\n  return (v) => {\n    let output = tokenised;\n    for (let i = 0; i < numValues; i++) {\n      if (i < numVars) {\n        output = output.replace(cssVarTokeniser.token, v[i]);\n      } else if (i < numVars + numColors) {\n        output = output.replace(colorTokeniser.token, color.transform(v[i]));\n      } else {\n        output = output.replace(numberTokeniser.token, sanitize(v[i]));\n      }\n    }\n    return output;\n  };\n}\nvar convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n  const parsed = parseComplexValue(v);\n  const transformer = createTransformer(v);\n  return transformer(parsed.map(convertNumbersToZero));\n}\nvar complex = {\n  test,\n  parse: parseComplexValue,\n  createTransformer,\n  getAnimatableNone\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/progress.mjs\nvar progress = (from, to, value) => {\n  const toFromDifference = to - from;\n  return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs\nfunction hueToRgb(p, q, t) {\n  if (t < 0)\n    t += 1;\n  if (t > 1)\n    t -= 1;\n  if (t < 1 / 6)\n    return p + (q - p) * 6 * t;\n  if (t < 1 / 2)\n    return q;\n  if (t < 2 / 3)\n    return p + (q - p) * (2 / 3 - t) * 6;\n  return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha: alpha2 }) {\n  hue /= 360;\n  saturation /= 100;\n  lightness /= 100;\n  let red = 0;\n  let green = 0;\n  let blue = 0;\n  if (!saturation) {\n    red = green = blue = lightness;\n  } else {\n    const q = lightness < 0.5 ? lightness * (1 + saturation) : lightness + saturation - lightness * saturation;\n    const p = 2 * lightness - q;\n    red = hueToRgb(p, q, hue + 1 / 3);\n    green = hueToRgb(p, q, hue);\n    blue = hueToRgb(p, q, hue - 1 / 3);\n  }\n  return {\n    red: Math.round(red * 255),\n    green: Math.round(green * 255),\n    blue: Math.round(blue * 255),\n    alpha: alpha2\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix-color.mjs\nvar mixLinearColor = (from, to, v) => {\n  const fromExpo = from * from;\n  return Math.sqrt(Math.max(0, v * (to * to - fromExpo) + fromExpo));\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color2) {\n  const type = getColorType(color2);\n  invariant(Boolean(type), `'${color2}' is not an animatable color. Use the equivalent color code instead.`);\n  let model = type.parse(color2);\n  if (type === hsla) {\n    model = hslaToRgba(model);\n  }\n  return model;\n}\nvar mixColor = (from, to) => {\n  const fromRGBA = asRGBA(from);\n  const toRGBA = asRGBA(to);\n  const blended = { ...fromRGBA };\n  return (v) => {\n    blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n    blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n    blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n    blended.alpha = mix(fromRGBA.alpha, toRGBA.alpha, v);\n    return rgba.transform(blended);\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/mix-complex.mjs\nvar mixImmediate = (origin, target) => (p) => `${p > 0 ? target : origin}`;\nfunction getMixer(origin, target) {\n  if (typeof origin === \"number\") {\n    return (v) => mix(origin, target, v);\n  } else if (color.test(origin)) {\n    return mixColor(origin, target);\n  } else {\n    return origin.startsWith(\"var(\") ? mixImmediate(origin, target) : mixComplex(origin, target);\n  }\n}\nvar mixArray = (from, to) => {\n  const output = [...from];\n  const numValues = output.length;\n  const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n  return (v) => {\n    for (let i = 0; i < numValues; i++) {\n      output[i] = blendValue[i](v);\n    }\n    return output;\n  };\n};\nvar mixObject = (origin, target) => {\n  const output = { ...origin, ...target };\n  const blendValue = {};\n  for (const key in output) {\n    if (origin[key] !== void 0 && target[key] !== void 0) {\n      blendValue[key] = getMixer(origin[key], target[key]);\n    }\n  }\n  return (v) => {\n    for (const key in blendValue) {\n      output[key] = blendValue[key](v);\n    }\n    return output;\n  };\n};\nvar mixComplex = (origin, target) => {\n  const template = complex.createTransformer(target);\n  const originStats = analyseComplexValue(origin);\n  const targetStats = analyseComplexValue(target);\n  const canInterpolate = originStats.numVars === targetStats.numVars && originStats.numColors === targetStats.numColors && originStats.numNumbers >= targetStats.numNumbers;\n  if (canInterpolate) {\n    return pipe(mixArray(originStats.values, targetStats.values), template);\n  } else {\n    warning(true, `Complex values '${origin}' and '${target}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`);\n    return mixImmediate(origin, target);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/interpolate.mjs\nvar mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n  if (typeof v === \"number\") {\n    return mixNumber;\n  } else if (typeof v === \"string\") {\n    return color.test(v) ? mixColor : mixComplex;\n  } else if (Array.isArray(v)) {\n    return mixArray;\n  } else if (typeof v === \"object\") {\n    return mixObject;\n  }\n  return mixNumber;\n}\nfunction createMixers(output, ease2, customMixer) {\n  const mixers = [];\n  const mixerFactory = customMixer || detectMixerFactory(output[0]);\n  const numMixers = output.length - 1;\n  for (let i = 0; i < numMixers; i++) {\n    let mixer = mixerFactory(output[i], output[i + 1]);\n    if (ease2) {\n      const easingFunction = Array.isArray(ease2) ? ease2[i] || noop : ease2;\n      mixer = pipe(easingFunction, mixer);\n    }\n    mixers.push(mixer);\n  }\n  return mixers;\n}\nfunction interpolate(input, output, { clamp: isClamp = true, ease: ease2, mixer } = {}) {\n  const inputLength = input.length;\n  invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n  if (inputLength === 1)\n    return () => output[0];\n  if (input[0] > input[inputLength - 1]) {\n    input = [...input].reverse();\n    output = [...output].reverse();\n  }\n  const mixers = createMixers(output, ease2, mixer);\n  const numMixers = mixers.length;\n  const interpolator = (v) => {\n    let i = 0;\n    if (numMixers > 1) {\n      for (; i < input.length - 2; i++) {\n        if (v < input[i + 1])\n          break;\n      }\n    }\n    const progressInRange = progress(input[i], input[i + 1], v);\n    return mixers[i](progressInRange);\n  };\n  return isClamp ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v)) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/time-conversion.mjs\nvar secondsToMilliseconds = (seconds) => seconds * 1e3;\nvar millisecondsToSeconds = (milliseconds) => milliseconds / 1e3;\n\n// ../../../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs\nfunction velocityPerSecond(velocity, frameDuration) {\n  return frameDuration ? velocity * (1e3 / frameDuration) : 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs\nvar velocitySampleDuration = 5;\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n  const prevT = Math.max(t - velocitySampleDuration, 0);\n  return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs\nvar safeMin = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration = 10;\nvar minDamping = 0.05;\nvar maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1 }) {\n  let envelope;\n  let derivative;\n  warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n  let dampingRatio = 1 - bounce;\n  dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n  duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n  if (dampingRatio < 1) {\n    envelope = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const a = exponentialDecay - velocity;\n      const b = calcAngularFreq(undampedFreq2, dampingRatio);\n      const c = Math.exp(-delta);\n      return safeMin - a / b * c;\n    };\n    derivative = (undampedFreq2) => {\n      const exponentialDecay = undampedFreq2 * dampingRatio;\n      const delta = exponentialDecay * duration;\n      const d = delta * velocity + velocity;\n      const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;\n      const f = Math.exp(-delta);\n      const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);\n      const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;\n      return factor * ((d - e) * f) / g;\n    };\n  } else {\n    envelope = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (undampedFreq2 - velocity) * duration + 1;\n      return -safeMin + a * b;\n    };\n    derivative = (undampedFreq2) => {\n      const a = Math.exp(-undampedFreq2 * duration);\n      const b = (velocity - undampedFreq2) * (duration * duration);\n      return a * b;\n    };\n  }\n  const initialGuess = 5 / duration;\n  const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n  duration = secondsToMilliseconds(duration);\n  if (isNaN(undampedFreq)) {\n    return {\n      stiffness: 100,\n      damping: 10,\n      duration\n    };\n  } else {\n    const stiffness = Math.pow(undampedFreq, 2) * mass;\n    return {\n      stiffness,\n      damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n      duration\n    };\n  }\n}\nvar rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n  let result = initialGuess;\n  for (let i = 1; i < rootIterations; i++) {\n    result = result - envelope(result) / derivative(result);\n  }\n  return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n  return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs\nvar durationKeys = [\"duration\", \"bounce\"];\nvar physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys2) {\n  return keys2.some((key) => options[key] !== void 0);\n}\nfunction getSpringOptions(options) {\n  let springOptions = {\n    velocity: 0,\n    stiffness: 100,\n    damping: 10,\n    mass: 1,\n    isResolvedFromDuration: false,\n    ...options\n  };\n  if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {\n    const derived = findSpring(options);\n    springOptions = {\n      ...springOptions,\n      ...derived,\n      velocity: 0,\n      mass: 1\n    };\n    springOptions.isResolvedFromDuration = true;\n  }\n  return springOptions;\n}\nfunction spring({ keyframes: keyframes2, restDelta, restSpeed, ...options }) {\n  const origin = keyframes2[0];\n  const target = keyframes2[keyframes2.length - 1];\n  const state = { done: false, value: origin };\n  const { stiffness, damping, mass, velocity, duration, isResolvedFromDuration } = getSpringOptions(options);\n  const initialVelocity = velocity ? -millisecondsToSeconds(velocity) : 0;\n  const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n  const initialDelta = target - origin;\n  const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n  const isGranularScale = Math.abs(initialDelta) < 5;\n  restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n  restDelta || (restDelta = isGranularScale ? 5e-3 : 0.5);\n  let resolveSpring;\n  if (dampingRatio < 1) {\n    const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));\n    };\n  } else if (dampingRatio === 1) {\n    resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);\n  } else {\n    const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n    resolveSpring = (t) => {\n      const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n      const freqForT = Math.min(dampedAngularFreq * t, 300);\n      return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;\n    };\n  }\n  return {\n    calculatedDuration: isResolvedFromDuration ? duration || null : null,\n    next: (t) => {\n      const current = resolveSpring(t);\n      if (!isResolvedFromDuration) {\n        let currentVelocity = initialVelocity;\n        if (t !== 0) {\n          if (dampingRatio < 1) {\n            currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n          } else {\n            currentVelocity = 0;\n          }\n        }\n        const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n        const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n        state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n      } else {\n        state.done = t >= duration;\n      }\n      state.value = state.done ? target : current;\n      return state;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs\nvar isEasingArray = (ease2) => {\n  return Array.isArray(ease2) && typeof ease2[0] !== \"number\";\n};\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/map.mjs\nvar easingLookup = {\n  linear: noop,\n  easeIn,\n  easeInOut,\n  easeOut,\n  circIn,\n  circInOut,\n  circOut,\n  backIn,\n  backInOut,\n  backOut,\n  anticipate\n};\nvar easingDefinitionToFunction = (definition) => {\n  if (Array.isArray(definition)) {\n    invariant(definition.length === 4, `Cubic bezier arrays must contain four numerical values.`);\n    const [x1, y1, x2, y2] = definition;\n    return cubicBezier(x1, y1, x2, y2);\n  } else if (typeof definition === \"string\") {\n    invariant(easingLookup[definition] !== void 0, `Invalid easing type '${definition}'`);\n    return easingLookup[definition];\n  }\n  return definition;\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs\nfunction fillOffset(offset, remaining) {\n  const min = offset[offset.length - 1];\n  for (let i = 1; i <= remaining; i++) {\n    const offsetProgress = progress(0, remaining, i);\n    offset.push(mix(min, 1, offsetProgress));\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/default.mjs\nfunction defaultOffset(arr) {\n  const offset = [0];\n  fillOffset(offset, arr.length - 1);\n  return offset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/offsets/time.mjs\nfunction convertOffsetToTimes(offset, duration) {\n  return offset.map((o) => o * duration);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs\nfunction defaultEasing(values, easing) {\n  return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease: ease2 = \"easeInOut\" }) {\n  const easingFunctions = isEasingArray(ease2) ? ease2.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease2);\n  const state = {\n    done: false,\n    value: keyframeValues[0]\n  };\n  const absoluteTimes = convertOffsetToTimes(\n    // Only use the provided offsets if they're the correct length\n    // TODO Maybe we should warn here if there's a length mismatch\n    times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues),\n    duration\n  );\n  const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n    ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)\n  });\n  return {\n    calculatedDuration: duration,\n    next: (t) => {\n      state.value = mapTimeToKeyframe(t);\n      state.done = t >= duration;\n      return state;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs\nfunction inertia({ keyframes: keyframes2, velocity = 0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed }) {\n  const origin = keyframes2[0];\n  const state = {\n    done: false,\n    value: origin\n  };\n  const isOutOfBounds = (v) => min !== void 0 && v < min || max !== void 0 && v > max;\n  const nearestBoundary = (v) => {\n    if (min === void 0)\n      return max;\n    if (max === void 0)\n      return min;\n    return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n  };\n  let amplitude = power * velocity;\n  const ideal = origin + amplitude;\n  const target = modifyTarget === void 0 ? ideal : modifyTarget(ideal);\n  if (target !== ideal)\n    amplitude = target - origin;\n  const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n  const calcLatest = (t) => target + calcDelta(t);\n  const applyFriction = (t) => {\n    const delta = calcDelta(t);\n    const latest = calcLatest(t);\n    state.done = Math.abs(delta) <= restDelta;\n    state.value = state.done ? target : latest;\n  };\n  let timeReachedBoundary;\n  let spring$1;\n  const checkCatchBoundary = (t) => {\n    if (!isOutOfBounds(state.value))\n      return;\n    timeReachedBoundary = t;\n    spring$1 = spring({\n      keyframes: [state.value, nearestBoundary(state.value)],\n      velocity: calcGeneratorVelocity(calcLatest, t, state.value),\n      damping: bounceDamping,\n      stiffness: bounceStiffness,\n      restDelta,\n      restSpeed\n    });\n  };\n  checkCatchBoundary(0);\n  return {\n    calculatedDuration: null,\n    next: (t) => {\n      let hasUpdatedFrame = false;\n      if (!spring$1 && timeReachedBoundary === void 0) {\n        hasUpdatedFrame = true;\n        applyFriction(t);\n        checkCatchBoundary(t);\n      }\n      if (timeReachedBoundary !== void 0 && t > timeReachedBoundary) {\n        return spring$1.next(t - timeReachedBoundary);\n      } else {\n        !hasUpdatedFrame && applyFriction(t);\n        return state;\n      }\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/js/driver-frameloop.mjs\nvar frameloopDriver = (update) => {\n  const passTimestamp = ({ timestamp }) => update(timestamp);\n  return {\n    start: () => frame.update(passTimestamp, true),\n    stop: () => cancelFrame(passTimestamp),\n    /**\n     * If we're processing this frame we can use the\n     * framelocked timestamp to keep things in sync.\n     */\n    now: () => frameData.isProcessing ? frameData.timestamp : performance.now()\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs\nvar maxGeneratorDuration = 2e4;\nfunction calcGeneratorDuration(generator) {\n  let duration = 0;\n  const timeStep = 50;\n  let state = generator.next(duration);\n  while (!state.done && duration < maxGeneratorDuration) {\n    duration += timeStep;\n    state = generator.next(duration);\n  }\n  return duration >= maxGeneratorDuration ? Infinity : duration;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/js/index.mjs\nvar types = {\n  decay: inertia,\n  inertia,\n  tween: keyframes,\n  keyframes,\n  spring\n};\nfunction animateValue({ autoplay = true, delay: delay2 = 0, driver = frameloopDriver, keyframes: keyframes$1, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", onPlay, onStop, onComplete, onUpdate, ...options }) {\n  let speed = 1;\n  let hasStopped = false;\n  let resolveFinishedPromise;\n  let currentFinishedPromise;\n  const updateFinishedPromise = () => {\n    currentFinishedPromise = new Promise((resolve) => {\n      resolveFinishedPromise = resolve;\n    });\n  };\n  updateFinishedPromise();\n  let animationDriver;\n  const generatorFactory = types[type] || keyframes;\n  let mapNumbersToKeyframes;\n  if (generatorFactory !== keyframes && typeof keyframes$1[0] !== \"number\") {\n    mapNumbersToKeyframes = interpolate([0, 100], keyframes$1, {\n      clamp: false\n    });\n    keyframes$1 = [0, 100];\n  }\n  const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n  let mirroredGenerator;\n  if (repeatType === \"mirror\") {\n    mirroredGenerator = generatorFactory({\n      ...options,\n      keyframes: [...keyframes$1].reverse(),\n      velocity: -(options.velocity || 0)\n    });\n  }\n  let playState = \"idle\";\n  let holdTime = null;\n  let startTime = null;\n  let cancelTime = null;\n  if (generator.calculatedDuration === null && repeat) {\n    generator.calculatedDuration = calcGeneratorDuration(generator);\n  }\n  const { calculatedDuration } = generator;\n  let resolvedDuration = Infinity;\n  let totalDuration = Infinity;\n  if (calculatedDuration !== null) {\n    resolvedDuration = calculatedDuration + repeatDelay;\n    totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n  }\n  let currentTime = 0;\n  const tick = (timestamp) => {\n    if (startTime === null)\n      return;\n    if (speed > 0)\n      startTime = Math.min(startTime, timestamp);\n    if (speed < 0)\n      startTime = Math.min(timestamp - totalDuration / speed, startTime);\n    if (holdTime !== null) {\n      currentTime = holdTime;\n    } else {\n      currentTime = Math.round(timestamp - startTime) * speed;\n    }\n    const timeWithoutDelay = currentTime - delay2 * (speed >= 0 ? 1 : -1);\n    const isInDelayPhase = speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n    currentTime = Math.max(timeWithoutDelay, 0);\n    if (playState === \"finished\" && holdTime === null) {\n      currentTime = totalDuration;\n    }\n    let elapsed = currentTime;\n    let frameGenerator = generator;\n    if (repeat) {\n      const progress2 = currentTime / resolvedDuration;\n      let currentIteration = Math.floor(progress2);\n      let iterationProgress = progress2 % 1;\n      if (!iterationProgress && progress2 >= 1) {\n        iterationProgress = 1;\n      }\n      iterationProgress === 1 && currentIteration--;\n      currentIteration = Math.min(currentIteration, repeat + 1);\n      const iterationIsOdd = Boolean(currentIteration % 2);\n      if (iterationIsOdd) {\n        if (repeatType === \"reverse\") {\n          iterationProgress = 1 - iterationProgress;\n          if (repeatDelay) {\n            iterationProgress -= repeatDelay / resolvedDuration;\n          }\n        } else if (repeatType === \"mirror\") {\n          frameGenerator = mirroredGenerator;\n        }\n      }\n      let p = clamp(0, 1, iterationProgress);\n      if (currentTime > totalDuration) {\n        p = repeatType === \"reverse\" && iterationIsOdd ? 1 : 0;\n      }\n      elapsed = p * resolvedDuration;\n    }\n    const state = isInDelayPhase ? { done: false, value: keyframes$1[0] } : frameGenerator.next(elapsed);\n    if (mapNumbersToKeyframes) {\n      state.value = mapNumbersToKeyframes(state.value);\n    }\n    let { done } = state;\n    if (!isInDelayPhase && calculatedDuration !== null) {\n      done = speed >= 0 ? currentTime >= totalDuration : currentTime <= 0;\n    }\n    const isAnimationFinished = holdTime === null && (playState === \"finished\" || playState === \"running\" && done);\n    if (onUpdate) {\n      onUpdate(state.value);\n    }\n    if (isAnimationFinished) {\n      finish();\n    }\n    return state;\n  };\n  const stopAnimationDriver = () => {\n    animationDriver && animationDriver.stop();\n    animationDriver = void 0;\n  };\n  const cancel = () => {\n    playState = \"idle\";\n    stopAnimationDriver();\n    resolveFinishedPromise();\n    updateFinishedPromise();\n    startTime = cancelTime = null;\n  };\n  const finish = () => {\n    playState = \"finished\";\n    onComplete && onComplete();\n    stopAnimationDriver();\n    resolveFinishedPromise();\n  };\n  const play = () => {\n    if (hasStopped)\n      return;\n    if (!animationDriver)\n      animationDriver = driver(tick);\n    const now = animationDriver.now();\n    onPlay && onPlay();\n    if (holdTime !== null) {\n      startTime = now - holdTime;\n    } else if (!startTime || playState === \"finished\") {\n      startTime = now;\n    }\n    if (playState === \"finished\") {\n      updateFinishedPromise();\n    }\n    cancelTime = startTime;\n    holdTime = null;\n    playState = \"running\";\n    animationDriver.start();\n  };\n  if (autoplay) {\n    play();\n  }\n  const controls = {\n    then(resolve, reject) {\n      return currentFinishedPromise.then(resolve, reject);\n    },\n    get time() {\n      return millisecondsToSeconds(currentTime);\n    },\n    set time(newTime) {\n      newTime = secondsToMilliseconds(newTime);\n      currentTime = newTime;\n      if (holdTime !== null || !animationDriver || speed === 0) {\n        holdTime = newTime;\n      } else {\n        startTime = animationDriver.now() - newTime / speed;\n      }\n    },\n    get duration() {\n      const duration = generator.calculatedDuration === null ? calcGeneratorDuration(generator) : generator.calculatedDuration;\n      return millisecondsToSeconds(duration);\n    },\n    get speed() {\n      return speed;\n    },\n    set speed(newSpeed) {\n      if (newSpeed === speed || !animationDriver)\n        return;\n      speed = newSpeed;\n      controls.time = millisecondsToSeconds(currentTime);\n    },\n    get state() {\n      return playState;\n    },\n    play,\n    pause: () => {\n      playState = \"paused\";\n      holdTime = currentTime;\n    },\n    stop: () => {\n      hasStopped = true;\n      if (playState === \"idle\")\n        return;\n      playState = \"idle\";\n      onStop && onStop();\n      cancel();\n    },\n    cancel: () => {\n      if (cancelTime !== null)\n        tick(cancelTime);\n      cancel();\n    },\n    complete: () => {\n      playState = \"finished\";\n    },\n    sample: (elapsed) => {\n      startTime = 0;\n      return tick(elapsed);\n    }\n  };\n  return controls;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/array.mjs\nfunction addUniqueItem(arr, item) {\n  if (arr.indexOf(item) === -1)\n    arr.push(item);\n}\nfunction removeItem(arr, item) {\n  const index = arr.indexOf(item);\n  if (index > -1)\n    arr.splice(index, 1);\n}\nfunction moveItem([...arr], fromIndex, toIndex) {\n  const startIndex = fromIndex < 0 ? arr.length + fromIndex : fromIndex;\n  if (startIndex >= 0 && startIndex < arr.length) {\n    const endIndex = toIndex < 0 ? arr.length + toIndex : toIndex;\n    const [item] = arr.splice(fromIndex, 1);\n    arr.splice(endIndex, 0, item);\n  }\n  return arr;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs\nvar SubscriptionManager = class {\n  constructor() {\n    this.subscriptions = [];\n  }\n  add(handler) {\n    addUniqueItem(this.subscriptions, handler);\n    return () => removeItem(this.subscriptions, handler);\n  }\n  notify(a, b, c) {\n    const numSubscriptions = this.subscriptions.length;\n    if (!numSubscriptions)\n      return;\n    if (numSubscriptions === 1) {\n      this.subscriptions[0](a, b, c);\n    } else {\n      for (let i = 0; i < numSubscriptions; i++) {\n        const handler = this.subscriptions[i];\n        handler && handler(a, b, c);\n      }\n    }\n  }\n  getSize() {\n    return this.subscriptions.length;\n  }\n  clear() {\n    this.subscriptions.length = 0;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/index.mjs\nvar isFloat = (value) => {\n  return !isNaN(parseFloat(value));\n};\nvar collectMotionValues = {\n  current: void 0\n};\nvar MotionValue = class {\n  /**\n   * @param init - The initiating value\n   * @param config - Optional configuration options\n   *\n   * -  `transformer`: A function to transform incoming values with.\n   *\n   * @internal\n   */\n  constructor(init, options = {}) {\n    this.version = \"10.16.2\";\n    this.timeDelta = 0;\n    this.lastUpdated = 0;\n    this.canTrackVelocity = false;\n    this.events = {};\n    this.updateAndNotify = (v, render = true) => {\n      this.prev = this.current;\n      this.current = v;\n      const { delta, timestamp } = frameData;\n      if (this.lastUpdated !== timestamp) {\n        this.timeDelta = delta;\n        this.lastUpdated = timestamp;\n        frame.postRender(this.scheduleVelocityCheck);\n      }\n      if (this.prev !== this.current && this.events.change) {\n        this.events.change.notify(this.current);\n      }\n      if (this.events.velocityChange) {\n        this.events.velocityChange.notify(this.getVelocity());\n      }\n      if (render && this.events.renderRequest) {\n        this.events.renderRequest.notify(this.current);\n      }\n    };\n    this.scheduleVelocityCheck = () => frame.postRender(this.velocityCheck);\n    this.velocityCheck = ({ timestamp }) => {\n      if (timestamp !== this.lastUpdated) {\n        this.prev = this.current;\n        if (this.events.velocityChange) {\n          this.events.velocityChange.notify(this.getVelocity());\n        }\n      }\n    };\n    this.hasAnimated = false;\n    this.prev = this.current = init;\n    this.canTrackVelocity = isFloat(this.current);\n    this.owner = options.owner;\n  }\n  /**\n   * Adds a function that will be notified when the `MotionValue` is updated.\n   *\n   * It returns a function that, when called, will cancel the subscription.\n   *\n   * When calling `onChange` inside a React component, it should be wrapped with the\n   * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n   * from the `useEffect` function to ensure you don't add duplicate subscribers..\n   *\n   * ```jsx\n   * export const MyComponent = () => {\n   *   const x = useMotionValue(0)\n   *   const y = useMotionValue(0)\n   *   const opacity = useMotionValue(1)\n   *\n   *   useEffect(() => {\n   *     function updateOpacity() {\n   *       const maxXY = Math.max(x.get(), y.get())\n   *       const newOpacity = transform(maxXY, [0, 100], [1, 0])\n   *       opacity.set(newOpacity)\n   *     }\n   *\n   *     const unsubscribeX = x.on(\"change\", updateOpacity)\n   *     const unsubscribeY = y.on(\"change\", updateOpacity)\n   *\n   *     return () => {\n   *       unsubscribeX()\n   *       unsubscribeY()\n   *     }\n   *   }, [])\n   *\n   *   return <motion.div style={{ x }} />\n   * }\n   * ```\n   *\n   * @param subscriber - A function that receives the latest value.\n   * @returns A function that, when called, will cancel this subscription.\n   *\n   * @deprecated\n   */\n  onChange(subscription) {\n    if (false) {\n      warnOnce(false, `value.onChange(callback) is deprecated. Switch to value.on(\"change\", callback).`);\n    }\n    return this.on(\"change\", subscription);\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    const unsubscribe = this.events[eventName].add(callback);\n    if (eventName === \"change\") {\n      return () => {\n        unsubscribe();\n        frame.read(() => {\n          if (!this.events.change.getSize()) {\n            this.stop();\n          }\n        });\n      };\n    }\n    return unsubscribe;\n  }\n  clearListeners() {\n    for (const eventManagers in this.events) {\n      this.events[eventManagers].clear();\n    }\n  }\n  /**\n   * Attaches a passive effect to the `MotionValue`.\n   *\n   * @internal\n   */\n  attach(passiveEffect, stopPassiveEffect) {\n    this.passiveEffect = passiveEffect;\n    this.stopPassiveEffect = stopPassiveEffect;\n  }\n  /**\n   * Sets the state of the `MotionValue`.\n   *\n   * @remarks\n   *\n   * ```jsx\n   * const x = useMotionValue(0)\n   * x.set(10)\n   * ```\n   *\n   * @param latest - Latest value to set.\n   * @param render - Whether to notify render subscribers. Defaults to `true`\n   *\n   * @public\n   */\n  set(v, render = true) {\n    if (!render || !this.passiveEffect) {\n      this.updateAndNotify(v, render);\n    } else {\n      this.passiveEffect(v, this.updateAndNotify);\n    }\n  }\n  setWithVelocity(prev, current, delta) {\n    this.set(current);\n    this.prev = prev;\n    this.timeDelta = delta;\n  }\n  /**\n   * Set the state of the `MotionValue`, stopping any active animations,\n   * effects, and resets velocity to `0`.\n   */\n  jump(v) {\n    this.updateAndNotify(v);\n    this.prev = v;\n    this.stop();\n    if (this.stopPassiveEffect)\n      this.stopPassiveEffect();\n  }\n  /**\n   * Returns the latest state of `MotionValue`\n   *\n   * @returns - The latest state of `MotionValue`\n   *\n   * @public\n   */\n  get() {\n    if (collectMotionValues.current) {\n      collectMotionValues.current.push(this);\n    }\n    return this.current;\n  }\n  /**\n   * @public\n   */\n  getPrevious() {\n    return this.prev;\n  }\n  /**\n   * Returns the latest velocity of `MotionValue`\n   *\n   * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n   *\n   * @public\n   */\n  getVelocity() {\n    return this.canTrackVelocity ? (\n      // These casts could be avoided if parseFloat would be typed better\n      velocityPerSecond(parseFloat(this.current) - parseFloat(this.prev), this.timeDelta)\n    ) : 0;\n  }\n  /**\n   * Registers a new animation to control this `MotionValue`. Only one\n   * animation can drive a `MotionValue` at one time.\n   *\n   * ```jsx\n   * value.start()\n   * ```\n   *\n   * @param animation - A function that starts the provided animation\n   *\n   * @internal\n   */\n  start(startAnimation) {\n    this.stop();\n    return new Promise((resolve) => {\n      this.hasAnimated = true;\n      this.animation = startAnimation(resolve);\n      if (this.events.animationStart) {\n        this.events.animationStart.notify();\n      }\n    }).then(() => {\n      if (this.events.animationComplete) {\n        this.events.animationComplete.notify();\n      }\n      this.clearAnimation();\n    });\n  }\n  /**\n   * Stop the currently active animation.\n   *\n   * @public\n   */\n  stop() {\n    if (this.animation) {\n      this.animation.stop();\n      if (this.events.animationCancel) {\n        this.events.animationCancel.notify();\n      }\n    }\n    this.clearAnimation();\n  }\n  /**\n   * Returns `true` if this value is currently animating.\n   *\n   * @public\n   */\n  isAnimating() {\n    return !!this.animation;\n  }\n  clearAnimation() {\n    delete this.animation;\n  }\n  /**\n   * Destroy and clean up subscribers to this `MotionValue`.\n   *\n   * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n   * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n   * created a `MotionValue` via the `motionValue` function.\n   *\n   * @public\n   */\n  destroy() {\n    this.clearListeners();\n    this.stop();\n    if (this.stopPassiveEffect) {\n      this.stopPassiveEffect();\n    }\n  }\n};\nfunction motionValue(init, options) {\n  return new MotionValue(init, options);\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs\nvar isNumericalString = (v) => /^\\-?\\d*\\.?\\d+$/.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs\nvar isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs\nvar maxDefaults = /* @__PURE__ */ new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n  const [name, value] = v.slice(0, -1).split(\"(\");\n  if (name === \"drop-shadow\")\n    return v;\n  const [number2] = value.match(floatRegex) || [];\n  if (!number2)\n    return v;\n  const unit = value.replace(number2, \"\");\n  let defaultValue = maxDefaults.has(name) ? 1 : 0;\n  if (number2 !== value)\n    defaultValue *= 100;\n  return name + \"(\" + defaultValue + unit + \")\";\n}\nvar functionRegex = /([a-z-]*)\\(.*?\\)/g;\nvar filter = {\n  ...complex,\n  getAnimatableNone: (v) => {\n    const functions = v.match(functionRegex);\n    return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs\nvar int = {\n  ...number,\n  transform: Math.round\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs\nvar numberValueTypes = {\n  // Border props\n  borderWidth: px,\n  borderTopWidth: px,\n  borderRightWidth: px,\n  borderBottomWidth: px,\n  borderLeftWidth: px,\n  borderRadius: px,\n  radius: px,\n  borderTopLeftRadius: px,\n  borderTopRightRadius: px,\n  borderBottomRightRadius: px,\n  borderBottomLeftRadius: px,\n  // Positioning props\n  width: px,\n  maxWidth: px,\n  height: px,\n  maxHeight: px,\n  size: px,\n  top: px,\n  right: px,\n  bottom: px,\n  left: px,\n  // Spacing props\n  padding: px,\n  paddingTop: px,\n  paddingRight: px,\n  paddingBottom: px,\n  paddingLeft: px,\n  margin: px,\n  marginTop: px,\n  marginRight: px,\n  marginBottom: px,\n  marginLeft: px,\n  // Transform props\n  rotate: degrees,\n  rotateX: degrees,\n  rotateY: degrees,\n  rotateZ: degrees,\n  scale,\n  scaleX: scale,\n  scaleY: scale,\n  scaleZ: scale,\n  skew: degrees,\n  skewX: degrees,\n  skewY: degrees,\n  distance: px,\n  translateX: px,\n  translateY: px,\n  translateZ: px,\n  x: px,\n  y: px,\n  z: px,\n  perspective: px,\n  transformPerspective: px,\n  opacity: alpha,\n  originX: progressPercentage,\n  originY: progressPercentage,\n  originZ: px,\n  // Misc\n  zIndex: int,\n  // SVG\n  fillOpacity: alpha,\n  strokeOpacity: alpha,\n  numOctaves: int\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs\nvar defaultValueTypes = {\n  ...numberValueTypes,\n  // Color props\n  color,\n  backgroundColor: color,\n  outlineColor: color,\n  fill: color,\n  stroke: color,\n  // Border props\n  borderColor: color,\n  borderTopColor: color,\n  borderRightColor: color,\n  borderBottomColor: color,\n  borderLeftColor: color,\n  filter,\n  WebkitFilter: filter\n};\nvar getDefaultValueType = (key) => defaultValueTypes[key];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs\nfunction getAnimatableNone2(key, value) {\n  let defaultValueType = getDefaultValueType(key);\n  if (defaultValueType !== filter)\n    defaultValueType = complex;\n  return defaultValueType.getAnimatableNone ? defaultValueType.getAnimatableNone(value) : void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs\nvar testValueType = (v) => (type) => type.test(v);\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs\nvar auto = {\n  test: (v) => v === \"auto\",\n  parse: (v) => v\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\nvar findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs\nvar valueTypes = [...dimensionValueTypes, color, complex];\nvar findValueType = (v) => valueTypes.find(testValueType(v));\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs\nfunction getCurrent(visualElement) {\n  const current = {};\n  visualElement.values.forEach((value, key) => current[key] = value.get());\n  return current;\n}\nfunction getVelocity(visualElement) {\n  const velocity = {};\n  visualElement.values.forEach((value, key) => velocity[key] = value.getVelocity());\n  return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n  const props = visualElement.getProps();\n  return resolveVariantFromProps(props, definition, custom !== void 0 ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/setters.mjs\nfunction setMotionValue(visualElement, key, value) {\n  if (visualElement.hasValue(key)) {\n    visualElement.getValue(key).set(value);\n  } else {\n    visualElement.addValue(key, motionValue(value));\n  }\n}\nfunction setTarget(visualElement, definition) {\n  const resolved = resolveVariant(visualElement, definition);\n  let { transitionEnd = {}, transition = {}, ...target } = resolved ? visualElement.makeTargetAnimatable(resolved, false) : {};\n  target = { ...target, ...transitionEnd };\n  for (const key in target) {\n    const value = resolveFinalValueInKeyframes(target[key]);\n    setMotionValue(visualElement, key, value);\n  }\n}\nfunction setVariants(visualElement, variantLabels) {\n  const reversedLabels = [...variantLabels].reverse();\n  reversedLabels.forEach((key) => {\n    const variant = visualElement.getVariant(key);\n    variant && setTarget(visualElement, variant);\n    if (visualElement.variantChildren) {\n      visualElement.variantChildren.forEach((child) => {\n        setVariants(child, variantLabels);\n      });\n    }\n  });\n}\nfunction setValues(visualElement, definition) {\n  if (Array.isArray(definition)) {\n    return setVariants(visualElement, definition);\n  } else if (typeof definition === \"string\") {\n    return setVariants(visualElement, [definition]);\n  } else {\n    setTarget(visualElement, definition);\n  }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n  var _a, _b;\n  const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n  const numNewValues = newValueKeys.length;\n  if (!numNewValues)\n    return;\n  for (let i = 0; i < numNewValues; i++) {\n    const key = newValueKeys[i];\n    const targetValue = target[key];\n    let value = null;\n    if (Array.isArray(targetValue)) {\n      value = targetValue[0];\n    }\n    if (value === null) {\n      value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n    }\n    if (value === void 0 || value === null)\n      continue;\n    if (typeof value === \"string\" && (isNumericalString(value) || isZeroValueString(value))) {\n      value = parseFloat(value);\n    } else if (!findValueType(value) && complex.test(targetValue)) {\n      value = getAnimatableNone2(key, targetValue);\n    }\n    visualElement.addValue(key, motionValue(value, { owner: visualElement }));\n    if (origin[key] === void 0) {\n      origin[key] = value;\n    }\n    if (value !== null)\n      visualElement.setBaseTarget(key, value);\n  }\n}\nfunction getOriginFromTransition(key, transition) {\n  if (!transition)\n    return;\n  const valueTransition = transition[key] || transition[\"default\"] || transition;\n  return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n  const origin = {};\n  for (const key in target) {\n    const transitionOrigin = getOriginFromTransition(key, transition);\n    if (transitionOrigin !== void 0) {\n      origin[key] = transitionOrigin;\n    } else {\n      const value = visualElement.getValue(key);\n      if (value) {\n        origin[key] = value.get();\n      }\n    }\n  }\n  return origin;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs\nvar instantAnimationState = {\n  current: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs\nvar isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs\nfunction isWaapiSupportedEasing(easing) {\n  return Boolean(!easing || typeof easing === \"string\" && supportedWaapiEasing[easing] || isBezierDefinition(easing) || Array.isArray(easing) && easing.every(isWaapiSupportedEasing));\n}\nvar cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nvar supportedWaapiEasing = {\n  linear: \"linear\",\n  ease: \"ease\",\n  easeIn: \"ease-in\",\n  easeOut: \"ease-out\",\n  easeInOut: \"ease-in-out\",\n  circIn: cubicBezierAsString([0, 0.65, 0.55, 1]),\n  circOut: cubicBezierAsString([0.55, 0, 1, 0.45]),\n  backIn: cubicBezierAsString([0.31, 0.01, 0.66, -0.59]),\n  backOut: cubicBezierAsString([0.33, 1.53, 0.69, 0.99])\n};\nfunction mapEasingToNativeEasing(easing) {\n  if (!easing)\n    return void 0;\n  return isBezierDefinition(easing) ? cubicBezierAsString(easing) : Array.isArray(easing) ? easing.map(mapEasingToNativeEasing) : supportedWaapiEasing[easing];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs\nfunction animateStyle(element, valueName, keyframes2, { delay: delay2 = 0, duration, repeat = 0, repeatType = \"loop\", ease: ease2, times } = {}) {\n  const keyframeOptions = { [valueName]: keyframes2 };\n  if (times)\n    keyframeOptions.offset = times;\n  const easing = mapEasingToNativeEasing(ease2);\n  if (Array.isArray(easing))\n    keyframeOptions.easing = easing;\n  return element.animate(keyframeOptions, {\n    delay: delay2,\n    duration,\n    easing: !Array.isArray(easing) ? easing : \"linear\",\n    fill: \"both\",\n    iterations: repeat + 1,\n    direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\"\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs\nfunction getFinalKeyframe(keyframes2, { repeat, repeatType = \"loop\" }) {\n  const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1 ? 0 : keyframes2.length - 1;\n  return keyframes2[index];\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/memo.mjs\nfunction memo(callback) {\n  let result;\n  return () => {\n    if (result === void 0)\n      result = callback();\n    return result;\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/waapi/create-accelerated-animation.mjs\nvar supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\nvar acceleratedValues = /* @__PURE__ */ new Set([\n  \"opacity\",\n  \"clipPath\",\n  \"filter\",\n  \"transform\",\n  \"backgroundColor\"\n]);\nvar sampleDelta = 10;\nvar maxDuration2 = 2e4;\nvar requiresPregeneratedKeyframes = (valueName, options) => options.type === \"spring\" || valueName === \"backgroundColor\" || !isWaapiSupportedEasing(options.ease);\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n  const canAccelerateAnimation = supportsWaapi() && acceleratedValues.has(valueName) && !options.repeatDelay && options.repeatType !== \"mirror\" && options.damping !== 0 && options.type !== \"inertia\";\n  if (!canAccelerateAnimation)\n    return false;\n  let hasStopped = false;\n  let resolveFinishedPromise;\n  let currentFinishedPromise;\n  const updateFinishedPromise = () => {\n    currentFinishedPromise = new Promise((resolve) => {\n      resolveFinishedPromise = resolve;\n    });\n  };\n  updateFinishedPromise();\n  let { keyframes: keyframes2, duration = 300, ease: ease2, times } = options;\n  if (requiresPregeneratedKeyframes(valueName, options)) {\n    const sampleAnimation = animateValue({\n      ...options,\n      repeat: 0,\n      delay: 0\n    });\n    let state = { done: false, value: keyframes2[0] };\n    const pregeneratedKeyframes = [];\n    let t = 0;\n    while (!state.done && t < maxDuration2) {\n      state = sampleAnimation.sample(t);\n      pregeneratedKeyframes.push(state.value);\n      t += sampleDelta;\n    }\n    times = void 0;\n    keyframes2 = pregeneratedKeyframes;\n    duration = t - sampleDelta;\n    ease2 = \"linear\";\n  }\n  const animation = animateStyle(value.owner.current, valueName, keyframes2, {\n    ...options,\n    duration,\n    /**\n     * This function is currently not called if ease is provided\n     * as a function so the cast is safe.\n     *\n     * However it would be possible for a future refinement to port\n     * in easing pregeneration from Motion One for browsers that\n     * support the upcoming `linear()` easing function.\n     */\n    ease: ease2,\n    times\n  });\n  const cancelAnimation = () => animation.cancel();\n  const safeCancel = () => {\n    frame.update(cancelAnimation);\n    resolveFinishedPromise();\n    updateFinishedPromise();\n  };\n  animation.onfinish = () => {\n    value.set(getFinalKeyframe(keyframes2, options));\n    onComplete && onComplete();\n    safeCancel();\n  };\n  const controls = {\n    then(resolve, reject) {\n      return currentFinishedPromise.then(resolve, reject);\n    },\n    attachTimeline(timeline) {\n      animation.timeline = timeline;\n      animation.onfinish = null;\n      return noop;\n    },\n    get time() {\n      return millisecondsToSeconds(animation.currentTime || 0);\n    },\n    set time(newTime) {\n      animation.currentTime = secondsToMilliseconds(newTime);\n    },\n    get speed() {\n      return animation.playbackRate;\n    },\n    set speed(newSpeed) {\n      animation.playbackRate = newSpeed;\n    },\n    get duration() {\n      return millisecondsToSeconds(duration);\n    },\n    play: () => {\n      if (hasStopped)\n        return;\n      animation.play();\n      cancelFrame(cancelAnimation);\n    },\n    pause: () => animation.pause(),\n    stop: () => {\n      hasStopped = true;\n      if (animation.playState === \"idle\")\n        return;\n      const { currentTime } = animation;\n      if (currentTime) {\n        const sampleAnimation = animateValue({\n          ...options,\n          autoplay: false\n        });\n        value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n      }\n      safeCancel();\n    },\n    complete: () => animation.finish(),\n    cancel: safeCancel\n  };\n  return controls;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/animators/instant.mjs\nfunction createInstantAnimation({ keyframes: keyframes2, delay: delay2, onUpdate, onComplete }) {\n  const setValue = () => {\n    onUpdate && onUpdate(keyframes2[keyframes2.length - 1]);\n    onComplete && onComplete();\n    return {\n      time: 0,\n      speed: 1,\n      duration: 0,\n      play: noop,\n      pause: noop,\n      stop: noop,\n      then: (resolve) => {\n        resolve();\n        return Promise.resolve();\n      },\n      cancel: noop,\n      complete: noop\n    };\n  };\n  return delay2 ? animateValue({\n    keyframes: [0, 1],\n    duration: 0,\n    delay: delay2,\n    onComplete: setValue\n  }) : setValue();\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs\nvar underDampedSpring = {\n  type: \"spring\",\n  stiffness: 500,\n  damping: 25,\n  restSpeed: 10\n};\nvar criticallyDampedSpring = (target) => ({\n  type: \"spring\",\n  stiffness: 550,\n  damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n  restSpeed: 10\n});\nvar keyframesTransition = {\n  type: \"keyframes\",\n  duration: 0.8\n};\nvar ease = {\n  type: \"keyframes\",\n  ease: [0.25, 0.1, 0.35, 1],\n  duration: 0.3\n};\nvar getDefaultTransition = (valueKey, { keyframes: keyframes2 }) => {\n  if (keyframes2.length > 2) {\n    return keyframesTransition;\n  } else if (transformProps.has(valueKey)) {\n    return valueKey.startsWith(\"scale\") ? criticallyDampedSpring(keyframes2[1]) : underDampedSpring;\n  }\n  return ease;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs\nvar isAnimatable = (key, value) => {\n  if (key === \"zIndex\")\n    return false;\n  if (typeof value === \"number\" || Array.isArray(value))\n    return true;\n  if (typeof value === \"string\" && // It's animatable if we have a string\n  (complex.test(value) || value === \"0\") && // And it contains numbers and/or colors\n  !value.startsWith(\"url(\")) {\n    return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs\nfunction isNone(value) {\n  if (typeof value === \"number\") {\n    return value === 0;\n  } else if (value !== null) {\n    return value === \"none\" || value === \"0\" || isZeroValueString(value);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs\nfunction getKeyframes(value, valueName, target, transition) {\n  const isTargetAnimatable = isAnimatable(valueName, target);\n  let keyframes2;\n  if (Array.isArray(target)) {\n    keyframes2 = [...target];\n  } else {\n    keyframes2 = [null, target];\n  }\n  const defaultOrigin = transition.from !== void 0 ? transition.from : value.get();\n  let animatableTemplateValue = void 0;\n  const noneKeyframeIndexes = [];\n  for (let i = 0; i < keyframes2.length; i++) {\n    if (keyframes2[i] === null) {\n      keyframes2[i] = i === 0 ? defaultOrigin : keyframes2[i - 1];\n    }\n    if (isNone(keyframes2[i])) {\n      noneKeyframeIndexes.push(i);\n    }\n    if (typeof keyframes2[i] === \"string\" && keyframes2[i] !== \"none\" && keyframes2[i] !== \"0\") {\n      animatableTemplateValue = keyframes2[i];\n    }\n  }\n  if (isTargetAnimatable && noneKeyframeIndexes.length && animatableTemplateValue) {\n    for (let i = 0; i < noneKeyframeIndexes.length; i++) {\n      const index = noneKeyframeIndexes[i];\n      keyframes2[index] = getAnimatableNone2(valueName, animatableTemplateValue);\n    }\n  }\n  return keyframes2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs\nfunction isTransitionDefined({ when, delay: _delay, delayChildren, staggerChildren, staggerDirection, repeat, repeatType, repeatDelay, from, elapsed, ...transition }) {\n  return !!Object.keys(transition).length;\n}\nfunction getValueTransition(transition, key) {\n  return transition[key] || transition[\"default\"] || transition;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs\nvar animateMotionValue = (valueName, value, target, transition = {}) => {\n  return (onComplete) => {\n    const valueTransition = getValueTransition(transition, valueName) || {};\n    const delay2 = valueTransition.delay || transition.delay || 0;\n    let { elapsed = 0 } = transition;\n    elapsed = elapsed - secondsToMilliseconds(delay2);\n    const keyframes2 = getKeyframes(value, valueName, target, valueTransition);\n    const originKeyframe = keyframes2[0];\n    const targetKeyframe = keyframes2[keyframes2.length - 1];\n    const isOriginAnimatable = isAnimatable(valueName, originKeyframe);\n    const isTargetAnimatable = isAnimatable(valueName, targetKeyframe);\n    warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${valueName} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n    let options = {\n      keyframes: keyframes2,\n      velocity: value.getVelocity(),\n      ease: \"easeOut\",\n      ...valueTransition,\n      delay: -elapsed,\n      onUpdate: (v) => {\n        value.set(v);\n        valueTransition.onUpdate && valueTransition.onUpdate(v);\n      },\n      onComplete: () => {\n        onComplete();\n        valueTransition.onComplete && valueTransition.onComplete();\n      }\n    };\n    if (!isTransitionDefined(valueTransition)) {\n      options = {\n        ...options,\n        ...getDefaultTransition(valueName, options)\n      };\n    }\n    if (options.duration) {\n      options.duration = secondsToMilliseconds(options.duration);\n    }\n    if (options.repeatDelay) {\n      options.repeatDelay = secondsToMilliseconds(options.repeatDelay);\n    }\n    if (!isOriginAnimatable || !isTargetAnimatable || instantAnimationState.current || valueTransition.type === false) {\n      return createInstantAnimation(instantAnimationState.current ? { ...options, delay: 0 } : options);\n    }\n    if (value.owner && value.owner.current instanceof HTMLElement && !value.owner.getProps().onUpdate) {\n      const acceleratedAnimation = createAcceleratedAnimation(value, valueName, options);\n      if (acceleratedAnimation)\n        return acceleratedAnimation;\n    }\n    return animateValue(options);\n  };\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs\nfunction isWillChangeMotionValue(value) {\n  return Boolean(isMotionValue(value) && value.add);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs\nfunction shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {\n  const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;\n  needsAnimating[key] = false;\n  return shouldBlock;\n}\nfunction animateTarget(visualElement, definition, { delay: delay2 = 0, transitionOverride, type } = {}) {\n  let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n  const willChange = visualElement.getValue(\"willChange\");\n  if (transitionOverride)\n    transition = transitionOverride;\n  const animations2 = [];\n  const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];\n  for (const key in target) {\n    const value = visualElement.getValue(key);\n    const valueTarget = target[key];\n    if (!value || valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {\n      continue;\n    }\n    const valueTransition = { delay: delay2, elapsed: 0, ...transition };\n    if (window.HandoffAppearAnimations && !value.hasAnimated) {\n      const appearId = visualElement.getProps()[optimizedAppearDataAttribute];\n      if (appearId) {\n        valueTransition.elapsed = window.HandoffAppearAnimations(appearId, key, value, frame);\n      }\n    }\n    value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key) ? { type: false } : valueTransition));\n    const animation = value.animation;\n    if (isWillChangeMotionValue(willChange)) {\n      willChange.add(key);\n      animation.then(() => willChange.remove(key));\n    }\n    animations2.push(animation);\n  }\n  if (transitionEnd) {\n    Promise.all(animations2).then(() => {\n      transitionEnd && setTarget(visualElement, transitionEnd);\n    });\n  }\n  return animations2;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs\nfunction animateVariant(visualElement, variant, options = {}) {\n  const resolved = resolveVariant(visualElement, variant, options.custom);\n  let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n  if (options.transitionOverride) {\n    transition = options.transitionOverride;\n  }\n  const getAnimation = resolved ? () => Promise.all(animateTarget(visualElement, resolved, options)) : () => Promise.resolve();\n  const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size ? (forwardDelay = 0) => {\n    const { delayChildren = 0, staggerChildren, staggerDirection } = transition;\n    return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n  } : () => Promise.resolve();\n  const { when } = transition;\n  if (when) {\n    const [first, last] = when === \"beforeChildren\" ? [getAnimation, getChildAnimations] : [getChildAnimations, getAnimation];\n    return first().then(() => last());\n  } else {\n    return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n  }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n  const animations2 = [];\n  const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n  const generateStaggerDuration = staggerDirection === 1 ? (i = 0) => i * staggerChildren : (i = 0) => maxStaggerDuration - i * staggerChildren;\n  Array.from(visualElement.variantChildren).sort(sortByTreeOrder).forEach((child, i) => {\n    child.notify(\"AnimationStart\", variant);\n    animations2.push(animateVariant(child, variant, {\n      ...options,\n      delay: delayChildren + generateStaggerDuration(i)\n    }).then(() => child.notify(\"AnimationComplete\", variant)));\n  });\n  return Promise.all(animations2);\n}\nfunction sortByTreeOrder(a, b) {\n  return a.sortNodePosition(b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs\nfunction animateVisualElement(visualElement, definition, options = {}) {\n  visualElement.notify(\"AnimationStart\", definition);\n  let animation;\n  if (Array.isArray(definition)) {\n    const animations2 = definition.map((variant) => animateVariant(visualElement, variant, options));\n    animation = Promise.all(animations2);\n  } else if (typeof definition === \"string\") {\n    animation = animateVariant(visualElement, definition, options);\n  } else {\n    const resolvedDefinition = typeof definition === \"function\" ? resolveVariant(visualElement, definition, options.custom) : definition;\n    animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n  }\n  return animation.then(() => visualElement.notify(\"AnimationComplete\", definition));\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs\nfunction shallowCompare(next, prev) {\n  if (!Array.isArray(prev))\n    return false;\n  const prevLength = prev.length;\n  if (prevLength !== next.length)\n    return false;\n  for (let i = 0; i < prevLength; i++) {\n    if (prev[i] !== next[i])\n      return false;\n  }\n  return true;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs\nvar reversePriorityOrder = [...variantPriorityOrder].reverse();\nvar numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n  return (animations2) => Promise.all(animations2.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n  let animate2 = animateList(visualElement);\n  const state = createState();\n  let isInitialRender = true;\n  const buildResolvedTypeValues = (acc, definition) => {\n    const resolved = resolveVariant(visualElement, definition);\n    if (resolved) {\n      const { transition, transitionEnd, ...target } = resolved;\n      acc = { ...acc, ...target, ...transitionEnd };\n    }\n    return acc;\n  };\n  function setAnimateFunction(makeAnimator) {\n    animate2 = makeAnimator(visualElement);\n  }\n  function animateChanges(options, changedActiveType) {\n    const props = visualElement.getProps();\n    const context = visualElement.getVariantContext(true) || {};\n    const animations2 = [];\n    const removedKeys = /* @__PURE__ */ new Set();\n    let encounteredKeys = {};\n    let removedVariantIndex = Infinity;\n    for (let i = 0; i < numAnimationTypes; i++) {\n      const type = reversePriorityOrder[i];\n      const typeState = state[type];\n      const prop = props[type] !== void 0 ? props[type] : context[type];\n      const propIsVariant = isVariantLabel(prop);\n      const activeDelta = type === changedActiveType ? typeState.isActive : null;\n      if (activeDelta === false)\n        removedVariantIndex = i;\n      let isInherited = prop === context[type] && prop !== props[type] && propIsVariant;\n      if (isInherited && isInitialRender && visualElement.manuallyAnimateOnMount) {\n        isInherited = false;\n      }\n      typeState.protectedKeys = { ...encounteredKeys };\n      if (\n        // If it isn't active and hasn't *just* been set as inactive\n        !typeState.isActive && activeDelta === null || // If we didn't and don't have any defined prop for this animation type\n        !prop && !typeState.prevProp || // Or if the prop doesn't define an animation\n        isAnimationControls(prop) || typeof prop === \"boolean\"\n      ) {\n        continue;\n      }\n      const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n      let shouldAnimateType = variantDidChange || // If we're making this variant active, we want to always make it active\n      type === changedActiveType && typeState.isActive && !isInherited && propIsVariant || // If we removed a higher-priority variant (i is in reverse order)\n      i > removedVariantIndex && propIsVariant;\n      const definitionList = Array.isArray(prop) ? prop : [prop];\n      let resolvedValues = definitionList.reduce(buildResolvedTypeValues, {});\n      if (activeDelta === false)\n        resolvedValues = {};\n      const { prevResolvedValues = {} } = typeState;\n      const allKeys = {\n        ...prevResolvedValues,\n        ...resolvedValues\n      };\n      const markToAnimate = (key) => {\n        shouldAnimateType = true;\n        removedKeys.delete(key);\n        typeState.needsAnimating[key] = true;\n      };\n      for (const key in allKeys) {\n        const next = resolvedValues[key];\n        const prev = prevResolvedValues[key];\n        if (encounteredKeys.hasOwnProperty(key))\n          continue;\n        if (next !== prev) {\n          if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n            if (!shallowCompare(next, prev) || variantDidChange) {\n              markToAnimate(key);\n            } else {\n              typeState.protectedKeys[key] = true;\n            }\n          } else if (next !== void 0) {\n            markToAnimate(key);\n          } else {\n            removedKeys.add(key);\n          }\n        } else if (next !== void 0 && removedKeys.has(key)) {\n          markToAnimate(key);\n        } else {\n          typeState.protectedKeys[key] = true;\n        }\n      }\n      typeState.prevProp = prop;\n      typeState.prevResolvedValues = resolvedValues;\n      if (typeState.isActive) {\n        encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n      }\n      if (isInitialRender && visualElement.blockInitialAnimation) {\n        shouldAnimateType = false;\n      }\n      if (shouldAnimateType && !isInherited) {\n        animations2.push(...definitionList.map((animation) => ({\n          animation,\n          options: { type, ...options }\n        })));\n      }\n    }\n    if (removedKeys.size) {\n      const fallbackAnimation = {};\n      removedKeys.forEach((key) => {\n        const fallbackTarget = visualElement.getBaseTarget(key);\n        if (fallbackTarget !== void 0) {\n          fallbackAnimation[key] = fallbackTarget;\n        }\n      });\n      animations2.push({ animation: fallbackAnimation });\n    }\n    let shouldAnimate = Boolean(animations2.length);\n    if (isInitialRender && props.initial === false && !visualElement.manuallyAnimateOnMount) {\n      shouldAnimate = false;\n    }\n    isInitialRender = false;\n    return shouldAnimate ? animate2(animations2) : Promise.resolve();\n  }\n  function setActive(type, isActive, options) {\n    var _a;\n    if (state[type].isActive === isActive)\n      return Promise.resolve();\n    (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n      var _a2;\n      return (_a2 = child.animationState) === null || _a2 === void 0 ? void 0 : _a2.setActive(type, isActive);\n    });\n    state[type].isActive = isActive;\n    const animations2 = animateChanges(options, type);\n    for (const key in state) {\n      state[key].protectedKeys = {};\n    }\n    return animations2;\n  }\n  return {\n    animateChanges,\n    setActive,\n    setAnimateFunction,\n    getState: () => state\n  };\n}\nfunction checkVariantsDidChange(prev, next) {\n  if (typeof next === \"string\") {\n    return next !== prev;\n  } else if (Array.isArray(next)) {\n    return !shallowCompare(next, prev);\n  }\n  return false;\n}\nfunction createTypeState(isActive = false) {\n  return {\n    isActive,\n    protectedKeys: {},\n    needsAnimating: {},\n    prevResolvedValues: {}\n  };\n}\nfunction createState() {\n  return {\n    animate: createTypeState(true),\n    whileInView: createTypeState(),\n    whileHover: createTypeState(),\n    whileTap: createTypeState(),\n    whileDrag: createTypeState(),\n    whileFocus: createTypeState(),\n    exit: createTypeState()\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/Feature.mjs\nvar Feature = class {\n  constructor(node) {\n    this.isMounted = false;\n    this.node = node;\n  }\n  update() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs\nvar AnimationFeature = class extends Feature {\n  /**\n   * We dynamically generate the AnimationState manager as it contains a reference\n   * to the underlying animation library. We only want to load that if we load this,\n   * so people can optionally code split it out using the `m` component.\n   */\n  constructor(node) {\n    super(node);\n    node.animationState || (node.animationState = createAnimationState(node));\n  }\n  updateAnimationControlsSubscription() {\n    const { animate: animate2 } = this.node.getProps();\n    this.unmount();\n    if (isAnimationControls(animate2)) {\n      this.unmount = animate2.subscribe(this.node);\n    }\n  }\n  /**\n   * Subscribe any provided AnimationControls to the component's VisualElement\n   */\n  mount() {\n    this.updateAnimationControlsSubscription();\n  }\n  update() {\n    const { animate: animate2 } = this.node.getProps();\n    const { animate: prevAnimate } = this.node.prevProps || {};\n    if (animate2 !== prevAnimate) {\n      this.updateAnimationControlsSubscription();\n    }\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs\nvar id = 0;\nvar ExitAnimationFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.id = id++;\n  }\n  update() {\n    if (!this.node.presenceContext)\n      return;\n    const { isPresent: isPresent2, onExitComplete, custom } = this.node.presenceContext;\n    const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n    if (!this.node.animationState || isPresent2 === prevIsPresent) {\n      return;\n    }\n    const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent2, { custom: custom !== null && custom !== void 0 ? custom : this.node.getProps().custom });\n    if (onExitComplete && !isPresent2) {\n      exitAnimation.then(() => onExitComplete(this.id));\n    }\n  }\n  mount() {\n    const { register } = this.node.presenceContext || {};\n    if (register) {\n      this.unmount = register(this.id);\n    }\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/animations.mjs\nvar animations = {\n  animation: {\n    Feature: AnimationFeature\n  },\n  exit: {\n    Feature: ExitAnimationFeature\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/distance.mjs\nvar distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n  const xDelta = distance(a.x, b.x);\n  const yDelta = distance(a.y, b.y);\n  return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs\nfunction calcLength(axis) {\n  return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n  return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n  delta.origin = origin;\n  delta.originPoint = mix(source.min, source.max, delta.origin);\n  delta.scale = calcLength(target) / calcLength(source);\n  if (isNear(delta.scale, 1, 1e-4) || isNaN(delta.scale))\n    delta.scale = 1;\n  delta.translate = mix(target.min, target.max, delta.origin) - delta.originPoint;\n  if (isNear(delta.translate) || isNaN(delta.translate))\n    delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n  calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : void 0);\n  calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : void 0);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n  target.min = parent.min + relative.min;\n  target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n  calcRelativeAxis(target.x, relative.x, parent.x);\n  calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout2, parent) {\n  target.min = layout2.min - parent.min;\n  target.max = target.min + calcLength(layout2);\n}\nfunction calcRelativePosition(target, layout2, parent) {\n  calcRelativeAxisPosition(target.x, layout2.x, parent.x);\n  calcRelativeAxisPosition(target.y, layout2.y, parent.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/models.mjs\nvar createAxisDelta = () => ({\n  translate: 0,\n  scale: 1,\n  origin: 0,\n  originPoint: 0\n});\nvar createDelta = () => ({\n  x: createAxisDelta(),\n  y: createAxisDelta()\n});\nvar createAxis = () => ({ min: 0, max: 0 });\nvar createBox = () => ({\n  x: createAxis(),\n  y: createAxis()\n});\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs\nimport { useContext as useContext5, useId, useEffect as useEffect3 } from \"react\";\nfunction usePresence() {\n  const context = useContext5(PresenceContext);\n  if (context === null)\n    return [true, null];\n  const { isPresent: isPresent2, onExitComplete, register } = context;\n  const id4 = useId();\n  useEffect3(() => register(id4), []);\n  const safeToRemove = () => onExitComplete && onExitComplete(id4);\n  return !isPresent2 && onExitComplete ? [false, safeToRemove] : [true];\n}\nfunction useIsPresent() {\n  return isPresent(useContext5(PresenceContext));\n}\nfunction isPresent(context) {\n  return context === null ? true : context.isPresent;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs\nvar compareByDepth = (a, b) => a.depth - b.depth;\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs\nvar FlatTree = class {\n  constructor() {\n    this.children = [];\n    this.isDirty = false;\n  }\n  add(child) {\n    addUniqueItem(this.children, child);\n    this.isDirty = true;\n  }\n  remove(child) {\n    removeItem(this.children, child);\n    this.isDirty = true;\n  }\n  forEach(callback) {\n    this.isDirty && this.children.sort(compareByDepth);\n    this.isDirty = false;\n    this.children.forEach(callback);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/utils/delay.mjs\nfunction delay(callback, timeout) {\n  const start = performance.now();\n  const checkElapsed = ({ timestamp }) => {\n    const elapsed = timestamp - start;\n    if (elapsed >= timeout) {\n      cancelFrame(checkElapsed);\n      callback(elapsed - timeout);\n    }\n  };\n  frame.read(checkElapsed, true);\n  return () => cancelFrame(checkElapsed);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/store.mjs\nvar visualElementStore = /* @__PURE__ */ new WeakMap();\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs\nvar prefersReducedMotion = { current: null };\nvar hasReducedMotionListener = { current: false };\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs\nfunction initPrefersReducedMotion() {\n  hasReducedMotionListener.current = true;\n  if (!isBrowser)\n    return;\n  if (window.matchMedia) {\n    const motionMediaQuery = window.matchMedia(\"(prefers-reduced-motion)\");\n    const setReducedMotionPreferences = () => prefersReducedMotion.current = motionMediaQuery.matches;\n    motionMediaQuery.addListener(setReducedMotionPreferences);\n    setReducedMotionPreferences();\n  } else {\n    prefersReducedMotion.current = false;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs\nfunction updateMotionValuesFromProps(element, next, prev) {\n  const { willChange } = next;\n  for (const key in next) {\n    const nextValue = next[key];\n    const prevValue = prev[key];\n    if (isMotionValue(nextValue)) {\n      element.addValue(key, nextValue);\n      if (isWillChangeMotionValue(willChange)) {\n        willChange.add(key);\n      }\n      if (false) {\n        warnOnce(nextValue.version === \"10.16.2\", `Attempting to mix Framer Motion versions ${nextValue.version} with 10.16.2 may not work as expected.`);\n      }\n    } else if (isMotionValue(prevValue)) {\n      element.addValue(key, motionValue(nextValue, { owner: element }));\n      if (isWillChangeMotionValue(willChange)) {\n        willChange.remove(key);\n      }\n    } else if (prevValue !== nextValue) {\n      if (element.hasValue(key)) {\n        const existingValue = element.getValue(key);\n        !existingValue.hasAnimated && existingValue.set(nextValue);\n      } else {\n        const latestValue = element.getStaticValue(key);\n        element.addValue(key, motionValue(latestValue !== void 0 ? latestValue : nextValue, { owner: element }));\n      }\n    }\n  }\n  for (const key in prev) {\n    if (next[key] === void 0)\n      element.removeValue(key);\n  }\n  return next;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/VisualElement.mjs\nvar featureNames = Object.keys(featureDefinitions);\nvar numFeatures = featureNames.length;\nvar propEventHandlers = [\n  \"AnimationStart\",\n  \"AnimationComplete\",\n  \"Update\",\n  \"BeforeLayoutMeasure\",\n  \"LayoutMeasure\",\n  \"LayoutAnimationStart\",\n  \"LayoutAnimationComplete\"\n];\nvar numVariantProps = variantProps.length;\nvar VisualElement = class {\n  constructor({ parent, props, presenceContext, reducedMotionConfig, visualState }, options = {}) {\n    this.current = null;\n    this.children = /* @__PURE__ */ new Set();\n    this.isVariantNode = false;\n    this.isControllingVariants = false;\n    this.shouldReduceMotion = null;\n    this.values = /* @__PURE__ */ new Map();\n    this.features = {};\n    this.valueSubscriptions = /* @__PURE__ */ new Map();\n    this.prevMotionValues = {};\n    this.events = {};\n    this.propEventSubscriptions = {};\n    this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n    this.render = () => {\n      if (!this.current)\n        return;\n      this.triggerBuild();\n      this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n    };\n    this.scheduleRender = () => frame.render(this.render, false, true);\n    const { latestValues, renderState } = visualState;\n    this.latestValues = latestValues;\n    this.baseTarget = { ...latestValues };\n    this.initialValues = props.initial ? { ...latestValues } : {};\n    this.renderState = renderState;\n    this.parent = parent;\n    this.props = props;\n    this.presenceContext = presenceContext;\n    this.depth = parent ? parent.depth + 1 : 0;\n    this.reducedMotionConfig = reducedMotionConfig;\n    this.options = options;\n    this.isControllingVariants = isControllingVariants(props);\n    this.isVariantNode = isVariantNode(props);\n    if (this.isVariantNode) {\n      this.variantChildren = /* @__PURE__ */ new Set();\n    }\n    this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n    const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {});\n    for (const key in initialMotionValues) {\n      const value = initialMotionValues[key];\n      if (latestValues[key] !== void 0 && isMotionValue(value)) {\n        value.set(latestValues[key], false);\n        if (isWillChangeMotionValue(willChange)) {\n          willChange.add(key);\n        }\n      }\n    }\n  }\n  /**\n   * This method takes React props and returns found MotionValues. For example, HTML\n   * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n   *\n   * This isn't an abstract method as it needs calling in the constructor, but it is\n   * intended to be one.\n   */\n  scrapeMotionValuesFromProps(_props, _prevProps) {\n    return {};\n  }\n  mount(instance) {\n    this.current = instance;\n    visualElementStore.set(instance, this);\n    if (this.projection && !this.projection.instance) {\n      this.projection.mount(instance);\n    }\n    if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n      this.removeFromVariantTree = this.parent.addVariantChild(this);\n    }\n    this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n    if (!hasReducedMotionListener.current) {\n      initPrefersReducedMotion();\n    }\n    this.shouldReduceMotion = this.reducedMotionConfig === \"never\" ? false : this.reducedMotionConfig === \"always\" ? true : prefersReducedMotion.current;\n    if (false) {\n      warnOnce(this.shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n    }\n    if (this.parent)\n      this.parent.children.add(this);\n    this.update(this.props, this.presenceContext);\n  }\n  unmount() {\n    visualElementStore.delete(this.current);\n    this.projection && this.projection.unmount();\n    cancelFrame(this.notifyUpdate);\n    cancelFrame(this.render);\n    this.valueSubscriptions.forEach((remove) => remove());\n    this.removeFromVariantTree && this.removeFromVariantTree();\n    this.parent && this.parent.children.delete(this);\n    for (const key in this.events) {\n      this.events[key].clear();\n    }\n    for (const key in this.features) {\n      this.features[key].unmount();\n    }\n    this.current = null;\n  }\n  bindToMotionValue(key, value) {\n    const valueIsTransform = transformProps.has(key);\n    const removeOnChange = value.on(\"change\", (latestValue) => {\n      this.latestValues[key] = latestValue;\n      this.props.onUpdate && frame.update(this.notifyUpdate, false, true);\n      if (valueIsTransform && this.projection) {\n        this.projection.isTransformDirty = true;\n      }\n    });\n    const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n    this.valueSubscriptions.set(key, () => {\n      removeOnChange();\n      removeOnRenderRequest();\n    });\n  }\n  sortNodePosition(other) {\n    if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {\n      return 0;\n    }\n    return this.sortInstanceNodePosition(this.current, other.current);\n  }\n  loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures2, initialLayoutGroupConfig) {\n    let ProjectionNodeConstructor;\n    let MeasureLayout2;\n    if (false) {\n      const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n      renderedProps.ignoreStrict ? warning(false, strictMessage) : invariant(false, strictMessage);\n    }\n    for (let i = 0; i < numFeatures; i++) {\n      const name = featureNames[i];\n      const { isEnabled, Feature: FeatureConstructor, ProjectionNode, MeasureLayout: MeasureLayoutComponent } = featureDefinitions[name];\n      if (ProjectionNode)\n        ProjectionNodeConstructor = ProjectionNode;\n      if (isEnabled(renderedProps)) {\n        if (!this.features[name] && FeatureConstructor) {\n          this.features[name] = new FeatureConstructor(this);\n        }\n        if (MeasureLayoutComponent) {\n          MeasureLayout2 = MeasureLayoutComponent;\n        }\n      }\n    }\n    if (!this.projection && ProjectionNodeConstructor) {\n      this.projection = new ProjectionNodeConstructor(this.latestValues, this.parent && this.parent.projection);\n      const { layoutId, layout: layout2, drag: drag2, dragConstraints, layoutScroll, layoutRoot } = renderedProps;\n      this.projection.setOptions({\n        layoutId,\n        layout: layout2,\n        alwaysMeasureLayout: Boolean(drag2) || dragConstraints && isRefObject(dragConstraints),\n        visualElement: this,\n        scheduleRender: () => this.scheduleRender(),\n        /**\n         * TODO: Update options in an effect. This could be tricky as it'll be too late\n         * to update by the time layout animations run.\n         * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n         * ensuring it gets called if there's no potential layout animations.\n         *\n         */\n        animationType: typeof layout2 === \"string\" ? layout2 : \"both\",\n        initialPromotionConfig: initialLayoutGroupConfig,\n        layoutScroll,\n        layoutRoot\n      });\n    }\n    return MeasureLayout2;\n  }\n  updateFeatures() {\n    for (const key in this.features) {\n      const feature = this.features[key];\n      if (feature.isMounted) {\n        feature.update();\n      } else {\n        feature.mount();\n        feature.isMounted = true;\n      }\n    }\n  }\n  triggerBuild() {\n    this.build(this.renderState, this.latestValues, this.options, this.props);\n  }\n  /**\n   * Measure the current viewport box with or without transforms.\n   * Only measures axis-aligned boxes, rotate and skew must be manually\n   * removed with a re-render to work.\n   */\n  measureViewportBox() {\n    return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();\n  }\n  getStaticValue(key) {\n    return this.latestValues[key];\n  }\n  setStaticValue(key, value) {\n    this.latestValues[key] = value;\n  }\n  /**\n   * Make a target animatable by Popmotion. For instance, if we're\n   * trying to animate width from 100px to 100vw we need to measure 100vw\n   * in pixels to determine what we really need to animate to. This is also\n   * pluggable to support Framer's custom value types like Color,\n   * and CSS variables.\n   */\n  makeTargetAnimatable(target, canMutate = true) {\n    return this.makeTargetAnimatableFromInstance(target, this.props, canMutate);\n  }\n  /**\n   * Update the provided props. Ensure any newly-added motion values are\n   * added to our map, old ones removed, and listeners updated.\n   */\n  update(props, presenceContext) {\n    if (props.transformTemplate || this.props.transformTemplate) {\n      this.scheduleRender();\n    }\n    this.prevProps = this.props;\n    this.props = props;\n    this.prevPresenceContext = this.presenceContext;\n    this.presenceContext = presenceContext;\n    for (let i = 0; i < propEventHandlers.length; i++) {\n      const key = propEventHandlers[i];\n      if (this.propEventSubscriptions[key]) {\n        this.propEventSubscriptions[key]();\n        delete this.propEventSubscriptions[key];\n      }\n      const listener = props[\"on\" + key];\n      if (listener) {\n        this.propEventSubscriptions[key] = this.on(key, listener);\n      }\n    }\n    this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps), this.prevMotionValues);\n    if (this.handleChildMotionValue) {\n      this.handleChildMotionValue();\n    }\n  }\n  getProps() {\n    return this.props;\n  }\n  /**\n   * Returns the variant definition with a given name.\n   */\n  getVariant(name) {\n    return this.props.variants ? this.props.variants[name] : void 0;\n  }\n  /**\n   * Returns the defined default transition on this component.\n   */\n  getDefaultTransition() {\n    return this.props.transition;\n  }\n  getTransformPagePoint() {\n    return this.props.transformPagePoint;\n  }\n  getClosestVariantNode() {\n    return this.isVariantNode ? this : this.parent ? this.parent.getClosestVariantNode() : void 0;\n  }\n  getVariantContext(startAtParent = false) {\n    if (startAtParent) {\n      return this.parent ? this.parent.getVariantContext() : void 0;\n    }\n    if (!this.isControllingVariants) {\n      const context2 = this.parent ? this.parent.getVariantContext() || {} : {};\n      if (this.props.initial !== void 0) {\n        context2.initial = this.props.initial;\n      }\n      return context2;\n    }\n    const context = {};\n    for (let i = 0; i < numVariantProps; i++) {\n      const name = variantProps[i];\n      const prop = this.props[name];\n      if (isVariantLabel(prop) || prop === false) {\n        context[name] = prop;\n      }\n    }\n    return context;\n  }\n  /**\n   * Add a child visual element to our set of children.\n   */\n  addVariantChild(child) {\n    const closestVariantNode = this.getClosestVariantNode();\n    if (closestVariantNode) {\n      closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);\n      return () => closestVariantNode.variantChildren.delete(child);\n    }\n  }\n  /**\n   * Add a motion value and bind it to this visual element.\n   */\n  addValue(key, value) {\n    if (value !== this.values.get(key)) {\n      this.removeValue(key);\n      this.bindToMotionValue(key, value);\n    }\n    this.values.set(key, value);\n    this.latestValues[key] = value.get();\n  }\n  /**\n   * Remove a motion value and unbind any active subscriptions.\n   */\n  removeValue(key) {\n    this.values.delete(key);\n    const unsubscribe = this.valueSubscriptions.get(key);\n    if (unsubscribe) {\n      unsubscribe();\n      this.valueSubscriptions.delete(key);\n    }\n    delete this.latestValues[key];\n    this.removeValueFromRenderState(key, this.renderState);\n  }\n  /**\n   * Check whether we have a motion value for this key\n   */\n  hasValue(key) {\n    return this.values.has(key);\n  }\n  getValue(key, defaultValue) {\n    if (this.props.values && this.props.values[key]) {\n      return this.props.values[key];\n    }\n    let value = this.values.get(key);\n    if (value === void 0 && defaultValue !== void 0) {\n      value = motionValue(defaultValue, { owner: this });\n      this.addValue(key, value);\n    }\n    return value;\n  }\n  /**\n   * If we're trying to animate to a previously unencountered value,\n   * we need to check for it in our state and as a last resort read it\n   * directly from the instance (which might have performance implications).\n   */\n  readValue(key) {\n    var _a;\n    return this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n  }\n  /**\n   * Set the base target to later animate back to. This is currently\n   * only hydrated on creation and when we first read a value.\n   */\n  setBaseTarget(key, value) {\n    this.baseTarget[key] = value;\n  }\n  /**\n   * Find the base target for a value thats been removed from all animation\n   * props.\n   */\n  getBaseTarget(key) {\n    var _a;\n    const { initial } = this.props;\n    const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\" ? (_a = resolveVariantFromProps(this.props, initial)) === null || _a === void 0 ? void 0 : _a[key] : void 0;\n    if (initial && valueFromInitial !== void 0) {\n      return valueFromInitial;\n    }\n    const target = this.getBaseTargetFromProps(this.props, key);\n    if (target !== void 0 && !isMotionValue(target))\n      return target;\n    return this.initialValues[key] !== void 0 && valueFromInitial === void 0 ? void 0 : this.baseTarget[key];\n  }\n  on(eventName, callback) {\n    if (!this.events[eventName]) {\n      this.events[eventName] = new SubscriptionManager();\n    }\n    return this.events[eventName].add(callback);\n  }\n  notify(eventName, ...args) {\n    if (this.events[eventName]) {\n      this.events[eventName].notify(...args);\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs\nfunction createMotionProxy(createConfig) {\n  function custom(Component2, customMotionComponentConfig = {}) {\n    return createMotionComponent(createConfig(Component2, customMotionComponentConfig));\n  }\n  if (typeof Proxy === \"undefined\") {\n    return custom;\n  }\n  const componentCache = /* @__PURE__ */ new Map();\n  return new Proxy(custom, {\n    /**\n     * Called when `motion` is referenced with a prop: `motion.div`, `motion.input` etc.\n     * The prop name is passed through as `key` and we can use that to generate a `motion`\n     * DOM component with that name.\n     */\n    get: (_target, key) => {\n      if (!componentCache.has(key)) {\n        componentCache.set(key, custom(key));\n      }\n      return componentCache.get(key);\n    }\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs\nvar lowercaseSVGElements = [\n  \"animate\",\n  \"circle\",\n  \"defs\",\n  \"desc\",\n  \"ellipse\",\n  \"g\",\n  \"image\",\n  \"line\",\n  \"filter\",\n  \"marker\",\n  \"mask\",\n  \"metadata\",\n  \"path\",\n  \"pattern\",\n  \"polygon\",\n  \"polyline\",\n  \"rect\",\n  \"stop\",\n  \"switch\",\n  \"symbol\",\n  \"svg\",\n  \"text\",\n  \"tspan\",\n  \"use\",\n  \"view\"\n];\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs\nfunction isSVGComponent(Component2) {\n  if (\n    /**\n     * If it's not a string, it's a custom React component. Currently we only support\n     * HTML custom React components.\n     */\n    typeof Component2 !== \"string\" || /**\n     * If it contains a dash, the element is a custom HTML webcomponent.\n     */\n    Component2.includes(\"-\")\n  ) {\n    return false;\n  } else if (\n    /**\n     * If it's in our list of lowercase SVG tags, it's an SVG component\n     */\n    lowercaseSVGElements.indexOf(Component2) > -1 || /**\n     * If it contains a capital letter, it's an SVG component\n     */\n    /[A-Z]/.test(Component2)\n  ) {\n    return true;\n  }\n  return false;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nimport { useMemo as useMemo4, createElement as createElement2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nimport { useMemo as useMemo2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs\nfunction isForcedMotionValue(key, { layout: layout2, layoutId }) {\n  return transformProps.has(key) || key.startsWith(\"origin\") || (layout2 || layoutId !== void 0) && (!!scaleCorrectors[key] || key === \"opacity\");\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs\nvar getValueAsType = (value, type) => {\n  return type && typeof value === \"number\" ? type.transform(value) : value;\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n  const { style, vars, transform: transform2, transformOrigin } = state;\n  let hasTransform2 = false;\n  let hasTransformOrigin = false;\n  let transformIsNone = true;\n  for (const key in latestValues) {\n    const value = latestValues[key];\n    if (isCSSVariableName(key)) {\n      vars[key] = value;\n      continue;\n    }\n    const valueType = numberValueTypes[key];\n    const valueAsType = getValueAsType(value, valueType);\n    if (transformProps.has(key)) {\n      hasTransform2 = true;\n      transform2[key] = valueAsType;\n      if (!transformIsNone)\n        continue;\n      if (value !== (valueType.default || 0))\n        transformIsNone = false;\n    } else if (key.startsWith(\"origin\")) {\n      hasTransformOrigin = true;\n      transformOrigin[key] = valueAsType;\n    } else {\n      style[key] = valueAsType;\n    }\n  }\n  if (!latestValues.transform) {\n    if (hasTransform2 || transformTemplate) {\n      style.transform = buildTransform(state.transform, options, transformIsNone, transformTemplate);\n    } else if (style.transform) {\n      style.transform = \"none\";\n    }\n  }\n  if (hasTransformOrigin) {\n    const { originX = \"50%\", originY = \"50%\", originZ = 0 } = transformOrigin;\n    style.transformOrigin = `${originX} ${originY} ${originZ}`;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs\nvar createHtmlRenderState = () => ({\n  style: {},\n  transform: {},\n  transformOrigin: {},\n  vars: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/html/use-props.mjs\nfunction copyRawValuesOnly(target, source, props) {\n  for (const key in source) {\n    if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n      target[key] = source[key];\n    }\n  }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n  return useMemo2(() => {\n    const state = createHtmlRenderState();\n    buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n    return Object.assign({}, state.vars, state.style);\n  }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n  const styleProp = props.style || {};\n  const style = {};\n  copyRawValuesOnly(style, styleProp, props);\n  Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n  return props.transformValues ? props.transformValues(style) : style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n  const htmlProps = {};\n  const style = useStyle(props, visualState, isStatic);\n  if (props.drag && props.dragListener !== false) {\n    htmlProps.draggable = false;\n    style.userSelect = style.WebkitUserSelect = style.WebkitTouchCallout = \"none\";\n    style.touchAction = props.drag === true ? \"none\" : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n  }\n  if (props.tabIndex === void 0 && (props.onTap || props.onTapStart || props.whileTap)) {\n    htmlProps.tabIndex = 0;\n  }\n  htmlProps.style = style;\n  return htmlProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nimport { useMemo as useMemo3 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs\nfunction calcOrigin(origin, offset, size) {\n  return typeof origin === \"string\" ? origin : px.transform(offset + size * origin);\n}\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n  const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n  const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n  return `${pxOriginX} ${pxOriginY}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs\nvar dashKeys = {\n  offset: \"stroke-dashoffset\",\n  array: \"stroke-dasharray\"\n};\nvar camelKeys = {\n  offset: \"strokeDashoffset\",\n  array: \"strokeDasharray\"\n};\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n  attrs.pathLength = 1;\n  const keys2 = useDashCase ? dashKeys : camelKeys;\n  attrs[keys2.offset] = px.transform(-offset);\n  const pathLength = px.transform(length);\n  const pathSpacing = px.transform(spacing);\n  attrs[keys2.array] = `${pathLength} ${pathSpacing}`;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs\nfunction buildSVGAttrs(state, {\n  attrX,\n  attrY,\n  attrScale,\n  originX,\n  originY,\n  pathLength,\n  pathSpacing = 1,\n  pathOffset = 0,\n  // This is object creation, which we try to avoid per-frame.\n  ...latest\n}, options, isSVGTag2, transformTemplate) {\n  buildHTMLStyles(state, latest, options, transformTemplate);\n  if (isSVGTag2) {\n    if (state.style.viewBox) {\n      state.attrs.viewBox = state.style.viewBox;\n    }\n    return;\n  }\n  state.attrs = state.style;\n  state.style = {};\n  const { attrs, style, dimensions } = state;\n  if (attrs.transform) {\n    if (dimensions)\n      style.transform = attrs.transform;\n    delete attrs.transform;\n  }\n  if (dimensions && (originX !== void 0 || originY !== void 0 || style.transform)) {\n    style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== void 0 ? originX : 0.5, originY !== void 0 ? originY : 0.5);\n  }\n  if (attrX !== void 0)\n    attrs.x = attrX;\n  if (attrY !== void 0)\n    attrs.y = attrY;\n  if (attrScale !== void 0)\n    attrs.scale = attrScale;\n  if (pathLength !== void 0) {\n    buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs\nvar createSvgRenderState = () => ({\n  ...createHtmlRenderState(),\n  attrs: {}\n});\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs\nvar isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/use-props.mjs\nfunction useSVGProps(props, visualState, _isStatic, Component2) {\n  const visualProps = useMemo3(() => {\n    const state = createSvgRenderState();\n    buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component2), props.transformTemplate);\n    return {\n      ...state.attrs,\n      style: { ...state.style }\n    };\n  }, [visualState]);\n  if (props.style) {\n    const rawStyles = {};\n    copyRawValuesOnly(rawStyles, props.style, props);\n    visualProps.style = { ...rawStyles, ...visualProps.style };\n  }\n  return visualProps;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/use-render.mjs\nfunction createUseRender(forwardMotionProps = false) {\n  const useRender = (Component2, props, ref, { latestValues }, isStatic) => {\n    const useVisualProps = isSVGComponent(Component2) ? useSVGProps : useHTMLProps;\n    const visualProps = useVisualProps(props, latestValues, isStatic, Component2);\n    const filteredProps = filterProps(props, typeof Component2 === \"string\", forwardMotionProps);\n    const elementProps = {\n      ...filteredProps,\n      ...visualProps,\n      ref\n    };\n    const { children } = props;\n    const renderedChildren = useMemo4(() => isMotionValue(children) ? children.get() : children, [children]);\n    return createElement2(Component2, {\n      ...elementProps,\n      children: renderedChildren\n    });\n  };\n  return useRender;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/render.mjs\nfunction renderHTML(element, { style, vars }, styleProp, projection) {\n  Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n  for (const key in vars) {\n    element.style.setProperty(key, vars[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs\nvar camelCaseAttributes = /* @__PURE__ */ new Set([\n  \"baseFrequency\",\n  \"diffuseConstant\",\n  \"kernelMatrix\",\n  \"kernelUnitLength\",\n  \"keySplines\",\n  \"keyTimes\",\n  \"limitingConeAngle\",\n  \"markerHeight\",\n  \"markerWidth\",\n  \"numOctaves\",\n  \"targetX\",\n  \"targetY\",\n  \"surfaceScale\",\n  \"specularConstant\",\n  \"specularExponent\",\n  \"stdDeviation\",\n  \"tableValues\",\n  \"viewBox\",\n  \"gradientTransform\",\n  \"pathLength\",\n  \"startOffset\",\n  \"textLength\",\n  \"lengthAdjust\"\n]);\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs\nfunction renderSVG(element, renderState, _styleProp, projection) {\n  renderHTML(element, renderState, void 0, projection);\n  for (const key in renderState.attrs) {\n    element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps(props, prevProps) {\n  const { style } = props;\n  const newValues = {};\n  for (const key in style) {\n    if (isMotionValue(style[key]) || prevProps.style && isMotionValue(prevProps.style[key]) || isForcedMotionValue(key, props)) {\n      newValues[key] = style[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs\nfunction scrapeMotionValuesFromProps2(props, prevProps) {\n  const newValues = scrapeMotionValuesFromProps(props, prevProps);\n  for (const key in props) {\n    if (isMotionValue(props[key]) || isMotionValue(prevProps[key])) {\n      const targetKey = transformPropOrder.indexOf(key) !== -1 ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1) : key;\n      newValues[targetKey] = props[key];\n    }\n  }\n  return newValues;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs\nvar svgMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps: scrapeMotionValuesFromProps2,\n    createRenderState: createSvgRenderState,\n    onMount: (props, instance, { renderState, latestValues }) => {\n      frame.read(() => {\n        try {\n          renderState.dimensions = typeof instance.getBBox === \"function\" ? instance.getBBox() : instance.getBoundingClientRect();\n        } catch (e) {\n          renderState.dimensions = {\n            x: 0,\n            y: 0,\n            width: 0,\n            height: 0\n          };\n        }\n      });\n      frame.render(() => {\n        buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n        renderSVG(instance, renderState);\n      });\n    }\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/config-motion.mjs\nvar htmlMotionConfig = {\n  useVisualState: makeUseVisualState({\n    scrapeMotionValuesFromProps,\n    createRenderState: createHtmlRenderState\n  })\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs\nfunction createDomMotionConfig(Component2, { forwardMotionProps = false }, preloadedFeatures2, createVisualElement2) {\n  const baseConfig = isSVGComponent(Component2) ? svgMotionConfig : htmlMotionConfig;\n  return {\n    ...baseConfig,\n    preloadedFeatures: preloadedFeatures2,\n    useRender: createUseRender(forwardMotionProps),\n    createVisualElement: createVisualElement2,\n    Component: Component2\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/hover.mjs\nfunction addHoverEvent(node, isActive) {\n  const eventName = \"pointer\" + (isActive ? \"enter\" : \"leave\");\n  const callbackName = \"onHover\" + (isActive ? \"Start\" : \"End\");\n  const handleEvent = (event, info) => {\n    if (event.type === \"touch\" || isDragActive())\n      return;\n    const props = node.getProps();\n    if (node.animationState && props.whileHover) {\n      node.animationState.setActive(\"whileHover\", isActive);\n    }\n    if (props[callbackName]) {\n      frame.update(() => props[callbackName](event, info));\n    }\n  };\n  return addPointerEvent(node.current, eventName, handleEvent, {\n    passive: !node.getProps()[callbackName]\n  });\n}\nvar HoverGesture = class extends Feature {\n  mount() {\n    this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/focus.mjs\nvar FocusGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.isActive = false;\n  }\n  onFocus() {\n    let isFocusVisible = false;\n    try {\n      isFocusVisible = this.node.current.matches(\":focus-visible\");\n    } catch (e) {\n      isFocusVisible = true;\n    }\n    if (!isFocusVisible || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", true);\n    this.isActive = true;\n  }\n  onBlur() {\n    if (!this.isActive || !this.node.animationState)\n      return;\n    this.node.animationState.setActive(\"whileFocus\", false);\n    this.isActive = false;\n  }\n  mount() {\n    this.unmount = pipe(addDomEvent(this.node.current, \"focus\", () => this.onFocus()), addDomEvent(this.node.current, \"blur\", () => this.onBlur()));\n  }\n  unmount() {\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs\nvar isNodeOrChild = (parent, child) => {\n  if (!child) {\n    return false;\n  } else if (parent === child) {\n    return true;\n  } else {\n    return isNodeOrChild(parent, child.parentElement);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/press.mjs\nfunction fireSyntheticPointerEvent(name, handler) {\n  if (!handler)\n    return;\n  const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n  handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nvar PressGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removeStartListeners = noop;\n    this.removeEndListeners = noop;\n    this.removeAccessibleListeners = noop;\n    this.startPointerPress = (startEvent, startInfo) => {\n      this.removeEndListeners();\n      if (this.isPressing)\n        return;\n      const props = this.node.getProps();\n      const endPointerPress = (endEvent, endInfo) => {\n        if (!this.checkPressEnd())\n          return;\n        const { onTap, onTapCancel } = this.node.getProps();\n        frame.update(() => {\n          !isNodeOrChild(this.node.current, endEvent.target) ? onTapCancel && onTapCancel(endEvent, endInfo) : onTap && onTap(endEvent, endInfo);\n        });\n      };\n      const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, { passive: !(props.onTap || props[\"onPointerUp\"]) });\n      const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), { passive: !(props.onTapCancel || props[\"onPointerCancel\"]) });\n      this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n      this.startPress(startEvent, startInfo);\n    };\n    this.startAccessiblePress = () => {\n      const handleKeydown = (keydownEvent) => {\n        if (keydownEvent.key !== \"Enter\" || this.isPressing)\n          return;\n        const handleKeyup = (keyupEvent) => {\n          if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n            return;\n          fireSyntheticPointerEvent(\"up\", (event, info) => {\n            const { onTap } = this.node.getProps();\n            if (onTap) {\n              frame.update(() => onTap(event, info));\n            }\n          });\n        };\n        this.removeEndListeners();\n        this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n        fireSyntheticPointerEvent(\"down\", (event, info) => {\n          this.startPress(event, info);\n        });\n      };\n      const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n      const handleBlur = () => {\n        if (!this.isPressing)\n          return;\n        fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n      };\n      const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n      this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n    };\n  }\n  startPress(event, info) {\n    this.isPressing = true;\n    const { onTapStart, whileTap } = this.node.getProps();\n    if (whileTap && this.node.animationState) {\n      this.node.animationState.setActive(\"whileTap\", true);\n    }\n    if (onTapStart) {\n      frame.update(() => onTapStart(event, info));\n    }\n  }\n  checkPressEnd() {\n    this.removeEndListeners();\n    this.isPressing = false;\n    const props = this.node.getProps();\n    if (props.whileTap && this.node.animationState) {\n      this.node.animationState.setActive(\"whileTap\", false);\n    }\n    return !isDragActive();\n  }\n  cancelPress(event, info) {\n    if (!this.checkPressEnd())\n      return;\n    const { onTapCancel } = this.node.getProps();\n    if (onTapCancel) {\n      frame.update(() => onTapCancel(event, info));\n    }\n  }\n  mount() {\n    const props = this.node.getProps();\n    const removePointerListener = addPointerEvent(this.node.current, \"pointerdown\", this.startPointerPress, { passive: !(props.onTapStart || props[\"onPointerStart\"]) });\n    const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n    this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n  }\n  unmount() {\n    this.removeStartListeners();\n    this.removeEndListeners();\n    this.removeAccessibleListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs\nvar observerCallbacks = /* @__PURE__ */ new WeakMap();\nvar observers = /* @__PURE__ */ new WeakMap();\nvar fireObserverCallback = (entry) => {\n  const callback = observerCallbacks.get(entry.target);\n  callback && callback(entry);\n};\nvar fireAllObserverCallbacks = (entries) => {\n  entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n  const lookupRoot = root || document;\n  if (!observers.has(lookupRoot)) {\n    observers.set(lookupRoot, {});\n  }\n  const rootObservers = observers.get(lookupRoot);\n  const key = JSON.stringify(options);\n  if (!rootObservers[key]) {\n    rootObservers[key] = new IntersectionObserver(fireAllObserverCallbacks, { root, ...options });\n  }\n  return rootObservers[key];\n}\nfunction observeIntersection(element, options, callback) {\n  const rootInteresectionObserver = initIntersectionObserver(options);\n  observerCallbacks.set(element, callback);\n  rootInteresectionObserver.observe(element);\n  return () => {\n    observerCallbacks.delete(element);\n    rootInteresectionObserver.unobserve(element);\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs\nvar thresholdNames = {\n  some: 0,\n  all: 1\n};\nvar InViewFeature = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.hasEnteredView = false;\n    this.isInView = false;\n  }\n  startObserver() {\n    this.unmount();\n    const { viewport = {} } = this.node.getProps();\n    const { root, margin: rootMargin, amount = \"some\", once } = viewport;\n    const options = {\n      root: root ? root.current : void 0,\n      rootMargin,\n      threshold: typeof amount === \"number\" ? amount : thresholdNames[amount]\n    };\n    const onIntersectionUpdate = (entry) => {\n      const { isIntersecting } = entry;\n      if (this.isInView === isIntersecting)\n        return;\n      this.isInView = isIntersecting;\n      if (once && !isIntersecting && this.hasEnteredView) {\n        return;\n      } else if (isIntersecting) {\n        this.hasEnteredView = true;\n      }\n      if (this.node.animationState) {\n        this.node.animationState.setActive(\"whileInView\", isIntersecting);\n      }\n      const { onViewportEnter, onViewportLeave } = this.node.getProps();\n      const callback = isIntersecting ? onViewportEnter : onViewportLeave;\n      callback && callback(entry);\n    };\n    return observeIntersection(this.node.current, options, onIntersectionUpdate);\n  }\n  mount() {\n    this.startObserver();\n  }\n  update() {\n    if (typeof IntersectionObserver === \"undefined\")\n      return;\n    const { props, prevProps } = this.node;\n    const hasOptionsChanged = [\"amount\", \"margin\", \"root\"].some(hasViewportOptionChanged(props, prevProps));\n    if (hasOptionsChanged) {\n      this.startObserver();\n    }\n  }\n  unmount() {\n  }\n};\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n  return (name) => viewport[name] !== prevViewport[name];\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/gestures.mjs\nvar gestureAnimations = {\n  inView: {\n    Feature: InViewFeature\n  },\n  tap: {\n    Feature: PressGesture\n  },\n  focus: {\n    Feature: FocusGesture\n  },\n  hover: {\n    Feature: HoverGesture\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs\nvar PanSession = class {\n  constructor(event, handlers, { transformPagePoint } = {}) {\n    this.startEvent = null;\n    this.lastMoveEvent = null;\n    this.lastMoveEventInfo = null;\n    this.handlers = {};\n    this.updatePoint = () => {\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const info2 = getPanInfo(this.lastMoveEventInfo, this.history);\n      const isPanStarted = this.startEvent !== null;\n      const isDistancePastThreshold = distance2D(info2.offset, { x: 0, y: 0 }) >= 3;\n      if (!isPanStarted && !isDistancePastThreshold)\n        return;\n      const { point: point3 } = info2;\n      const { timestamp: timestamp2 } = frameData;\n      this.history.push({ ...point3, timestamp: timestamp2 });\n      const { onStart, onMove } = this.handlers;\n      if (!isPanStarted) {\n        onStart && onStart(this.lastMoveEvent, info2);\n        this.startEvent = this.lastMoveEvent;\n      }\n      onMove && onMove(this.lastMoveEvent, info2);\n    };\n    this.handlePointerMove = (event2, info2) => {\n      this.lastMoveEvent = event2;\n      this.lastMoveEventInfo = transformPoint(info2, this.transformPagePoint);\n      frame.update(this.updatePoint, true);\n    };\n    this.handlePointerUp = (event2, info2) => {\n      this.end();\n      if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n        return;\n      const { onEnd, onSessionEnd } = this.handlers;\n      const panInfo = getPanInfo(event2.type === \"pointercancel\" ? this.lastMoveEventInfo : transformPoint(info2, this.transformPagePoint), this.history);\n      if (this.startEvent && onEnd) {\n        onEnd(event2, panInfo);\n      }\n      onSessionEnd && onSessionEnd(event2, panInfo);\n    };\n    if (!isPrimaryPointer(event))\n      return;\n    this.handlers = handlers;\n    this.transformPagePoint = transformPagePoint;\n    const info = extractEventInfo(event);\n    const initialInfo = transformPoint(info, this.transformPagePoint);\n    const { point: point2 } = initialInfo;\n    const { timestamp } = frameData;\n    this.history = [{ ...point2, timestamp }];\n    const { onSessionStart } = handlers;\n    onSessionStart && onSessionStart(event, getPanInfo(initialInfo, this.history));\n    this.removeListeners = pipe(addPointerEvent(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n  }\n  updateHandlers(handlers) {\n    this.handlers = handlers;\n  }\n  end() {\n    this.removeListeners && this.removeListeners();\n    cancelFrame(this.updatePoint);\n  }\n};\nfunction transformPoint(info, transformPagePoint) {\n  return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n  return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point: point2 }, history) {\n  return {\n    point: point2,\n    delta: subtractPoint(point2, lastDevicePoint(history)),\n    offset: subtractPoint(point2, startDevicePoint(history)),\n    velocity: getVelocity2(history, 0.1)\n  };\n}\nfunction startDevicePoint(history) {\n  return history[0];\n}\nfunction lastDevicePoint(history) {\n  return history[history.length - 1];\n}\nfunction getVelocity2(history, timeDelta) {\n  if (history.length < 2) {\n    return { x: 0, y: 0 };\n  }\n  let i = history.length - 1;\n  let timestampedPoint = null;\n  const lastPoint = lastDevicePoint(history);\n  while (i >= 0) {\n    timestampedPoint = history[i];\n    if (lastPoint.timestamp - timestampedPoint.timestamp > secondsToMilliseconds(timeDelta)) {\n      break;\n    }\n    i--;\n  }\n  if (!timestampedPoint) {\n    return { x: 0, y: 0 };\n  }\n  const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n  if (time === 0) {\n    return { x: 0, y: 0 };\n  }\n  const currentVelocity = {\n    x: (lastPoint.x - timestampedPoint.x) / time,\n    y: (lastPoint.y - timestampedPoint.y) / time\n  };\n  if (currentVelocity.x === Infinity) {\n    currentVelocity.x = 0;\n  }\n  if (currentVelocity.y === Infinity) {\n    currentVelocity.y = 0;\n  }\n  return currentVelocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs\nfunction applyConstraints(point2, { min, max }, elastic) {\n  if (min !== void 0 && point2 < min) {\n    point2 = elastic ? mix(min, point2, elastic.min) : Math.max(point2, min);\n  } else if (max !== void 0 && point2 > max) {\n    point2 = elastic ? mix(max, point2, elastic.max) : Math.min(point2, max);\n  }\n  return point2;\n}\nfunction calcRelativeAxisConstraints(axis, min, max) {\n  return {\n    min: min !== void 0 ? axis.min + min : void 0,\n    max: max !== void 0 ? axis.max + max - (axis.max - axis.min) : void 0\n  };\n}\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n  return {\n    x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n    y: calcRelativeAxisConstraints(layoutBox.y, top, bottom)\n  };\n}\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n  let min = constraintsAxis.min - layoutAxis.min;\n  let max = constraintsAxis.max - layoutAxis.max;\n  if (constraintsAxis.max - constraintsAxis.min < layoutAxis.max - layoutAxis.min) {\n    [min, max] = [max, min];\n  }\n  return { min, max };\n}\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n  return {\n    x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n    y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y)\n  };\n}\nfunction calcOrigin2(source, target) {\n  let origin = 0.5;\n  const sourceLength = calcLength(source);\n  const targetLength = calcLength(target);\n  if (targetLength > sourceLength) {\n    origin = progress(target.min, target.max - sourceLength, source.min);\n  } else if (sourceLength > targetLength) {\n    origin = progress(source.min, source.max - targetLength, target.min);\n  }\n  return clamp(0, 1, origin);\n}\nfunction rebaseAxisConstraints(layout2, constraints) {\n  const relativeConstraints = {};\n  if (constraints.min !== void 0) {\n    relativeConstraints.min = constraints.min - layout2.min;\n  }\n  if (constraints.max !== void 0) {\n    relativeConstraints.max = constraints.max - layout2.min;\n  }\n  return relativeConstraints;\n}\nvar defaultElastic = 0.35;\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n  if (dragElastic === false) {\n    dragElastic = 0;\n  } else if (dragElastic === true) {\n    dragElastic = defaultElastic;\n  }\n  return {\n    x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n    y: resolveAxisElastic(dragElastic, \"top\", \"bottom\")\n  };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n  return {\n    min: resolvePointElastic(dragElastic, minLabel),\n    max: resolvePointElastic(dragElastic, maxLabel)\n  };\n}\nfunction resolvePointElastic(dragElastic, label) {\n  return typeof dragElastic === \"number\" ? dragElastic : dragElastic[label] || 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs\nfunction eachAxis(callback) {\n  return [callback(\"x\"), callback(\"y\")];\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs\nfunction convertBoundingBoxToBox({ top, left, right, bottom }) {\n  return {\n    x: { min: left, max: right },\n    y: { min: top, max: bottom }\n  };\n}\nfunction convertBoxToBoundingBox({ x, y }) {\n  return { top: y.min, right: x.max, bottom: y.max, left: x.min };\n}\nfunction transformBoxPoints(point2, transformPoint2) {\n  if (!transformPoint2)\n    return point2;\n  const topLeft = transformPoint2({ x: point2.left, y: point2.top });\n  const bottomRight = transformPoint2({ x: point2.right, y: point2.bottom });\n  return {\n    top: topLeft.y,\n    left: topLeft.x,\n    bottom: bottomRight.y,\n    right: bottomRight.x\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs\nfunction isIdentityScale(scale2) {\n  return scale2 === void 0 || scale2 === 1;\n}\nfunction hasScale({ scale: scale2, scaleX, scaleY }) {\n  return !isIdentityScale(scale2) || !isIdentityScale(scaleX) || !isIdentityScale(scaleY);\n}\nfunction hasTransform(values) {\n  return hasScale(values) || has2DTranslate(values) || values.z || values.rotate || values.rotateX || values.rotateY;\n}\nfunction has2DTranslate(values) {\n  return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n  return value && value !== \"0%\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs\nfunction scalePoint(point2, scale2, originPoint) {\n  const distanceFromOrigin = point2 - originPoint;\n  const scaled = scale2 * distanceFromOrigin;\n  return originPoint + scaled;\n}\nfunction applyPointDelta(point2, translate, scale2, originPoint, boxScale) {\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, boxScale, originPoint);\n  }\n  return scalePoint(point2, scale2, originPoint) + translate;\n}\nfunction applyAxisDelta(axis, translate = 0, scale2 = 1, originPoint, boxScale) {\n  axis.min = applyPointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = applyPointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction applyBoxDelta(box, { x, y }) {\n  applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n  applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n  const treeLength = treePath.length;\n  if (!treeLength)\n    return;\n  treeScale.x = treeScale.y = 1;\n  let node;\n  let delta;\n  for (let i = 0; i < treeLength; i++) {\n    node = treePath[i];\n    delta = node.projectionDelta;\n    const instance = node.instance;\n    if (instance && instance.style && instance.style.display === \"contents\") {\n      continue;\n    }\n    if (isSharedTransition && node.options.layoutScroll && node.scroll && node !== node.root) {\n      transformBox(box, {\n        x: -node.scroll.offset.x,\n        y: -node.scroll.offset.y\n      });\n    }\n    if (delta) {\n      treeScale.x *= delta.x.scale;\n      treeScale.y *= delta.y.scale;\n      applyBoxDelta(box, delta);\n    }\n    if (isSharedTransition && hasTransform(node.latestValues)) {\n      transformBox(box, node.latestValues);\n    }\n  }\n  treeScale.x = snapToDefault(treeScale.x);\n  treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale2) {\n  if (Number.isInteger(scale2))\n    return scale2;\n  return scale2 > 1.0000000000001 || scale2 < 0.999999999999 ? scale2 : 1;\n}\nfunction translateAxis(axis, distance2) {\n  axis.min = axis.min + distance2;\n  axis.max = axis.max + distance2;\n}\nfunction transformAxis(axis, transforms, [key, scaleKey, originKey]) {\n  const axisOrigin = transforms[originKey] !== void 0 ? transforms[originKey] : 0.5;\n  const originPoint = mix(axis.min, axis.max, axisOrigin);\n  applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\nfunction transformBox(box, transform2) {\n  transformAxis(box.x, transform2, xKeys);\n  transformAxis(box.y, transform2, yKeys);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/utils/measure.mjs\nfunction measureViewportBox(instance, transformPoint2) {\n  return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint2));\n}\nfunction measurePageBox(element, rootProjectionNode2, transformPagePoint) {\n  const viewportBox = measureViewportBox(element, transformPagePoint);\n  const { scroll: scroll2 } = rootProjectionNode2;\n  if (scroll2) {\n    translateAxis(viewportBox.x, scroll2.offset.x);\n    translateAxis(viewportBox.y, scroll2.offset.y);\n  }\n  return viewportBox;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs\nvar elementDragControls = /* @__PURE__ */ new WeakMap();\nvar VisualElementDragControls = class {\n  constructor(visualElement) {\n    this.openGlobalLock = null;\n    this.isDragging = false;\n    this.currentDirection = null;\n    this.originPoint = { x: 0, y: 0 };\n    this.constraints = false;\n    this.hasMutatedConstraints = false;\n    this.elastic = createBox();\n    this.visualElement = visualElement;\n  }\n  start(originEvent, { snapToCursor = false } = {}) {\n    const { presenceContext } = this.visualElement;\n    if (presenceContext && presenceContext.isPresent === false)\n      return;\n    const onSessionStart = (event) => {\n      this.stopAnimation();\n      if (snapToCursor) {\n        this.snapToCursor(extractEventInfo(event, \"page\").point);\n      }\n    };\n    const onStart = (event, info) => {\n      const { drag: drag2, dragPropagation, onDragStart } = this.getProps();\n      if (drag2 && !dragPropagation) {\n        if (this.openGlobalLock)\n          this.openGlobalLock();\n        this.openGlobalLock = getGlobalLock(drag2);\n        if (!this.openGlobalLock)\n          return;\n      }\n      this.isDragging = true;\n      this.currentDirection = null;\n      this.resolveConstraints();\n      if (this.visualElement.projection) {\n        this.visualElement.projection.isAnimationBlocked = true;\n        this.visualElement.projection.target = void 0;\n      }\n      eachAxis((axis) => {\n        let current = this.getAxisMotionValue(axis).get() || 0;\n        if (percent.test(current)) {\n          const { projection } = this.visualElement;\n          if (projection && projection.layout) {\n            const measuredAxis = projection.layout.layoutBox[axis];\n            if (measuredAxis) {\n              const length = calcLength(measuredAxis);\n              current = length * (parseFloat(current) / 100);\n            }\n          }\n        }\n        this.originPoint[axis] = current;\n      });\n      if (onDragStart) {\n        frame.update(() => onDragStart(event, info), false, true);\n      }\n      const { animationState } = this.visualElement;\n      animationState && animationState.setActive(\"whileDrag\", true);\n    };\n    const onMove = (event, info) => {\n      const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag } = this.getProps();\n      if (!dragPropagation && !this.openGlobalLock)\n        return;\n      const { offset } = info;\n      if (dragDirectionLock && this.currentDirection === null) {\n        this.currentDirection = getCurrentDirection(offset);\n        if (this.currentDirection !== null) {\n          onDirectionLock && onDirectionLock(this.currentDirection);\n        }\n        return;\n      }\n      this.updateAxis(\"x\", info.point, offset);\n      this.updateAxis(\"y\", info.point, offset);\n      this.visualElement.render();\n      onDrag && onDrag(event, info);\n    };\n    const onSessionEnd = (event, info) => this.stop(event, info);\n    this.panSession = new PanSession(originEvent, {\n      onSessionStart,\n      onStart,\n      onMove,\n      onSessionEnd\n    }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n  }\n  stop(event, info) {\n    const isDragging = this.isDragging;\n    this.cancel();\n    if (!isDragging)\n      return;\n    const { velocity } = info;\n    this.startAnimation(velocity);\n    const { onDragEnd } = this.getProps();\n    if (onDragEnd) {\n      frame.update(() => onDragEnd(event, info));\n    }\n  }\n  cancel() {\n    this.isDragging = false;\n    const { projection, animationState } = this.visualElement;\n    if (projection) {\n      projection.isAnimationBlocked = false;\n    }\n    this.panSession && this.panSession.end();\n    this.panSession = void 0;\n    const { dragPropagation } = this.getProps();\n    if (!dragPropagation && this.openGlobalLock) {\n      this.openGlobalLock();\n      this.openGlobalLock = null;\n    }\n    animationState && animationState.setActive(\"whileDrag\", false);\n  }\n  updateAxis(axis, _point, offset) {\n    const { drag: drag2 } = this.getProps();\n    if (!offset || !shouldDrag(axis, drag2, this.currentDirection))\n      return;\n    const axisValue = this.getAxisMotionValue(axis);\n    let next = this.originPoint[axis] + offset[axis];\n    if (this.constraints && this.constraints[axis]) {\n      next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n    }\n    axisValue.set(next);\n  }\n  resolveConstraints() {\n    const { dragConstraints, dragElastic } = this.getProps();\n    const { layout: layout2 } = this.visualElement.projection || {};\n    const prevConstraints = this.constraints;\n    if (dragConstraints && isRefObject(dragConstraints)) {\n      if (!this.constraints) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    } else {\n      if (dragConstraints && layout2) {\n        this.constraints = calcRelativeConstraints(layout2.layoutBox, dragConstraints);\n      } else {\n        this.constraints = false;\n      }\n    }\n    this.elastic = resolveDragElastic(dragElastic);\n    if (prevConstraints !== this.constraints && layout2 && this.constraints && !this.hasMutatedConstraints) {\n      eachAxis((axis) => {\n        if (this.getAxisMotionValue(axis)) {\n          this.constraints[axis] = rebaseAxisConstraints(layout2.layoutBox[axis], this.constraints[axis]);\n        }\n      });\n    }\n  }\n  resolveRefConstraints() {\n    const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n    if (!constraints || !isRefObject(constraints))\n      return false;\n    const constraintsElement = constraints.current;\n    invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n    const { projection } = this.visualElement;\n    if (!projection || !projection.layout)\n      return false;\n    const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n    let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n    if (onMeasureDragConstraints) {\n      const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n      this.hasMutatedConstraints = !!userConstraints;\n      if (userConstraints) {\n        measuredConstraints = convertBoundingBoxToBox(userConstraints);\n      }\n    }\n    return measuredConstraints;\n  }\n  startAnimation(velocity) {\n    const { drag: drag2, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd } = this.getProps();\n    const constraints = this.constraints || {};\n    const momentumAnimations = eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, this.currentDirection)) {\n        return;\n      }\n      let transition = constraints && constraints[axis] || {};\n      if (dragSnapToOrigin)\n        transition = { min: 0, max: 0 };\n      const bounceStiffness = dragElastic ? 200 : 1e6;\n      const bounceDamping = dragElastic ? 40 : 1e7;\n      const inertia2 = {\n        type: \"inertia\",\n        velocity: dragMomentum ? velocity[axis] : 0,\n        bounceStiffness,\n        bounceDamping,\n        timeConstant: 750,\n        restDelta: 1,\n        restSpeed: 10,\n        ...dragTransition,\n        ...transition\n      };\n      return this.startAxisValueAnimation(axis, inertia2);\n    });\n    return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n  }\n  startAxisValueAnimation(axis, transition) {\n    const axisValue = this.getAxisMotionValue(axis);\n    return axisValue.start(animateMotionValue(axis, axisValue, 0, transition));\n  }\n  stopAnimation() {\n    eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n  }\n  /**\n   * Drag works differently depending on which props are provided.\n   *\n   * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n   * - Otherwise, we apply the delta to the x/y motion values.\n   */\n  getAxisMotionValue(axis) {\n    const dragKey = \"_drag\" + axis.toUpperCase();\n    const props = this.visualElement.getProps();\n    const externalMotionValue = props[dragKey];\n    return externalMotionValue ? externalMotionValue : this.visualElement.getValue(axis, (props.initial ? props.initial[axis] : void 0) || 0);\n  }\n  snapToCursor(point2) {\n    eachAxis((axis) => {\n      const { drag: drag2 } = this.getProps();\n      if (!shouldDrag(axis, drag2, this.currentDirection))\n        return;\n      const { projection } = this.visualElement;\n      const axisValue = this.getAxisMotionValue(axis);\n      if (projection && projection.layout) {\n        const { min, max } = projection.layout.layoutBox[axis];\n        axisValue.set(point2[axis] - mix(min, max, 0.5));\n      }\n    });\n  }\n  /**\n   * When the viewport resizes we want to check if the measured constraints\n   * have changed and, if so, reposition the element within those new constraints\n   * relative to where it was before the resize.\n   */\n  scalePositionWithinConstraints() {\n    if (!this.visualElement.current)\n      return;\n    const { drag: drag2, dragConstraints } = this.getProps();\n    const { projection } = this.visualElement;\n    if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n      return;\n    this.stopAnimation();\n    const boxProgress = { x: 0, y: 0 };\n    eachAxis((axis) => {\n      const axisValue = this.getAxisMotionValue(axis);\n      if (axisValue) {\n        const latest = axisValue.get();\n        boxProgress[axis] = calcOrigin2({ min: latest, max: latest }, this.constraints[axis]);\n      }\n    });\n    const { transformTemplate } = this.visualElement.getProps();\n    this.visualElement.current.style.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n    projection.root && projection.root.updateScroll();\n    projection.updateLayout();\n    this.resolveConstraints();\n    eachAxis((axis) => {\n      if (!shouldDrag(axis, drag2, null))\n        return;\n      const axisValue = this.getAxisMotionValue(axis);\n      const { min, max } = this.constraints[axis];\n      axisValue.set(mix(min, max, boxProgress[axis]));\n    });\n  }\n  addListeners() {\n    if (!this.visualElement.current)\n      return;\n    elementDragControls.set(this.visualElement, this);\n    const element = this.visualElement.current;\n    const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n      const { drag: drag2, dragListener = true } = this.getProps();\n      drag2 && dragListener && this.start(event);\n    });\n    const measureDragConstraints = () => {\n      const { dragConstraints } = this.getProps();\n      if (isRefObject(dragConstraints)) {\n        this.constraints = this.resolveRefConstraints();\n      }\n    };\n    const { projection } = this.visualElement;\n    const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n    if (projection && !projection.layout) {\n      projection.root && projection.root.updateScroll();\n      projection.updateLayout();\n    }\n    measureDragConstraints();\n    const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n    const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged }) => {\n      if (this.isDragging && hasLayoutChanged) {\n        eachAxis((axis) => {\n          const motionValue2 = this.getAxisMotionValue(axis);\n          if (!motionValue2)\n            return;\n          this.originPoint[axis] += delta[axis].translate;\n          motionValue2.set(motionValue2.get() + delta[axis].translate);\n        });\n        this.visualElement.render();\n      }\n    });\n    return () => {\n      stopResizeListener();\n      stopPointerListener();\n      stopMeasureLayoutListener();\n      stopLayoutUpdateListener && stopLayoutUpdateListener();\n    };\n  }\n  getProps() {\n    const props = this.visualElement.getProps();\n    const { drag: drag2 = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true } = props;\n    return {\n      ...props,\n      drag: drag2,\n      dragDirectionLock,\n      dragPropagation,\n      dragConstraints,\n      dragElastic,\n      dragMomentum\n    };\n  }\n};\nfunction shouldDrag(direction, drag2, currentDirection) {\n  return (drag2 === true || drag2 === direction) && (currentDirection === null || currentDirection === direction);\n}\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n  let direction = null;\n  if (Math.abs(offset.y) > lockThreshold) {\n    direction = \"y\";\n  } else if (Math.abs(offset.x) > lockThreshold) {\n    direction = \"x\";\n  }\n  return direction;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/index.mjs\nvar DragGesture = class extends Feature {\n  constructor(node) {\n    super(node);\n    this.removeGroupControls = noop;\n    this.removeListeners = noop;\n    this.controls = new VisualElementDragControls(node);\n  }\n  mount() {\n    const { dragControls } = this.node.getProps();\n    if (dragControls) {\n      this.removeGroupControls = dragControls.subscribe(this.controls);\n    }\n    this.removeListeners = this.controls.addListeners() || noop;\n  }\n  unmount() {\n    this.removeGroupControls();\n    this.removeListeners();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/gestures/pan/index.mjs\nvar asyncHandler = (handler) => (event, info) => {\n  if (handler) {\n    frame.update(() => handler(event, info));\n  }\n};\nvar PanGesture = class extends Feature {\n  constructor() {\n    super(...arguments);\n    this.removePointerDownListener = noop;\n  }\n  onPointerDown(pointerDownEvent) {\n    this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), { transformPagePoint: this.node.getTransformPagePoint() });\n  }\n  createPanHandlers() {\n    const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n    return {\n      onSessionStart: asyncHandler(onPanSessionStart),\n      onStart: asyncHandler(onPanStart),\n      onMove: onPan,\n      onEnd: (event, info) => {\n        delete this.session;\n        if (onPanEnd) {\n          frame.update(() => onPanEnd(event, info));\n        }\n      }\n    };\n  }\n  mount() {\n    this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n  }\n  update() {\n    this.session && this.session.updateHandlers(this.createPanHandlers());\n  }\n  unmount() {\n    this.removePointerDownListener();\n    this.session && this.session.end();\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nimport React__default, { useContext as useContext6 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/state.mjs\nvar globalProjectionState = {\n  /**\n   * Global flag as to whether the tree has animated since the last time\n   * we resized the window\n   */\n  hasAnimatedSinceResize: true,\n  /**\n   * We set this to true once, on the first update. Any nodes added to the tree beyond that\n   * update will be given a `data-projection-id` attribute.\n   */\n  hasEverUpdated: false\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs\nfunction pixelsToPercent(pixels, axis) {\n  if (axis.max === axis.min)\n    return 0;\n  return pixels / (axis.max - axis.min) * 100;\n}\nvar correctBorderRadius = {\n  correct: (latest, node) => {\n    if (!node.target)\n      return latest;\n    if (typeof latest === \"string\") {\n      if (px.test(latest)) {\n        latest = parseFloat(latest);\n      } else {\n        return latest;\n      }\n    }\n    const x = pixelsToPercent(latest, node.target.x);\n    const y = pixelsToPercent(latest, node.target.y);\n    return `${x}% ${y}%`;\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs\nvar correctBoxShadow = {\n  correct: (latest, { treeScale, projectionDelta }) => {\n    const original = latest;\n    const shadow = complex.parse(latest);\n    if (shadow.length > 5)\n      return original;\n    const template = complex.createTransformer(latest);\n    const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n    const xScale = projectionDelta.x.scale * treeScale.x;\n    const yScale = projectionDelta.y.scale * treeScale.y;\n    shadow[0 + offset] /= xScale;\n    shadow[1 + offset] /= yScale;\n    const averageScale = mix(xScale, yScale, 0.5);\n    if (typeof shadow[2 + offset] === \"number\")\n      shadow[2 + offset] /= averageScale;\n    if (typeof shadow[3 + offset] === \"number\")\n      shadow[3 + offset] /= averageScale;\n    return template(shadow);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs\nvar MeasureLayoutWithContext = class extends React__default.Component {\n  /**\n   * This only mounts projection nodes for components that\n   * need measuring, we might want to do it for all components\n   * in order to incorporate transforms\n   */\n  componentDidMount() {\n    const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n    const { projection } = visualElement;\n    addScaleCorrector(defaultScaleCorrectors);\n    if (projection) {\n      if (layoutGroup.group)\n        layoutGroup.group.add(projection);\n      if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n        switchLayoutGroup.register(projection);\n      }\n      projection.root.didUpdate();\n      projection.addEventListener(\"animationComplete\", () => {\n        this.safeToRemove();\n      });\n      projection.setOptions({\n        ...projection.options,\n        onExitComplete: () => this.safeToRemove()\n      });\n    }\n    globalProjectionState.hasEverUpdated = true;\n  }\n  getSnapshotBeforeUpdate(prevProps) {\n    const { layoutDependency, visualElement, drag: drag2, isPresent: isPresent2 } = this.props;\n    const projection = visualElement.projection;\n    if (!projection)\n      return null;\n    projection.isPresent = isPresent2;\n    if (drag2 || prevProps.layoutDependency !== layoutDependency || layoutDependency === void 0) {\n      projection.willUpdate();\n    } else {\n      this.safeToRemove();\n    }\n    if (prevProps.isPresent !== isPresent2) {\n      if (isPresent2) {\n        projection.promote();\n      } else if (!projection.relegate()) {\n        frame.postRender(() => {\n          const stack = projection.getStack();\n          if (!stack || !stack.members.length) {\n            this.safeToRemove();\n          }\n        });\n      }\n    }\n    return null;\n  }\n  componentDidUpdate() {\n    const { projection } = this.props.visualElement;\n    if (projection) {\n      projection.root.didUpdate();\n      queueMicrotask(() => {\n        if (!projection.currentAnimation && projection.isLead()) {\n          this.safeToRemove();\n        }\n      });\n    }\n  }\n  componentWillUnmount() {\n    const { visualElement, layoutGroup, switchLayoutGroup: promoteContext } = this.props;\n    const { projection } = visualElement;\n    if (projection) {\n      projection.scheduleCheckAfterUnmount();\n      if (layoutGroup && layoutGroup.group)\n        layoutGroup.group.remove(projection);\n      if (promoteContext && promoteContext.deregister)\n        promoteContext.deregister(projection);\n    }\n  }\n  safeToRemove() {\n    const { safeToRemove } = this.props;\n    safeToRemove && safeToRemove();\n  }\n  render() {\n    return null;\n  }\n};\nfunction MeasureLayout(props) {\n  const [isPresent2, safeToRemove] = usePresence();\n  const layoutGroup = useContext6(LayoutGroupContext);\n  return React__default.createElement(MeasureLayoutWithContext, { ...props, layoutGroup, switchLayoutGroup: useContext6(SwitchLayoutGroupContext), isPresent: isPresent2, safeToRemove });\n}\nvar defaultScaleCorrectors = {\n  borderRadius: {\n    ...correctBorderRadius,\n    applyTo: [\n      \"borderTopLeftRadius\",\n      \"borderTopRightRadius\",\n      \"borderBottomLeftRadius\",\n      \"borderBottomRightRadius\"\n    ]\n  },\n  borderTopLeftRadius: correctBorderRadius,\n  borderTopRightRadius: correctBorderRadius,\n  borderBottomLeftRadius: correctBorderRadius,\n  borderBottomRightRadius: correctBorderRadius,\n  boxShadow: correctBoxShadow\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs\nvar borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nvar numBorders = borders.length;\nvar asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nvar isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress2, shouldCrossfadeOpacity, isOnlyMember) {\n  if (shouldCrossfadeOpacity) {\n    target.opacity = mix(\n      0,\n      // TODO Reinstate this if only child\n      lead.opacity !== void 0 ? lead.opacity : 1,\n      easeCrossfadeIn(progress2)\n    );\n    target.opacityExit = mix(follow.opacity !== void 0 ? follow.opacity : 1, 0, easeCrossfadeOut(progress2));\n  } else if (isOnlyMember) {\n    target.opacity = mix(follow.opacity !== void 0 ? follow.opacity : 1, lead.opacity !== void 0 ? lead.opacity : 1, progress2);\n  }\n  for (let i = 0; i < numBorders; i++) {\n    const borderLabel = `border${borders[i]}Radius`;\n    let followRadius = getRadius(follow, borderLabel);\n    let leadRadius = getRadius(lead, borderLabel);\n    if (followRadius === void 0 && leadRadius === void 0)\n      continue;\n    followRadius || (followRadius = 0);\n    leadRadius || (leadRadius = 0);\n    const canMix = followRadius === 0 || leadRadius === 0 || isPx(followRadius) === isPx(leadRadius);\n    if (canMix) {\n      target[borderLabel] = Math.max(mix(asNumber(followRadius), asNumber(leadRadius), progress2), 0);\n      if (percent.test(leadRadius) || percent.test(followRadius)) {\n        target[borderLabel] += \"%\";\n      }\n    } else {\n      target[borderLabel] = leadRadius;\n    }\n  }\n  if (follow.rotate || lead.rotate) {\n    target.rotate = mix(follow.rotate || 0, lead.rotate || 0, progress2);\n  }\n}\nfunction getRadius(values, radiusName) {\n  return values[radiusName] !== void 0 ? values[radiusName] : values.borderRadius;\n}\nvar easeCrossfadeIn = compress(0, 0.5, circOut);\nvar easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n  return (p) => {\n    if (p < min)\n      return 0;\n    if (p > max)\n      return 1;\n    return easing(progress(min, max, p));\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs\nfunction copyAxisInto(axis, originAxis) {\n  axis.min = originAxis.min;\n  axis.max = originAxis.max;\n}\nfunction copyBoxInto(box, originBox) {\n  copyAxisInto(box.x, originBox.x);\n  copyAxisInto(box.y, originBox.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs\nfunction removePointDelta(point2, translate, scale2, originPoint, boxScale) {\n  point2 -= translate;\n  point2 = scalePoint(point2, 1 / scale2, originPoint);\n  if (boxScale !== void 0) {\n    point2 = scalePoint(point2, 1 / boxScale, originPoint);\n  }\n  return point2;\n}\nfunction removeAxisDelta(axis, translate = 0, scale2 = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n  if (percent.test(translate)) {\n    translate = parseFloat(translate);\n    const relativeProgress = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n    translate = relativeProgress - sourceAxis.min;\n  }\n  if (typeof translate !== \"number\")\n    return;\n  let originPoint = mix(originAxis.min, originAxis.max, origin);\n  if (axis === originAxis)\n    originPoint -= translate;\n  axis.min = removePointDelta(axis.min, translate, scale2, originPoint, boxScale);\n  axis.max = removePointDelta(axis.max, translate, scale2, originPoint, boxScale);\n}\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n  removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\nvar xKeys2 = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys2 = [\"y\", \"scaleY\", \"originY\"];\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n  removeAxisTransforms(box.x, transforms, xKeys2, originBox ? originBox.x : void 0, sourceBox ? sourceBox.x : void 0);\n  removeAxisTransforms(box.y, transforms, yKeys2, originBox ? originBox.y : void 0, sourceBox ? sourceBox.y : void 0);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs\nfunction isAxisDeltaZero(delta) {\n  return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n  return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction boxEquals(a, b) {\n  return a.x.min === b.x.min && a.x.max === b.x.max && a.y.min === b.y.min && a.y.max === b.y.max;\n}\nfunction boxEqualsRounded(a, b) {\n  return Math.round(a.x.min) === Math.round(b.x.min) && Math.round(a.x.max) === Math.round(b.x.max) && Math.round(a.y.min) === Math.round(b.y.min) && Math.round(a.y.max) === Math.round(b.y.max);\n}\nfunction aspectRatio(box) {\n  return calcLength(box.x) / calcLength(box.y);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/shared/stack.mjs\nvar NodeStack = class {\n  constructor() {\n    this.members = [];\n  }\n  add(node) {\n    addUniqueItem(this.members, node);\n    node.scheduleRender();\n  }\n  remove(node) {\n    removeItem(this.members, node);\n    if (node === this.prevLead) {\n      this.prevLead = void 0;\n    }\n    if (node === this.lead) {\n      const prevLead = this.members[this.members.length - 1];\n      if (prevLead) {\n        this.promote(prevLead);\n      }\n    }\n  }\n  relegate(node) {\n    const indexOfNode = this.members.findIndex((member) => node === member);\n    if (indexOfNode === 0)\n      return false;\n    let prevLead;\n    for (let i = indexOfNode; i >= 0; i--) {\n      const member = this.members[i];\n      if (member.isPresent !== false) {\n        prevLead = member;\n        break;\n      }\n    }\n    if (prevLead) {\n      this.promote(prevLead);\n      return true;\n    } else {\n      return false;\n    }\n  }\n  promote(node, preserveFollowOpacity) {\n    const prevLead = this.lead;\n    if (node === prevLead)\n      return;\n    this.prevLead = prevLead;\n    this.lead = node;\n    node.show();\n    if (prevLead) {\n      prevLead.instance && prevLead.scheduleRender();\n      node.scheduleRender();\n      node.resumeFrom = prevLead;\n      if (preserveFollowOpacity) {\n        node.resumeFrom.preserveOpacity = true;\n      }\n      if (prevLead.snapshot) {\n        node.snapshot = prevLead.snapshot;\n        node.snapshot.latestValues = prevLead.animationValues || prevLead.latestValues;\n      }\n      if (node.root && node.root.isUpdating) {\n        node.isLayoutDirty = true;\n      }\n      const { crossfade } = node.options;\n      if (crossfade === false) {\n        prevLead.hide();\n      }\n    }\n  }\n  exitAnimationComplete() {\n    this.members.forEach((node) => {\n      const { options, resumingFrom } = node;\n      options.onExitComplete && options.onExitComplete();\n      if (resumingFrom) {\n        resumingFrom.options.onExitComplete && resumingFrom.options.onExitComplete();\n      }\n    });\n  }\n  scheduleRender() {\n    this.members.forEach((node) => {\n      node.instance && node.scheduleRender(false);\n    });\n  }\n  /**\n   * Clear any leads that have been removed this render to prevent them from being\n   * used in future animations and to prevent memory leaks\n   */\n  removeLeadSnapshot() {\n    if (this.lead && this.lead.snapshot) {\n      this.lead.snapshot = void 0;\n    }\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/projection/styles/transform.mjs\nfunction buildProjectionTransform(delta, treeScale, latestTransform) {\n  let transform2 = \"\";\n  const xTranslate = delta.x.translate / treeScale.x;\n  const yTranslate = delta.y.translate / treeScale.y;\n  if (xTranslate || yTranslate) {\n    transform2 = `translate3d(${xTranslate}px, ${yTranslate}px, 0) `;\n  }\n  if (treeScale.x !== 1 || treeScale.y !== 1) {\n    transform2 += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n  }\n  if (latestTransform) {\n    const { rotate, rotateX, rotateY } = latestTransform;\n    if (rotate)\n      transform2 += `rotate(${rotate}deg) `;\n    if (rotateX)\n      transform2 += `rotateX(${rotateX}deg) `;\n    if (rotateY)\n      transform2 += `rotateY(${rotateY}deg) `;\n  }\n  const elementScaleX = delta.x.scale * treeScale.x;\n  const elementScaleY = delta.y.scale * treeScale.y;\n  if (elementScaleX !== 1 || elementScaleY !== 1) {\n    transform2 += `scale(${elementScaleX}, ${elementScaleY})`;\n  }\n  return transform2 || \"none\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/debug/record.mjs\nfunction record(data) {\n  if (window.MotionDebug) {\n    window.MotionDebug.record(data);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs\nfunction isSVGElement(element) {\n  return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs\nfunction animateSingleValue(value, keyframes2, options) {\n  const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n  motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes2, options));\n  return motionValue$1.animation;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nvar animationTarget = 1e3;\nvar id2 = 0;\nvar projectionFrameData = {\n  type: \"projectionFrame\",\n  totalNodes: 0,\n  resolvedTargetDeltas: 0,\n  recalculatedProjection: 0\n};\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform }) {\n  return class ProjectionNode {\n    constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n      this.id = id2++;\n      this.animationId = 0;\n      this.children = /* @__PURE__ */ new Set();\n      this.options = {};\n      this.isTreeAnimating = false;\n      this.isAnimationBlocked = false;\n      this.isLayoutDirty = false;\n      this.isProjectionDirty = false;\n      this.isSharedProjectionDirty = false;\n      this.isTransformDirty = false;\n      this.updateManuallyBlocked = false;\n      this.updateBlockedByResize = false;\n      this.isUpdating = false;\n      this.isSVG = false;\n      this.needsReset = false;\n      this.shouldResetTransform = false;\n      this.treeScale = { x: 1, y: 1 };\n      this.eventHandlers = /* @__PURE__ */ new Map();\n      this.hasTreeAnimated = false;\n      this.updateScheduled = false;\n      this.checkUpdateFailed = () => {\n        if (this.isUpdating) {\n          this.isUpdating = false;\n          this.clearAllSnapshots();\n        }\n      };\n      this.updateProjection = () => {\n        projectionFrameData.totalNodes = projectionFrameData.resolvedTargetDeltas = projectionFrameData.recalculatedProjection = 0;\n        this.nodes.forEach(propagateDirtyNodes);\n        this.nodes.forEach(resolveTargetDelta);\n        this.nodes.forEach(calcProjection);\n        this.nodes.forEach(cleanDirtyNodes);\n        record(projectionFrameData);\n      };\n      this.hasProjected = false;\n      this.isVisible = true;\n      this.animationProgress = 0;\n      this.sharedNodes = /* @__PURE__ */ new Map();\n      this.latestValues = latestValues;\n      this.root = parent ? parent.root || parent : this;\n      this.path = parent ? [...parent.path, parent] : [];\n      this.parent = parent;\n      this.depth = parent ? parent.depth + 1 : 0;\n      for (let i = 0; i < this.path.length; i++) {\n        this.path[i].shouldResetTransform = true;\n      }\n      if (this.root === this)\n        this.nodes = new FlatTree();\n    }\n    addEventListener(name, handler) {\n      if (!this.eventHandlers.has(name)) {\n        this.eventHandlers.set(name, new SubscriptionManager());\n      }\n      return this.eventHandlers.get(name).add(handler);\n    }\n    notifyListeners(name, ...args) {\n      const subscriptionManager = this.eventHandlers.get(name);\n      subscriptionManager && subscriptionManager.notify(...args);\n    }\n    hasListeners(name) {\n      return this.eventHandlers.has(name);\n    }\n    /**\n     * Lifecycles\n     */\n    mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n      if (this.instance)\n        return;\n      this.isSVG = isSVGElement(instance);\n      this.instance = instance;\n      const { layoutId, layout: layout2, visualElement } = this.options;\n      if (visualElement && !visualElement.current) {\n        visualElement.mount(instance);\n      }\n      this.root.nodes.add(this);\n      this.parent && this.parent.children.add(this);\n      if (isLayoutDirty && (layout2 || layoutId)) {\n        this.isLayoutDirty = true;\n      }\n      if (attachResizeListener) {\n        let cancelDelay;\n        const resizeUnblockUpdate = () => this.root.updateBlockedByResize = false;\n        attachResizeListener(instance, () => {\n          this.root.updateBlockedByResize = true;\n          cancelDelay && cancelDelay();\n          cancelDelay = delay(resizeUnblockUpdate, 250);\n          if (globalProjectionState.hasAnimatedSinceResize) {\n            globalProjectionState.hasAnimatedSinceResize = false;\n            this.nodes.forEach(finishAnimation);\n          }\n        });\n      }\n      if (layoutId) {\n        this.root.registerSharedNode(layoutId, this);\n      }\n      if (this.options.animate !== false && visualElement && (layoutId || layout2)) {\n        this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout }) => {\n          if (this.isTreeAnimationBlocked()) {\n            this.target = void 0;\n            this.relativeTarget = void 0;\n            return;\n          }\n          const layoutTransition = this.options.transition || visualElement.getDefaultTransition() || defaultLayoutTransition;\n          const { onLayoutAnimationStart, onLayoutAnimationComplete } = visualElement.getProps();\n          const targetChanged = !this.targetLayout || !boxEqualsRounded(this.targetLayout, newLayout) || hasRelativeTargetChanged;\n          const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n          if (this.options.layoutRoot || this.resumeFrom && this.resumeFrom.instance || hasOnlyRelativeTargetChanged || hasLayoutChanged && (targetChanged || !this.currentAnimation)) {\n            if (this.resumeFrom) {\n              this.resumingFrom = this.resumeFrom;\n              this.resumingFrom.resumingFrom = void 0;\n            }\n            this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n            const animationOptions = {\n              ...getValueTransition(layoutTransition, \"layout\"),\n              onPlay: onLayoutAnimationStart,\n              onComplete: onLayoutAnimationComplete\n            };\n            if (visualElement.shouldReduceMotion || this.options.layoutRoot) {\n              animationOptions.delay = 0;\n              animationOptions.type = false;\n            }\n            this.startAnimation(animationOptions);\n          } else {\n            if (!hasLayoutChanged) {\n              finishAnimation(this);\n            }\n            if (this.isLead() && this.options.onExitComplete) {\n              this.options.onExitComplete();\n            }\n          }\n          this.targetLayout = newLayout;\n        });\n      }\n    }\n    unmount() {\n      this.options.layoutId && this.willUpdate();\n      this.root.nodes.remove(this);\n      const stack = this.getStack();\n      stack && stack.remove(this);\n      this.parent && this.parent.children.delete(this);\n      this.instance = void 0;\n      cancelFrame(this.updateProjection);\n    }\n    // only on the root\n    blockUpdate() {\n      this.updateManuallyBlocked = true;\n    }\n    unblockUpdate() {\n      this.updateManuallyBlocked = false;\n    }\n    isUpdateBlocked() {\n      return this.updateManuallyBlocked || this.updateBlockedByResize;\n    }\n    isTreeAnimationBlocked() {\n      return this.isAnimationBlocked || this.parent && this.parent.isTreeAnimationBlocked() || false;\n    }\n    // Note: currently only running on root node\n    startUpdate() {\n      if (this.isUpdateBlocked())\n        return;\n      this.isUpdating = true;\n      this.nodes && this.nodes.forEach(resetRotation);\n      this.animationId++;\n    }\n    getTransformTemplate() {\n      const { visualElement } = this.options;\n      return visualElement && visualElement.getProps().transformTemplate;\n    }\n    willUpdate(shouldNotifyListeners = true) {\n      this.root.hasTreeAnimated = true;\n      if (this.root.isUpdateBlocked()) {\n        this.options.onExitComplete && this.options.onExitComplete();\n        return;\n      }\n      !this.root.isUpdating && this.root.startUpdate();\n      if (this.isLayoutDirty)\n        return;\n      this.isLayoutDirty = true;\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        node.shouldResetTransform = true;\n        node.updateScroll(\"snapshot\");\n        if (node.options.layoutRoot) {\n          node.willUpdate(false);\n        }\n      }\n      const { layoutId, layout: layout2 } = this.options;\n      if (layoutId === void 0 && !layout2)\n        return;\n      const transformTemplate = this.getTransformTemplate();\n      this.prevTransformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      this.updateSnapshot();\n      shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n    }\n    update() {\n      this.updateScheduled = false;\n      const updateWasBlocked = this.isUpdateBlocked();\n      if (updateWasBlocked) {\n        this.unblockUpdate();\n        this.clearAllSnapshots();\n        this.nodes.forEach(clearMeasurements);\n        return;\n      }\n      if (!this.isUpdating) {\n        this.nodes.forEach(clearIsLayoutDirty);\n      }\n      this.isUpdating = false;\n      this.nodes.forEach(resetTransformStyle);\n      this.nodes.forEach(updateLayout);\n      this.nodes.forEach(notifyLayoutUpdate);\n      this.clearAllSnapshots();\n      const now = performance.now();\n      frameData.delta = clamp(0, 1e3 / 60, now - frameData.timestamp);\n      frameData.timestamp = now;\n      frameData.isProcessing = true;\n      steps.update.process(frameData);\n      steps.preRender.process(frameData);\n      steps.render.process(frameData);\n      frameData.isProcessing = false;\n    }\n    didUpdate() {\n      if (!this.updateScheduled) {\n        this.updateScheduled = true;\n        queueMicrotask(() => this.update());\n      }\n    }\n    clearAllSnapshots() {\n      this.nodes.forEach(clearSnapshot);\n      this.sharedNodes.forEach(removeLeadSnapshots);\n    }\n    scheduleUpdateProjection() {\n      frame.preRender(this.updateProjection, false, true);\n    }\n    scheduleCheckAfterUnmount() {\n      frame.postRender(() => {\n        if (this.isLayoutDirty) {\n          this.root.didUpdate();\n        } else {\n          this.root.checkUpdateFailed();\n        }\n      });\n    }\n    /**\n     * Update measurements\n     */\n    updateSnapshot() {\n      if (this.snapshot || !this.instance)\n        return;\n      this.snapshot = this.measure();\n    }\n    updateLayout() {\n      if (!this.instance)\n        return;\n      this.updateScroll();\n      if (!(this.options.alwaysMeasureLayout && this.isLead()) && !this.isLayoutDirty) {\n        return;\n      }\n      if (this.resumeFrom && !this.resumeFrom.instance) {\n        for (let i = 0; i < this.path.length; i++) {\n          const node = this.path[i];\n          node.updateScroll();\n        }\n      }\n      const prevLayout = this.layout;\n      this.layout = this.measure(false);\n      this.layoutCorrected = createBox();\n      this.isLayoutDirty = false;\n      this.projectionDelta = void 0;\n      this.notifyListeners(\"measure\", this.layout.layoutBox);\n      const { visualElement } = this.options;\n      visualElement && visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : void 0);\n    }\n    updateScroll(phase = \"measure\") {\n      let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n      if (this.scroll && this.scroll.animationId === this.root.animationId && this.scroll.phase === phase) {\n        needsMeasurement = false;\n      }\n      if (needsMeasurement) {\n        this.scroll = {\n          animationId: this.root.animationId,\n          phase,\n          isRoot: checkIsScrollRoot(this.instance),\n          offset: measureScroll(this.instance)\n        };\n      }\n    }\n    resetTransform() {\n      if (!resetTransform)\n        return;\n      const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n      const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n      const transformTemplate = this.getTransformTemplate();\n      const transformTemplateValue = transformTemplate ? transformTemplate(this.latestValues, \"\") : void 0;\n      const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n      if (isResetRequested && (hasProjection || hasTransform(this.latestValues) || transformTemplateHasChanged)) {\n        resetTransform(this.instance, transformTemplateValue);\n        this.shouldResetTransform = false;\n        this.scheduleRender();\n      }\n    }\n    measure(removeTransform = true) {\n      const pageBox = this.measurePageBox();\n      let layoutBox = this.removeElementScroll(pageBox);\n      if (removeTransform) {\n        layoutBox = this.removeTransform(layoutBox);\n      }\n      roundBox(layoutBox);\n      return {\n        animationId: this.root.animationId,\n        measuredBox: pageBox,\n        layoutBox,\n        latestValues: {},\n        source: this.id\n      };\n    }\n    measurePageBox() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return createBox();\n      const box = visualElement.measureViewportBox();\n      const { scroll: scroll2 } = this.root;\n      if (scroll2) {\n        translateAxis(box.x, scroll2.offset.x);\n        translateAxis(box.y, scroll2.offset.y);\n      }\n      return box;\n    }\n    removeElementScroll(box) {\n      const boxWithoutScroll = createBox();\n      copyBoxInto(boxWithoutScroll, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        const { scroll: scroll2, options } = node;\n        if (node !== this.root && scroll2 && options.layoutScroll) {\n          if (scroll2.isRoot) {\n            copyBoxInto(boxWithoutScroll, box);\n            const { scroll: rootScroll } = this.root;\n            if (rootScroll) {\n              translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n              translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n            }\n          }\n          translateAxis(boxWithoutScroll.x, scroll2.offset.x);\n          translateAxis(boxWithoutScroll.y, scroll2.offset.y);\n        }\n      }\n      return boxWithoutScroll;\n    }\n    applyTransform(box, transformOnly = false) {\n      const withTransforms = createBox();\n      copyBoxInto(withTransforms, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!transformOnly && node.options.layoutScroll && node.scroll && node !== node.root) {\n          transformBox(withTransforms, {\n            x: -node.scroll.offset.x,\n            y: -node.scroll.offset.y\n          });\n        }\n        if (!hasTransform(node.latestValues))\n          continue;\n        transformBox(withTransforms, node.latestValues);\n      }\n      if (hasTransform(this.latestValues)) {\n        transformBox(withTransforms, this.latestValues);\n      }\n      return withTransforms;\n    }\n    removeTransform(box) {\n      const boxWithoutTransform = createBox();\n      copyBoxInto(boxWithoutTransform, box);\n      for (let i = 0; i < this.path.length; i++) {\n        const node = this.path[i];\n        if (!node.instance)\n          continue;\n        if (!hasTransform(node.latestValues))\n          continue;\n        hasScale(node.latestValues) && node.updateSnapshot();\n        const sourceBox = createBox();\n        const nodeBox = node.measurePageBox();\n        copyBoxInto(sourceBox, nodeBox);\n        removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : void 0, sourceBox);\n      }\n      if (hasTransform(this.latestValues)) {\n        removeBoxTransforms(boxWithoutTransform, this.latestValues);\n      }\n      return boxWithoutTransform;\n    }\n    setTargetDelta(delta) {\n      this.targetDelta = delta;\n      this.root.scheduleUpdateProjection();\n      this.isProjectionDirty = true;\n    }\n    setOptions(options) {\n      this.options = {\n        ...this.options,\n        ...options,\n        crossfade: options.crossfade !== void 0 ? options.crossfade : true\n      };\n    }\n    clearMeasurements() {\n      this.scroll = void 0;\n      this.layout = void 0;\n      this.snapshot = void 0;\n      this.prevTransformTemplateValue = void 0;\n      this.targetDelta = void 0;\n      this.target = void 0;\n      this.isLayoutDirty = false;\n    }\n    forceRelativeParentToResolveTarget() {\n      if (!this.relativeParent)\n        return;\n      if (this.relativeParent.resolvedRelativeTargetAt !== frameData.timestamp) {\n        this.relativeParent.resolveTargetDelta(true);\n      }\n    }\n    resolveTargetDelta(forceRecalculation = false) {\n      var _a;\n      const lead = this.getLead();\n      this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n      this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n      this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      const canSkip = !(forceRecalculation || isShared && this.isSharedProjectionDirty || this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) || this.attemptToResolveRelativeTarget);\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      this.resolvedRelativeTargetAt = frameData.timestamp;\n      if (!this.targetDelta && !this.relativeTarget) {\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && relativeParent.layout && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      if (!this.relativeTarget && !this.targetDelta)\n        return;\n      if (!this.target) {\n        this.target = createBox();\n        this.targetWithTransforms = createBox();\n      }\n      if (this.relativeTarget && this.relativeTargetOrigin && this.relativeParent && this.relativeParent.target) {\n        this.forceRelativeParentToResolveTarget();\n        calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n      } else if (this.targetDelta) {\n        if (Boolean(this.resumingFrom)) {\n          this.target = this.applyTransform(this.layout.layoutBox);\n        } else {\n          copyBoxInto(this.target, this.layout.layoutBox);\n        }\n        applyBoxDelta(this.target, this.targetDelta);\n      } else {\n        copyBoxInto(this.target, this.layout.layoutBox);\n      }\n      if (this.attemptToResolveRelativeTarget) {\n        this.attemptToResolveRelativeTarget = false;\n        const relativeParent = this.getClosestProjectingParent();\n        if (relativeParent && Boolean(relativeParent.resumingFrom) === Boolean(this.resumingFrom) && !relativeParent.options.layoutScroll && relativeParent.target && this.animationProgress !== 1) {\n          this.relativeParent = relativeParent;\n          this.forceRelativeParentToResolveTarget();\n          this.relativeTarget = createBox();\n          this.relativeTargetOrigin = createBox();\n          calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n          copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n        } else {\n          this.relativeParent = this.relativeTarget = void 0;\n        }\n      }\n      projectionFrameData.resolvedTargetDeltas++;\n    }\n    getClosestProjectingParent() {\n      if (!this.parent || hasScale(this.parent.latestValues) || has2DTranslate(this.parent.latestValues)) {\n        return void 0;\n      }\n      if (this.parent.isProjecting()) {\n        return this.parent;\n      } else {\n        return this.parent.getClosestProjectingParent();\n      }\n    }\n    isProjecting() {\n      return Boolean((this.relativeTarget || this.targetDelta || this.options.layoutRoot) && this.layout);\n    }\n    calcProjection() {\n      var _a;\n      const lead = this.getLead();\n      const isShared = Boolean(this.resumingFrom) || this !== lead;\n      let canSkip = true;\n      if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n        canSkip = false;\n      }\n      if (isShared && (this.isSharedProjectionDirty || this.isTransformDirty)) {\n        canSkip = false;\n      }\n      if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n        canSkip = false;\n      }\n      if (canSkip)\n        return;\n      const { layout: layout2, layoutId } = this.options;\n      this.isTreeAnimating = Boolean(this.parent && this.parent.isTreeAnimating || this.currentAnimation || this.pendingAnimation);\n      if (!this.isTreeAnimating) {\n        this.targetDelta = this.relativeTarget = void 0;\n      }\n      if (!this.layout || !(layout2 || layoutId))\n        return;\n      copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n      const prevTreeScaleX = this.treeScale.x;\n      const prevTreeScaleY = this.treeScale.y;\n      applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n      if (lead.layout && !lead.target && (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n        lead.target = lead.layout.layoutBox;\n      }\n      const { target } = lead;\n      if (!target) {\n        if (this.projectionTransform) {\n          this.projectionDelta = createDelta();\n          this.projectionTransform = \"none\";\n          this.scheduleRender();\n        }\n        return;\n      }\n      if (!this.projectionDelta) {\n        this.projectionDelta = createDelta();\n        this.projectionDeltaWithTransform = createDelta();\n      }\n      const prevProjectionTransform = this.projectionTransform;\n      calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n      this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n      if (this.projectionTransform !== prevProjectionTransform || this.treeScale.x !== prevTreeScaleX || this.treeScale.y !== prevTreeScaleY) {\n        this.hasProjected = true;\n        this.scheduleRender();\n        this.notifyListeners(\"projectionUpdate\", target);\n      }\n      projectionFrameData.recalculatedProjection++;\n    }\n    hide() {\n      this.isVisible = false;\n    }\n    show() {\n      this.isVisible = true;\n    }\n    scheduleRender(notifyAll2 = true) {\n      this.options.scheduleRender && this.options.scheduleRender();\n      if (notifyAll2) {\n        const stack = this.getStack();\n        stack && stack.scheduleRender();\n      }\n      if (this.resumingFrom && !this.resumingFrom.instance) {\n        this.resumingFrom = void 0;\n      }\n    }\n    setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n      const snapshot = this.snapshot;\n      const snapshotLatestValues = snapshot ? snapshot.latestValues : {};\n      const mixedValues = { ...this.latestValues };\n      const targetDelta = createDelta();\n      if (!this.relativeParent || !this.relativeParent.options.layoutRoot) {\n        this.relativeTarget = this.relativeTargetOrigin = void 0;\n      }\n      this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n      const relativeLayout = createBox();\n      const snapshotSource = snapshot ? snapshot.source : void 0;\n      const layoutSource = this.layout ? this.layout.source : void 0;\n      const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n      const stack = this.getStack();\n      const isOnlyMember = !stack || stack.members.length <= 1;\n      const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation && !isOnlyMember && this.options.crossfade === true && !this.path.some(hasOpacityCrossfade));\n      this.animationProgress = 0;\n      let prevRelativeTarget;\n      this.mixTargetDelta = (latest) => {\n        const progress2 = latest / 1e3;\n        mixAxisDelta(targetDelta.x, delta.x, progress2);\n        mixAxisDelta(targetDelta.y, delta.y, progress2);\n        this.setTargetDelta(targetDelta);\n        if (this.relativeTarget && this.relativeTargetOrigin && this.layout && this.relativeParent && this.relativeParent.layout) {\n          calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n          mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress2);\n          if (prevRelativeTarget && boxEquals(this.relativeTarget, prevRelativeTarget)) {\n            this.isProjectionDirty = false;\n          }\n          if (!prevRelativeTarget)\n            prevRelativeTarget = createBox();\n          copyBoxInto(prevRelativeTarget, this.relativeTarget);\n        }\n        if (isSharedLayoutAnimation) {\n          this.animationValues = mixedValues;\n          mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress2, shouldCrossfadeOpacity, isOnlyMember);\n        }\n        this.root.scheduleUpdateProjection();\n        this.scheduleRender();\n        this.animationProgress = progress2;\n      };\n      this.mixTargetDelta(this.options.layoutRoot ? 1e3 : 0);\n    }\n    startAnimation(options) {\n      this.notifyListeners(\"animationStart\");\n      this.currentAnimation && this.currentAnimation.stop();\n      if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n        this.resumingFrom.currentAnimation.stop();\n      }\n      if (this.pendingAnimation) {\n        cancelFrame(this.pendingAnimation);\n        this.pendingAnimation = void 0;\n      }\n      this.pendingAnimation = frame.update(() => {\n        globalProjectionState.hasAnimatedSinceResize = true;\n        this.currentAnimation = animateSingleValue(0, animationTarget, {\n          ...options,\n          onUpdate: (latest) => {\n            this.mixTargetDelta(latest);\n            options.onUpdate && options.onUpdate(latest);\n          },\n          onComplete: () => {\n            options.onComplete && options.onComplete();\n            this.completeAnimation();\n          }\n        });\n        if (this.resumingFrom) {\n          this.resumingFrom.currentAnimation = this.currentAnimation;\n        }\n        this.pendingAnimation = void 0;\n      });\n    }\n    completeAnimation() {\n      if (this.resumingFrom) {\n        this.resumingFrom.currentAnimation = void 0;\n        this.resumingFrom.preserveOpacity = void 0;\n      }\n      const stack = this.getStack();\n      stack && stack.exitAnimationComplete();\n      this.resumingFrom = this.currentAnimation = this.animationValues = void 0;\n      this.notifyListeners(\"animationComplete\");\n    }\n    finishAnimation() {\n      if (this.currentAnimation) {\n        this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n        this.currentAnimation.stop();\n      }\n      this.completeAnimation();\n    }\n    applyTransformsToTarget() {\n      const lead = this.getLead();\n      let { targetWithTransforms, target, layout: layout2, latestValues } = lead;\n      if (!targetWithTransforms || !target || !layout2)\n        return;\n      if (this !== lead && this.layout && layout2 && shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout2.layoutBox)) {\n        target = this.target || createBox();\n        const xLength = calcLength(this.layout.layoutBox.x);\n        target.x.min = lead.target.x.min;\n        target.x.max = target.x.min + xLength;\n        const yLength = calcLength(this.layout.layoutBox.y);\n        target.y.min = lead.target.y.min;\n        target.y.max = target.y.min + yLength;\n      }\n      copyBoxInto(targetWithTransforms, target);\n      transformBox(targetWithTransforms, latestValues);\n      calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n    }\n    registerSharedNode(layoutId, node) {\n      if (!this.sharedNodes.has(layoutId)) {\n        this.sharedNodes.set(layoutId, new NodeStack());\n      }\n      const stack = this.sharedNodes.get(layoutId);\n      stack.add(node);\n      const config = node.options.initialPromotionConfig;\n      node.promote({\n        transition: config ? config.transition : void 0,\n        preserveFollowOpacity: config && config.shouldPreserveFollowOpacity ? config.shouldPreserveFollowOpacity(node) : void 0\n      });\n    }\n    isLead() {\n      const stack = this.getStack();\n      return stack ? stack.lead === this : true;\n    }\n    getLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n    }\n    getPrevLead() {\n      var _a;\n      const { layoutId } = this.options;\n      return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : void 0;\n    }\n    getStack() {\n      const { layoutId } = this.options;\n      if (layoutId)\n        return this.root.sharedNodes.get(layoutId);\n    }\n    promote({ needsReset, transition, preserveFollowOpacity } = {}) {\n      const stack = this.getStack();\n      if (stack)\n        stack.promote(this, preserveFollowOpacity);\n      if (needsReset) {\n        this.projectionDelta = void 0;\n        this.needsReset = true;\n      }\n      if (transition)\n        this.setOptions({ transition });\n    }\n    relegate() {\n      const stack = this.getStack();\n      if (stack) {\n        return stack.relegate(this);\n      } else {\n        return false;\n      }\n    }\n    resetRotation() {\n      const { visualElement } = this.options;\n      if (!visualElement)\n        return;\n      let hasRotate = false;\n      const { latestValues } = visualElement;\n      if (latestValues.rotate || latestValues.rotateX || latestValues.rotateY || latestValues.rotateZ) {\n        hasRotate = true;\n      }\n      if (!hasRotate)\n        return;\n      const resetValues = {};\n      for (let i = 0; i < transformAxes.length; i++) {\n        const key = \"rotate\" + transformAxes[i];\n        if (latestValues[key]) {\n          resetValues[key] = latestValues[key];\n          visualElement.setStaticValue(key, 0);\n        }\n      }\n      visualElement.render();\n      for (const key in resetValues) {\n        visualElement.setStaticValue(key, resetValues[key]);\n      }\n      visualElement.scheduleRender();\n    }\n    getProjectionStyles(styleProp = {}) {\n      var _a, _b;\n      const styles = {};\n      if (!this.instance || this.isSVG)\n        return styles;\n      if (!this.isVisible) {\n        return { visibility: \"hidden\" };\n      } else {\n        styles.visibility = \"\";\n      }\n      const transformTemplate = this.getTransformTemplate();\n      if (this.needsReset) {\n        this.needsReset = false;\n        styles.opacity = \"\";\n        styles.pointerEvents = resolveMotionValue(styleProp.pointerEvents) || \"\";\n        styles.transform = transformTemplate ? transformTemplate(this.latestValues, \"\") : \"none\";\n        return styles;\n      }\n      const lead = this.getLead();\n      if (!this.projectionDelta || !this.layout || !lead.target) {\n        const emptyStyles = {};\n        if (this.options.layoutId) {\n          emptyStyles.opacity = this.latestValues.opacity !== void 0 ? this.latestValues.opacity : 1;\n          emptyStyles.pointerEvents = resolveMotionValue(styleProp.pointerEvents) || \"\";\n        }\n        if (this.hasProjected && !hasTransform(this.latestValues)) {\n          emptyStyles.transform = transformTemplate ? transformTemplate({}, \"\") : \"none\";\n          this.hasProjected = false;\n        }\n        return emptyStyles;\n      }\n      const valuesToRender = lead.animationValues || lead.latestValues;\n      this.applyTransformsToTarget();\n      styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n      if (transformTemplate) {\n        styles.transform = transformTemplate(valuesToRender, styles.transform);\n      }\n      const { x, y } = this.projectionDelta;\n      styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n      if (lead.animationValues) {\n        styles.opacity = lead === this ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1 : this.preserveOpacity ? this.latestValues.opacity : valuesToRender.opacityExit;\n      } else {\n        styles.opacity = lead === this ? valuesToRender.opacity !== void 0 ? valuesToRender.opacity : \"\" : valuesToRender.opacityExit !== void 0 ? valuesToRender.opacityExit : 0;\n      }\n      for (const key in scaleCorrectors) {\n        if (valuesToRender[key] === void 0)\n          continue;\n        const { correct, applyTo } = scaleCorrectors[key];\n        const corrected = styles.transform === \"none\" ? valuesToRender[key] : correct(valuesToRender[key], lead);\n        if (applyTo) {\n          const num = applyTo.length;\n          for (let i = 0; i < num; i++) {\n            styles[applyTo[i]] = corrected;\n          }\n        } else {\n          styles[key] = corrected;\n        }\n      }\n      if (this.options.layoutId) {\n        styles.pointerEvents = lead === this ? resolveMotionValue(styleProp.pointerEvents) || \"\" : \"none\";\n      }\n      return styles;\n    }\n    clearSnapshot() {\n      this.resumeFrom = this.snapshot = void 0;\n    }\n    // Only run on root\n    resetTree() {\n      this.root.nodes.forEach((node) => {\n        var _a;\n        return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n      });\n      this.root.nodes.forEach(clearMeasurements);\n      this.root.sharedNodes.clear();\n    }\n  };\n}\nfunction updateLayout(node) {\n  node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n  var _a;\n  const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n  if (node.isLead() && node.layout && snapshot && node.hasListeners(\"didUpdate\")) {\n    const { layoutBox: layout2, measuredBox: measuredLayout } = node.layout;\n    const { animationType } = node.options;\n    const isShared = snapshot.source !== node.layout.source;\n    if (animationType === \"size\") {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(axisSnapshot);\n        axisSnapshot.min = layout2[axis].min;\n        axisSnapshot.max = axisSnapshot.min + length;\n      });\n    } else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout2)) {\n      eachAxis((axis) => {\n        const axisSnapshot = isShared ? snapshot.measuredBox[axis] : snapshot.layoutBox[axis];\n        const length = calcLength(layout2[axis]);\n        axisSnapshot.max = axisSnapshot.min + length;\n        if (node.relativeTarget && !node.currentAnimation) {\n          node.isProjectionDirty = true;\n          node.relativeTarget[axis].max = node.relativeTarget[axis].min + length;\n        }\n      });\n    }\n    const layoutDelta = createDelta();\n    calcBoxDelta(layoutDelta, layout2, snapshot.layoutBox);\n    const visualDelta = createDelta();\n    if (isShared) {\n      calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n    } else {\n      calcBoxDelta(visualDelta, layout2, snapshot.layoutBox);\n    }\n    const hasLayoutChanged = !isDeltaZero(layoutDelta);\n    let hasRelativeTargetChanged = false;\n    if (!node.resumeFrom) {\n      const relativeParent = node.getClosestProjectingParent();\n      if (relativeParent && !relativeParent.resumeFrom) {\n        const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n        if (parentSnapshot && parentLayout) {\n          const relativeSnapshot = createBox();\n          calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n          const relativeLayout = createBox();\n          calcRelativePosition(relativeLayout, layout2, parentLayout.layoutBox);\n          if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n            hasRelativeTargetChanged = true;\n          }\n          if (relativeParent.options.layoutRoot) {\n            node.relativeTarget = relativeLayout;\n            node.relativeTargetOrigin = relativeSnapshot;\n            node.relativeParent = relativeParent;\n          }\n        }\n      }\n    }\n    node.notifyListeners(\"didUpdate\", {\n      layout: layout2,\n      snapshot,\n      delta: visualDelta,\n      layoutDelta,\n      hasLayoutChanged,\n      hasRelativeTargetChanged\n    });\n  } else if (node.isLead()) {\n    const { onExitComplete } = node.options;\n    onExitComplete && onExitComplete();\n  }\n  node.options.transition = void 0;\n}\nfunction propagateDirtyNodes(node) {\n  projectionFrameData.totalNodes++;\n  if (!node.parent)\n    return;\n  if (!node.isProjecting()) {\n    node.isProjectionDirty = node.parent.isProjectionDirty;\n  }\n  node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty || node.parent.isProjectionDirty || node.parent.isSharedProjectionDirty));\n  node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n  node.isProjectionDirty = node.isSharedProjectionDirty = node.isTransformDirty = false;\n}\nfunction clearSnapshot(node) {\n  node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n  node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n  node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n  const { visualElement } = node.options;\n  if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n    visualElement.notify(\"BeforeLayoutMeasure\");\n  }\n  node.resetTransform();\n}\nfunction finishAnimation(node) {\n  node.finishAnimation();\n  node.targetDelta = node.relativeTarget = node.target = void 0;\n  node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n  node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n  node.calcProjection();\n}\nfunction resetRotation(node) {\n  node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n  stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n  output.translate = mix(delta.translate, 0, p);\n  output.scale = mix(delta.scale, 1, p);\n  output.origin = delta.origin;\n  output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n  output.min = mix(from.min, to.min, p);\n  output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n  mixAxis(output.x, from.x, to.x, p);\n  mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n  return node.animationValues && node.animationValues.opacityExit !== void 0;\n}\nvar defaultLayoutTransition = {\n  duration: 0.45,\n  ease: [0.4, 0, 0.1, 1]\n};\nvar userAgentContains = (string) => typeof navigator !== \"undefined\" && navigator.userAgent.toLowerCase().includes(string);\nvar roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\") ? Math.round : noop;\nfunction roundAxis(axis) {\n  axis.min = roundPoint(axis.min);\n  axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n  roundAxis(box.x);\n  roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout2) {\n  return animationType === \"position\" || animationType === \"preserve-aspect\" && !isNear(aspectRatio(snapshot), aspectRatio(layout2), 0.2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs\nvar DocumentProjectionNode = createProjectionNode({\n  attachResizeListener: (ref, notify2) => addDomEvent(ref, \"resize\", notify2),\n  measureScroll: () => ({\n    x: document.documentElement.scrollLeft || document.body.scrollLeft,\n    y: document.documentElement.scrollTop || document.body.scrollTop\n  }),\n  checkIsScrollRoot: () => true\n});\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs\nvar rootProjectionNode = {\n  current: void 0\n};\nvar HTMLProjectionNode = createProjectionNode({\n  measureScroll: (instance) => ({\n    x: instance.scrollLeft,\n    y: instance.scrollTop\n  }),\n  defaultParent: () => {\n    if (!rootProjectionNode.current) {\n      const documentNode = new DocumentProjectionNode({});\n      documentNode.mount(window);\n      documentNode.setOptions({ layoutScroll: true });\n      rootProjectionNode.current = documentNode;\n    }\n    return rootProjectionNode.current;\n  },\n  resetTransform: (instance, value) => {\n    instance.style.transform = value !== void 0 ? value : \"none\";\n  },\n  checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\")\n});\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/drag.mjs\nvar drag = {\n  pan: {\n    Feature: PanGesture\n  },\n  drag: {\n    Feature: DragGesture,\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs\nvar splitCSSVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n  const match = splitCSSVariableRegex.exec(current);\n  if (!match)\n    return [,];\n  const [, token, fallback] = match;\n  return [token, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current, element, depth = 1) {\n  invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property \"${current}\". This may indicate a circular fallback dependency.`);\n  const [token, fallback] = parseCSSVariable(current);\n  if (!token)\n    return;\n  const resolved = window.getComputedStyle(element).getPropertyValue(token);\n  if (resolved) {\n    const trimmed = resolved.trim();\n    return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n  } else if (isCSSVariableToken(fallback)) {\n    return getVariableValue(fallback, element, depth + 1);\n  } else {\n    return fallback;\n  }\n}\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n  const element = visualElement.current;\n  if (!(element instanceof Element))\n    return { target, transitionEnd };\n  if (transitionEnd) {\n    transitionEnd = { ...transitionEnd };\n  }\n  visualElement.values.forEach((value) => {\n    const current = value.get();\n    if (!isCSSVariableToken(current))\n      return;\n    const resolved = getVariableValue(current, element);\n    if (resolved)\n      value.set(resolved);\n  });\n  for (const key in target) {\n    const current = target[key];\n    if (!isCSSVariableToken(current))\n      continue;\n    const resolved = getVariableValue(current, element);\n    if (!resolved)\n      continue;\n    target[key] = resolved;\n    if (!transitionEnd)\n      transitionEnd = {};\n    if (transitionEnd[key] === void 0) {\n      transitionEnd[key] = current;\n    }\n  }\n  return { target, transitionEnd };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs\nvar positionalKeys = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"top\",\n  \"left\",\n  \"right\",\n  \"bottom\",\n  \"x\",\n  \"y\",\n  \"translateX\",\n  \"translateY\"\n]);\nvar isPositionalKey = (key) => positionalKeys.has(key);\nvar hasPositionalKey = (target) => {\n  return Object.keys(target).some(isPositionalKey);\n};\nvar isNumOrPxType = (v) => v === number || v === px;\nvar getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nvar getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform: transform2 }) => {\n  if (transform2 === \"none\" || !transform2)\n    return 0;\n  const matrix3d = transform2.match(/^matrix3d\\((.+)\\)$/);\n  if (matrix3d) {\n    return getPosFromMatrix(matrix3d[1], pos3);\n  } else {\n    const matrix = transform2.match(/^matrix\\((.+)\\)$/);\n    if (matrix) {\n      return getPosFromMatrix(matrix[1], pos2);\n    } else {\n      return 0;\n    }\n  }\n};\nvar transformKeys = /* @__PURE__ */ new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));\nfunction removeNonTranslationalTransform(visualElement) {\n  const removedTransforms = [];\n  nonTranslationalTransformKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    if (value !== void 0) {\n      removedTransforms.push([key, value.get()]);\n      value.set(key.startsWith(\"scale\") ? 1 : 0);\n    }\n  });\n  if (removedTransforms.length)\n    visualElement.render();\n  return removedTransforms;\n}\nvar positionalValues = {\n  // Dimensions\n  width: ({ x }, { paddingLeft = \"0\", paddingRight = \"0\" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),\n  height: ({ y }, { paddingTop = \"0\", paddingBottom = \"0\" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),\n  top: (_bbox, { top }) => parseFloat(top),\n  left: (_bbox, { left }) => parseFloat(left),\n  bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),\n  right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),\n  // Transform\n  x: getTranslateFromMatrix(4, 13),\n  y: getTranslateFromMatrix(5, 14)\n};\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\nvar convertChangedValueTypes = (target, visualElement, changedKeys) => {\n  const originBbox = visualElement.measureViewportBox();\n  const element = visualElement.current;\n  const elementComputedStyle = getComputedStyle(element);\n  const { display } = elementComputedStyle;\n  const origin = {};\n  if (display === \"none\") {\n    visualElement.setStaticValue(\"display\", target.display || \"block\");\n  }\n  changedKeys.forEach((key) => {\n    origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n  });\n  visualElement.render();\n  const targetBbox = visualElement.measureViewportBox();\n  changedKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    value && value.jump(origin[key]);\n    target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n  });\n  return target;\n};\nvar checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n  target = { ...target };\n  transitionEnd = { ...transitionEnd };\n  const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n  let removedTransformValues = [];\n  let hasAttemptedToRemoveTransformValues = false;\n  const changedValueTypeKeys = [];\n  targetPositionalKeys.forEach((key) => {\n    const value = visualElement.getValue(key);\n    if (!visualElement.hasValue(key))\n      return;\n    let from = origin[key];\n    let fromType = findDimensionValueType(from);\n    const to = target[key];\n    let toType;\n    if (isKeyframesTarget(to)) {\n      const numKeyframes = to.length;\n      const fromIndex = to[0] === null ? 1 : 0;\n      from = to[fromIndex];\n      fromType = findDimensionValueType(from);\n      for (let i = fromIndex; i < numKeyframes; i++) {\n        if (to[i] === null)\n          break;\n        if (!toType) {\n          toType = findDimensionValueType(to[i]);\n          invariant(toType === fromType || isNumOrPxType(fromType) && isNumOrPxType(toType), \"Keyframes must be of the same dimension as the current value\");\n        } else {\n          invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n        }\n      }\n    } else {\n      toType = findDimensionValueType(to);\n    }\n    if (fromType !== toType) {\n      if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n        const current = value.get();\n        if (typeof current === \"string\") {\n          value.set(parseFloat(current));\n        }\n        if (typeof to === \"string\") {\n          target[key] = parseFloat(to);\n        } else if (Array.isArray(to) && toType === px) {\n          target[key] = to.map(parseFloat);\n        }\n      } else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) && (toType === null || toType === void 0 ? void 0 : toType.transform) && (from === 0 || to === 0)) {\n        if (from === 0) {\n          value.set(toType.transform(from));\n        } else {\n          target[key] = fromType.transform(to);\n        }\n      } else {\n        if (!hasAttemptedToRemoveTransformValues) {\n          removedTransformValues = removeNonTranslationalTransform(visualElement);\n          hasAttemptedToRemoveTransformValues = true;\n        }\n        changedValueTypeKeys.push(key);\n        transitionEnd[key] = transitionEnd[key] !== void 0 ? transitionEnd[key] : target[key];\n        value.jump(to);\n      }\n    }\n  });\n  if (changedValueTypeKeys.length) {\n    const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0 ? window.pageYOffset : null;\n    const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n    if (removedTransformValues.length) {\n      removedTransformValues.forEach(([key, value]) => {\n        visualElement.getValue(key).set(value);\n      });\n    }\n    visualElement.render();\n    if (isBrowser && scrollY !== null) {\n      window.scrollTo({ top: scrollY });\n    }\n    return { target: convertedTarget, transitionEnd };\n  } else {\n    return { target, transitionEnd };\n  }\n};\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n  return hasPositionalKey(target) ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd) : { target, transitionEnd };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs\nvar parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n  const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n  target = resolved.target;\n  transitionEnd = resolved.transitionEnd;\n  return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs\nvar DOMVisualElement = class extends VisualElement {\n  sortInstanceNodePosition(a, b) {\n    return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props.style ? props.style[key] : void 0;\n  }\n  removeValueFromRenderState(key, { vars, style }) {\n    delete vars[key];\n    delete style[key];\n  }\n  makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }, { transformValues }, isMounted) {\n    let origin = getOrigin(target, transition || {}, this);\n    if (transformValues) {\n      if (transitionEnd)\n        transitionEnd = transformValues(transitionEnd);\n      if (target)\n        target = transformValues(target);\n      if (origin)\n        origin = transformValues(origin);\n    }\n    if (isMounted) {\n      checkTargetForNewValues(this, target, origin);\n      const parsed = parseDomVariant(this, target, origin, transitionEnd);\n      transitionEnd = parsed.transitionEnd;\n      target = parsed.target;\n    }\n    return {\n      transition,\n      transitionEnd,\n      ...target\n    };\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs\nfunction getComputedStyle2(element) {\n  return window.getComputedStyle(element);\n}\nvar HTMLVisualElement = class extends DOMVisualElement {\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    } else {\n      const computedStyle = getComputedStyle2(instance);\n      const value = (isCSSVariableName(key) ? computedStyle.getPropertyValue(key) : computedStyle[key]) || 0;\n      return typeof value === \"string\" ? value.trim() : value;\n    }\n  }\n  measureInstanceViewportBox(instance, { transformPagePoint }) {\n    return measureViewportBox(instance, transformPagePoint);\n  }\n  build(renderState, latestValues, options, props) {\n    buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n  }\n  scrapeMotionValuesFromProps(props, prevProps) {\n    return scrapeMotionValuesFromProps(props, prevProps);\n  }\n  handleChildMotionValue() {\n    if (this.childSubscription) {\n      this.childSubscription();\n      delete this.childSubscription;\n    }\n    const { children } = this.props;\n    if (isMotionValue(children)) {\n      this.childSubscription = children.on(\"change\", (latest) => {\n        if (this.current)\n          this.current.textContent = `${latest}`;\n      });\n    }\n  }\n  renderInstance(instance, renderState, styleProp, projection) {\n    renderHTML(instance, renderState, styleProp, projection);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs\nvar SVGVisualElement = class extends DOMVisualElement {\n  constructor() {\n    super(...arguments);\n    this.isSVGTag = false;\n  }\n  getBaseTargetFromProps(props, key) {\n    return props[key];\n  }\n  readValueFromInstance(instance, key) {\n    if (transformProps.has(key)) {\n      const defaultType = getDefaultValueType(key);\n      return defaultType ? defaultType.default || 0 : 0;\n    }\n    key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n    return instance.getAttribute(key);\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  scrapeMotionValuesFromProps(props, prevProps) {\n    return scrapeMotionValuesFromProps2(props, prevProps);\n  }\n  build(renderState, latestValues, options, props) {\n    buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n  }\n  renderInstance(instance, renderState, styleProp, projection) {\n    renderSVG(instance, renderState, styleProp, projection);\n  }\n  mount(instance) {\n    this.isSVGTag = isSVGTag(instance.tagName);\n    super.mount(instance);\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs\nvar createDomVisualElement = (Component2, options) => {\n  return isSVGComponent(Component2) ? new SVGVisualElement(options, { enableHardwareAcceleration: false }) : new HTMLVisualElement(options, { enableHardwareAcceleration: true });\n};\n\n// ../../../node_modules/framer-motion/dist/es/motion/features/layout.mjs\nvar layout = {\n  layout: {\n    ProjectionNode: HTMLProjectionNode,\n    MeasureLayout\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/motion.mjs\nvar preloadedFeatures = {\n  ...animations,\n  ...gestureAnimations,\n  ...drag,\n  ...layout\n};\nvar motion = /* @__PURE__ */ createMotionProxy((Component2, config) => createDomMotionConfig(Component2, config, preloadedFeatures, createDomVisualElement));\nfunction createDomMotionComponent(key) {\n  return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, preloadedFeatures, createDomVisualElement));\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/motion-minimal.mjs\nvar m = createMotionProxy(createDomMotionConfig);\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nimport { useState, useCallback as useCallback2 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs\nimport { useRef as useRef3 } from \"react\";\nfunction useIsMounted() {\n  const isMounted = useRef3(false);\n  useIsomorphicLayoutEffect(() => {\n    isMounted.current = true;\n    return () => {\n      isMounted.current = false;\n    };\n  }, []);\n  return isMounted;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-force-update.mjs\nfunction useForceUpdate() {\n  const isMounted = useIsMounted();\n  const [forcedRenderCount, setForcedRenderCount] = useState(0);\n  const forceRender = useCallback2(() => {\n    isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n  }, [forcedRenderCount]);\n  const deferredForceRender = useCallback2(() => frame.postRender(forceRender), [forceRender]);\n  return [deferredForceRender, forcedRenderCount];\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs\nimport { useEffect as useEffect4 } from \"react\";\nfunction useUnmountEffect(callback) {\n  return useEffect4(() => () => callback(), []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nimport * as React4 from \"react\";\nimport { useContext as useContext7, useRef as useRef5, cloneElement as cloneElement2, Children, isValidElement } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nimport * as React3 from \"react\";\nimport { useId as useId3, useMemo as useMemo5 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs\nimport * as React2 from \"react\";\nimport { useId as useId2, useRef as useRef4, useInsertionEffect as useInsertionEffect2 } from \"react\";\nvar PopChildMeasure = class extends React2.Component {\n  getSnapshotBeforeUpdate(prevProps) {\n    const element = this.props.childRef.current;\n    if (element && prevProps.isPresent && !this.props.isPresent) {\n      const size = this.props.sizeRef.current;\n      size.height = element.offsetHeight || 0;\n      size.width = element.offsetWidth || 0;\n      size.top = element.offsetTop;\n      size.left = element.offsetLeft;\n    }\n    return null;\n  }\n  /**\n   * Required with getSnapshotBeforeUpdate to stop React complaining.\n   */\n  componentDidUpdate() {\n  }\n  render() {\n    return this.props.children;\n  }\n};\nfunction PopChild({ children, isPresent: isPresent2 }) {\n  const id4 = useId2();\n  const ref = useRef4(null);\n  const size = useRef4({\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  });\n  useInsertionEffect2(() => {\n    const { width, height, top, left } = size.current;\n    if (isPresent2 || !ref.current || !width || !height)\n      return;\n    ref.current.dataset.motionPopId = id4;\n    const style = document.createElement(\"style\");\n    document.head.appendChild(style);\n    if (style.sheet) {\n      style.sheet.insertRule(`\n          [data-motion-pop-id=\"${id4}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            top: ${top}px !important;\n            left: ${left}px !important;\n          }\n        `);\n    }\n    return () => {\n      document.head.removeChild(style);\n    };\n  }, [isPresent2]);\n  return React2.createElement(PopChildMeasure, { isPresent: isPresent2, childRef: ref, sizeRef: size }, React2.cloneElement(children, { ref }));\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs\nvar PresenceChild = ({ children, initial, isPresent: isPresent2, onExitComplete, custom, presenceAffectsLayout, mode }) => {\n  const presenceChildren = useConstant(newChildrenMap);\n  const id4 = useId3();\n  const context = useMemo5(\n    () => ({\n      id: id4,\n      initial,\n      isPresent: isPresent2,\n      custom,\n      onExitComplete: (childId) => {\n        presenceChildren.set(childId, true);\n        for (const isComplete of presenceChildren.values()) {\n          if (!isComplete)\n            return;\n        }\n        onExitComplete && onExitComplete();\n      },\n      register: (childId) => {\n        presenceChildren.set(childId, false);\n        return () => presenceChildren.delete(childId);\n      }\n    }),\n    /**\n     * If the presence of a child affects the layout of the components around it,\n     * we want to make a new context value to ensure they get re-rendered\n     * so they can detect that layout change.\n     */\n    presenceAffectsLayout ? void 0 : [isPresent2]\n  );\n  useMemo5(() => {\n    presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n  }, [isPresent2]);\n  React3.useEffect(() => {\n    !isPresent2 && !presenceChildren.size && onExitComplete && onExitComplete();\n  }, [isPresent2]);\n  if (mode === \"popLayout\") {\n    children = React3.createElement(PopChild, { isPresent: isPresent2 }, children);\n  }\n  return React3.createElement(PresenceContext.Provider, { value: context }, children);\n};\nfunction newChildrenMap() {\n  return /* @__PURE__ */ new Map();\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs\nvar getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n  children.forEach((child) => {\n    const key = getChildKey(child);\n    allChildren.set(key, child);\n  });\n}\nfunction onlyElements(children) {\n  const filtered = [];\n  Children.forEach(children, (child) => {\n    if (isValidElement(child))\n      filtered.push(child);\n  });\n  return filtered;\n}\nvar AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\" }) => {\n  invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n  const forceRender = useContext7(LayoutGroupContext).forceRender || useForceUpdate()[0];\n  const isMounted = useIsMounted();\n  const filteredChildren = onlyElements(children);\n  let childrenToRender = filteredChildren;\n  const exitingChildren = useRef5(/* @__PURE__ */ new Map()).current;\n  const presentChildren = useRef5(childrenToRender);\n  const allChildren = useRef5(/* @__PURE__ */ new Map()).current;\n  const isInitialRender = useRef5(true);\n  useIsomorphicLayoutEffect(() => {\n    isInitialRender.current = false;\n    updateChildLookup(filteredChildren, allChildren);\n    presentChildren.current = childrenToRender;\n  });\n  useUnmountEffect(() => {\n    isInitialRender.current = true;\n    allChildren.clear();\n    exitingChildren.clear();\n  });\n  if (isInitialRender.current) {\n    return React4.createElement(React4.Fragment, null, childrenToRender.map((child) => React4.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? void 0 : false, presenceAffectsLayout, mode }, child)));\n  }\n  childrenToRender = [...childrenToRender];\n  const presentKeys = presentChildren.current.map(getChildKey);\n  const targetKeys = filteredChildren.map(getChildKey);\n  const numPresent = presentKeys.length;\n  for (let i = 0; i < numPresent; i++) {\n    const key = presentKeys[i];\n    if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n      exitingChildren.set(key, void 0);\n    }\n  }\n  if (mode === \"wait\" && exitingChildren.size) {\n    childrenToRender = [];\n  }\n  exitingChildren.forEach((component, key) => {\n    if (targetKeys.indexOf(key) !== -1)\n      return;\n    const child = allChildren.get(key);\n    if (!child)\n      return;\n    const insertionIndex = presentKeys.indexOf(key);\n    let exitingComponent = component;\n    if (!exitingComponent) {\n      const onExit = () => {\n        allChildren.delete(key);\n        exitingChildren.delete(key);\n        const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);\n        presentChildren.current.splice(removeIndex, 1);\n        if (!exitingChildren.size) {\n          presentChildren.current = filteredChildren;\n          if (isMounted.current === false)\n            return;\n          forceRender();\n          onExitComplete && onExitComplete();\n        }\n      };\n      exitingComponent = React4.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom, presenceAffectsLayout, mode }, child);\n      exitingChildren.set(key, exitingComponent);\n    }\n    childrenToRender.splice(insertionIndex, 0, exitingComponent);\n  });\n  childrenToRender = childrenToRender.map((child) => {\n    const key = child.key;\n    return exitingChildren.has(key) ? child : React4.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout, mode }, child);\n  });\n  if (false) {\n    console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n  }\n  return React4.createElement(React4.Fragment, null, exitingChildren.size ? childrenToRender : childrenToRender.map((child) => cloneElement2(child)));\n};\n\n// ../../../node_modules/framer-motion/dist/es/components/MotionConfig/index.mjs\nimport * as React5 from \"react\";\nimport { useContext as useContext8, useMemo as useMemo6 } from \"react\";\nfunction MotionConfig({ children, isValidProp, ...config }) {\n  isValidProp && loadExternalIsValidProp(isValidProp);\n  config = { ...useContext8(MotionConfigContext), ...config };\n  config.isStatic = useConstant(() => config.isStatic);\n  const context = useMemo6(() => config, [JSON.stringify(config.transition), config.transformPagePoint, config.reducedMotion]);\n  return React5.createElement(MotionConfigContext.Provider, { value: context }, children);\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs\nimport * as React6 from \"react\";\nimport { useState as useState2, useRef as useRef6, useEffect as useEffect6 } from \"react\";\nfunction LazyMotion({ children, features, strict = false }) {\n  const [, setIsLoaded] = useState2(!isLazyBundle(features));\n  const loadedRenderer = useRef6(void 0);\n  if (!isLazyBundle(features)) {\n    const { renderer, ...loadedFeatures } = features;\n    loadedRenderer.current = renderer;\n    loadFeatures(loadedFeatures);\n  }\n  useEffect6(() => {\n    if (isLazyBundle(features)) {\n      features().then(({ renderer, ...loadedFeatures }) => {\n        loadFeatures(loadedFeatures);\n        loadedRenderer.current = renderer;\n        setIsLoaded(true);\n      });\n    }\n  }, []);\n  return React6.createElement(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict } }, children);\n}\nfunction isLazyBundle(features) {\n  return typeof features === \"function\";\n}\n\n// ../../../node_modules/framer-motion/dist/es/context/DeprecatedLayoutGroupContext.mjs\nimport { createContext as createContext7 } from \"react\";\nvar DeprecatedLayoutGroupContext = createContext7(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nimport * as React7 from \"react\";\nimport { useContext as useContext9, useRef as useRef7, useMemo as useMemo7 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/projection/node/group.mjs\nvar notify = (node) => !node.isLayoutDirty && node.willUpdate(false);\nfunction nodeGroup() {\n  const nodes = /* @__PURE__ */ new Set();\n  const subscriptions = /* @__PURE__ */ new WeakMap();\n  const dirtyAll = () => nodes.forEach(notify);\n  return {\n    add: (node) => {\n      nodes.add(node);\n      subscriptions.set(node, node.addEventListener(\"willUpdate\", dirtyAll));\n    },\n    remove: (node) => {\n      nodes.delete(node);\n      const unsubscribe = subscriptions.get(node);\n      if (unsubscribe) {\n        unsubscribe();\n        subscriptions.delete(node);\n      }\n      dirtyAll();\n    },\n    dirty: dirtyAll\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/LayoutGroup/index.mjs\nvar shouldInheritGroup = (inherit) => inherit === true;\nvar shouldInheritId = (inherit) => shouldInheritGroup(inherit === true) || inherit === \"id\";\nvar LayoutGroup = ({ children, id: id4, inherit = true }) => {\n  const layoutGroupContext = useContext9(LayoutGroupContext);\n  const deprecatedLayoutGroupContext = useContext9(DeprecatedLayoutGroupContext);\n  const [forceRender, key] = useForceUpdate();\n  const context = useRef7(null);\n  const upstreamId = layoutGroupContext.id || deprecatedLayoutGroupContext;\n  if (context.current === null) {\n    if (shouldInheritId(inherit) && upstreamId) {\n      id4 = id4 ? upstreamId + \"-\" + id4 : upstreamId;\n    }\n    context.current = {\n      id: id4,\n      group: shouldInheritGroup(inherit) ? layoutGroupContext.group || nodeGroup() : nodeGroup()\n    };\n  }\n  const memoizedContext = useMemo7(() => ({ ...context.current, forceRender }), [key]);\n  return React7.createElement(LayoutGroupContext.Provider, { value: memoizedContext }, children);\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-value.mjs\nimport { useContext as useContext10, useState as useState3, useEffect as useEffect7 } from \"react\";\nfunction useMotionValue(initial) {\n  const value = useConstant(() => motionValue(initial));\n  const { isStatic } = useContext10(MotionConfigContext);\n  if (isStatic) {\n    const [, setLatest] = useState3(initial);\n    useEffect7(() => value.on(\"change\", setLatest), []);\n  }\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/transform.mjs\nvar isCustomValueType = (v) => {\n  return typeof v === \"object\" && v.mix;\n};\nvar getMixer2 = (v) => isCustomValueType(v) ? v.mix : void 0;\nfunction transform(...args) {\n  const useImmediate = !Array.isArray(args[0]);\n  const argOffset = useImmediate ? 0 : -1;\n  const inputValue = args[0 + argOffset];\n  const inputRange = args[1 + argOffset];\n  const outputRange = args[2 + argOffset];\n  const options = args[3 + argOffset];\n  const interpolator = interpolate(inputRange, outputRange, {\n    mixer: getMixer2(outputRange[0]),\n    ...options\n  });\n  return useImmediate ? interpolator(inputValue) : interpolator;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-combine-values.mjs\nfunction useCombineMotionValues(values, combineValues) {\n  const value = useMotionValue(combineValues());\n  const updateValue = () => value.set(combineValues());\n  updateValue();\n  useIsomorphicLayoutEffect(() => {\n    const scheduleUpdate = () => frame.update(updateValue, false, true);\n    const subscriptions = values.map((v) => v.on(\"change\", scheduleUpdate));\n    return () => {\n      subscriptions.forEach((unsubscribe) => unsubscribe());\n      cancelFrame(updateValue);\n    };\n  });\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-computed.mjs\nfunction useComputed(compute) {\n  collectMotionValues.current = [];\n  compute();\n  const value = useCombineMotionValues(collectMotionValues.current, compute);\n  collectMotionValues.current = void 0;\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-transform.mjs\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\n  if (typeof input === \"function\") {\n    return useComputed(input);\n  }\n  const transformer = typeof inputRangeOrTransformer === \"function\" ? inputRangeOrTransformer : transform(inputRangeOrTransformer, outputRange, options);\n  return Array.isArray(input) ? useListTransform(input, transformer) : useListTransform([input], ([latest]) => transformer(latest));\n}\nfunction useListTransform(values, transformer) {\n  const latest = useConstant(() => []);\n  return useCombineMotionValues(values, () => {\n    latest.length = 0;\n    const numValues = values.length;\n    for (let i = 0; i < numValues; i++) {\n      latest[i] = values[i].get();\n    }\n    return transformer(latest);\n  });\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nimport * as React8 from \"react\";\nimport { forwardRef as forwardRef2, useRef as useRef8, useEffect as useEffect8 } from \"react\";\n\n// ../../../node_modules/framer-motion/dist/es/context/ReorderContext.mjs\nimport { createContext as createContext8 } from \"react\";\nvar ReorderContext = createContext8(null);\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs\nfunction checkReorder(order, value, offset, velocity) {\n  if (!velocity)\n    return order;\n  const index = order.findIndex((item2) => item2.value === value);\n  if (index === -1)\n    return order;\n  const nextOffset = velocity > 0 ? 1 : -1;\n  const nextItem = order[index + nextOffset];\n  if (!nextItem)\n    return order;\n  const item = order[index];\n  const nextLayout = nextItem.layout;\n  const nextItemCenter = mix(nextLayout.min, nextLayout.max, 0.5);\n  if (nextOffset === 1 && item.layout.max + offset > nextItemCenter || nextOffset === -1 && item.layout.min + offset < nextItemCenter) {\n    return moveItem(order, index, index + nextOffset);\n  }\n  return order;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Group.mjs\nfunction ReorderGroup({ children, as = \"ul\", axis = \"y\", onReorder, values, ...props }, externalRef) {\n  const Component2 = useConstant(() => motion(as));\n  const order = [];\n  const isReordering = useRef8(false);\n  invariant(Boolean(values), \"Reorder.Group must be provided a values prop\");\n  const context = {\n    axis,\n    registerItem: (value, layout2) => {\n      if (layout2 && order.findIndex((entry) => value === entry.value) === -1) {\n        order.push({ value, layout: layout2[axis] });\n        order.sort(compareMin);\n      }\n    },\n    updateOrder: (id4, offset, velocity) => {\n      if (isReordering.current)\n        return;\n      const newOrder = checkReorder(order, id4, offset, velocity);\n      if (order !== newOrder) {\n        isReordering.current = true;\n        onReorder(newOrder.map(getValue).filter((value) => values.indexOf(value) !== -1));\n      }\n    }\n  };\n  useEffect8(() => {\n    isReordering.current = false;\n  });\n  return React8.createElement(\n    Component2,\n    { ...props, ref: externalRef, ignoreStrict: true },\n    React8.createElement(ReorderContext.Provider, { value: context }, children)\n  );\n}\nvar Group = forwardRef2(ReorderGroup);\nfunction getValue(item) {\n  return item.value;\n}\nfunction compareMin(a, b) {\n  return a.layout.min - b.layout.min;\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/Item.mjs\nimport * as React9 from \"react\";\nimport { forwardRef as forwardRef3, useContext as useContext11, useRef as useRef9, useEffect as useEffect9 } from \"react\";\nfunction useDefaultMotionValue(value, defaultValue = 0) {\n  return isMotionValue(value) ? value : useMotionValue(defaultValue);\n}\nfunction ReorderItem({ children, style = {}, value, as = \"li\", onDrag, layout: layout2 = true, ...props }, externalRef) {\n  const Component2 = useConstant(() => motion(as));\n  const context = useContext11(ReorderContext);\n  const point2 = {\n    x: useDefaultMotionValue(style.x),\n    y: useDefaultMotionValue(style.y)\n  };\n  const zIndex = useTransform([point2.x, point2.y], ([latestX, latestY]) => latestX || latestY ? 1 : \"unset\");\n  const measuredLayout = useRef9(null);\n  invariant(Boolean(context), \"Reorder.Item must be a child of Reorder.Group\");\n  const { axis, registerItem, updateOrder } = context;\n  useEffect9(() => {\n    registerItem(value, measuredLayout.current);\n  }, [context]);\n  return React9.createElement(Component2, { drag: axis, ...props, dragSnapToOrigin: true, style: { ...style, x: point2.x, y: point2.y, zIndex }, layout: layout2, onDrag: (event, gesturePoint) => {\n    const { velocity } = gesturePoint;\n    velocity[axis] && updateOrder(value, point2[axis].get(), velocity[axis]);\n    onDrag && onDrag(event, gesturePoint);\n  }, onLayoutMeasure: (measured) => {\n    measuredLayout.current = measured;\n  }, ref: externalRef, ignoreStrict: true }, children);\n}\nvar Item = forwardRef3(ReorderItem);\n\n// ../../../node_modules/framer-motion/dist/es/components/Reorder/index.mjs\nvar Reorder = {\n  Group,\n  Item\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-animation.mjs\nvar domAnimation = {\n  renderer: createDomVisualElement,\n  ...animations,\n  ...gestureAnimations\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/features-max.mjs\nvar domMax = {\n  ...domAnimation,\n  ...drag,\n  ...layout\n};\n\n// ../../../node_modules/framer-motion/dist/es/value/use-motion-template.mjs\nfunction useMotionTemplate(fragments, ...values) {\n  const numFragments = fragments.length;\n  function buildValue() {\n    let output = ``;\n    for (let i = 0; i < numFragments; i++) {\n      output += fragments[i];\n      const value = values[i];\n      if (value) {\n        output += isMotionValue(value) ? value.get() : value;\n      }\n    }\n    return output;\n  }\n  return useCombineMotionValues(values.filter(isMotionValue), buildValue);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-spring.mjs\nimport { useContext as useContext12, useRef as useRef10, useInsertionEffect as useInsertionEffect3 } from \"react\";\nfunction useSpring(source, config = {}) {\n  const { isStatic } = useContext12(MotionConfigContext);\n  const activeSpringAnimation = useRef10(null);\n  const value = useMotionValue(isMotionValue(source) ? source.get() : source);\n  const stopAnimation2 = () => {\n    if (activeSpringAnimation.current) {\n      activeSpringAnimation.current.stop();\n    }\n  };\n  useInsertionEffect3(() => {\n    return value.attach((v, set) => {\n      if (isStatic)\n        return set(v);\n      stopAnimation2();\n      activeSpringAnimation.current = animateValue({\n        keyframes: [value.get(), v],\n        velocity: value.getVelocity(),\n        type: \"spring\",\n        restDelta: 1e-3,\n        restSpeed: 0.01,\n        ...config,\n        onUpdate: set\n      });\n      if (!frameData.isProcessing) {\n        const delta = performance.now() - frameData.timestamp;\n        if (delta < 30) {\n          activeSpringAnimation.current.time = millisecondsToSeconds(delta);\n        }\n      }\n      return value.get();\n    }, stopAnimation2);\n  }, [JSON.stringify(config)]);\n  useIsomorphicLayoutEffect(() => {\n    if (isMotionValue(source)) {\n      return source.on(\"change\", (v) => value.set(parseFloat(v)));\n    }\n  }, [value]);\n  return value;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-motion-value-event.mjs\nimport { useInsertionEffect as useInsertionEffect4 } from \"react\";\nfunction useMotionValueEvent(value, event, callback) {\n  useInsertionEffect4(() => value.on(event, callback), [value, event, callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-velocity.mjs\nfunction useVelocity(value) {\n  const velocity = useMotionValue(value.getVelocity());\n  useMotionValueEvent(value, \"velocityChange\", (newVelocity) => {\n    velocity.set(newVelocity);\n  });\n  return velocity;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/utils/resolve-element.mjs\nfunction resolveElements(elements, scope, selectorCache) {\n  var _a;\n  if (typeof elements === \"string\") {\n    let root = document;\n    if (scope) {\n      invariant(Boolean(scope.current), \"Scope provided, but no element detected.\");\n      root = scope.current;\n    }\n    if (selectorCache) {\n      (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : selectorCache[elements] = root.querySelectorAll(elements);\n      elements = selectorCache[elements];\n    } else {\n      elements = root.querySelectorAll(elements);\n    }\n  } else if (elements instanceof Element) {\n    elements = [elements];\n  }\n  return Array.from(elements || []);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/handle-element.mjs\nvar resizeHandlers = /* @__PURE__ */ new WeakMap();\nvar observer;\nfunction getElementSize(target, borderBoxSize) {\n  if (borderBoxSize) {\n    const { inlineSize, blockSize } = borderBoxSize[0];\n    return { width: inlineSize, height: blockSize };\n  } else if (target instanceof SVGElement && \"getBBox\" in target) {\n    return target.getBBox();\n  } else {\n    return {\n      width: target.offsetWidth,\n      height: target.offsetHeight\n    };\n  }\n}\nfunction notifyTarget({ target, contentRect, borderBoxSize }) {\n  var _a;\n  (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => {\n    handler({\n      target,\n      contentSize: contentRect,\n      get size() {\n        return getElementSize(target, borderBoxSize);\n      }\n    });\n  });\n}\nfunction notifyAll(entries) {\n  entries.forEach(notifyTarget);\n}\nfunction createResizeObserver() {\n  if (typeof ResizeObserver === \"undefined\")\n    return;\n  observer = new ResizeObserver(notifyAll);\n}\nfunction resizeElement(target, handler) {\n  if (!observer)\n    createResizeObserver();\n  const elements = resolveElements(target);\n  elements.forEach((element) => {\n    let elementHandlers = resizeHandlers.get(element);\n    if (!elementHandlers) {\n      elementHandlers = /* @__PURE__ */ new Set();\n      resizeHandlers.set(element, elementHandlers);\n    }\n    elementHandlers.add(handler);\n    observer === null || observer === void 0 ? void 0 : observer.observe(element);\n  });\n  return () => {\n    elements.forEach((element) => {\n      const elementHandlers = resizeHandlers.get(element);\n      elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler);\n      if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) {\n        observer === null || observer === void 0 ? void 0 : observer.unobserve(element);\n      }\n    });\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/handle-window.mjs\nvar windowCallbacks = /* @__PURE__ */ new Set();\nvar windowResizeHandler;\nfunction createWindowResizeHandler() {\n  windowResizeHandler = () => {\n    const size = {\n      width: window.innerWidth,\n      height: window.innerHeight\n    };\n    const info = {\n      target: window,\n      size,\n      contentSize: size\n    };\n    windowCallbacks.forEach((callback) => callback(info));\n  };\n  window.addEventListener(\"resize\", windowResizeHandler);\n}\nfunction resizeWindow(callback) {\n  windowCallbacks.add(callback);\n  if (!windowResizeHandler)\n    createWindowResizeHandler();\n  return () => {\n    windowCallbacks.delete(callback);\n    if (!windowCallbacks.size && windowResizeHandler) {\n      windowResizeHandler = void 0;\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/resize/index.mjs\nfunction resize(a, b) {\n  return typeof a === \"function\" ? resizeWindow(a) : resizeElement(a, b);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs\nvar maxElapsed2 = 50;\nvar createAxisInfo = () => ({\n  current: 0,\n  offset: [],\n  progress: 0,\n  scrollLength: 0,\n  targetOffset: 0,\n  targetLength: 0,\n  containerLength: 0,\n  velocity: 0\n});\nvar createScrollInfo = () => ({\n  time: 0,\n  x: createAxisInfo(),\n  y: createAxisInfo()\n});\nvar keys = {\n  x: {\n    length: \"Width\",\n    position: \"Left\"\n  },\n  y: {\n    length: \"Height\",\n    position: \"Top\"\n  }\n};\nfunction updateAxisInfo(element, axisName, info, time) {\n  const axis = info[axisName];\n  const { length, position } = keys[axisName];\n  const prev = axis.current;\n  const prevTime = info.time;\n  axis.current = element[\"scroll\" + position];\n  axis.scrollLength = element[\"scroll\" + length] - element[\"client\" + length];\n  axis.offset.length = 0;\n  axis.offset[0] = 0;\n  axis.offset[1] = axis.scrollLength;\n  axis.progress = progress(0, axis.scrollLength, axis.current);\n  const elapsed = time - prevTime;\n  axis.velocity = elapsed > maxElapsed2 ? 0 : velocityPerSecond(axis.current - prev, elapsed);\n}\nfunction updateScrollInfo(element, info, time) {\n  updateAxisInfo(element, \"x\", info, time);\n  updateAxisInfo(element, \"y\", info, time);\n  info.time = time;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs\nfunction calcInset(element, container) {\n  const inset = { x: 0, y: 0 };\n  let current = element;\n  while (current && current !== container) {\n    if (current instanceof HTMLElement) {\n      inset.x += current.offsetLeft;\n      inset.y += current.offsetTop;\n      current = current.offsetParent;\n    } else if (current.tagName === \"svg\") {\n      const svgBoundingBox = current.getBoundingClientRect();\n      current = current.parentElement;\n      const parentBoundingBox = current.getBoundingClientRect();\n      inset.x += svgBoundingBox.left - parentBoundingBox.left;\n      inset.y += svgBoundingBox.top - parentBoundingBox.top;\n    } else if (current instanceof SVGGraphicsElement) {\n      const { x, y } = current.getBBox();\n      inset.x += x;\n      inset.y += y;\n      let svg = null;\n      let parent = current.parentNode;\n      while (!svg) {\n        if (parent.tagName === \"svg\") {\n          svg = parent;\n        }\n        parent = current.parentNode;\n      }\n      current = svg;\n    } else {\n      break;\n    }\n  }\n  return inset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs\nvar ScrollOffset = {\n  Enter: [\n    [0, 1],\n    [1, 1]\n  ],\n  Exit: [\n    [0, 0],\n    [1, 0]\n  ],\n  Any: [\n    [1, 0],\n    [0, 1]\n  ],\n  All: [\n    [0, 0],\n    [1, 1]\n  ]\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs\nvar namedEdges = {\n  start: 0,\n  center: 0.5,\n  end: 1\n};\nfunction resolveEdge(edge, length, inset = 0) {\n  let delta = 0;\n  if (namedEdges[edge] !== void 0) {\n    edge = namedEdges[edge];\n  }\n  if (typeof edge === \"string\") {\n    const asNumber2 = parseFloat(edge);\n    if (edge.endsWith(\"px\")) {\n      delta = asNumber2;\n    } else if (edge.endsWith(\"%\")) {\n      edge = asNumber2 / 100;\n    } else if (edge.endsWith(\"vw\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientWidth;\n    } else if (edge.endsWith(\"vh\")) {\n      delta = asNumber2 / 100 * document.documentElement.clientHeight;\n    } else {\n      edge = asNumber2;\n    }\n  }\n  if (typeof edge === \"number\") {\n    delta = length * edge;\n  }\n  return inset + delta;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs\nvar defaultOffset2 = [0, 0];\nfunction resolveOffset(offset, containerLength, targetLength, targetInset) {\n  let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset2;\n  let targetPoint = 0;\n  let containerPoint = 0;\n  if (typeof offset === \"number\") {\n    offsetDefinition = [offset, offset];\n  } else if (typeof offset === \"string\") {\n    offset = offset.trim();\n    if (offset.includes(\" \")) {\n      offsetDefinition = offset.split(\" \");\n    } else {\n      offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];\n    }\n  }\n  targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);\n  containerPoint = resolveEdge(offsetDefinition[1], containerLength);\n  return targetPoint - containerPoint;\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs\nvar point = { x: 0, y: 0 };\nfunction getTargetSize(target) {\n  return \"getBBox\" in target && target.tagName !== \"svg\" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };\n}\nfunction resolveOffsets(container, info, options) {\n  let { offset: offsetDefinition = ScrollOffset.All } = options;\n  const { target = container, axis = \"y\" } = options;\n  const lengthLabel = axis === \"y\" ? \"height\" : \"width\";\n  const inset = target !== container ? calcInset(target, container) : point;\n  const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : getTargetSize(target);\n  const containerSize = {\n    width: container.clientWidth,\n    height: container.clientHeight\n  };\n  info[axis].offset.length = 0;\n  let hasChanged = !info[axis].interpolate;\n  const numOffsets = offsetDefinition.length;\n  for (let i = 0; i < numOffsets; i++) {\n    const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);\n    if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {\n      hasChanged = true;\n    }\n    info[axis].offset[i] = offset;\n  }\n  if (hasChanged) {\n    info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition));\n    info[axis].interpolatorOffsets = [...info[axis].offset];\n  }\n  info[axis].progress = info[axis].interpolate(info[axis].current);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs\nfunction measure(container, target = container, info) {\n  info.x.targetOffset = 0;\n  info.y.targetOffset = 0;\n  if (target !== container) {\n    let node = target;\n    while (node && node !== container) {\n      info.x.targetOffset += node.offsetLeft;\n      info.y.targetOffset += node.offsetTop;\n      node = node.offsetParent;\n    }\n  }\n  info.x.targetLength = target === container ? target.scrollWidth : target.clientWidth;\n  info.y.targetLength = target === container ? target.scrollHeight : target.clientHeight;\n  info.x.containerLength = container.clientWidth;\n  info.y.containerLength = container.clientHeight;\n}\nfunction createOnScrollHandler(element, onScroll, info, options = {}) {\n  return {\n    measure: () => measure(element, options.target, info),\n    update: (time) => {\n      updateScrollInfo(element, info, time);\n      if (options.offset || options.target) {\n        resolveOffsets(element, info, options);\n      }\n    },\n    notify: () => onScroll(info)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs\nvar scrollListeners = /* @__PURE__ */ new WeakMap();\nvar resizeListeners = /* @__PURE__ */ new WeakMap();\nvar onScrollHandlers = /* @__PURE__ */ new WeakMap();\nvar getEventTarget = (element) => element === document.documentElement ? window : element;\nfunction scrollInfo(onScroll, { container = document.documentElement, ...options } = {}) {\n  let containerHandlers = onScrollHandlers.get(container);\n  if (!containerHandlers) {\n    containerHandlers = /* @__PURE__ */ new Set();\n    onScrollHandlers.set(container, containerHandlers);\n  }\n  const info = createScrollInfo();\n  const containerHandler = createOnScrollHandler(container, onScroll, info, options);\n  containerHandlers.add(containerHandler);\n  if (!scrollListeners.has(container)) {\n    const measureAll = () => {\n      for (const handler of containerHandlers)\n        handler.measure();\n    };\n    const updateAll = () => {\n      for (const handler of containerHandlers) {\n        handler.update(frameData.timestamp);\n      }\n    };\n    const notifyAll2 = () => {\n      for (const handler of containerHandlers)\n        handler.notify();\n    };\n    const listener2 = () => {\n      frame.read(measureAll, false, true);\n      frame.update(updateAll, false, true);\n      frame.update(notifyAll2, false, true);\n    };\n    scrollListeners.set(container, listener2);\n    const target = getEventTarget(container);\n    window.addEventListener(\"resize\", listener2, { passive: true });\n    if (container !== document.documentElement) {\n      resizeListeners.set(container, resize(container, listener2));\n    }\n    target.addEventListener(\"scroll\", listener2, { passive: true });\n  }\n  const listener = scrollListeners.get(container);\n  frame.read(listener, false, true);\n  return () => {\n    var _a;\n    cancelFrame(listener);\n    const currentHandlers = onScrollHandlers.get(container);\n    if (!currentHandlers)\n      return;\n    currentHandlers.delete(containerHandler);\n    if (currentHandlers.size)\n      return;\n    const scrollListener = scrollListeners.get(container);\n    scrollListeners.delete(container);\n    if (scrollListener) {\n      getEventTarget(container).removeEventListener(\"scroll\", scrollListener);\n      (_a = resizeListeners.get(container)) === null || _a === void 0 ? void 0 : _a();\n      window.removeEventListener(\"resize\", scrollListener);\n    }\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-scroll.mjs\nimport { useEffect as useEffect10 } from \"react\";\nfunction refWarning(name, ref) {\n  warning(Boolean(!ref || ref.current), `You have defined a ${name} options but the provided ref is not yet hydrated, probably because it's defined higher up the tree. Try calling useScroll() in the same component as the ref, or setting its \\`layoutEffect: false\\` option.`);\n}\nvar createScrollMotionValues = () => ({\n  scrollX: motionValue(0),\n  scrollY: motionValue(0),\n  scrollXProgress: motionValue(0),\n  scrollYProgress: motionValue(0)\n});\nfunction useScroll({ container, target, layoutEffect = true, ...options } = {}) {\n  const values = useConstant(createScrollMotionValues);\n  const useLifecycleEffect = layoutEffect ? useIsomorphicLayoutEffect : useEffect10;\n  useLifecycleEffect(() => {\n    refWarning(\"target\", target);\n    refWarning(\"container\", container);\n    return scrollInfo(({ x, y }) => {\n      values.scrollX.set(x.current);\n      values.scrollXProgress.set(x.progress);\n      values.scrollY.set(y.current);\n      values.scrollYProgress.set(y.progress);\n    }, {\n      ...options,\n      container: (container === null || container === void 0 ? void 0 : container.current) || void 0,\n      target: (target === null || target === void 0 ? void 0 : target.current) || void 0\n    });\n  }, []);\n  return values;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-element-scroll.mjs\nfunction useElementScroll(ref) {\n  if (false) {\n    warnOnce(false, \"useElementScroll is deprecated. Convert to useScroll({ container: ref }).\");\n  }\n  return useScroll({ container: ref });\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/scroll/use-viewport-scroll.mjs\nfunction useViewportScroll() {\n  if (false) {\n    warnOnce(false, \"useViewportScroll is deprecated. Convert to useScroll().\");\n  }\n  return useScroll();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-animation-frame.mjs\nimport { useRef as useRef11, useContext as useContext13, useEffect as useEffect11 } from \"react\";\nfunction useAnimationFrame(callback) {\n  const initialTimestamp = useRef11(0);\n  const { isStatic } = useContext13(MotionConfigContext);\n  useEffect11(() => {\n    if (isStatic)\n      return;\n    const provideTimeSinceStart = ({ timestamp, delta }) => {\n      if (!initialTimestamp.current)\n        initialTimestamp.current = timestamp;\n      callback(timestamp - initialTimestamp.current, delta);\n    };\n    frame.update(provideTimeSinceStart, true);\n    return () => cancelFrame(provideTimeSinceStart);\n  }, [callback]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-time.mjs\nfunction useTime() {\n  const time = useMotionValue(0);\n  useAnimationFrame((t) => time.set(t));\n  return time;\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-will-change/index.mjs\nvar WillChangeMotionValue = class extends MotionValue {\n  constructor() {\n    super(...arguments);\n    this.members = [];\n    this.transforms = /* @__PURE__ */ new Set();\n  }\n  add(name) {\n    let memberName;\n    if (transformProps.has(name)) {\n      this.transforms.add(name);\n      memberName = \"transform\";\n    } else if (!name.startsWith(\"origin\") && !isCSSVariableName(name) && name !== \"willChange\") {\n      memberName = camelToDash(name);\n    }\n    if (memberName) {\n      addUniqueItem(this.members, memberName);\n      this.update();\n    }\n  }\n  remove(name) {\n    if (transformProps.has(name)) {\n      this.transforms.delete(name);\n      if (!this.transforms.size) {\n        removeItem(this.members, \"transform\");\n      }\n    } else {\n      removeItem(this.members, camelToDash(name));\n    }\n    this.update();\n  }\n  update() {\n    this.set(this.members.length ? this.members.join(\", \") : \"auto\");\n  }\n};\nfunction useWillChange() {\n  return useConstant(() => new WillChangeMotionValue(\"auto\"));\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.mjs\nimport { useState as useState4 } from \"react\";\nfunction useReducedMotion() {\n  !hasReducedMotionListener.current && initPrefersReducedMotion();\n  const [shouldReduceMotion] = useState4(prefersReducedMotion.current);\n  if (false) {\n    warnOnce(shouldReduceMotion !== true, \"You have Reduced Motion enabled on your device. Animations may not appear as expected.\");\n  }\n  return shouldReduceMotion;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion-config.mjs\nimport { useContext as useContext14 } from \"react\";\nfunction useReducedMotionConfig() {\n  const reducedMotionPreference = useReducedMotion();\n  const { reducedMotion } = useContext14(MotionConfigContext);\n  if (reducedMotion === \"never\") {\n    return false;\n  } else if (reducedMotion === \"always\") {\n    return true;\n  } else {\n    return reducedMotionPreference;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs\nfunction stopAnimation(visualElement) {\n  visualElement.values.forEach((value) => value.stop());\n}\nfunction animationControls() {\n  let hasMounted = false;\n  const subscribers = /* @__PURE__ */ new Set();\n  const controls = {\n    subscribe(visualElement) {\n      subscribers.add(visualElement);\n      return () => void subscribers.delete(visualElement);\n    },\n    start(definition, transitionOverride) {\n      invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      const animations2 = [];\n      subscribers.forEach((visualElement) => {\n        animations2.push(animateVisualElement(visualElement, definition, {\n          transitionOverride\n        }));\n      });\n      return Promise.all(animations2);\n    },\n    set(definition) {\n      invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n      return subscribers.forEach((visualElement) => {\n        setValues(visualElement, definition);\n      });\n    },\n    stop() {\n      subscribers.forEach((visualElement) => {\n        stopAnimation(visualElement);\n      });\n    },\n    mount() {\n      hasMounted = true;\n      return () => {\n        hasMounted = false;\n        controls.stop();\n      };\n    }\n  };\n  return controls;\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/wrap.mjs\nvar wrap = (min, max, v) => {\n  const rangeSize = max - min;\n  return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs\nfunction observeTimeline(update, timeline) {\n  let prevProgress;\n  const onFrame = () => {\n    const { currentTime } = timeline;\n    const percentage = currentTime === null ? 0 : currentTime.value;\n    const progress2 = percentage / 100;\n    if (prevProgress !== progress2) {\n      update(progress2);\n    }\n    prevProgress = progress2;\n  };\n  frame.update(onFrame, true);\n  return () => cancelFrame(onFrame);\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs\nvar supportsScrollTimeline = memo(() => window.ScrollTimeline !== void 0);\n\n// ../../../node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs\nvar GroupPlaybackControls = class {\n  constructor(animations2) {\n    this.animations = animations2.filter(Boolean);\n  }\n  then(onResolve, onReject) {\n    return Promise.all(this.animations).then(onResolve).catch(onReject);\n  }\n  /**\n   * TODO: Filter out cancelled or stopped animations before returning\n   */\n  getAll(propName) {\n    return this.animations[0][propName];\n  }\n  setAll(propName, newValue) {\n    for (let i = 0; i < this.animations.length; i++) {\n      this.animations[i][propName] = newValue;\n    }\n  }\n  attachTimeline(timeline) {\n    const cancelAll = this.animations.map((animation) => {\n      if (supportsScrollTimeline() && animation.attachTimeline) {\n        animation.attachTimeline(timeline);\n      } else {\n        animation.pause();\n        return observeTimeline((progress2) => {\n          animation.time = animation.duration * progress2;\n        }, timeline);\n      }\n    });\n    return () => {\n      cancelAll.forEach((cancelTimeline, i) => {\n        if (cancelTimeline)\n          cancelTimeline();\n        this.animations[i].stop();\n      });\n    };\n  }\n  get time() {\n    return this.getAll(\"time\");\n  }\n  set time(time) {\n    this.setAll(\"time\", time);\n  }\n  get speed() {\n    return this.getAll(\"speed\");\n  }\n  set speed(speed) {\n    this.setAll(\"speed\", speed);\n  }\n  get duration() {\n    let max = 0;\n    for (let i = 0; i < this.animations.length; i++) {\n      max = Math.max(max, this.animations[i].duration);\n    }\n    return max;\n  }\n  runAll(methodName) {\n    this.animations.forEach((controls) => controls[methodName]());\n  }\n  play() {\n    this.runAll(\"play\");\n  }\n  pause() {\n    this.runAll(\"pause\");\n  }\n  stop() {\n    this.runAll(\"stop\");\n  }\n  cancel() {\n    this.runAll(\"cancel\");\n  }\n  complete() {\n    this.runAll(\"complete\");\n  }\n};\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs\nfunction isDOMKeyframes(keyframes2) {\n  return typeof keyframes2 === \"object\" && !Array.isArray(keyframes2);\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs\nfunction createVisualElement(element) {\n  const options = {\n    presenceContext: null,\n    props: {},\n    visualState: {\n      renderState: {\n        transform: {},\n        transformOrigin: {},\n        style: {},\n        vars: {},\n        attrs: {}\n      },\n      latestValues: {}\n    }\n  };\n  const node = isSVGElement(element) ? new SVGVisualElement(options, {\n    enableHardwareAcceleration: false\n  }) : new HTMLVisualElement(options, {\n    enableHardwareAcceleration: true\n  });\n  node.mount(element);\n  visualElementStore.set(element, node);\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/create-generator-easing.mjs\nfunction createGeneratorEasing(options, scale2 = 100) {\n  const generator = spring({ keyframes: [0, scale2], ...options });\n  const duration = Math.min(calcGeneratorDuration(generator), maxGeneratorDuration);\n  return {\n    type: \"keyframes\",\n    ease: (progress2) => generator.next(duration * progress2).value / scale2,\n    duration: millisecondsToSeconds(duration)\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs\nfunction calcNextTime(current, next, prev, labels) {\n  var _a;\n  if (typeof next === \"number\") {\n    return next;\n  } else if (next.startsWith(\"-\") || next.startsWith(\"+\")) {\n    return Math.max(0, current + parseFloat(next));\n  } else if (next === \"<\") {\n    return prev;\n  } else {\n    return (_a = labels.get(next)) !== null && _a !== void 0 ? _a : current;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs\nfunction getEasingForSegment(easing, i) {\n  return isEasingArray(easing) ? easing[wrap(0, easing.length, i)] : easing;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs\nfunction eraseKeyframes(sequence, startTime, endTime) {\n  for (let i = 0; i < sequence.length; i++) {\n    const keyframe = sequence[i];\n    if (keyframe.at > startTime && keyframe.at < endTime) {\n      removeItem(sequence, keyframe);\n      i--;\n    }\n  }\n}\nfunction addKeyframes(sequence, keyframes2, easing, offset, startTime, endTime) {\n  eraseKeyframes(sequence, startTime, endTime);\n  for (let i = 0; i < keyframes2.length; i++) {\n    sequence.push({\n      value: keyframes2[i],\n      at: mix(startTime, endTime, offset[i]),\n      easing: getEasingForSegment(easing, i)\n    });\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs\nfunction compareByTime(a, b) {\n  if (a.at === b.at) {\n    if (a.value === null)\n      return 1;\n    if (b.value === null)\n      return -1;\n    return 0;\n  } else {\n    return a.at - b.at;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/sequence/create.mjs\nvar defaultSegmentEasing = \"easeInOut\";\nfunction createAnimationsFromSequence(sequence, { defaultTransition = {}, ...sequenceTransition } = {}, scope) {\n  const defaultDuration = defaultTransition.duration || 0.3;\n  const animationDefinitions = /* @__PURE__ */ new Map();\n  const sequences = /* @__PURE__ */ new Map();\n  const elementCache = {};\n  const timeLabels = /* @__PURE__ */ new Map();\n  let prevTime = 0;\n  let currentTime = 0;\n  let totalDuration = 0;\n  for (let i = 0; i < sequence.length; i++) {\n    const segment = sequence[i];\n    if (typeof segment === \"string\") {\n      timeLabels.set(segment, currentTime);\n      continue;\n    } else if (!Array.isArray(segment)) {\n      timeLabels.set(segment.name, calcNextTime(currentTime, segment.at, prevTime, timeLabels));\n      continue;\n    }\n    let [subject, keyframes2, transition = {}] = segment;\n    if (transition.at !== void 0) {\n      currentTime = calcNextTime(currentTime, transition.at, prevTime, timeLabels);\n    }\n    let maxDuration3 = 0;\n    const resolveValueSequence = (valueKeyframes, valueTransition, valueSequence, elementIndex = 0, numElements = 0) => {\n      const valueKeyframesAsList = keyframesAsList(valueKeyframes);\n      const { delay: delay2 = 0, times = defaultOffset(valueKeyframesAsList), type = \"keyframes\", ...remainingTransition } = valueTransition;\n      let { ease: ease2 = defaultTransition.ease || \"easeOut\", duration } = valueTransition;\n      const calculatedDelay = typeof delay2 === \"function\" ? delay2(elementIndex, numElements) : delay2;\n      const numKeyframes = valueKeyframesAsList.length;\n      if (numKeyframes <= 2 && type === \"spring\") {\n        let absoluteDelta = 100;\n        if (numKeyframes === 2 && isNumberKeyframesArray(valueKeyframesAsList)) {\n          const delta = valueKeyframesAsList[1] - valueKeyframesAsList[0];\n          absoluteDelta = Math.abs(delta);\n        }\n        const springTransition = { ...remainingTransition };\n        if (duration !== void 0) {\n          springTransition.duration = secondsToMilliseconds(duration);\n        }\n        const springEasing = createGeneratorEasing(springTransition, absoluteDelta);\n        ease2 = springEasing.ease;\n        duration = springEasing.duration;\n      }\n      duration !== null && duration !== void 0 ? duration : duration = defaultDuration;\n      const startTime = currentTime + calculatedDelay;\n      const targetTime = startTime + duration;\n      if (times.length === 1 && times[0] === 0) {\n        times[1] = 1;\n      }\n      const remainder = times.length - valueKeyframesAsList.length;\n      remainder > 0 && fillOffset(times, remainder);\n      valueKeyframesAsList.length === 1 && valueKeyframesAsList.unshift(null);\n      addKeyframes(valueSequence, valueKeyframesAsList, ease2, times, startTime, targetTime);\n      maxDuration3 = Math.max(calculatedDelay + duration, maxDuration3);\n      totalDuration = Math.max(targetTime, totalDuration);\n    };\n    if (isMotionValue(subject)) {\n      const subjectSequence = getSubjectSequence(subject, sequences);\n      resolveValueSequence(keyframes2, transition, getValueSequence(\"default\", subjectSequence));\n    } else {\n      const elements = resolveElements(subject, scope, elementCache);\n      const numElements = elements.length;\n      for (let elementIndex = 0; elementIndex < numElements; elementIndex++) {\n        keyframes2 = keyframes2;\n        transition = transition;\n        const element = elements[elementIndex];\n        const subjectSequence = getSubjectSequence(element, sequences);\n        for (const key in keyframes2) {\n          resolveValueSequence(keyframes2[key], getValueTransition2(transition, key), getValueSequence(key, subjectSequence), elementIndex, numElements);\n        }\n      }\n      prevTime = currentTime;\n      currentTime += maxDuration3;\n    }\n  }\n  sequences.forEach((valueSequences, element) => {\n    for (const key in valueSequences) {\n      const valueSequence = valueSequences[key];\n      valueSequence.sort(compareByTime);\n      const keyframes2 = [];\n      const valueOffset = [];\n      const valueEasing = [];\n      for (let i = 0; i < valueSequence.length; i++) {\n        const { at, value, easing } = valueSequence[i];\n        keyframes2.push(value);\n        valueOffset.push(progress(0, totalDuration, at));\n        valueEasing.push(easing || \"easeOut\");\n      }\n      if (valueOffset[0] !== 0) {\n        valueOffset.unshift(0);\n        keyframes2.unshift(keyframes2[0]);\n        valueEasing.unshift(defaultSegmentEasing);\n      }\n      if (valueOffset[valueOffset.length - 1] !== 1) {\n        valueOffset.push(1);\n        keyframes2.push(null);\n      }\n      if (!animationDefinitions.has(element)) {\n        animationDefinitions.set(element, {\n          keyframes: {},\n          transition: {}\n        });\n      }\n      const definition = animationDefinitions.get(element);\n      definition.keyframes[key] = keyframes2;\n      definition.transition[key] = {\n        ...defaultTransition,\n        duration: totalDuration,\n        ease: valueEasing,\n        times: valueOffset,\n        ...sequenceTransition\n      };\n    }\n  });\n  return animationDefinitions;\n}\nfunction getSubjectSequence(subject, sequences) {\n  !sequences.has(subject) && sequences.set(subject, {});\n  return sequences.get(subject);\n}\nfunction getValueSequence(name, sequences) {\n  if (!sequences[name])\n    sequences[name] = [];\n  return sequences[name];\n}\nfunction keyframesAsList(keyframes2) {\n  return Array.isArray(keyframes2) ? keyframes2 : [keyframes2];\n}\nfunction getValueTransition2(transition, key) {\n  return transition[key] ? { ...transition, ...transition[key] } : { ...transition };\n}\nvar isNumber = (keyframe) => typeof keyframe === \"number\";\nvar isNumberKeyframesArray = (keyframes2) => keyframes2.every(isNumber);\n\n// ../../../node_modules/framer-motion/dist/es/animation/animate.mjs\nfunction animateElements(elementOrSelector, keyframes2, options, scope) {\n  const elements = resolveElements(elementOrSelector, scope);\n  const numElements = elements.length;\n  invariant(Boolean(numElements), \"No valid element provided.\");\n  const animations2 = [];\n  for (let i = 0; i < numElements; i++) {\n    const element = elements[i];\n    if (!visualElementStore.has(element)) {\n      createVisualElement(element);\n    }\n    const visualElement = visualElementStore.get(element);\n    const transition = { ...options };\n    if (typeof transition.delay === \"function\") {\n      transition.delay = transition.delay(i, numElements);\n    }\n    animations2.push(...animateTarget(visualElement, { ...keyframes2, transition }, {}));\n  }\n  return new GroupPlaybackControls(animations2);\n}\nvar isSequence = (value) => Array.isArray(value) && Array.isArray(value[0]);\nfunction animateSequence(sequence, options, scope) {\n  const animations2 = [];\n  const animationDefinitions = createAnimationsFromSequence(sequence, options, scope);\n  animationDefinitions.forEach(({ keyframes: keyframes2, transition }, subject) => {\n    let animation;\n    if (isMotionValue(subject)) {\n      animation = animateSingleValue(subject, keyframes2.default, transition.default);\n    } else {\n      animation = animateElements(subject, keyframes2, transition);\n    }\n    animations2.push(animation);\n  });\n  return new GroupPlaybackControls(animations2);\n}\nvar createScopedAnimate = (scope) => {\n  function scopedAnimate(valueOrElementOrSequence, keyframes2, options) {\n    let animation;\n    if (isSequence(valueOrElementOrSequence)) {\n      animation = animateSequence(valueOrElementOrSequence, keyframes2, scope);\n    } else if (isDOMKeyframes(keyframes2)) {\n      animation = animateElements(valueOrElementOrSequence, keyframes2, options, scope);\n    } else {\n      animation = animateSingleValue(valueOrElementOrSequence, keyframes2, options);\n    }\n    if (scope) {\n      scope.animations.push(animation);\n    }\n    return animation;\n  }\n  return scopedAnimate;\n};\nvar animate = createScopedAnimate();\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animate.mjs\nfunction useAnimate() {\n  const scope = useConstant(() => ({\n    current: null,\n    animations: []\n  }));\n  const animate2 = useConstant(() => createScopedAnimate(scope));\n  useUnmountEffect(() => {\n    scope.animations.forEach((animation) => animation.stop());\n  });\n  return [scope, animate2];\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs\nfunction useAnimationControls() {\n  const controls = useConstant(animationControls);\n  useIsomorphicLayoutEffect(controls.mount, []);\n  return controls;\n}\nvar useAnimation = useAnimationControls;\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-cycle.mjs\nimport { useRef as useRef12, useState as useState5, useCallback as useCallback3 } from \"react\";\nfunction useCycle(...items) {\n  const index = useRef12(0);\n  const [item, setItem] = useState5(items[index.current]);\n  const runCycle = useCallback3(\n    (next) => {\n      index.current = typeof next !== \"number\" ? wrap(0, items.length, index.current + 1) : next;\n      setItem(items[index.current]);\n    },\n    // The array will change on each call, but by putting items.length at\n    // the front of this array, we guarantee the dependency comparison will match up\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [items.length, ...items]\n  );\n  return [item, runCycle];\n}\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs\nvar thresholds = {\n  some: 0,\n  all: 1\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"some\" } = {}) {\n  const elements = resolveElements(elementOrSelector);\n  const activeIntersections = /* @__PURE__ */ new WeakMap();\n  const onIntersectionChange = (entries) => {\n    entries.forEach((entry) => {\n      const onEnd = activeIntersections.get(entry.target);\n      if (entry.isIntersecting === Boolean(onEnd))\n        return;\n      if (entry.isIntersecting) {\n        const newOnEnd = onStart(entry);\n        if (typeof newOnEnd === \"function\") {\n          activeIntersections.set(entry.target, newOnEnd);\n        } else {\n          observer2.unobserve(entry.target);\n        }\n      } else if (onEnd) {\n        onEnd(entry);\n        activeIntersections.delete(entry.target);\n      }\n    });\n  };\n  const observer2 = new IntersectionObserver(onIntersectionChange, {\n    root,\n    rootMargin,\n    threshold: typeof amount === \"number\" ? amount : thresholds[amount]\n  });\n  elements.forEach((element) => observer2.observe(element));\n  return () => observer2.disconnect();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-in-view.mjs\nimport { useState as useState6, useEffect as useEffect12 } from \"react\";\nfunction useInView(ref, { root, margin, amount, once = false } = {}) {\n  const [isInView, setInView] = useState6(false);\n  useEffect12(() => {\n    if (!ref.current || once && isInView)\n      return;\n    const onEnter = () => {\n      setInView(true);\n      return once ? void 0 : () => setInView(false);\n    };\n    const options = {\n      root: root && root.current || void 0,\n      margin,\n      amount\n    };\n    return inView(ref.current, onEnter, options);\n  }, [root, ref, margin, once]);\n  return isInView;\n}\n\n// ../../../node_modules/framer-motion/dist/es/gestures/drag/use-drag-controls.mjs\nvar DragControls = class {\n  constructor() {\n    this.componentControls = /* @__PURE__ */ new Set();\n  }\n  /**\n   * Subscribe a component's internal `VisualElementDragControls` to the user-facing API.\n   *\n   * @internal\n   */\n  subscribe(controls) {\n    this.componentControls.add(controls);\n    return () => this.componentControls.delete(controls);\n  }\n  /**\n   * Start a drag gesture on every `motion` component that has this set of drag controls\n   * passed into it via the `dragControls` prop.\n   *\n   * ```jsx\n   * dragControls.start(e, {\n   *   snapToCursor: true\n   * })\n   * ```\n   *\n   * @param event - PointerEvent\n   * @param options - Options\n   *\n   * @public\n   */\n  start(event, options) {\n    this.componentControls.forEach((controls) => {\n      controls.start(event.nativeEvent || event, options);\n    });\n  }\n};\nvar createDragControls = () => new DragControls();\nfunction useDragControls() {\n  return useConstant(createDragControls);\n}\n\n// ../../../node_modules/framer-motion/dist/es/events/use-dom-event.mjs\nimport { useEffect as useEffect13 } from \"react\";\nfunction useDomEvent(ref, eventName, handler, options) {\n  useEffect13(() => {\n    const element = ref.current;\n    if (handler && element) {\n      return addDomEvent(element, eventName, handler, options);\n    }\n  }, [ref, eventName, handler, options]);\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/is-motion-component.mjs\nfunction isMotionComponent(component) {\n  return component !== null && typeof component === \"object\" && motionComponentSymbol in component;\n}\n\n// ../../../node_modules/framer-motion/dist/es/motion/utils/unwrap-motion-component.mjs\nfunction unwrapMotionComponent(component) {\n  if (isMotionComponent(component)) {\n    return component[motionComponentSymbol];\n  }\n  return void 0;\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-instant-layout-transition.mjs\nfunction useInstantLayoutTransition() {\n  return startTransition;\n}\nfunction startTransition(callback) {\n  if (!rootProjectionNode.current)\n    return;\n  rootProjectionNode.current.isUpdating = false;\n  rootProjectionNode.current.blockUpdate();\n  callback && callback();\n}\n\n// ../../../node_modules/framer-motion/dist/es/utils/use-instant-transition.mjs\nimport { useRef as useRef13, useEffect as useEffect14 } from \"react\";\nfunction useInstantTransition() {\n  const [forceUpdate, forcedRenderCount] = useForceUpdate();\n  const startInstantLayoutTransition = useInstantLayoutTransition();\n  const unlockOnFrameRef = useRef13();\n  useEffect14(() => {\n    frame.postRender(() => frame.postRender(() => {\n      if (forcedRenderCount !== unlockOnFrameRef.current)\n        return;\n      instantAnimationState.current = false;\n    }));\n  }, [forcedRenderCount]);\n  return (callback) => {\n    startInstantLayoutTransition(() => {\n      instantAnimationState.current = true;\n      forceUpdate();\n      callback();\n      unlockOnFrameRef.current = forcedRenderCount + 1;\n    });\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/projection/use-reset-projection.mjs\nimport * as React10 from \"react\";\nfunction useResetProjection() {\n  const reset = React10.useCallback(() => {\n    const root = rootProjectionNode.current;\n    if (!root)\n      return;\n    root.resetTree();\n  }, []);\n  return reset;\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store-id.mjs\nvar appearStoreId = (id4, value) => `${id4}: ${value}`;\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/store.mjs\nvar appearAnimationStore = /* @__PURE__ */ new Map();\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/handoff.mjs\nfunction handoffOptimizedAppearAnimation(id4, name, _value, frame2) {\n  const storeId = appearStoreId(id4, transformProps.has(name) ? \"transform\" : name);\n  const appearAnimation = appearAnimationStore.get(storeId);\n  if (!appearAnimation)\n    return 0;\n  const { animation, startTime } = appearAnimation;\n  const cancelOptimisedAnimation = () => {\n    appearAnimationStore.delete(storeId);\n    try {\n      animation.cancel();\n    } catch (e) {\n    }\n  };\n  if (startTime !== null) {\n    frame2.render(cancelOptimisedAnimation);\n    return performance.now() - startTime || 0;\n  } else {\n    cancelOptimisedAnimation();\n    return 0;\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/optimized-appear/start.mjs\nfunction startOptimizedAppearAnimation(element, name, keyframes2, options, onReady) {\n  const id4 = element.dataset[optimizedAppearDataId];\n  if (!id4)\n    return;\n  window.HandoffAppearAnimations = handoffOptimizedAppearAnimation;\n  const storeId = appearStoreId(id4, name);\n  const readyAnimation = animateStyle(\n    element,\n    name,\n    [keyframes2[0], keyframes2[0]],\n    /**\n     * 10 secs is basically just a super-safe duration to give Chrome\n     * long enough to get the animation ready.\n     */\n    { duration: 1e4, ease: \"linear\" }\n  );\n  appearAnimationStore.set(storeId, {\n    animation: readyAnimation,\n    startTime: null\n  });\n  const startAnimation = () => {\n    readyAnimation.cancel();\n    const appearAnimation = animateStyle(element, name, keyframes2, options);\n    if (document.timeline) {\n      appearAnimation.startTime = document.timeline.currentTime;\n    }\n    appearAnimationStore.set(storeId, {\n      animation: appearAnimation,\n      startTime: performance.now()\n    });\n    if (onReady)\n      onReady(appearAnimation);\n  };\n  if (readyAnimation.ready) {\n    readyAnimation.ready.then(startAnimation).catch(noop);\n  } else {\n    startAnimation();\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/hooks/use-animated-state.mjs\nimport { useState as useState7, useEffect as useEffect15 } from \"react\";\nvar createObject = () => ({});\nvar StateVisualElement = class extends VisualElement {\n  build() {\n  }\n  measureInstanceViewportBox() {\n    return createBox();\n  }\n  resetTransform() {\n  }\n  restoreTransform() {\n  }\n  removeValueFromRenderState() {\n  }\n  renderInstance() {\n  }\n  scrapeMotionValuesFromProps() {\n    return createObject();\n  }\n  getBaseTargetFromProps() {\n    return void 0;\n  }\n  readValueFromInstance(_state, key, options) {\n    return options.initialState[key] || 0;\n  }\n  sortInstanceNodePosition() {\n    return 0;\n  }\n  makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }) {\n    const origin = getOrigin(target, transition || {}, this);\n    checkTargetForNewValues(this, target, origin);\n    return { transition, transitionEnd, ...target };\n  }\n};\nvar useVisualState = makeUseVisualState({\n  scrapeMotionValuesFromProps: createObject,\n  createRenderState: createObject\n});\nfunction useAnimatedState(initialState) {\n  const [animationState, setAnimationState] = useState7(initialState);\n  const visualState = useVisualState({}, false);\n  const element = useConstant(() => {\n    return new StateVisualElement({ props: {}, visualState, presenceContext: null }, { initialState });\n  });\n  useEffect15(() => {\n    element.mount({});\n    return () => element.unmount();\n  }, [element]);\n  useEffect15(() => {\n    element.update({\n      onUpdate: (v) => {\n        setAnimationState({ ...v });\n      }\n    }, null);\n  }, [setAnimationState, element]);\n  const startAnimation = useConstant(() => (animationDefinition) => {\n    return animateVisualElement(element, animationDefinition);\n  });\n  return [animationState, startAnimation];\n}\n\n// ../../../node_modules/framer-motion/dist/es/value/use-inverted-scale.mjs\nimport { useContext as useContext15 } from \"react\";\nvar maxScale = 1e5;\nvar invertScale = (scale2) => scale2 > 1e-3 ? 1 / scale2 : maxScale;\nvar hasWarned = false;\nfunction useInvertedScale(scale2) {\n  let parentScaleX = useMotionValue(1);\n  let parentScaleY = useMotionValue(1);\n  const { visualElement } = useContext15(MotionContext);\n  invariant(!!(scale2 || visualElement), \"If no scale values are provided, useInvertedScale must be used within a child of another motion component.\");\n  warning(hasWarned, \"useInvertedScale is deprecated and will be removed in 3.0. Use the layout prop instead.\");\n  hasWarned = true;\n  if (scale2) {\n    parentScaleX = scale2.scaleX || parentScaleX;\n    parentScaleY = scale2.scaleY || parentScaleY;\n  } else if (visualElement) {\n    parentScaleX = visualElement.getValue(\"scaleX\", 1);\n    parentScaleY = visualElement.getValue(\"scaleY\", 1);\n  }\n  const scaleX = useTransform(parentScaleX, invertScale);\n  const scaleY = useTransform(parentScaleY, invertScale);\n  return { scaleX, scaleY };\n}\n\n// ../../../node_modules/framer-motion/dist/es/components/AnimateSharedLayout.mjs\nimport * as React11 from \"react\";\nvar id3 = 0;\nvar AnimateSharedLayout = ({ children }) => {\n  React11.useEffect(() => {\n    invariant(false, \"AnimateSharedLayout is deprecated: https://www.framer.com/docs/guide-upgrade/##shared-layout-animations\");\n  }, []);\n  return React11.createElement(LayoutGroup, { id: useConstant(() => `asl-${id3++}`) }, children);\n};\n\n// ../../../node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs\nfunction scrollTimelineFallback({ source, axis = \"y\" }) {\n  const currentTime = { value: 0 };\n  const cancel = scrollInfo((info) => {\n    currentTime.value = info[axis].progress * 100;\n  }, { container: source, axis });\n  return { currentTime, cancel };\n}\nvar timelineCache = /* @__PURE__ */ new Map();\nfunction getTimeline({ source = document.documentElement, axis = \"y\" } = {}) {\n  if (!timelineCache.has(source)) {\n    timelineCache.set(source, {});\n  }\n  const elementCache = timelineCache.get(source);\n  if (!elementCache[axis]) {\n    elementCache[axis] = supportsScrollTimeline() ? new ScrollTimeline({ source, axis }) : scrollTimelineFallback({ source, axis });\n  }\n  return elementCache[axis];\n}\nfunction scroll(onScroll, options) {\n  const timeline = getTimeline(options);\n  if (typeof onScroll === \"function\") {\n    return observeTimeline(onScroll, timeline);\n  } else {\n    return onScroll.attachTimeline(timeline);\n  }\n}\n\n// ../../../node_modules/framer-motion/dist/es/animation/utils/stagger.mjs\nfunction getOriginIndex(from, total) {\n  if (from === \"first\") {\n    return 0;\n  } else {\n    const lastIndex = total - 1;\n    return from === \"last\" ? lastIndex : lastIndex / 2;\n  }\n}\nfunction stagger(duration = 0.1, { startDelay = 0, from = 0, ease: ease2 } = {}) {\n  return (i, total) => {\n    const fromIndex = typeof from === \"number\" ? from : getOriginIndex(from, total);\n    const distance2 = Math.abs(fromIndex - i);\n    let delay2 = duration * distance2;\n    if (ease2) {\n      const maxDelay = total * duration;\n      const easingFunction = easingDefinitionToFunction(ease2);\n      delay2 = easingFunction(delay2 / maxDelay) * maxDelay;\n    }\n    return startDelay + delay2;\n  };\n}\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/index-legacy.mjs\nvar sync = frame;\nvar cancelSync = stepsOrder.reduce((acc, key) => {\n  acc[key] = (process2) => cancelFrame(process2);\n  return acc;\n}, {});\n\nexport {\n  __commonJS,\n  __toESM,\n  __privateGet,\n  __privateAdd,\n  __privateSet,\n  MotionConfigContext,\n  MotionContext,\n  PresenceContext,\n  isBrowser,\n  useIsomorphicLayoutEffect,\n  LayoutGroupContext,\n  SwitchLayoutGroupContext,\n  createMotionComponent,\n  addScaleCorrector,\n  isMotionValue,\n  buildTransform,\n  clamp,\n  px,\n  isValidMotionProp,\n  filterProps,\n  resolveMotionValue,\n  makeUseVisualState,\n  frame,\n  cancelFrame,\n  frameData,\n  steps,\n  addPointerInfo,\n  addPointerEvent,\n  pipe,\n  isDragActive,\n  optimizedAppearDataAttribute,\n  warning,\n  invariant,\n  cubicBezier,\n  easeIn,\n  easeOut,\n  easeInOut,\n  mirrorEasing,\n  reverseEasing,\n  circIn,\n  circOut,\n  circInOut,\n  backOut,\n  backIn,\n  backInOut,\n  anticipate,\n  color,\n  mix,\n  complex,\n  progress,\n  interpolate,\n  spring,\n  animateValue,\n  MotionValue,\n  motionValue,\n  checkTargetForNewValues,\n  animateVisualElement,\n  animations,\n  distance,\n  distance2D,\n  calcLength,\n  createBox,\n  usePresence,\n  useIsPresent,\n  FlatTree,\n  delay,\n  visualElementStore,\n  VisualElement,\n  motion,\n  createDomMotionComponent,\n  m,\n  useForceUpdate,\n  useUnmountEffect,\n  AnimatePresence,\n  MotionConfig,\n  LazyMotion,\n  DeprecatedLayoutGroupContext,\n  LayoutGroup,\n  useMotionValue,\n  transform,\n  useTransform,\n  Reorder,\n  domAnimation,\n  domMax,\n  useMotionTemplate,\n  useSpring,\n  useMotionValueEvent,\n  useVelocity,\n  scrollInfo,\n  useScroll,\n  useElementScroll,\n  useViewportScroll,\n  useAnimationFrame,\n  useTime,\n  useWillChange,\n  useReducedMotion,\n  useReducedMotionConfig,\n  animationControls,\n  wrap,\n  createScopedAnimate,\n  animate,\n  useAnimate,\n  useAnimationControls,\n  useAnimation,\n  useCycle,\n  inView,\n  useInView,\n  DragControls,\n  useDragControls,\n  useDomEvent,\n  isMotionComponent,\n  unwrapMotionComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useResetProjection,\n  startOptimizedAppearAnimation,\n  useAnimatedState,\n  useInvertedScale,\n  AnimateSharedLayout,\n  scroll,\n  stagger,\n  sync,\n  cancelSync\n};\n//# sourceMappingURL=chunk-ANWZDK7P.js.map\n", "import {\n  AnimatePresence,\n  DeprecatedLayoutGroupContext,\n  DragControls,\n  FlatTree,\n  LayoutGroup,\n  LazyMotion,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionValue,\n  PresenceContext,\n  Reorder,\n  SwitchLayoutGroupContext,\n  VisualElement,\n  __commonJS,\n  __privateAdd,\n  __privateGet,\n  __privateSet,\n  __toESM,\n  addPointerEvent,\n  addPointerInfo,\n  addScaleCorrector,\n  animate,\n  animateValue,\n  animateVisualElement,\n  animationControls,\n  animations,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  buildTransform,\n  calcLength,\n  cancelFrame,\n  cancelSync,\n  checkTargetForNewValues,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  color,\n  complex,\n  createBox,\n  createDomMotionComponent,\n  createMotionComponent,\n  createScopedAnimate,\n  cubicBezier,\n  delay,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  easeIn,\n  easeInOut,\n  easeOut,\n  filterProps,\n  frame,\n  frameData,\n  inView,\n  interpolate,\n  invariant,\n  isBrowser,\n  isDragActive,\n  isMotionComponent,\n  isMotionValue,\n  isValidMotionProp,\n  m,\n  makeUseVisualState,\n  mirrorEasing,\n  mix,\n  motion,\n  motionValue,\n  optimizedAppearDataAttribute,\n  pipe,\n  progress,\n  px,\n  resolveMotionValue,\n  reverseEasing,\n  scroll,\n  scrollInfo,\n  spring,\n  stagger,\n  startOptimizedAppearAnimation,\n  steps,\n  sync,\n  transform,\n  unwrapMotionComponent,\n  useAnimate,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useCycle,\n  useDomEvent,\n  useDragControls,\n  useElementScroll,\n  useForceUpdate,\n  useInView,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsPresent,\n  useIsomorphicLayoutEffect,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  usePresence,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useResetProjection,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  visualElementStore,\n  warning,\n  wrap\n} from \"./chunk-ANWZDK7P.js\";\n\n// ../../../node_modules/hsluv/hsluv.js\nvar require_hsluv = __commonJS({\n  \"../../../node_modules/hsluv/hsluv.js\"(exports, module) {\n    var hsluv = hsluv || {};\n    hsluv.Geometry = function() {\n    };\n    hsluv.Geometry.intersectLineLine = function(a, b) {\n      var x = (a.intercept - b.intercept) / (b.slope - a.slope);\n      var y = a.slope * x + a.intercept;\n      return { x, y };\n    };\n    hsluv.Geometry.distanceFromOrigin = function(point) {\n      return Math.sqrt(Math.pow(point.x, 2) + Math.pow(point.y, 2));\n    };\n    hsluv.Geometry.distanceLineFromOrigin = function(line) {\n      return Math.abs(line.intercept) / Math.sqrt(Math.pow(line.slope, 2) + 1);\n    };\n    hsluv.Geometry.perpendicularThroughPoint = function(line, point) {\n      var slope = -1 / line.slope;\n      var intercept = point.y - slope * point.x;\n      return { slope, intercept };\n    };\n    hsluv.Geometry.angleFromOrigin = function(point) {\n      return Math.atan2(point.y, point.x);\n    };\n    hsluv.Geometry.normalizeAngle = function(angle) {\n      var m2 = 2 * Math.PI;\n      return (angle % m2 + m2) % m2;\n    };\n    hsluv.Geometry.lengthOfRayUntilIntersect = function(theta, line) {\n      return line.intercept / (Math.sin(theta) - line.slope * Math.cos(theta));\n    };\n    hsluv.Hsluv = function() {\n    };\n    hsluv.Hsluv.getBounds = function(L) {\n      var result = [];\n      var sub1 = Math.pow(L + 16, 3) / 1560896;\n      var sub2 = sub1 > hsluv.Hsluv.epsilon ? sub1 : L / hsluv.Hsluv.kappa;\n      var _g = 0;\n      while (_g < 3) {\n        var c = _g++;\n        var m1 = hsluv.Hsluv.m[c][0];\n        var m2 = hsluv.Hsluv.m[c][1];\n        var m3 = hsluv.Hsluv.m[c][2];\n        var _g1 = 0;\n        while (_g1 < 2) {\n          var t = _g1++;\n          var top1 = (284517 * m1 - 94839 * m3) * sub2;\n          var top2 = (838422 * m3 + 769860 * m2 + 731718 * m1) * L * sub2 - 769860 * t * L;\n          var bottom = (632260 * m3 - 126452 * m2) * sub2 + 126452 * t;\n          result.push({ slope: top1 / bottom, intercept: top2 / bottom });\n        }\n      }\n      return result;\n    };\n    hsluv.Hsluv.maxSafeChromaForL = function(L) {\n      var bounds = hsluv.Hsluv.getBounds(L);\n      var min = Infinity;\n      var _g = 0;\n      while (_g < bounds.length) {\n        var bound = bounds[_g];\n        ++_g;\n        var length = hsluv.Geometry.distanceLineFromOrigin(bound);\n        min = Math.min(min, length);\n      }\n      return min;\n    };\n    hsluv.Hsluv.maxChromaForLH = function(L, H) {\n      var hrad = H / 360 * Math.PI * 2;\n      var bounds = hsluv.Hsluv.getBounds(L);\n      var min = Infinity;\n      var _g = 0;\n      while (_g < bounds.length) {\n        var bound = bounds[_g];\n        ++_g;\n        var length = hsluv.Geometry.lengthOfRayUntilIntersect(hrad, bound);\n        if (length >= 0) {\n          min = Math.min(min, length);\n        }\n      }\n      return min;\n    };\n    hsluv.Hsluv.dotProduct = function(a, b) {\n      var sum = 0;\n      var _g1 = 0;\n      var _g = a.length;\n      while (_g1 < _g) {\n        var i = _g1++;\n        sum += a[i] * b[i];\n      }\n      return sum;\n    };\n    hsluv.Hsluv.fromLinear = function(c) {\n      if (c <= 31308e-7) {\n        return 12.92 * c;\n      } else {\n        return 1.055 * Math.pow(c, 0.4166666666666667) - 0.055;\n      }\n    };\n    hsluv.Hsluv.toLinear = function(c) {\n      if (c > 0.04045) {\n        return Math.pow((c + 0.055) / 1.055, 2.4);\n      } else {\n        return c / 12.92;\n      }\n    };\n    hsluv.Hsluv.xyzToRgb = function(tuple) {\n      return [hsluv.Hsluv.fromLinear(hsluv.Hsluv.dotProduct(hsluv.Hsluv.m[0], tuple)), hsluv.Hsluv.fromLinear(hsluv.Hsluv.dotProduct(hsluv.Hsluv.m[1], tuple)), hsluv.Hsluv.fromLinear(hsluv.Hsluv.dotProduct(hsluv.Hsluv.m[2], tuple))];\n    };\n    hsluv.Hsluv.rgbToXyz = function(tuple) {\n      var rgbl = [hsluv.Hsluv.toLinear(tuple[0]), hsluv.Hsluv.toLinear(tuple[1]), hsluv.Hsluv.toLinear(tuple[2])];\n      return [hsluv.Hsluv.dotProduct(hsluv.Hsluv.minv[0], rgbl), hsluv.Hsluv.dotProduct(hsluv.Hsluv.minv[1], rgbl), hsluv.Hsluv.dotProduct(hsluv.Hsluv.minv[2], rgbl)];\n    };\n    hsluv.Hsluv.yToL = function(Y) {\n      if (Y <= hsluv.Hsluv.epsilon) {\n        return Y / hsluv.Hsluv.refY * hsluv.Hsluv.kappa;\n      } else {\n        return 116 * Math.pow(Y / hsluv.Hsluv.refY, 0.3333333333333333) - 16;\n      }\n    };\n    hsluv.Hsluv.lToY = function(L) {\n      if (L <= 8) {\n        return hsluv.Hsluv.refY * L / hsluv.Hsluv.kappa;\n      } else {\n        return hsluv.Hsluv.refY * Math.pow((L + 16) / 116, 3);\n      }\n    };\n    hsluv.Hsluv.xyzToLuv = function(tuple) {\n      var X = tuple[0];\n      var Y = tuple[1];\n      var Z = tuple[2];\n      var divider = X + 15 * Y + 3 * Z;\n      var varU = 4 * X;\n      var varV = 9 * Y;\n      if (divider != 0) {\n        varU /= divider;\n        varV /= divider;\n      } else {\n        varU = NaN;\n        varV = NaN;\n      }\n      var L = hsluv.Hsluv.yToL(Y);\n      if (L == 0) {\n        return [0, 0, 0];\n      }\n      var U = 13 * L * (varU - hsluv.Hsluv.refU);\n      var V = 13 * L * (varV - hsluv.Hsluv.refV);\n      return [L, U, V];\n    };\n    hsluv.Hsluv.luvToXyz = function(tuple) {\n      var L = tuple[0];\n      var U = tuple[1];\n      var V = tuple[2];\n      if (L == 0) {\n        return [0, 0, 0];\n      }\n      var varU = U / (13 * L) + hsluv.Hsluv.refU;\n      var varV = V / (13 * L) + hsluv.Hsluv.refV;\n      var Y = hsluv.Hsluv.lToY(L);\n      var X = 0 - 9 * Y * varU / ((varU - 4) * varV - varU * varV);\n      var Z = (9 * Y - 15 * varV * Y - varV * X) / (3 * varV);\n      return [X, Y, Z];\n    };\n    hsluv.Hsluv.luvToLch = function(tuple) {\n      var L = tuple[0];\n      var U = tuple[1];\n      var V = tuple[2];\n      var C = Math.sqrt(U * U + V * V);\n      var H;\n      if (C < 1e-8) {\n        H = 0;\n      } else {\n        var Hrad = Math.atan2(V, U);\n        H = Hrad * 180 / Math.PI;\n        if (H < 0) {\n          H = 360 + H;\n        }\n      }\n      return [L, C, H];\n    };\n    hsluv.Hsluv.lchToLuv = function(tuple) {\n      var L = tuple[0];\n      var C = tuple[1];\n      var H = tuple[2];\n      var Hrad = H / 360 * 2 * Math.PI;\n      var U = Math.cos(Hrad) * C;\n      var V = Math.sin(Hrad) * C;\n      return [L, U, V];\n    };\n    hsluv.Hsluv.hsluvToLch = function(tuple) {\n      var H = tuple[0];\n      var S = tuple[1];\n      var L = tuple[2];\n      if (L > 99.9999999) {\n        return [100, 0, H];\n      }\n      if (L < 1e-8) {\n        return [0, 0, H];\n      }\n      var max = hsluv.Hsluv.maxChromaForLH(L, H);\n      var C = max / 100 * S;\n      return [L, C, H];\n    };\n    hsluv.Hsluv.lchToHsluv = function(tuple) {\n      var L = tuple[0];\n      var C = tuple[1];\n      var H = tuple[2];\n      if (L > 99.9999999) {\n        return [H, 0, 100];\n      }\n      if (L < 1e-8) {\n        return [H, 0, 0];\n      }\n      var max = hsluv.Hsluv.maxChromaForLH(L, H);\n      var S = C / max * 100;\n      return [H, S, L];\n    };\n    hsluv.Hsluv.hpluvToLch = function(tuple) {\n      var H = tuple[0];\n      var S = tuple[1];\n      var L = tuple[2];\n      if (L > 99.9999999) {\n        return [100, 0, H];\n      }\n      if (L < 1e-8) {\n        return [0, 0, H];\n      }\n      var max = hsluv.Hsluv.maxSafeChromaForL(L);\n      var C = max / 100 * S;\n      return [L, C, H];\n    };\n    hsluv.Hsluv.lchToHpluv = function(tuple) {\n      var L = tuple[0];\n      var C = tuple[1];\n      var H = tuple[2];\n      if (L > 99.9999999) {\n        return [H, 0, 100];\n      }\n      if (L < 1e-8) {\n        return [H, 0, 0];\n      }\n      var max = hsluv.Hsluv.maxSafeChromaForL(L);\n      var S = C / max * 100;\n      return [H, S, L];\n    };\n    hsluv.Hsluv.rgbToHex = function(tuple) {\n      var h = \"#\";\n      var _g = 0;\n      while (_g < 3) {\n        var i = _g++;\n        var chan = tuple[i];\n        var c = Math.round(chan * 255);\n        var digit2 = c % 16;\n        var digit1 = (c - digit2) / 16 | 0;\n        h += hsluv.Hsluv.hexChars.charAt(digit1) + hsluv.Hsluv.hexChars.charAt(digit2);\n      }\n      return h;\n    };\n    hsluv.Hsluv.hexToRgb = function(hex) {\n      hex = hex.toLowerCase();\n      var ret = [];\n      var _g = 0;\n      while (_g < 3) {\n        var i = _g++;\n        var digit1 = hsluv.Hsluv.hexChars.indexOf(hex.charAt(i * 2 + 1));\n        var digit2 = hsluv.Hsluv.hexChars.indexOf(hex.charAt(i * 2 + 2));\n        var n = digit1 * 16 + digit2;\n        ret.push(n / 255);\n      }\n      return ret;\n    };\n    hsluv.Hsluv.lchToRgb = function(tuple) {\n      return hsluv.Hsluv.xyzToRgb(hsluv.Hsluv.luvToXyz(hsluv.Hsluv.lchToLuv(tuple)));\n    };\n    hsluv.Hsluv.rgbToLch = function(tuple) {\n      return hsluv.Hsluv.luvToLch(hsluv.Hsluv.xyzToLuv(hsluv.Hsluv.rgbToXyz(tuple)));\n    };\n    hsluv.Hsluv.hsluvToRgb = function(tuple) {\n      return hsluv.Hsluv.lchToRgb(hsluv.Hsluv.hsluvToLch(tuple));\n    };\n    hsluv.Hsluv.rgbToHsluv = function(tuple) {\n      return hsluv.Hsluv.lchToHsluv(hsluv.Hsluv.rgbToLch(tuple));\n    };\n    hsluv.Hsluv.hpluvToRgb = function(tuple) {\n      return hsluv.Hsluv.lchToRgb(hsluv.Hsluv.hpluvToLch(tuple));\n    };\n    hsluv.Hsluv.rgbToHpluv = function(tuple) {\n      return hsluv.Hsluv.lchToHpluv(hsluv.Hsluv.rgbToLch(tuple));\n    };\n    hsluv.Hsluv.hsluvToHex = function(tuple) {\n      return hsluv.Hsluv.rgbToHex(hsluv.Hsluv.hsluvToRgb(tuple));\n    };\n    hsluv.Hsluv.hpluvToHex = function(tuple) {\n      return hsluv.Hsluv.rgbToHex(hsluv.Hsluv.hpluvToRgb(tuple));\n    };\n    hsluv.Hsluv.hexToHsluv = function(s) {\n      return hsluv.Hsluv.rgbToHsluv(hsluv.Hsluv.hexToRgb(s));\n    };\n    hsluv.Hsluv.hexToHpluv = function(s) {\n      return hsluv.Hsluv.rgbToHpluv(hsluv.Hsluv.hexToRgb(s));\n    };\n    hsluv.Hsluv.m = [[3.240969941904521, -1.537383177570093, -0.498610760293], [-0.96924363628087, 1.87596750150772, 0.041555057407175], [0.055630079696993, -0.20397695888897, 1.056971514242878]];\n    hsluv.Hsluv.minv = [[0.41239079926595, 0.35758433938387, 0.18048078840183], [0.21263900587151, 0.71516867876775, 0.072192315360733], [0.019330818715591, 0.11919477979462, 0.95053215224966]];\n    hsluv.Hsluv.refY = 1;\n    hsluv.Hsluv.refU = 0.19783000664283;\n    hsluv.Hsluv.refV = 0.46831999493879;\n    hsluv.Hsluv.kappa = 903.2962962;\n    hsluv.Hsluv.epsilon = 0.0088564516;\n    hsluv.Hsluv.hexChars = \"0123456789abcdef\";\n    var root = {\n      \"hsluvToRgb\": hsluv.Hsluv.hsluvToRgb,\n      \"rgbToHsluv\": hsluv.Hsluv.rgbToHsluv,\n      \"hpluvToRgb\": hsluv.Hsluv.hpluvToRgb,\n      \"rgbToHpluv\": hsluv.Hsluv.rgbToHpluv,\n      \"hsluvToHex\": hsluv.Hsluv.hsluvToHex,\n      \"hexToHsluv\": hsluv.Hsluv.hexToHsluv,\n      \"hpluvToHex\": hsluv.Hsluv.hpluvToHex,\n      \"hexToHpluv\": hsluv.Hsluv.hexToHpluv,\n      \"lchToHpluv\": hsluv.Hsluv.lchToHpluv,\n      \"hpluvToLch\": hsluv.Hsluv.hpluvToLch,\n      \"lchToHsluv\": hsluv.Hsluv.lchToHsluv,\n      \"hsluvToLch\": hsluv.Hsluv.hsluvToLch,\n      \"lchToLuv\": hsluv.Hsluv.lchToLuv,\n      \"luvToLch\": hsluv.Hsluv.luvToLch,\n      \"xyzToLuv\": hsluv.Hsluv.xyzToLuv,\n      \"luvToXyz\": hsluv.Hsluv.luvToXyz,\n      \"xyzToRgb\": hsluv.Hsluv.xyzToRgb,\n      \"rgbToXyz\": hsluv.Hsluv.rgbToXyz,\n      \"lchToRgb\": hsluv.Hsluv.lchToRgb,\n      \"rgbToLch\": hsluv.Hsluv.rgbToLch\n    };\n    module.exports = root;\n  }\n});\n\n// ../../../node_modules/eventemitter3/index.js\nvar require_eventemitter3 = __commonJS({\n  \"../../../node_modules/eventemitter3/index.js\"(exports, module) {\n    \"use strict\";\n    var has = Object.prototype.hasOwnProperty;\n    var prefix2 = \"~\";\n    function Events() {\n    }\n    if (Object.create) {\n      Events.prototype = /* @__PURE__ */ Object.create(null);\n      if (!new Events().__proto__)\n        prefix2 = false;\n    }\n    function EE(fn, context, once) {\n      this.fn = fn;\n      this.context = context;\n      this.once = once || false;\n    }\n    function addListener(emitter, event, fn, context, once) {\n      if (typeof fn !== \"function\") {\n        throw new TypeError(\"The listener must be a function\");\n      }\n      var listener = new EE(fn, context || emitter, once), evt = prefix2 ? prefix2 + event : event;\n      if (!emitter._events[evt])\n        emitter._events[evt] = listener, emitter._eventsCount++;\n      else if (!emitter._events[evt].fn)\n        emitter._events[evt].push(listener);\n      else\n        emitter._events[evt] = [emitter._events[evt], listener];\n      return emitter;\n    }\n    function clearEvent(emitter, evt) {\n      if (--emitter._eventsCount === 0)\n        emitter._events = new Events();\n      else\n        delete emitter._events[evt];\n    }\n    function EventEmitter2() {\n      this._events = new Events();\n      this._eventsCount = 0;\n    }\n    EventEmitter2.prototype.eventNames = function eventNames() {\n      var names = [], events2, name;\n      if (this._eventsCount === 0)\n        return names;\n      for (name in events2 = this._events) {\n        if (has.call(events2, name))\n          names.push(prefix2 ? name.slice(1) : name);\n      }\n      if (Object.getOwnPropertySymbols) {\n        return names.concat(Object.getOwnPropertySymbols(events2));\n      }\n      return names;\n    };\n    EventEmitter2.prototype.listeners = function listeners(event) {\n      var evt = prefix2 ? prefix2 + event : event, handlers = this._events[evt];\n      if (!handlers)\n        return [];\n      if (handlers.fn)\n        return [handlers.fn];\n      for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n        ee[i] = handlers[i].fn;\n      }\n      return ee;\n    };\n    EventEmitter2.prototype.listenerCount = function listenerCount(event) {\n      var evt = prefix2 ? prefix2 + event : event, listeners = this._events[evt];\n      if (!listeners)\n        return 0;\n      if (listeners.fn)\n        return 1;\n      return listeners.length;\n    };\n    EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return false;\n      var listeners = this._events[evt], len = arguments.length, args, i;\n      if (listeners.fn) {\n        if (listeners.once)\n          this.removeListener(event, listeners.fn, void 0, true);\n        switch (len) {\n          case 1:\n            return listeners.fn.call(listeners.context), true;\n          case 2:\n            return listeners.fn.call(listeners.context, a1), true;\n          case 3:\n            return listeners.fn.call(listeners.context, a1, a2), true;\n          case 4:\n            return listeners.fn.call(listeners.context, a1, a2, a3), true;\n          case 5:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n          case 6:\n            return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n        }\n        for (i = 1, args = new Array(len - 1); i < len; i++) {\n          args[i - 1] = arguments[i];\n        }\n        listeners.fn.apply(listeners.context, args);\n      } else {\n        var length = listeners.length, j;\n        for (i = 0; i < length; i++) {\n          if (listeners[i].once)\n            this.removeListener(event, listeners[i].fn, void 0, true);\n          switch (len) {\n            case 1:\n              listeners[i].fn.call(listeners[i].context);\n              break;\n            case 2:\n              listeners[i].fn.call(listeners[i].context, a1);\n              break;\n            case 3:\n              listeners[i].fn.call(listeners[i].context, a1, a2);\n              break;\n            case 4:\n              listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n              break;\n            default:\n              if (!args)\n                for (j = 1, args = new Array(len - 1); j < len; j++) {\n                  args[j - 1] = arguments[j];\n                }\n              listeners[i].fn.apply(listeners[i].context, args);\n          }\n        }\n      }\n      return true;\n    };\n    EventEmitter2.prototype.on = function on(event, fn, context) {\n      return addListener(this, event, fn, context, false);\n    };\n    EventEmitter2.prototype.once = function once(event, fn, context) {\n      return addListener(this, event, fn, context, true);\n    };\n    EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {\n      var evt = prefix2 ? prefix2 + event : event;\n      if (!this._events[evt])\n        return this;\n      if (!fn) {\n        clearEvent(this, evt);\n        return this;\n      }\n      var listeners = this._events[evt];\n      if (listeners.fn) {\n        if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n          clearEvent(this, evt);\n        }\n      } else {\n        for (var i = 0, events2 = [], length = listeners.length; i < length; i++) {\n          if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n            events2.push(listeners[i]);\n          }\n        }\n        if (events2.length)\n          this._events[evt] = events2.length === 1 ? events2[0] : events2;\n        else\n          clearEvent(this, evt);\n      }\n      return this;\n    };\n    EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {\n      var evt;\n      if (event) {\n        evt = prefix2 ? prefix2 + event : event;\n        if (this._events[evt])\n          clearEvent(this, evt);\n      } else {\n        this._events = new Events();\n        this._eventsCount = 0;\n      }\n      return this;\n    };\n    EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;\n    EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;\n    EventEmitter2.prefixed = prefix2;\n    EventEmitter2.EventEmitter = EventEmitter2;\n    if (\"undefined\" !== typeof module) {\n      module.exports = EventEmitter2;\n    }\n  }\n});\n\n// ../../../node_modules/process/browser.js\nvar require_browser = __commonJS({\n  \"../../../node_modules/process/browser.js\"(exports, module) {\n    var process13 = module.exports = {};\n    var cachedSetTimeout;\n    var cachedClearTimeout;\n    function defaultSetTimout() {\n      throw new Error(\"setTimeout has not been defined\");\n    }\n    function defaultClearTimeout() {\n      throw new Error(\"clearTimeout has not been defined\");\n    }\n    (function() {\n      try {\n        if (typeof setTimeout === \"function\") {\n          cachedSetTimeout = setTimeout;\n        } else {\n          cachedSetTimeout = defaultSetTimout;\n        }\n      } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n      }\n      try {\n        if (typeof clearTimeout === \"function\") {\n          cachedClearTimeout = clearTimeout;\n        } else {\n          cachedClearTimeout = defaultClearTimeout;\n        }\n      } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n      }\n    })();\n    function runTimeout(fun) {\n      if (cachedSetTimeout === setTimeout) {\n        return setTimeout(fun, 0);\n      }\n      if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n      }\n      try {\n        return cachedSetTimeout(fun, 0);\n      } catch (e) {\n        try {\n          return cachedSetTimeout.call(null, fun, 0);\n        } catch (e2) {\n          return cachedSetTimeout.call(this, fun, 0);\n        }\n      }\n    }\n    function runClearTimeout(marker) {\n      if (cachedClearTimeout === clearTimeout) {\n        return clearTimeout(marker);\n      }\n      if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n      }\n      try {\n        return cachedClearTimeout(marker);\n      } catch (e) {\n        try {\n          return cachedClearTimeout.call(null, marker);\n        } catch (e2) {\n          return cachedClearTimeout.call(this, marker);\n        }\n      }\n    }\n    var queue = [];\n    var draining = false;\n    var currentQueue;\n    var queueIndex = -1;\n    function cleanUpNextTick() {\n      if (!draining || !currentQueue) {\n        return;\n      }\n      draining = false;\n      if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n      } else {\n        queueIndex = -1;\n      }\n      if (queue.length) {\n        drainQueue();\n      }\n    }\n    function drainQueue() {\n      if (draining) {\n        return;\n      }\n      var timeout = runTimeout(cleanUpNextTick);\n      draining = true;\n      var len = queue.length;\n      while (len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n          if (currentQueue) {\n            currentQueue[queueIndex].run();\n          }\n        }\n        queueIndex = -1;\n        len = queue.length;\n      }\n      currentQueue = null;\n      draining = false;\n      runClearTimeout(timeout);\n    }\n    process13.nextTick = function(fun) {\n      var args = new Array(arguments.length - 1);\n      if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n          args[i - 1] = arguments[i];\n        }\n      }\n      queue.push(new Item(fun, args));\n      if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n      }\n    };\n    function Item(fun, array) {\n      this.fun = fun;\n      this.array = array;\n    }\n    Item.prototype.run = function() {\n      this.fun.apply(null, this.array);\n    };\n    process13.title = \"browser\";\n    process13.browser = true;\n    process13.env = {};\n    process13.argv = [];\n    process13.version = \"\";\n    process13.versions = {};\n    function noop() {\n    }\n    process13.on = noop;\n    process13.addListener = noop;\n    process13.once = noop;\n    process13.off = noop;\n    process13.removeListener = noop;\n    process13.removeAllListeners = noop;\n    process13.emit = noop;\n    process13.prependListener = noop;\n    process13.prependOnceListener = noop;\n    process13.listeners = function(name) {\n      return [];\n    };\n    process13.binding = function(name) {\n      throw new Error(\"process.binding is not supported\");\n    };\n    process13.cwd = function() {\n      return \"/\";\n    };\n    process13.chdir = function(dir) {\n      throw new Error(\"process.chdir is not supported\");\n    };\n    process13.umask = function() {\n      return 0;\n    };\n  }\n});\n\n// ../../../node_modules/react-is/cjs/react-is.production.min.js\nvar require_react_is_production_min = __commonJS({\n  \"../../../node_modules/react-is/cjs/react-is.production.min.js\"(exports) {\n    \"use strict\";\n    var b = \"function\" === typeof Symbol && Symbol.for;\n    var c = b ? Symbol.for(\"react.element\") : 60103;\n    var d = b ? Symbol.for(\"react.portal\") : 60106;\n    var e = b ? Symbol.for(\"react.fragment\") : 60107;\n    var f = b ? Symbol.for(\"react.strict_mode\") : 60108;\n    var g = b ? Symbol.for(\"react.profiler\") : 60114;\n    var h = b ? Symbol.for(\"react.provider\") : 60109;\n    var k = b ? Symbol.for(\"react.context\") : 60110;\n    var l = b ? Symbol.for(\"react.async_mode\") : 60111;\n    var m2 = b ? Symbol.for(\"react.concurrent_mode\") : 60111;\n    var n = b ? Symbol.for(\"react.forward_ref\") : 60112;\n    var p = b ? Symbol.for(\"react.suspense\") : 60113;\n    var q = b ? Symbol.for(\"react.suspense_list\") : 60120;\n    var r = b ? Symbol.for(\"react.memo\") : 60115;\n    var t = b ? Symbol.for(\"react.lazy\") : 60116;\n    var v = b ? Symbol.for(\"react.block\") : 60121;\n    var w = b ? Symbol.for(\"react.fundamental\") : 60117;\n    var x = b ? Symbol.for(\"react.responder\") : 60118;\n    var y = b ? Symbol.for(\"react.scope\") : 60119;\n    function z(a) {\n      if (\"object\" === typeof a && null !== a) {\n        var u = a.$$typeof;\n        switch (u) {\n          case c:\n            switch (a = a.type, a) {\n              case l:\n              case m2:\n              case e:\n              case g:\n              case f:\n              case p:\n                return a;\n              default:\n                switch (a = a && a.$$typeof, a) {\n                  case k:\n                  case n:\n                  case t:\n                  case r:\n                  case h:\n                    return a;\n                  default:\n                    return u;\n                }\n            }\n          case d:\n            return u;\n        }\n      }\n    }\n    function A(a) {\n      return z(a) === m2;\n    }\n    exports.AsyncMode = l;\n    exports.ConcurrentMode = m2;\n    exports.ContextConsumer = k;\n    exports.ContextProvider = h;\n    exports.Element = c;\n    exports.ForwardRef = n;\n    exports.Fragment = e;\n    exports.Lazy = t;\n    exports.Memo = r;\n    exports.Portal = d;\n    exports.Profiler = g;\n    exports.StrictMode = f;\n    exports.Suspense = p;\n    exports.isAsyncMode = function(a) {\n      return A(a) || z(a) === l;\n    };\n    exports.isConcurrentMode = A;\n    exports.isContextConsumer = function(a) {\n      return z(a) === k;\n    };\n    exports.isContextProvider = function(a) {\n      return z(a) === h;\n    };\n    exports.isElement = function(a) {\n      return \"object\" === typeof a && null !== a && a.$$typeof === c;\n    };\n    exports.isForwardRef = function(a) {\n      return z(a) === n;\n    };\n    exports.isFragment = function(a) {\n      return z(a) === e;\n    };\n    exports.isLazy = function(a) {\n      return z(a) === t;\n    };\n    exports.isMemo = function(a) {\n      return z(a) === r;\n    };\n    exports.isPortal = function(a) {\n      return z(a) === d;\n    };\n    exports.isProfiler = function(a) {\n      return z(a) === g;\n    };\n    exports.isStrictMode = function(a) {\n      return z(a) === f;\n    };\n    exports.isSuspense = function(a) {\n      return z(a) === p;\n    };\n    exports.isValidElementType = function(a) {\n      return \"string\" === typeof a || \"function\" === typeof a || a === e || a === m2 || a === g || a === f || a === p || a === q || \"object\" === typeof a && null !== a && (a.$$typeof === t || a.$$typeof === r || a.$$typeof === h || a.$$typeof === k || a.$$typeof === n || a.$$typeof === w || a.$$typeof === x || a.$$typeof === y || a.$$typeof === v);\n    };\n    exports.typeOf = z;\n  }\n});\n\n// ../../../node_modules/react-is/index.js\nvar require_react_is = __commonJS({\n  \"../../../node_modules/react-is/index.js\"(exports, module) {\n    \"use strict\";\n    if (true) {\n      module.exports = require_react_is_production_min();\n    } else {\n      module.exports = null;\n    }\n  }\n});\n\n// ../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\nvar require_hoist_non_react_statics_cjs = __commonJS({\n  \"../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js\"(exports, module) {\n    \"use strict\";\n    var reactIs = require_react_is();\n    var REACT_STATICS = {\n      childContextTypes: true,\n      contextType: true,\n      contextTypes: true,\n      defaultProps: true,\n      displayName: true,\n      getDefaultProps: true,\n      getDerivedStateFromError: true,\n      getDerivedStateFromProps: true,\n      mixins: true,\n      propTypes: true,\n      type: true\n    };\n    var KNOWN_STATICS = {\n      name: true,\n      length: true,\n      prototype: true,\n      caller: true,\n      callee: true,\n      arguments: true,\n      arity: true\n    };\n    var FORWARD_REF_STATICS = {\n      \"$$typeof\": true,\n      render: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true\n    };\n    var MEMO_STATICS = {\n      \"$$typeof\": true,\n      compare: true,\n      defaultProps: true,\n      displayName: true,\n      propTypes: true,\n      type: true\n    };\n    var TYPE_STATICS = {};\n    TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\n    TYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n    function getStatics(component) {\n      if (reactIs.isMemo(component)) {\n        return MEMO_STATICS;\n      }\n      return TYPE_STATICS[component[\"$$typeof\"]] || REACT_STATICS;\n    }\n    var defineProperty = Object.defineProperty;\n    var getOwnPropertyNames = Object.getOwnPropertyNames;\n    var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n    var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n    var getPrototypeOf = Object.getPrototypeOf;\n    var objectPrototype = Object.prototype;\n    function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n      if (typeof sourceComponent !== \"string\") {\n        if (objectPrototype) {\n          var inheritedComponent = getPrototypeOf(sourceComponent);\n          if (inheritedComponent && inheritedComponent !== objectPrototype) {\n            hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n          }\n        }\n        var keys3 = getOwnPropertyNames(sourceComponent);\n        if (getOwnPropertySymbols) {\n          keys3 = keys3.concat(getOwnPropertySymbols(sourceComponent));\n        }\n        var targetStatics = getStatics(targetComponent);\n        var sourceStatics = getStatics(sourceComponent);\n        for (var i = 0; i < keys3.length; ++i) {\n          var key7 = keys3[i];\n          if (!KNOWN_STATICS[key7] && !(blacklist && blacklist[key7]) && !(sourceStatics && sourceStatics[key7]) && !(targetStatics && targetStatics[key7])) {\n            var descriptor = getOwnPropertyDescriptor(sourceComponent, key7);\n            try {\n              defineProperty(targetComponent, key7, descriptor);\n            } catch (e) {\n            }\n          }\n        }\n      }\n      return targetComponent;\n    }\n    module.exports = hoistNonReactStatics;\n  }\n});\n\n// ../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\nvar require_fontfaceobserver_standalone = __commonJS({\n  \"../../../node_modules/fontfaceobserver/fontfaceobserver.standalone.js\"(exports, module) {\n    (function() {\n      function l(a, b) {\n        document.addEventListener ? a.addEventListener(\"scroll\", b, false) : a.attachEvent(\"scroll\", b);\n      }\n      function m2(a) {\n        document.body ? a() : document.addEventListener ? document.addEventListener(\"DOMContentLoaded\", function c() {\n          document.removeEventListener(\"DOMContentLoaded\", c);\n          a();\n        }) : document.attachEvent(\"onreadystatechange\", function k() {\n          if (\"interactive\" == document.readyState || \"complete\" == document.readyState)\n            document.detachEvent(\"onreadystatechange\", k), a();\n        });\n      }\n      ;\n      function t(a) {\n        this.a = document.createElement(\"div\");\n        this.a.setAttribute(\"aria-hidden\", \"true\");\n        this.a.appendChild(document.createTextNode(a));\n        this.b = document.createElement(\"span\");\n        this.c = document.createElement(\"span\");\n        this.h = document.createElement(\"span\");\n        this.f = document.createElement(\"span\");\n        this.g = -1;\n        this.b.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.c.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.f.style.cssText = \"max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;\";\n        this.h.style.cssText = \"display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;\";\n        this.b.appendChild(this.h);\n        this.c.appendChild(this.f);\n        this.a.appendChild(this.b);\n        this.a.appendChild(this.c);\n      }\n      function u(a, b) {\n        a.a.style.cssText = \"max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:\" + b + \";\";\n      }\n      function z(a) {\n        var b = a.a.offsetWidth, c = b + 100;\n        a.f.style.width = c + \"px\";\n        a.c.scrollLeft = c;\n        a.b.scrollLeft = a.b.scrollWidth + 100;\n        return a.g !== b ? (a.g = b, true) : false;\n      }\n      function A(a, b) {\n        function c() {\n          var a2 = k;\n          z(a2) && a2.a.parentNode && b(a2.g);\n        }\n        var k = a;\n        l(a.b, c);\n        l(a.c, c);\n        z(a);\n      }\n      ;\n      function B(a, b) {\n        var c = b || {};\n        this.family = a;\n        this.style = c.style || \"normal\";\n        this.weight = c.weight || \"normal\";\n        this.stretch = c.stretch || \"normal\";\n      }\n      var C = null, D = null, E = null, F = null;\n      function G() {\n        if (null === D)\n          if (J() && /Apple/.test(window.navigator.vendor)) {\n            var a = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))(?:\\.([0-9]+))/.exec(window.navigator.userAgent);\n            D = !!a && 603 > parseInt(a[1], 10);\n          } else\n            D = false;\n        return D;\n      }\n      function J() {\n        null === F && (F = !!document.fonts);\n        return F;\n      }\n      function K() {\n        if (null === E) {\n          var a = document.createElement(\"div\");\n          try {\n            a.style.font = \"condensed 100px sans-serif\";\n          } catch (b) {\n          }\n          E = \"\" !== a.style.font;\n        }\n        return E;\n      }\n      function L(a, b) {\n        return [a.style, a.weight, K() ? a.stretch : \"\", \"100px\", b].join(\" \");\n      }\n      B.prototype.load = function(a, b) {\n        var c = this, k = a || \"BESbswy\", r = 0, n = b || 3e3, H = (/* @__PURE__ */ new Date()).getTime();\n        return new Promise(function(a2, b2) {\n          if (J() && !G()) {\n            var M = new Promise(function(a3, b3) {\n              function e() {\n                (/* @__PURE__ */ new Date()).getTime() - H >= n ? b3(Error(\"\" + n + \"ms timeout exceeded\")) : document.fonts.load(L(c, '\"' + c.family + '\"'), k).then(function(c2) {\n                  1 <= c2.length ? a3() : setTimeout(e, 25);\n                }, b3);\n              }\n              e();\n            }), N = new Promise(function(a3, c2) {\n              r = setTimeout(function() {\n                c2(Error(\"\" + n + \"ms timeout exceeded\"));\n              }, n);\n            });\n            Promise.race([N, M]).then(\n              function() {\n                clearTimeout(r);\n                a2(c);\n              },\n              b2\n            );\n          } else\n            m2(function() {\n              function v() {\n                var b3;\n                if (b3 = -1 != f && -1 != g || -1 != f && -1 != h || -1 != g && -1 != h)\n                  (b3 = f != g && f != h && g != h) || (null === C && (b3 = /AppleWebKit\\/([0-9]+)(?:\\.([0-9]+))/.exec(window.navigator.userAgent), C = !!b3 && (536 > parseInt(b3[1], 10) || 536 === parseInt(b3[1], 10) && 11 >= parseInt(b3[2], 10))), b3 = C && (f == w && g == w && h == w || f == x && g == x && h == x || f == y && g == y && h == y)), b3 = !b3;\n                b3 && (d.parentNode && d.parentNode.removeChild(d), clearTimeout(r), a2(c));\n              }\n              function I() {\n                if ((/* @__PURE__ */ new Date()).getTime() - H >= n)\n                  d.parentNode && d.parentNode.removeChild(d), b2(Error(\"\" + n + \"ms timeout exceeded\"));\n                else {\n                  var a3 = document.hidden;\n                  if (true === a3 || void 0 === a3)\n                    f = e.a.offsetWidth, g = p.a.offsetWidth, h = q.a.offsetWidth, v();\n                  r = setTimeout(I, 50);\n                }\n              }\n              var e = new t(k), p = new t(k), q = new t(k), f = -1, g = -1, h = -1, w = -1, x = -1, y = -1, d = document.createElement(\"div\");\n              d.dir = \"ltr\";\n              u(e, L(c, \"sans-serif\"));\n              u(p, L(c, \"serif\"));\n              u(q, L(c, \"monospace\"));\n              d.appendChild(e.a);\n              d.appendChild(p.a);\n              d.appendChild(q.a);\n              document.body.appendChild(d);\n              w = e.a.offsetWidth;\n              x = p.a.offsetWidth;\n              y = q.a.offsetWidth;\n              I();\n              A(e, function(a3) {\n                f = a3;\n                v();\n              });\n              u(\n                e,\n                L(c, '\"' + c.family + '\",sans-serif')\n              );\n              A(p, function(a3) {\n                g = a3;\n                v();\n              });\n              u(p, L(c, '\"' + c.family + '\",serif'));\n              A(q, function(a3) {\n                h = a3;\n                v();\n              });\n              u(q, L(c, '\"' + c.family + '\",monospace'));\n            });\n        });\n      };\n      \"object\" === typeof module ? module.exports = B : (window.FontFaceObserver = B, window.FontFaceObserver.prototype.load = B.prototype.load);\n    })();\n  }\n});\n\n// ../../router/build/computeRelativePath.js\nfunction computeRelativePath(from, to) {\n  if (!from.startsWith(\"/\") || !to.startsWith(\"/\")) {\n    throw new Error(\"from/to paths are expected to be absolute\");\n  }\n  const [fromDir] = getDirAndFile(from);\n  const [toDir, toFile] = getDirAndFile(to);\n  let relativePath = relative(fromDir, toDir);\n  if (relativePath === \"\")\n    relativePath = \".\";\n  if (!relativePath.startsWith(\".\") && !relativePath.startsWith(\"/\")) {\n    relativePath = \"./\" + relativePath;\n  }\n  return relativePath + \"/\" + toFile;\n}\nfunction getDirAndFile(path) {\n  const index = path.lastIndexOf(\"/\");\n  return [path.substring(0, index + 1), path.substring(index + 1)];\n}\nvar CHAR_DOT = 46;\nvar CHAR_FORWARD_SLASH = 47;\nvar StringPrototypeCharCodeAt = (str, index) => str.charCodeAt(index);\nvar StringPrototypeLastIndexOf = (str, searchString) => str.lastIndexOf(searchString);\nvar StringPrototypeSlice = (str, start, end) => str.slice(start, end);\nfunction relative(from, to) {\n  if (from === to)\n    return \"\";\n  from = \"/\" + normalizeString(from);\n  to = \"/\" + normalizeString(to);\n  if (from === to)\n    return \"\";\n  const fromStart = 1;\n  const fromEnd = from.length;\n  const fromLen = fromEnd - fromStart;\n  const toStart = 1;\n  const toLen = to.length - toStart;\n  const length = fromLen < toLen ? fromLen : toLen;\n  let lastCommonSep = -1;\n  let i = 0;\n  for (; i < length; i++) {\n    const fromCode = StringPrototypeCharCodeAt(from, fromStart + i);\n    if (fromCode !== StringPrototypeCharCodeAt(to, toStart + i))\n      break;\n    else if (fromCode === CHAR_FORWARD_SLASH)\n      lastCommonSep = i;\n  }\n  if (i === length) {\n    if (toLen > length) {\n      if (StringPrototypeCharCodeAt(to, toStart + i) === CHAR_FORWARD_SLASH) {\n        return StringPrototypeSlice(to, toStart + i + 1);\n      }\n      if (i === 0) {\n        return StringPrototypeSlice(to, toStart + i);\n      }\n    } else if (fromLen > length) {\n      if (StringPrototypeCharCodeAt(from, fromStart + i) === CHAR_FORWARD_SLASH) {\n        lastCommonSep = i;\n      } else if (i === 0) {\n        lastCommonSep = 0;\n      }\n    }\n  }\n  let out = \"\";\n  for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n    if (i === fromEnd || StringPrototypeCharCodeAt(from, i) === CHAR_FORWARD_SLASH) {\n      out += out.length === 0 ? \"..\" : \"/..\";\n    }\n  }\n  return `${out}${StringPrototypeSlice(to, toStart + lastCommonSep)}`;\n}\nvar allowAboveRoot = false;\nvar separator = \"/\";\nvar isPathSeparator = (code) => code === CHAR_FORWARD_SLASH;\nfunction normalizeString(path) {\n  let res = \"\";\n  let lastSegmentLength = 0;\n  let lastSlash = -1;\n  let dots = 0;\n  let code = 0;\n  for (let i = 0; i <= path.length; ++i) {\n    if (i < path.length)\n      code = StringPrototypeCharCodeAt(path, i);\n    else if (isPathSeparator(code))\n      break;\n    else\n      code = CHAR_FORWARD_SLASH;\n    if (isPathSeparator(code)) {\n      if (lastSlash === i - 1 || dots === 1) {\n      } else if (dots === 2) {\n        if (res.length < 2 || lastSegmentLength !== 2 || StringPrototypeCharCodeAt(res, res.length - 1) !== CHAR_DOT || StringPrototypeCharCodeAt(res, res.length - 2) !== CHAR_DOT) {\n          if (res.length > 2) {\n            const lastSlashIndex = StringPrototypeLastIndexOf(res, separator);\n            if (lastSlashIndex === -1) {\n              res = \"\";\n              lastSegmentLength = 0;\n            } else {\n              res = StringPrototypeSlice(res, 0, lastSlashIndex);\n              lastSegmentLength = res.length - 1 - StringPrototypeLastIndexOf(res, separator);\n            }\n            lastSlash = i;\n            dots = 0;\n            continue;\n          } else if (res.length !== 0) {\n            res = \"\";\n            lastSegmentLength = 0;\n            lastSlash = i;\n            dots = 0;\n            continue;\n          }\n        }\n        if (allowAboveRoot) {\n          res += res.length > 0 ? `${separator}..` : \"..\";\n          lastSegmentLength = 2;\n        }\n      } else {\n        if (res.length > 0)\n          res += `${separator}${StringPrototypeSlice(path, lastSlash + 1, i)}`;\n        else\n          res = StringPrototypeSlice(path, lastSlash + 1, i);\n        lastSegmentLength = i - lastSlash - 1;\n      }\n      lastSlash = i;\n      dots = 0;\n    } else if (code === CHAR_DOT && dots !== -1) {\n      ++dots;\n    } else {\n      dots = -1;\n    }\n  }\n  return res;\n}\n\n// ../../router/build/ErrorBoundary.js\nimport { Component } from \"react\";\n\n// ../../router/build/renderPage.js\nimport React2 from \"react\";\n\n// ../../router/build/utils.js\nimport React from \"react\";\nfunction isObject(value) {\n  return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction isString(value) {\n  return typeof value === \"string\";\n}\nvar preloadKey = \"preload\";\nfunction isLazyComponentType(componentType) {\n  return typeof componentType === \"object\" && preloadKey in componentType;\n}\nfunction lazy(factory) {\n  const LazyComponent = React.lazy(factory);\n  let factoryPromise;\n  let LoadedComponent;\n  const Component15 = React.forwardRef(function LazyWithPreload(props, ref) {\n    return React.createElement(LoadedComponent !== null && LoadedComponent !== void 0 ? LoadedComponent : LazyComponent, Object.assign(ref ? { ref } : {}, props));\n  });\n  Component15.preload = () => {\n    if (!factoryPromise) {\n      factoryPromise = factory().then((module) => {\n        LoadedComponent = module.default;\n        return LoadedComponent;\n      });\n    }\n    return factoryPromise;\n  };\n  return Component15;\n}\nfunction getRouteElementId(route, hash2) {\n  if (hash2 && route) {\n    if (route.elements && hash2 in route.elements) {\n      return route.elements[hash2];\n    } else {\n      return hash2;\n    }\n  }\n  return void 0;\n}\n\n// ../../router/build/renderPage.js\nfunction renderPage(Page4, defaultPageStyle = {}) {\n  const element = React2.isValidElement(Page4) ? React2.cloneElement(Page4, { style: defaultPageStyle }) : React2.createElement(Page4, { style: defaultPageStyle });\n  if (isLazyComponentType(element.type)) {\n    return React2.createElement(React2.Suspense, { fallback: null }, element);\n  }\n  return element;\n}\n\n// ../../router/build/ErrorBoundary.js\nvar NotFoundError = class extends Error {\n};\nvar ErrorBoundary = class extends Component {\n  constructor(props) {\n    super(props);\n    this.state = { error: void 0, forceUpdateKey: props.forceUpdateKey };\n  }\n  static getDerivedStateFromError(error) {\n    return { error };\n  }\n  /** Resets the error when forceUpdateKey gets bumped. */\n  static getDerivedStateFromProps(nextProps, prevState) {\n    if (nextProps.forceUpdateKey !== prevState.forceUpdateKey) {\n      const newState = {\n        forceUpdateKey: nextProps.forceUpdateKey\n      };\n      if (prevState.error) {\n        newState.error = void 0;\n      }\n      return newState;\n    }\n    return null;\n  }\n  render() {\n    if (this.state.error === void 0) {\n      return this.props.children;\n    }\n    if (!(this.state.error instanceof NotFoundError)) {\n      throw this.state.error;\n    }\n    const { notFoundPage, defaultPageStyle } = this.props;\n    if (!notFoundPage) {\n      throw this.state.error;\n    }\n    return renderPage(notFoundPage, defaultPageStyle);\n  }\n};\n\n// ../../router/build/history.js\nimport React3 from \"react\";\n\n// ../../router/build/pathVariables.js\nvar pathVariablesRegExpRaw = \":([a-zA-Z][a-zA-Z0-9_]*)\";\nvar pathVariablesRegExp = new RegExp(pathVariablesRegExpRaw, \"g\");\n\n// ../../router/build/history.js\nfunction pushRouteState(routeId, route, { currentRoutePath, hash: hash2, pathVariables, localeId } = {}) {\n  const { path } = route;\n  if (!path)\n    return;\n  try {\n    const newPath = getPathForRoute(route, { currentRoutePath, hash: hash2, pathVariables });\n    window.history.pushState({ routeId, hash: hash2, pathVariables, localeId }, \"\", newPath);\n  } catch {\n  }\n}\nfunction useReplaceInitialState({ disabled, routeId, initialPathVariables, initialLocaleId }) {\n  React3.useEffect(() => {\n    if (disabled)\n      return;\n    window.history.replaceState({ routeId, pathVariables: initialPathVariables, initialLocaleId }, \"\");\n  }, []);\n}\nfunction usePopStateHandler(setCurrentRouteId) {\n  const popStateHandler = React3.useCallback(({ state }) => {\n    if (!isObject(state))\n      return;\n    const { routeId, hash: hash2, pathVariables, localeId } = state;\n    if (!isString(routeId))\n      return;\n    setCurrentRouteId(routeId, isString(hash2) ? hash2 : void 0, isObject(pathVariables) ? pathVariables : void 0, false, isString(localeId) ? localeId : void 0);\n  }, [setCurrentRouteId]);\n  React3.useEffect(() => {\n    window.addEventListener(\"popstate\", popStateHandler);\n    return () => window.removeEventListener(\"popstate\", popStateHandler);\n  }, [popStateHandler]);\n}\nfunction getHashForRoute(hash2, route, hashVariables) {\n  const resolvedHash = getRouteElementId(route, hash2);\n  if (!resolvedHash)\n    return void 0;\n  const variables = Object.assign({}, route === null || route === void 0 ? void 0 : route.elements, hashVariables);\n  return resolvedHash.replace(pathVariablesRegExp, (m2, p1) => {\n    var _a;\n    return String((_a = variables[p1]) !== null && _a !== void 0 ? _a : m2);\n  });\n}\nfunction getPathForRoute(route, { currentRoutePath, hash: hash2, pathVariables, hashVariables, relative: relative2 = true }) {\n  var _a;\n  const currentPath = currentRoutePath !== null && currentRoutePath !== void 0 ? currentRoutePath : \"/\";\n  const targetPath = (_a = route === null || route === void 0 ? void 0 : route.path) !== null && _a !== void 0 ? _a : \"/\";\n  let path = targetPath;\n  if (pathVariables) {\n    path = path.replace(pathVariablesRegExp, (m2, p1) => {\n      var _a2;\n      return String((_a2 = pathVariables[p1]) !== null && _a2 !== void 0 ? _a2 : m2);\n    });\n  }\n  if (relative2) {\n    path = computeRelativePath(currentPath, path);\n  }\n  const resolvedHash = getHashForRoute(hash2, route, hashVariables);\n  return resolvedHash ? `${path}#${resolvedHash}` : path;\n}\nfunction switchLocale(locale, routeId, route, pathVariables) {\n  const { path } = route;\n  if (!path)\n    return;\n  try {\n    let newPath = path;\n    if (pathVariables) {\n      newPath = newPath.replace(pathVariablesRegExp, (m2, p1) => {\n        var _a;\n        return String((_a = pathVariables[p1]) !== null && _a !== void 0 ? _a : m2);\n      });\n    }\n    if (locale.slug) {\n      newPath = \"/\" + locale.slug + newPath;\n    }\n    window.history.pushState({ routeId, pathVariables, localeId: locale.id }, \"\", newPath);\n  } catch {\n  }\n}\n\n// ../../router/build/inferInitialRouteFromPath.js\nvar memoPathRoutes;\nvar memoPaths;\nvar lastRoutes;\nfunction getRouteInfoMemo(routes) {\n  if (lastRoutes !== routes) {\n    memoPathRoutes = {};\n    for (const [routeId, { path }] of Object.entries(routes)) {\n      if (path)\n        memoPathRoutes[path] = { path, depth: pathDepth(path), routeId };\n    }\n    memoPaths = Object.values(memoPathRoutes);\n    memoPaths.sort(({ depth: depth1 }, { depth: depth2 }) => depth2 - depth1);\n    lastRoutes = routes;\n  }\n  return [memoPathRoutes, memoPaths];\n}\nfunction inferInitialRouteFromPath(routes, decodedLocationPath, fallback = true, locales = []) {\n  const [pathRoutes, paths] = getRouteInfoMemo(routes);\n  let activeLocale;\n  let localeId;\n  let locationPath = decodedLocationPath;\n  if (locales.length > 0) {\n    const firstPathSegment = locationPath.split(\"/\").find(Boolean);\n    if (firstPathSegment) {\n      activeLocale = locales.find(({ slug }) => slug === firstPathSegment);\n      if (activeLocale) {\n        localeId = activeLocale.id;\n        locationPath = locationPath.substring(activeLocale.slug.length + 1);\n      }\n    }\n    if (!localeId) {\n      const defaultLocale = locales.find(({ slug }) => slug === \"\");\n      if (defaultLocale) {\n        localeId = defaultLocale.id;\n      }\n    }\n  }\n  const exactMatch = pathRoutes[locationPath];\n  if (exactMatch) {\n    const match = matchPath(locationPath, exactMatch.path);\n    if (match.isMatch)\n      return { routeId: exactMatch.routeId, localeId, pathVariables: match.pathVariables };\n  }\n  for (const { path, routeId } of paths) {\n    const match = matchPath(locationPath, path);\n    if (match.isMatch)\n      return { routeId, localeId, pathVariables: match.pathVariables };\n  }\n  if (!fallback)\n    throw new Error(\"No exact match found for path\");\n  const rootPath = pathRoutes[\"/\"];\n  if (rootPath)\n    return { routeId: rootPath.routeId, localeId };\n  const firstRoute = Object.keys(routes)[0];\n  if (!firstRoute)\n    throw new Error(\"Router should not have undefined routes\");\n  return { routeId: firstRoute, localeId };\n}\nfunction pathDepth(path) {\n  const pathWithTrimmedSlashes = path.replace(/(?:^\\/|\\/$)/g, \"\");\n  if (pathWithTrimmedSlashes === \"\")\n    return 0;\n  return pathWithTrimmedSlashes.split(\"/\").length;\n}\nfunction matchPath(path, routePath) {\n  const pathVariablesKeys = [];\n  const safeRoutePath = escapeStringRegExp(routePath);\n  const routePathRegExpString = safeRoutePath.replace(pathVariablesRegExp, (_, name) => {\n    pathVariablesKeys.push(name);\n    return \"([^/]+)\";\n  });\n  const routePathRegExp = new RegExp(routePathRegExpString + \"$\");\n  const matches = path.match(routePathRegExp);\n  if (!matches)\n    return { isMatch: false };\n  if (matches.length === 1)\n    return { isMatch: true };\n  const pathVariables = {};\n  const pathVariablesValues = matches.slice(1);\n  for (let i = 0; i < pathVariablesKeys.length; ++i) {\n    const key7 = pathVariablesKeys[i];\n    if (key7 === void 0)\n      continue;\n    const value = pathVariablesValues[i];\n    const existingValue = pathVariables[key7];\n    if (existingValue) {\n      if (existingValue !== value) {\n        return { isMatch: false };\n      } else {\n        continue;\n      }\n    }\n    if (value === void 0) {\n      throw new Error(\"Path variable values cannot be undefined\");\n    }\n    pathVariables[key7] = value;\n  }\n  return { isMatch: true, pathVariables };\n}\nfunction escapeStringRegExp(string) {\n  return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\").replace(/-/g, \"\\\\x2d\");\n}\n\n// ../../router/build/isRoute.js\nvar key = \"page\";\nfunction isRoute(route) {\n  return isObject(route) && key in route && route.page !== void 0;\n}\n\n// ../../router/build/Router.js\nimport React8, { startTransition } from \"react\";\n\n// ../../router/build/fillPathVariables.js\nfunction fillPathVariables(path, variables) {\n  return path.replace(pathVariablesRegExp, (match, name) => {\n    const value = variables[name];\n    if (typeof value !== \"string\" || value.length === 0)\n      return match;\n    return encodeURIComponent(value);\n  });\n}\n\n// ../../router/build/isSamePage.js\nfunction isSamePage(a, b) {\n  if (a.routeId !== b.routeId)\n    return false;\n  if (a.pathVariables === b.pathVariables)\n    return true;\n  const aPathVariables = a.pathVariables || {};\n  const bPathVariables = b.pathVariables || {};\n  return aPathVariables.length === bPathVariables.length && Object.keys(aPathVariables).every((key7) => aPathVariables[key7] === bPathVariables[key7]);\n}\n\n// ../../router/build/RouterContext.js\nimport React5 from \"react\";\n\n// ../../router/build/useGetRouteCallback.js\nimport React4 from \"react\";\nfunction useGetRouteCallback(routes) {\n  return React4.useCallback((routeId) => routes[routeId], [routes]);\n}\n\n// ../../router/build/RouterContext.js\nvar RouterContext = React5.createContext({});\nfunction RouterAPIProvider({ api, children }) {\n  return React5.createElement(RouterContext.Provider, { value: api }, children);\n}\nfunction useRouter() {\n  return React5.useContext(RouterContext);\n}\nfunction RoutesProvider({ routes, children }) {\n  const getRoute = useGetRouteCallback(routes);\n  return React5.createElement(RouterContext.Provider, { value: { getRoute } }, children);\n}\n\n// ../../router/build/useForceUpdate.js\nimport React6 from \"react\";\nfunction useForceUpdate2() {\n  const [_, setForcedRenderCount] = React6.useState(0);\n  return [_, React6.useCallback(() => setForcedRenderCount((v) => v + 1), [])];\n}\n\n// ../../router/build/useLocale.js\nimport React7 from \"react\";\nvar defaultLocaleInfo = {\n  activeLocale: null,\n  locales: [],\n  setLocale: () => {\n  }\n};\nvar LocaleInfoContext = /* @__PURE__ */ React7.createContext(defaultLocaleInfo);\nfunction useLocaleInfo() {\n  return React7.useContext(LocaleInfoContext);\n}\nfunction useLocalizationInfo() {\n  const { activeLocale, locales, setLocale } = useLocaleInfo();\n  return {\n    activeLocalization: activeLocale,\n    localizations: locales,\n    setLocalization: setLocale\n  };\n}\nfunction useLocaleCode() {\n  var _a, _b;\n  return (_b = (_a = useLocaleInfo().activeLocale) === null || _a === void 0 ? void 0 : _a.code) !== null && _b !== void 0 ? _b : \"en-US\";\n}\nfunction useLocale() {\n  return useLocaleCode();\n}\n\n// ../../router/build/Router.js\nfunction updateScrollPosition(hash2, smoothScroll) {\n  const element = hash2 && document.getElementById(hash2);\n  if (element) {\n    scrollElementIntoView(element, smoothScroll);\n    return;\n  }\n  window.scrollTo(0, 0);\n}\nfunction useScheduleRenderSideEffects(dep) {\n  const actions = React8.useRef([]);\n  React8.useLayoutEffect(() => {\n    var _a;\n    if (!((_a = actions.current) === null || _a === void 0 ? void 0 : _a.length))\n      return;\n    actions.current.forEach((action) => action());\n    actions.current = [];\n  }, [dep]);\n  return React8.useCallback((cb) => {\n    actions.current.push(cb);\n  }, []);\n}\nfunction Router({ defaultPageStyle, disableHistory, initialPathVariables, initialRoute, notFoundPage, routes, initialLocaleId, locales = [] }) {\n  useReplaceInitialState({\n    disabled: disableHistory,\n    routeId: initialRoute,\n    initialPathVariables,\n    initialLocaleId\n  });\n  const currentRouteRef = React8.useRef(initialRoute);\n  const currentPathVariablesRef = React8.useRef(initialPathVariables);\n  const currentLocaleIdRef = React8.useRef(initialLocaleId);\n  const currentLocaleId = currentLocaleIdRef.current;\n  const activeLocale = React8.useMemo(() => {\n    var _a;\n    return (_a = locales.find(({ id, slug }) => {\n      if (!currentLocaleId)\n        return slug === \"\";\n      return id === currentLocaleId;\n    })) !== null && _a !== void 0 ? _a : null;\n  }, [currentLocaleId, locales]);\n  const [dep, forceUpdate] = useForceUpdate2();\n  const localeInfo = React8.useMemo(() => {\n    return {\n      activeLocale,\n      locales,\n      setLocale: (locale) => {\n        if (!locale)\n          return;\n        const isKnownLocale = locales.some(({ id }) => id === locale.id);\n        if (!isKnownLocale)\n          return;\n        const currentRouteId2 = currentRouteRef.current;\n        const currentRoute = routes[currentRouteId2];\n        if (!currentRoute)\n          return;\n        currentLocaleIdRef.current = locale.id;\n        switchLocale(locale, currentRouteId2, currentRoute, currentPathVariablesRef.current);\n        startTransition(() => forceUpdate());\n      }\n    };\n  }, [activeLocale, forceUpdate, locales, routes]);\n  const scheduleSideEffect = useScheduleRenderSideEffects(dep);\n  const setCurrentRouteId = React8.useCallback((routeId, hash2, pathVariables, smoothScroll = false, localeId = currentLocaleIdRef.current) => {\n    currentRouteRef.current = routeId;\n    currentPathVariablesRef.current = pathVariables;\n    currentLocaleIdRef.current = localeId;\n    scheduleSideEffect(() => {\n      updateScrollPosition(hash2, smoothScroll);\n    });\n    forceUpdate();\n  }, [forceUpdate, scheduleSideEffect]);\n  usePopStateHandler(setCurrentRouteId);\n  const navigate = React8.useCallback((routeId, hash2, pathVariables, smoothScroll) => {\n    var _a, _b;\n    const newRoute = routes[routeId];\n    if (pathVariables) {\n      const inUse = /* @__PURE__ */ new Set();\n      const path = (_a = newRoute === null || newRoute === void 0 ? void 0 : newRoute.path) !== null && _a !== void 0 ? _a : \"/\";\n      for (const match of path.matchAll(pathVariablesRegExp)) {\n        const usedVariable = match[1];\n        if (usedVariable === void 0) {\n          throw new Error(\"A matching path variable should not be undefined\");\n        }\n        inUse.add(usedVariable);\n      }\n      pathVariables = Object.fromEntries(Object.entries(pathVariables).filter(([key7]) => inUse.has(key7)));\n    }\n    const routeElementId = getRouteElementId(newRoute, hash2);\n    if (isSamePage({ routeId: currentRouteRef.current, pathVariables: currentPathVariablesRef.current }, { routeId, pathVariables })) {\n      if (((_b = window.history.state) === null || _b === void 0 ? void 0 : _b.hash) !== hash2) {\n        if (!disableHistory) {\n          const route = routes[routeId];\n          if (route) {\n            pushRouteState(routeId, route, {\n              currentRoutePath: route.path,\n              pathVariables,\n              hash: hash2,\n              localeId: currentLocaleIdRef.current\n            });\n          }\n        }\n      }\n      updateScrollPosition(routeElementId, smoothScroll);\n      return;\n    }\n    if (!newRoute)\n      return;\n    if (!disableHistory) {\n      const currentRoute = routes[currentRouteRef.current];\n      pushRouteState(routeId, newRoute, {\n        currentRoutePath: currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.path,\n        hash: hash2,\n        pathVariables,\n        localeId: currentLocaleIdRef.current\n      });\n    }\n    startTransition(() => setCurrentRouteId(routeId, routeElementId, pathVariables, smoothScroll));\n  }, [routes, disableHistory, setCurrentRouteId]);\n  const getRoute = useGetRouteCallback(routes);\n  const currentRouteId = currentRouteRef.current;\n  const currentPathVariables = currentPathVariablesRef.current;\n  const api = React8.useMemo(() => ({\n    navigate,\n    getRoute,\n    currentRouteId,\n    currentPathVariables,\n    routes\n  }), [navigate, getRoute, currentRouteId, currentPathVariables, routes]);\n  const current = routes[currentRouteRef.current];\n  if (!current) {\n    throw new Error(`Router cannot find route for ${currentRouteRef.current}`);\n  }\n  const pathWithFilledVariables = current.path && currentPathVariables ? fillPathVariables(current.path, currentPathVariables) : current.path;\n  const remountKey = String(currentLocaleId) + pathWithFilledVariables;\n  return React8.createElement(\n    RouterAPIProvider,\n    { api },\n    React8.createElement(\n      LocaleInfoContext.Provider,\n      { value: localeInfo },\n      React8.createElement(\n        ErrorBoundary,\n        { notFoundPage, defaultPageStyle, forceUpdateKey: dep },\n        React8.createElement(React8.Fragment, { key: remountKey }, renderPage(current.page, defaultPageStyle))\n      )\n    )\n  );\n}\nfunction scrollElementIntoView(element, smoothScroll) {\n  const scrollIntoViewOptions = smoothScroll ? { behavior: \"smooth\", block: \"start\", inline: \"nearest\" } : void 0;\n  element.scrollIntoView(scrollIntoViewOptions);\n}\n\n// ../../router/build/useCurrentRoute.js\nimport React9, { useContext } from \"react\";\nvar CurrentRouteContext = React9.createContext(void 0);\nfunction useCurrentRoute() {\n  var _a;\n  const router = useRouter();\n  const override = useContext(CurrentRouteContext);\n  const id = override !== null && override !== void 0 ? override : router.currentRouteId;\n  if (!id)\n    return void 0;\n  const route = (_a = router.getRoute) === null || _a === void 0 ? void 0 : _a.call(router, id);\n  if (!route)\n    return void 0;\n  return {\n    ...route,\n    id,\n    pathVariables: override ? void 0 : router.currentPathVariables\n  };\n}\nfunction useCurrentRouteId() {\n  var _a;\n  return (_a = useCurrentRoute()) === null || _a === void 0 ? void 0 : _a.id;\n}\n\n// ../../router/build/useCurrentPathVariables.js\nfunction useCurrentPathVariables() {\n  var _a;\n  return (_a = useCurrentRoute()) === null || _a === void 0 ? void 0 : _a.pathVariables;\n}\n\n// ../../router/build/useRoute.js\nfunction useRoute(routeId) {\n  var _a;\n  const routerAPI = useRouter();\n  if (!routeId)\n    return void 0;\n  return (_a = routerAPI.getRoute) === null || _a === void 0 ? void 0 : _a.call(routerAPI, routeId);\n}\n\n// ../../router/build/useRouteAnchor.js\nimport React11 from \"react\";\n\n// ../../router/build/useRoutePreloader.js\nimport React10 from \"react\";\nfunction useRoutePreloader(routeIds, enabled = true) {\n  const { getRoute } = useRouter();\n  React10.useEffect(() => {\n    if (!getRoute || !enabled)\n      return;\n    for (const routeId of routeIds) {\n      const route = getRoute(routeId);\n      if (route === null || route === void 0 ? void 0 : route.page)\n        preloadComponent(route.page);\n    }\n  }, [routeIds, getRoute, enabled]);\n}\nfunction preloadComponent(component) {\n  if (component && !React10.isValidElement(component) && isLazyComponentType(component)) {\n    void component.preload();\n  }\n}\n\n// ../../router/build/useRouteAnchor.js\nfunction useRouteAnchor(routeId, { elementId, hash: linkHash } = {}) {\n  const { navigate } = useRouter();\n  const route = useRoute(routeId);\n  const currentRouteId = useCurrentRouteId();\n  const currentRoute = useRoute(currentRouteId !== null && currentRouteId !== void 0 ? currentRouteId : \"\");\n  useRoutePreloader([routeId], true);\n  const hash2 = linkHash !== null && linkHash !== void 0 ? linkHash : elementId;\n  const href = React11.useMemo(() => getPathForRoute(route, { currentRoutePath: currentRoute === null || currentRoute === void 0 ? void 0 : currentRoute.path, hash: hash2 }), [currentRoute, hash2, route]);\n  const navigateToRoute = React11.useCallback(() => navigate === null || navigate === void 0 ? void 0 : navigate(routeId, hash2), [hash2, navigate, routeId]);\n  const onClick = React11.useCallback((event) => {\n    event.preventDefault();\n    navigateToRoute();\n  }, [navigateToRoute]);\n  return { onClick, href };\n}\n\n// ../../router/build/useRouteElementId.js\nimport React12 from \"react\";\nfunction useRouteElementId(id, targetRouteId) {\n  var _a;\n  const currentRoute = useCurrentRoute();\n  const route = (_a = useRoute(targetRouteId)) !== null && _a !== void 0 ? _a : currentRoute;\n  return React12.useMemo(() => getRouteElementId(route, id), [id, route]);\n}\n\n// ../../router/build/useRouteHandler.js\nimport React13 from \"react\";\nfunction useRouteHandler(routeId, preload = false, elementId) {\n  const { navigate } = useRouter();\n  useRoutePreloader([routeId], preload);\n  const handler = React13.useCallback(() => navigate === null || navigate === void 0 ? void 0 : navigate(routeId, elementId), [navigate, elementId, routeId]);\n  return handler;\n}\n\n// ../../library/src/utils/warnOnce.ts\nvar warningMessages = /* @__PURE__ */ new Set();\nfunction warnOnce(keyMessage, ...rest) {\n  if (warningMessages.has(keyMessage))\n    return;\n  warningMessages.add(keyMessage);\n  console.warn(keyMessage, ...rest);\n}\n\n// ../../library/src/utils/deprecation.ts\nfunction deprecationWarning(removedItem, removalVersion, replacement) {\n  const replacementText = replacement ? `, use ${replacement} instead` : \"\";\n  const warningText = `Deprecation warning: ${removedItem} will be removed in version ${removalVersion}${replacementText}.`;\n  warnOnce(warningText);\n}\n\n// ../../library/src/animation/Animatable/Observers.ts\nvar Observers = class {\n  constructor() {\n    this.observers = /* @__PURE__ */ new Set();\n    this.transactions = {};\n  }\n  add(observer) {\n    this.observers.add(observer);\n    let isCalled = false;\n    return () => {\n      if (isCalled) {\n        return;\n      }\n      isCalled = true;\n      this.remove(observer);\n    };\n  }\n  remove(observer) {\n    this.observers.delete(observer);\n  }\n  notify(change, transaction) {\n    if (transaction) {\n      const accumulatedChange = this.transactions[transaction] || change;\n      accumulatedChange.value = change.value;\n      this.transactions[transaction] = accumulatedChange;\n    } else {\n      this.callObservers(change);\n    }\n  }\n  finishTransaction(transaction) {\n    const accumulatedChange = this.transactions[transaction];\n    delete this.transactions[transaction];\n    return this.callObservers(accumulatedChange, transaction);\n  }\n  callObservers(change, transaction) {\n    const finishObservers = [];\n    new Set(this.observers).forEach((observer) => {\n      if (typeof observer === \"function\") {\n        observer(change, transaction);\n      } else {\n        observer.update(change, transaction);\n        finishObservers.push(observer.finish);\n      }\n    });\n    return finishObservers;\n  }\n};\n\n// ../../library/src/animation/Animatable/Animatable.ts\nvar Animatable = /* @__PURE__ */ (() => {\n  function Animatable2(value) {\n    deprecationWarning(\"Animatable()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n    return isAnimatable(value) ? value : new AnimatableValue(value);\n  }\n  Animatable2.transaction = (update) => {\n    const transactionId = Math.random();\n    const updatedValues = /* @__PURE__ */ new Set();\n    const updater = (animatable, value) => {\n      animatable.set(value, transactionId);\n      updatedValues.add(animatable);\n    };\n    update(updater, transactionId);\n    const finishObservers = [];\n    updatedValues.forEach((value) => {\n      finishObservers.push(...value.finishTransaction(transactionId));\n    });\n    finishObservers.forEach((finish) => {\n      finish(transactionId);\n    });\n  };\n  Animatable2.getNumber = (value, defaultValue = 0) => {\n    return Animatable2.get(value, defaultValue);\n  };\n  Animatable2.get = (value, defaultValue) => {\n    if (value === void 0 || value === null) {\n      return defaultValue;\n    }\n    if (isAnimatable(value)) {\n      return value.get();\n    }\n    return value;\n  };\n  Animatable2.objectToValues = (object) => {\n    if (!object) {\n      return object;\n    }\n    const result = {};\n    for (const key7 in object) {\n      const value = object[key7];\n      if (isAnimatable(value)) {\n        result[key7] = value.get();\n      } else {\n        result[key7] = value;\n      }\n    }\n    return result;\n  };\n  return Animatable2;\n})();\nvar onUpdateKey = \"onUpdate\";\nvar finishTransactionKey = \"finishTransaction\";\nfunction isAnimatable(value) {\n  return value !== null && typeof value === \"object\" && onUpdateKey in value && value[onUpdateKey] instanceof Function && finishTransactionKey in value && value[finishTransactionKey] instanceof Function;\n}\nfunction animatableInterpolation(value, currentInterpolation) {\n  return {\n    interpolate(from, to) {\n      const fromValue = from.get();\n      const toValue = to.get();\n      const result = Animatable(fromValue);\n      return (progress2) => {\n        const v = currentInterpolation.interpolate(fromValue, toValue)(progress2);\n        result.set(v);\n        return result;\n      };\n    },\n    difference(from, to) {\n      const v = from.get();\n      return currentInterpolation.difference(v, to.get());\n    }\n  };\n}\nvar AnimatableValue = class {\n  constructor(value) {\n    this.value = value;\n    this.observers = new Observers();\n  }\n  static interpolationFor(value, currentInterpolation) {\n    if (isAnimatable(value)) {\n      return animatableInterpolation(value, currentInterpolation);\n    }\n  }\n  get() {\n    return this.value;\n  }\n  set(value, transaction) {\n    const oldValue = this.value;\n    if (isAnimatable(value)) {\n      value = value.get();\n    }\n    this.value = value;\n    const change = {\n      value,\n      oldValue\n    };\n    this.observers.notify(change, transaction);\n  }\n  finishTransaction(transaction) {\n    return this.observers.finishTransaction(transaction);\n  }\n  onUpdate(handler) {\n    return this.observers.add(handler);\n  }\n};\n\n// ../../library/src/render/utils/isMotionValue.ts\nvar isMotionValue2 = (v) => v instanceof MotionValue;\n\n// ../../library/src/render/utils/roundedNumber.ts\nfunction roundedNumber(value, decimals) {\n  const d = Math.round(Math.abs(decimals));\n  const multiplier = Math.pow(10, d);\n  return Math.round(value * multiplier) / multiplier;\n}\nfunction roundedNumberString(value, decimals) {\n  const result = value.toFixed(decimals);\n  if (decimals === 0) {\n    return result;\n  }\n  return result.replace(/\\.?0+$/, \"\");\n}\nfunction roundWithOffset(value, offset) {\n  if (offset === 0) {\n    return Math.round(value);\n  }\n  offset -= offset | 0;\n  if (offset < 0) {\n    offset = 1 - offset;\n  }\n  return Math.round(value - offset) + offset;\n}\n\n// ../../library/src/render/types/Point.ts\nfunction Point(x, y) {\n  return { x, y };\n}\n((Point3) => {\n  Point3.add = (...args) => {\n    return args.reduce(\n      (previousValue, currentValue) => {\n        return { x: previousValue.x + currentValue.x, y: previousValue.y + currentValue.y };\n      },\n      { x: 0, y: 0 }\n    );\n  };\n  Point3.subtract = (a, b) => {\n    return { x: a.x - b.x, y: a.y - b.y };\n  };\n  Point3.multiply = (a, b) => {\n    return { x: a.x * b, y: a.y * b };\n  };\n  Point3.divide = (a, b) => {\n    return { x: a.x / b, y: a.y / b };\n  };\n  Point3.absolute = (point) => {\n    return {\n      x: Math.abs(point.x),\n      y: Math.abs(point.y)\n    };\n  };\n  Point3.reverse = (point) => {\n    return {\n      x: point.x * -1,\n      y: point.y * -1\n    };\n  };\n  Point3.pixelAligned = (point, offset = { x: 0, y: 0 }) => {\n    return {\n      x: roundWithOffset(point.x, offset.x),\n      y: roundWithOffset(point.y, offset.y)\n    };\n  };\n  Point3.distance = (a, b) => {\n    const deltaX = Math.abs(a.x - b.x);\n    const deltaY = Math.abs(a.y - b.y);\n    return Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n  };\n  Point3.angle = (a, b) => {\n    return Math.atan2(b.y - a.y, b.x - a.x) * 180 / Math.PI - 90;\n  };\n  Point3.isEqual = (a, b) => {\n    return a.x === b.x && a.y === b.y;\n  };\n  Point3.rotationNormalizer = () => {\n    let lastValue;\n    return (value) => {\n      if (typeof lastValue !== \"number\") {\n        lastValue = value;\n      }\n      const diff = lastValue - value;\n      const maxDiff = Math.abs(diff) + 180;\n      const nTimes = Math.floor(maxDiff / 360);\n      if (diff < 180) {\n        value -= nTimes * 360;\n      }\n      if (diff > 180) {\n        value += nTimes * 360;\n      }\n      lastValue = value;\n      return value;\n    };\n  };\n  function center(a, b) {\n    return {\n      x: (a.x + b.x) / 2,\n      y: (a.y + b.y) / 2\n    };\n  }\n  Point3.center = center;\n})(Point || (Point = {}));\n\n// ../../library/src/animation/Animators/BezierAnimator.ts\nvar BezierDefaults = {\n  curve: \"ease\" /* Ease */,\n  duration: 1\n};\nfunction controlPointsForCurve(curve) {\n  switch (curve) {\n    case \"linear\" /* Linear */:\n      return [0, 0, 1, 1];\n    case \"ease\" /* Ease */:\n      return [0.25, 0.1, 0.25, 1];\n    case \"ease-in\" /* EaseIn */:\n      return [0.42, 0, 1, 1];\n    case \"ease-out\" /* EaseOut */:\n      return [0, 0, 0.58, 1];\n    case \"ease-in-out\" /* EaseInOut */:\n      return [0.42, 0, 0.58, 1];\n  }\n}\nvar BezierAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    this.progress = 0;\n    this.next = (delta) => {\n      const { duration } = this.options;\n      this.progress += delta / duration;\n      const value = this.unitBezier.solve(this.progress, this.solveEpsilon(duration));\n      this.current = this.interpolator(value);\n      return this.current;\n    };\n    this.options = { ...BezierDefaults, ...options };\n    let controlPoints;\n    if (typeof this.options.curve === \"string\") {\n      controlPoints = controlPointsForCurve(this.options.curve);\n    } else {\n      controlPoints = this.options.curve;\n    }\n    const [p1x, p1y, p2x, p2y] = controlPoints;\n    this.unitBezier = new UnitBezier(Point(p1x, p1y), Point(p2x, p2y));\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setTo(value) {\n    this.destination = value;\n    this.updateInterpolator();\n  }\n  isReady() {\n    return this.interpolator !== void 0;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n  isFinished() {\n    return this.progress >= 1;\n  }\n  solveEpsilon(duration) {\n    return 1 / (200 * duration);\n  }\n};\nvar UnitBezier = class {\n  constructor(point1, point2) {\n    this.c = Point.multiply(point1, 3);\n    this.b = Point.subtract(Point.multiply(Point.subtract(point2, point1), 3), this.c);\n    this.a = Point.subtract(Point.subtract(Point(1, 1), this.c), this.b);\n  }\n  solve(x, epsilon2) {\n    return this.sampleY(this.solveForT(x, epsilon2));\n  }\n  sampleX(t) {\n    return ((this.a.x * t + this.b.x) * t + this.c.x) * t;\n  }\n  sampleY(t) {\n    return ((this.a.y * t + this.b.y) * t + this.c.y) * t;\n  }\n  sampleDerivativeX(t) {\n    return (3 * this.a.x * t + 2 * this.b.x) * t + this.c.x;\n  }\n  solveForT(x, epsilon2) {\n    let t0, t1, t2, x2, d2, i;\n    t2 = x;\n    for (i = 0; i < 8; ++i) {\n      x2 = this.sampleX(t2) - x;\n      if (Math.abs(x2) < epsilon2)\n        return t2;\n      d2 = this.sampleDerivativeX(t2);\n      if (Math.abs(d2) < epsilon2)\n        break;\n      t2 = t2 - x2 / d2;\n    }\n    t0 = 0;\n    t1 = 1;\n    t2 = x;\n    if (t2 < t0)\n      return t0;\n    if (t2 > t1)\n      return t1;\n    while (t0 < t1) {\n      x2 = this.sampleX(t2);\n      if (Math.abs(x2 - x) < epsilon2)\n        return t2;\n      if (x > x2)\n        t0 = t2;\n      else\n        t1 = t2;\n      t2 = (t1 - t0) * 0.5 + t0;\n    }\n    return t2;\n  }\n};\n\n// ../../library/src/animation/Animators/Integrator.ts\nvar Integrator = class {\n  constructor(accelerationFunction) {\n    this.accelerationForState = accelerationFunction;\n  }\n  integrateState(state, dt) {\n    const a = this.evaluateState(state);\n    const b = this.evaluateStateWithDerivative(state, dt * 0.5, a);\n    const c = this.evaluateStateWithDerivative(state, dt * 0.5, b);\n    const d = this.evaluateStateWithDerivative(state, dt, c);\n    const dxdt = 1 / 6 * (a.dx + 2 * (b.dx + c.dx) + d.dx);\n    const dvdt = 1 / 6 * (a.dv + 2 * (b.dv + c.dv) + d.dv);\n    state.x = state.x + dxdt * dt;\n    state.v = state.v + dvdt * dt;\n    return state;\n  }\n  evaluateState(initialState2) {\n    const dv = this.accelerationForState(initialState2);\n    return { dx: initialState2.v, dv };\n  }\n  evaluateStateWithDerivative(initialState2, dt, derivative) {\n    const state = {\n      x: initialState2.x + derivative.dx * dt,\n      v: initialState2.v + derivative.dv * dt\n    };\n    const output = {\n      dx: state.v,\n      dv: this.accelerationForState(state)\n    };\n    return output;\n  }\n};\n\n// ../../library/src/animation/Animators/FrictionAnimator.ts\nvar FrictionAnimator = class {\n  constructor(options) {\n    this.options = {\n      velocity: 0,\n      friction: 2,\n      tolerance: 1 / 10\n    };\n    Object.assign(this.options, options);\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -(this.options.friction * state.v));\n  }\n  setFrom(value) {\n    this.state.x = value;\n  }\n  setTo(value) {\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  getState() {\n    return this.state;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    return this.state.x;\n  }\n  isFinished() {\n    return Math.abs(this.state.v) < this.options.tolerance;\n  }\n};\n\n// ../../library/src/interpolation/Interpolation.ts\nfunction isInterpolatable(value) {\n  return typeof value === \"function\" && value.interpolationFor && typeof value.interpolationFor === \"function\";\n}\nvar Interpolation = {\n  /**\n   * @param from -\n   * @param to -\n   * @internal\n   */\n  handleUndefined: (from, to) => {\n    if (from === void 0) {\n      from = to;\n    }\n    if (to === void 0) {\n      to = from;\n    }\n    return [from, to];\n  }\n};\n\n// ../../library/src/interpolation/NumberInterpolation.ts\nvar NumberInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    const a1 = +from;\n    const b1 = to - a1;\n    return (progress2) => {\n      const value = a1 + b1 * progress2;\n      return value;\n    };\n  },\n  difference(from, to) {\n    return to - from;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringCurveValueConverter.ts\nvar epsilon = 1e-3;\nvar minDuration = 0.01;\nvar maxDuration = 10;\nvar minDamping = Number.MIN_VALUE;\nvar maxDamping = 1;\nfunction approximateRoot(func, derivative, initialGuess, times = 12) {\n  let result = initialGuess;\n  for (let i = 1, end = times, asc = 1 <= end; asc ? i < end : i > end; asc ? i++ : i--) {\n    result = result - func(result) / derivative(result);\n  }\n  return result;\n}\nfunction angularFrequency(undampedFrequency, dampingRatio) {\n  return undampedFrequency * Math.sqrt(1 - Math.pow(dampingRatio, 2));\n}\nvar SpringCurveValueConverter = {\n  computeDampingRatio: (tension, friction, mass = 1) => {\n    return friction / (2 * Math.sqrt(mass * tension));\n  },\n  // Tries to compute the duration of a spring,\n  // but can't for certain velocities and if dampingRatio >= 1\n  // In those cases it will return null\n  computeDuration: (tension, friction, velocity = 0, mass = 1) => {\n    let duration;\n    const dampingRatio = SpringCurveValueConverter.computeDampingRatio(tension, friction);\n    const undampedFrequency = Math.sqrt(tension / mass);\n    if (dampingRatio < 1) {\n      const a = Math.sqrt(1 - Math.pow(dampingRatio, 2));\n      const b = velocity / (a * undampedFrequency);\n      const c = dampingRatio / a;\n      const d = -((b - c) / epsilon);\n      if (d <= 0) {\n        return null;\n      }\n      duration = Math.log(d) / (dampingRatio * undampedFrequency);\n    } else {\n      return null;\n    }\n    return duration;\n  },\n  computeDerivedCurveOptions: (dampingRatio, duration, velocity = 0, mass = 1) => {\n    let derivative, envelope;\n    dampingRatio = Math.max(Math.min(dampingRatio, maxDamping), minDamping);\n    duration = Math.max(Math.min(duration, maxDuration), minDuration);\n    if (dampingRatio < 1) {\n      envelope = function(envelopeUndampedFrequency) {\n        const exponentialDecay = envelopeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const a = exponentialDecay - velocity;\n        const b = angularFrequency(envelopeUndampedFrequency, dampingRatio);\n        const c = Math.exp(-currentDisplacement);\n        return epsilon - a / b * c;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const exponentialDecay = derivativeUndampedFrequency * dampingRatio;\n        const currentDisplacement = exponentialDecay * duration;\n        const d = currentDisplacement * velocity + velocity;\n        const e = Math.pow(dampingRatio, 2) * Math.pow(derivativeUndampedFrequency, 2) * duration;\n        const f = Math.exp(-currentDisplacement);\n        const g = angularFrequency(Math.pow(derivativeUndampedFrequency, 2), dampingRatio);\n        const factor = -envelope(derivativeUndampedFrequency) + epsilon > 0 ? -1 : 1;\n        return factor * ((d - e) * f) / g;\n      };\n    } else {\n      envelope = function(envelopeUndampedFrequency) {\n        const a = Math.exp(-envelopeUndampedFrequency * duration);\n        const b = (envelopeUndampedFrequency - velocity) * duration + 1;\n        return -epsilon + a * b;\n      };\n      derivative = function(derivativeUndampedFrequency) {\n        const a = Math.exp(-derivativeUndampedFrequency * duration);\n        const b = (velocity - derivativeUndampedFrequency) * Math.pow(duration, 2);\n        return a * b;\n      };\n    }\n    const result = {\n      tension: 100,\n      friction: 10,\n      velocity\n    };\n    const initialGuess = 5 / duration;\n    const undampedFrequency = approximateRoot(envelope, derivative, initialGuess);\n    if (!isNaN(undampedFrequency)) {\n      result.tension = Math.pow(undampedFrequency, 2) * mass;\n      result.friction = dampingRatio * 2 * Math.sqrt(mass * result.tension);\n    }\n    return result;\n  }\n};\n\n// ../../library/src/animation/Animators/SpringAnimator.ts\nvar SpringTensionFrictionDefaults = {\n  tension: 500,\n  friction: 10,\n  tolerance: 1 / 1e4,\n  velocity: 0\n};\nvar SpringDampingDurationDefaults = {\n  dampingRatio: 1,\n  duration: 1,\n  velocity: 0,\n  mass: 1\n};\nfunction isDampingDurationSpringOptions(options) {\n  if (!options) {\n    return false;\n  }\n  return typeof options.dampingRatio === \"number\" || typeof options.duration === \"number\" || typeof options.mass === \"number\";\n}\nvar SpringAnimator = class {\n  constructor(options, interpolation) {\n    this.interpolation = interpolation;\n    let _opt;\n    if (isDampingDurationSpringOptions(options)) {\n      const toPass = { ...SpringDampingDurationDefaults, ...options };\n      _opt = SpringCurveValueConverter.computeDerivedCurveOptions(\n        toPass.dampingRatio,\n        toPass.duration,\n        toPass.velocity,\n        toPass.mass\n      );\n    } else {\n      _opt = options;\n    }\n    this.options = { ...SpringTensionFrictionDefaults, ..._opt };\n    this.state = {\n      x: 0,\n      v: this.options.velocity\n    };\n    this.integrator = new Integrator((state) => -this.options.tension * state.x - this.options.friction * state.v);\n  }\n  isReady() {\n    return this.interpolator !== void 0 && this.difference !== void 0;\n  }\n  next(delta) {\n    this.state = this.integrator.integrateState(this.state, delta);\n    const value = this.interpolator(this.progress());\n    return value;\n  }\n  isFinished() {\n    const positionNearZero = Math.abs(this.state.x) < this.options.tolerance;\n    const velocityNearZero = Math.abs(this.state.v) < this.options.tolerance;\n    return positionNearZero && velocityNearZero;\n  }\n  setFrom(value) {\n    this.current = value;\n    this.updateInterpolator();\n  }\n  setVelocity(velocity) {\n    this.state.v = velocity;\n  }\n  progress() {\n    return 1 - this.state.x / this.difference;\n  }\n  // The spring always settles to 0, so we create an interpolation to the destination\n  // And calculate the progress based on the current state and the span of the interpolation\n  // This lets us integrate over state.x, even though Value is generic\n  setTo(value) {\n    this.destination = value;\n    this.difference = this.interpolation.difference(this.destination, this.current);\n    this.state.x = this.difference;\n    this.updateInterpolator();\n  }\n  /** @internal */\n  getState() {\n    return this.state;\n  }\n  updateInterpolator() {\n    if (this.current === void 0 || this.destination === void 0) {\n      return;\n    }\n    this.interpolator = this.interpolation.interpolate(this.current, this.destination);\n  }\n};\n\n// ../../library/src/animation/Animators/InertialScrollAnimator.ts\nvar Defaults = {\n  velocity: 0,\n  min: 0,\n  max: 0,\n  momentum: {\n    friction: 2,\n    tolerance: 10\n  },\n  bounce: {\n    tension: 500,\n    friction: 10,\n    tolerance: 1\n  }\n};\nvar InertialScrollAnimator = class {\n  constructor(options) {\n    this.options = Object.assign({ ...Defaults }, options);\n    this.frictionAnimator = new FrictionAnimator({\n      friction: this.options.momentum.friction,\n      tolerance: this.options.momentum.tolerance,\n      velocity: this.options.velocity\n    });\n    this.springAnimator = new SpringAnimator(\n      {\n        tension: this.options.bounce.tension,\n        friction: this.options.bounce.friction,\n        tolerance: this.options.bounce.tolerance,\n        velocity: this.options.velocity\n      },\n      NumberInterpolation\n    );\n    this.useSpring = false;\n  }\n  isReady() {\n    return true;\n  }\n  next(delta) {\n    this.current = this.currentAnimator.next(delta);\n    if (!this.useSpring) {\n      this.tryTransitionToSpring();\n    }\n    return this.current;\n  }\n  get currentAnimator() {\n    if (this.useSpring) {\n      return this.springAnimator;\n    }\n    return this.frictionAnimator;\n  }\n  isFinished() {\n    return this.currentAnimator.isFinished();\n  }\n  get state() {\n    return this.currentAnimator.getState();\n  }\n  setFrom(value) {\n    this.setState({ x: value, v: this.state.v });\n  }\n  setState(state) {\n    this.frictionAnimator.setFrom(state.x);\n    this.frictionAnimator.setVelocity(state.v);\n    if (this.isValidState()) {\n      return this.tryTransitionToSpring();\n    } else {\n      let bound = 0;\n      if (this.state.x <= this.options.min) {\n        bound = this.options.min;\n      }\n      if (this.state.x >= this.options.max) {\n        bound = this.options.max;\n      }\n      return this.transitionToSpring(bound);\n    }\n  }\n  setTo(destination) {\n    this.frictionAnimator.setTo(destination);\n    this.springAnimator.setTo(destination);\n  }\n  setLimits(min, max) {\n    this.options.min = min;\n    this.options.max = max;\n  }\n  // If the position is outside the min and max bounds, and traveling\n  // further away, then transition from friction to spring animation\n  tryTransitionToSpring() {\n    const belowMinWithVelocity = this.state.x < this.options.min && this.state.v <= 0;\n    const aboveMaxWithVelocity = this.state.x > this.options.max && this.state.v >= 0;\n    if (belowMinWithVelocity || aboveMaxWithVelocity) {\n      let bound;\n      if (belowMinWithVelocity) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      this.transitionToSpring(bound);\n    } else {\n      this.useSpring = false;\n    }\n  }\n  transitionToSpring(bound) {\n    this.springAnimator.setFrom(this.state.x);\n    this.springAnimator.setVelocity(this.state.v);\n    this.springAnimator.setTo(bound);\n    this.useSpring = true;\n  }\n  // If the position is outside the min and max bounds, but traveling\n  // back towards the bounds, check if the velocity is sufficient to\n  // carry the position back within bounds. If it is, let friction do the\n  // work. If not, the state is invalid, so use the spring.\n  isValidState() {\n    const belowMinTravelingBack = this.state.x < this.options.min && this.state.v > 0;\n    const aboveMaxTravelingBack = this.state.x > this.options.max && this.state.v < 0;\n    if (belowMinTravelingBack || aboveMaxTravelingBack) {\n      let bound;\n      if (belowMinTravelingBack) {\n        bound = this.options.min;\n      } else {\n        bound = this.options.max;\n      }\n      const friction = this.frictionAnimator.options.friction;\n      const solution = 1 - friction * (bound - this.state.x) / this.state.v;\n      return solution > 0;\n    }\n    return true;\n  }\n  // The math behind _isValidState:\n  //\n  // 1. Integrate the friction animator's acceleration to find velocity\n  //\n  //         a = - k * v\n  //     dv/dt = - k * v\n  // Int(dv/v) = - k * Int(dt)\n  //      ln v = - k * t + C\n  //\n  // => Solve for C at t = 0\n  //\n  // ln v(0) = - k * 0 + C\n  // ln v(0) = C\n  //\n  // => Plug C back into v(t)\n  //\n  //     ln v = - k * t + ln v(0)\n  // e^(ln v) = e^(- k * t) + e^(ln v(0))\n  //        v = v(0) * e^(- k * t)\n  //\n  // 2. Integrate velocity to find position\n  //\n  // Int(v) = v(0) * Int(e^(- k * t))\n  //      x = - v(0) * e^(-k * t) / k + C\n  //\n  // => Solve for C at t = 0\n  //\n  //            x(0) = - v(0) * e^(-k * 0) / k + C\n  //            x(0) = - v(0) / k + C\n  // x(0) + v(0) / k = C\n  //\n  // => Plug C back into x(t)\n  //\n  // x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //\n  // 3. Check if a (real) solution exists for t for position x\n  //\n  //                                x = - v(0) * e^(-k * t) / k + x(0) + v(0) / k\n  //                         x - x(0) = - v(0) * e^(-k * t) / k + v(0) / k\n  //                   k * (x - x(0)) = - v(0) * e^(-k * t) + v(0)\n  //            k * (x - x(0)) - v(0) = - v(0) * e^(-k * t)\n  // (k * (x - x(0)) - v(0)) / - v(0) = e^(-k * t)\n  //       1 - (k * (x - x(0)) / v(0) = e^(-k * t)\n  //   ln(1 - (k * (x - x(0)) / v(0)) = -k * t\n  //\n  // Therefore, a real solution exists if 1 - (k * (x - x(0)) / v(0) > 0\n};\n\n// ../../library/src/render/types/Color/converters.ts\nvar import_hsluv = __toESM(require_hsluv(), 1);\n\n// ../../library/src/render/types/Color/CSSNames.ts\nvar cssNames = {\n  aliceblue: \"f0f8ff\",\n  antiquewhite: \"faebd7\",\n  aqua: \"0ff\",\n  aquamarine: \"7fffd4\",\n  azure: \"f0ffff\",\n  beige: \"f5f5dc\",\n  bisque: \"ffe4c4\",\n  black: \"000\",\n  blanchedalmond: \"ffebcd\",\n  blue: \"00f\",\n  blueviolet: \"8a2be2\",\n  brown: \"a52a2a\",\n  burlywood: \"deb887\",\n  burntsienna: \"ea7e5d\",\n  cadetblue: \"5f9ea0\",\n  chartreuse: \"7fff00\",\n  chocolate: \"d2691e\",\n  coral: \"ff7f50\",\n  cornflowerblue: \"6495ed\",\n  cornsilk: \"fff8dc\",\n  crimson: \"dc143c\",\n  cyan: \"0ff\",\n  darkblue: \"00008b\",\n  darkcyan: \"008b8b\",\n  darkgoldenrod: \"b8860b\",\n  darkgray: \"a9a9a9\",\n  darkgreen: \"006400\",\n  darkgrey: \"a9a9a9\",\n  darkkhaki: \"bdb76b\",\n  darkmagenta: \"8b008b\",\n  darkolivegreen: \"556b2f\",\n  darkorange: \"ff8c00\",\n  darkorchid: \"9932cc\",\n  darkred: \"8b0000\",\n  darksalmon: \"e9967a\",\n  darkseagreen: \"8fbc8f\",\n  darkslateblue: \"483d8b\",\n  darkslategray: \"2f4f4f\",\n  darkslategrey: \"2f4f4f\",\n  darkturquoise: \"00ced1\",\n  darkviolet: \"9400d3\",\n  deeppink: \"ff1493\",\n  deepskyblue: \"00bfff\",\n  dimgray: \"696969\",\n  dimgrey: \"696969\",\n  dodgerblue: \"1e90ff\",\n  firebrick: \"b22222\",\n  floralwhite: \"fffaf0\",\n  forestgreen: \"228b22\",\n  fuchsia: \"f0f\",\n  gainsboro: \"dcdcdc\",\n  ghostwhite: \"f8f8ff\",\n  gold: \"ffd700\",\n  goldenrod: \"daa520\",\n  gray: \"808080\",\n  green: \"008000\",\n  greenyellow: \"adff2f\",\n  grey: \"808080\",\n  honeydew: \"f0fff0\",\n  hotpink: \"ff69b4\",\n  indianred: \"cd5c5c\",\n  indigo: \"4b0082\",\n  ivory: \"fffff0\",\n  khaki: \"f0e68c\",\n  lavender: \"e6e6fa\",\n  lavenderblush: \"fff0f5\",\n  lawngreen: \"7cfc00\",\n  lemonchiffon: \"fffacd\",\n  lightblue: \"add8e6\",\n  lightcoral: \"f08080\",\n  lightcyan: \"e0ffff\",\n  lightgoldenrodyellow: \"fafad2\",\n  lightgray: \"d3d3d3\",\n  lightgreen: \"90ee90\",\n  lightgrey: \"d3d3d3\",\n  lightpink: \"ffb6c1\",\n  lightsalmon: \"ffa07a\",\n  lightseagreen: \"20b2aa\",\n  lightskyblue: \"87cefa\",\n  lightslategray: \"789\",\n  lightslategrey: \"789\",\n  lightsteelblue: \"b0c4de\",\n  lightyellow: \"ffffe0\",\n  lime: \"0f0\",\n  limegreen: \"32cd32\",\n  linen: \"faf0e6\",\n  magenta: \"f0f\",\n  maroon: \"800000\",\n  mediumaquamarine: \"66cdaa\",\n  mediumblue: \"0000cd\",\n  mediumorchid: \"ba55d3\",\n  mediumpurple: \"9370db\",\n  mediumseagreen: \"3cb371\",\n  mediumslateblue: \"7b68ee\",\n  mediumspringgreen: \"00fa9a\",\n  mediumturquoise: \"48d1cc\",\n  mediumvioletred: \"c71585\",\n  midnightblue: \"191970\",\n  mintcream: \"f5fffa\",\n  mistyrose: \"ffe4e1\",\n  moccasin: \"ffe4b5\",\n  navajowhite: \"ffdead\",\n  navy: \"000080\",\n  oldlace: \"fdf5e6\",\n  olive: \"808000\",\n  olivedrab: \"6b8e23\",\n  orange: \"ffa500\",\n  orangered: \"ff4500\",\n  orchid: \"da70d6\",\n  palegoldenrod: \"eee8aa\",\n  palegreen: \"98fb98\",\n  paleturquoise: \"afeeee\",\n  palevioletred: \"db7093\",\n  papayawhip: \"ffefd5\",\n  peachpuff: \"ffdab9\",\n  peru: \"cd853f\",\n  pink: \"ffc0cb\",\n  plum: \"dda0dd\",\n  powderblue: \"b0e0e6\",\n  purple: \"800080\",\n  rebeccapurple: \"663399\",\n  red: \"f00\",\n  rosybrown: \"bc8f8f\",\n  royalblue: \"4169e1\",\n  saddlebrown: \"8b4513\",\n  salmon: \"fa8072\",\n  sandybrown: \"f4a460\",\n  seagreen: \"2e8b57\",\n  seashell: \"fff5ee\",\n  sienna: \"a0522d\",\n  silver: \"c0c0c0\",\n  skyblue: \"87ceeb\",\n  slateblue: \"6a5acd\",\n  slategray: \"708090\",\n  slategrey: \"708090\",\n  snow: \"fffafa\",\n  springgreen: \"00ff7f\",\n  steelblue: \"4682b4\",\n  tan: \"d2b48c\",\n  teal: \"008080\",\n  thistle: \"d8bfd8\",\n  tomato: \"ff6347\",\n  turquoise: \"40e0d0\",\n  violet: \"ee82ee\",\n  wheat: \"f5deb3\",\n  white: \"fff\",\n  whitesmoke: \"f5f5f5\",\n  yellow: \"ff0\",\n  yellowgreen: \"9acd32\"\n};\n\n// ../../library/src/render/types/Color/types.ts\nvar ColorFormat = /* @__PURE__ */ ((ColorFormat2) => {\n  ColorFormat2[\"RGB\"] = \"rgb\";\n  ColorFormat2[\"HSL\"] = \"hsl\";\n  ColorFormat2[\"HSV\"] = \"hsv\";\n  ColorFormat2[\"HEX\"] = \"hex\";\n  ColorFormat2[\"NAME\"] = \"name\";\n  return ColorFormat2;\n})(ColorFormat || {});\nvar ColorMixModelType = /* @__PURE__ */ ((ColorMixModelType2) => {\n  ColorMixModelType2[\"RGB\"] = \"rgb\";\n  ColorMixModelType2[\"RGBA\"] = \"rgba\";\n  ColorMixModelType2[\"HSL\"] = \"hsl\";\n  ColorMixModelType2[\"HSLA\"] = \"hsla\";\n  ColorMixModelType2[\"HUSL\"] = \"husl\";\n  return ColorMixModelType2;\n})(ColorMixModelType || {});\n\n// ../../library/src/render/types/Color/Utils.ts\nfunction modulate(value, rangeA, rangeB, limit = false) {\n  const [fromLow, fromHigh] = rangeA;\n  const [toLow, toHigh] = rangeB;\n  const fromDelta = fromHigh - fromLow;\n  if (fromDelta === 0)\n    return (toHigh + toLow) / 2;\n  const toDelta = toHigh - toLow;\n  if (toDelta === 0)\n    return toLow;\n  const result = toLow + (value - fromLow) / fromDelta * toDelta;\n  if (limit === true) {\n    if (toLow < toHigh) {\n      if (result < toLow) {\n        return toLow;\n      }\n      if (result > toHigh) {\n        return toHigh;\n      }\n    } else {\n      if (result > toLow) {\n        return toLow;\n      }\n      if (result < toHigh) {\n        return toHigh;\n      }\n    }\n  }\n  return result;\n}\nfunction isNumeric(value) {\n  return !isNaN(value) && isFinite(value);\n}\nfunction percentToFraction(val) {\n  const digits = numberFromString(val);\n  if (digits !== void 0) {\n    if (val.includes(\"%\")) {\n      return digits / 100;\n    }\n    return digits;\n  }\n  return 0;\n}\nfunction numberFromString(input) {\n  const match = input.match(/\\d?\\.?\\d+/);\n  return match ? Number(match[0]) : void 0;\n}\n\n// ../../library/src/render/types/Color/converters.ts\nvar { hsluvToRgb, rgbToHsluv: rgbToHsluvExternal } = import_hsluv.default;\nfunction rgbToHsluv(r, g, b) {\n  const [h, s, l] = rgbToHsluvExternal([r / 255, g / 255, b / 255]);\n  return { h, s, l };\n}\nfunction rgbaFromHusl(h, s, l, a = 1) {\n  const rgb = hsluvToRgb([h, s, l]);\n  return {\n    r: rgb[0] * 255,\n    g: rgb[1] * 255,\n    b: rgb[2] * 255,\n    a\n  };\n}\nfunction hsvToStr(h, s, v, a) {\n  const _h = Math.round(h);\n  const _s = Math.round(s * 100);\n  const _v = Math.round(v * 100);\n  return a === void 0 || a === 1 ? \"hsv(\" + _h + \", \" + _s + \"%, \" + _v + \"%)\" : \"hsva(\" + _h + \", \" + _s + \"%, \" + _v + \"%, \" + a + \")\";\n}\nfunction rgbToRgb(r, g, b) {\n  return {\n    r: isNumeric(r) ? bound01(r, 255) * 255 : 0,\n    g: isNumeric(g) ? bound01(g, 255) * 255 : 0,\n    b: isNumeric(b) ? bound01(b, 255) * 255 : 0\n  };\n}\nfunction rgbToHex(r, g, b, allow3Char) {\n  const hex = [\n    pad2(Math.round(r).toString(16)),\n    pad2(Math.round(g).toString(16)),\n    pad2(Math.round(b).toString(16))\n  ];\n  if (allow3Char && hex[0].charAt(0) === hex[0].charAt(1) && hex[1].charAt(0) === hex[1].charAt(1) && hex[2].charAt(0) === hex[2].charAt(1)) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n  }\n  return hex.join(\"\");\n}\nfunction rgbToHsl(r, g, b) {\n  let l;\n  let s;\n  const _r = bound01(r, 255);\n  const _g = bound01(g, 255);\n  const _b = bound01(b, 255);\n  const max = Math.max(_r, _g, _b);\n  const min = Math.min(_r, _g, _b);\n  let h = s = l = (max + min) / 2;\n  if (max === min) {\n    h = s = 0;\n  } else {\n    const d = max - min;\n    s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n    switch (max) {\n      case _r:\n        h = (_g - _b) / d + (_g < _b ? 6 : 0);\n        break;\n      case _g:\n        h = (_b - _r) / d + 2;\n        break;\n      case _b:\n        h = (_r - _g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h: h * 360, s, l };\n}\nfunction hue2rgb(p, q, t) {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n}\nfunction hslToRgb(h, s, l) {\n  let r;\n  let g;\n  let b;\n  h = bound01(h, 360);\n  s = bound01(s * 100, 100);\n  l = bound01(l * 100, 100);\n  if (s === 0) {\n    r = g = b = l;\n  } else {\n    const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n    const p = 2 * l - q;\n    r = hue2rgb(p, q, h + 1 / 3);\n    g = hue2rgb(p, q, h);\n    b = hue2rgb(p, q, h - 1 / 3);\n  }\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction rgbToHsv(r, g, b) {\n  r = bound01(r, 255);\n  g = bound01(g, 255);\n  b = bound01(b, 255);\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const d = max - min;\n  let h;\n  const s = max === 0 ? 0 : d / max;\n  const v = max;\n  if (max === min) {\n    h = 0;\n  } else {\n    switch (max) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n  return { h, s, v };\n}\nfunction hsvToRgb(h, s, v) {\n  h = bound01(h, 360) * 6;\n  s = bound01(s * 100, 100);\n  v = bound01(v * 100, 100);\n  const i = Math.floor(h);\n  const f = h - i;\n  const p = v * (1 - s);\n  const q = v * (1 - f * s);\n  const t = v * (1 - (1 - f) * s);\n  const mod = i % 6;\n  const r = [v, q, p, p, t, v][mod];\n  const g = [t, v, v, q, p, p][mod];\n  const b = [p, p, t, v, v, q][mod];\n  return { r: r * 255, g: g * 255, b: b * 255 };\n}\nfunction bound01(n, max) {\n  let _max;\n  let _n;\n  if (typeof max === \"string\")\n    _max = parseFloat(max);\n  else\n    _max = max;\n  if (typeof n === \"string\") {\n    if (isOnePointZero(n)) {\n      n = \"100%\";\n    }\n    const processPercent = isPercentage(n);\n    _n = Math.min(_max, Math.max(0, parseFloat(n)));\n    if (processPercent) {\n      _n = Math.floor(_n * _max) / 100;\n    }\n  } else {\n    _n = n;\n  }\n  if (Math.abs(_n - _max) < 1e-6) {\n    return 1;\n  }\n  return _n % _max / _max;\n}\nfunction isOnePointZero(n) {\n  return typeof n === \"string\" && n.includes(\".\") && parseFloat(n) === 1;\n}\nfunction isPercentage(n) {\n  return typeof n === \"string\" && n.includes(\"%\");\n}\nfunction pad2(char) {\n  if (char.length === 1) {\n    return \"0\" + char;\n  } else {\n    return \"\" + char;\n  }\n}\nvar matchers = function() {\n  const cssInteger = \"[-\\\\+]?\\\\d+%?\";\n  const cssNumber = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n  const cssUnit = \"(?:\" + cssNumber + \")|(?:\" + cssInteger + \")\";\n  const permissiveMatch3 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  const permissiveMatch4 = \"[\\\\s|\\\\(]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")[,|\\\\s]+(\" + cssUnit + \")\\\\s*\\\\)?\";\n  return {\n    rgb: new RegExp(\"rgb\" + permissiveMatch3),\n    rgba: new RegExp(\"rgba\" + permissiveMatch4),\n    hsl: new RegExp(\"hsl\" + permissiveMatch3),\n    hsla: new RegExp(\"hsla\" + permissiveMatch4),\n    hsv: new RegExp(\"hsv\" + permissiveMatch3),\n    hsva: new RegExp(\"hsva\" + permissiveMatch4),\n    hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n  };\n}();\nfunction stringToObject(inputColor) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B;\n  if (inputColor.includes(\"gradient(\"))\n    return false;\n  if (inputColor.includes(\"var(\"))\n    return false;\n  const trimLeft = /^[\\s,#]+/;\n  const trimRight = /\\s+$/;\n  let color2 = inputColor.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n  let named = false;\n  if (cssNames[color2]) {\n    color2 = cssNames[color2];\n    named = true;\n  }\n  if (color2 === \"transparent\") {\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 0,\n      format: \"name\" /* NAME */\n    };\n  }\n  let match;\n  if (match = matchers.rgb.exec(color2)) {\n    return {\n      r: parseInt((_a = match[1]) != null ? _a : \"\"),\n      g: parseInt((_b = match[2]) != null ? _b : \"\"),\n      b: parseInt((_c = match[3]) != null ? _c : \"\"),\n      a: 1,\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.rgba.exec(color2)) {\n    return {\n      r: parseInt((_d = match[1]) != null ? _d : \"\"),\n      g: parseInt((_e = match[2]) != null ? _e : \"\"),\n      b: parseInt((_f = match[3]) != null ? _f : \"\"),\n      a: parseFloat((_g = match[4]) != null ? _g : \"\"),\n      format: \"rgb\" /* RGB */\n    };\n  }\n  if (match = matchers.hsl.exec(color2)) {\n    return {\n      h: parseInt((_h = match[1]) != null ? _h : \"\"),\n      s: percentToFraction((_i = match[2]) != null ? _i : \"\"),\n      l: percentToFraction((_j = match[3]) != null ? _j : \"\"),\n      a: 1,\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsla.exec(color2)) {\n    return {\n      h: parseInt((_k = match[1]) != null ? _k : \"\"),\n      s: percentToFraction((_l = match[2]) != null ? _l : \"\"),\n      l: percentToFraction((_m = match[3]) != null ? _m : \"\"),\n      a: parseFloat((_n = match[4]) != null ? _n : \"\"),\n      format: \"hsl\" /* HSL */\n    };\n  }\n  if (match = matchers.hsv.exec(color2)) {\n    return {\n      h: parseInt((_o = match[1]) != null ? _o : \"\"),\n      s: percentToFraction((_p = match[2]) != null ? _p : \"\"),\n      v: percentToFraction((_q = match[3]) != null ? _q : \"\"),\n      a: 1,\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hsva.exec(color2)) {\n    return {\n      h: parseInt((_r = match[1]) != null ? _r : \"\"),\n      s: percentToFraction((_s = match[2]) != null ? _s : \"\"),\n      v: percentToFraction((_t = match[3]) != null ? _t : \"\"),\n      a: parseFloat((_u = match[4]) != null ? _u : \"\"),\n      format: \"hsv\" /* HSV */\n    };\n  }\n  if (match = matchers.hex8.exec(color2)) {\n    return {\n      r: parseIntFromHex((_v = match[1]) != null ? _v : \"\"),\n      g: parseIntFromHex((_w = match[2]) != null ? _w : \"\"),\n      b: parseIntFromHex((_x = match[3]) != null ? _x : \"\"),\n      a: convertHexToDecimal((_y = match[4]) != null ? _y : \"\"),\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex6.exec(color2)) {\n    return {\n      r: parseIntFromHex((_z = match[1]) != null ? _z : \"\"),\n      g: parseIntFromHex((_A = match[2]) != null ? _A : \"\"),\n      b: parseIntFromHex((_B = match[3]) != null ? _B : \"\"),\n      a: 1,\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex4.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: convertHexToDecimal(match[4] + \"\" + match[4]),\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  }\n  if (match = matchers.hex3.exec(color2)) {\n    return {\n      r: parseIntFromHex(`${match[1]}${match[1]}`),\n      g: parseIntFromHex(`${match[2]}${match[2]}`),\n      b: parseIntFromHex(`${match[3]}${match[3]}`),\n      a: 1,\n      format: named ? \"name\" /* NAME */ : \"hex\" /* HEX */\n    };\n  } else {\n    return false;\n  }\n}\nfunction parseIntFromHex(hex) {\n  return parseInt(hex, 16);\n}\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\n\n// ../../library/src/render/types/Color/Color.ts\nvar cache = /* @__PURE__ */ new Map();\nvar Color = /* @__PURE__ */ (() => {\n  function Color2(color2, r, g, b) {\n    if (typeof color2 === \"string\") {\n      let c = cache.get(color2);\n      if (c)\n        return c;\n      c = createColor(color2);\n      if (c === void 0)\n        return { ...Color2(\"black\"), isValid: false };\n      cache.set(color2, c);\n      return c;\n    }\n    const created = createColor(color2, r, g, b);\n    return created !== void 0 ? created : { ...Color2(\"black\"), isValid: false };\n  }\n  function createColor(color2, r, g, b) {\n    if (color2 === \"\")\n      return void 0;\n    const colorData = getCompleteColorStrategy(color2, r, g, b);\n    if (colorData) {\n      const newColor = {\n        r: colorData.r,\n        g: colorData.g,\n        b: colorData.b,\n        a: colorData.a,\n        h: colorData.h,\n        s: colorData.s,\n        l: colorData.l,\n        initialValue: typeof color2 === \"string\" && colorData.format !== \"hsv\" /* HSV */ ? color2 : void 0,\n        roundA: Math.round(100 * colorData.a) / 100,\n        format: colorData.format,\n        mix: Color2.mix,\n        toValue: () => Color2.toRgbString(newColor)\n      };\n      return newColor;\n    } else {\n      return void 0;\n    }\n  }\n  const ColorMixModel = {\n    isRGB(colorModel) {\n      return colorModel === \"rgb\" /* RGB */ || colorModel === \"rgba\" /* RGBA */;\n    },\n    isHSL(colorModel) {\n      return colorModel === \"hsl\" /* HSL */ || colorModel === \"hsla\" /* HSLA */;\n    }\n  };\n  Color2.inspect = (color2, initialValue) => {\n    if (color2.format === \"hsl\" /* HSL */) {\n      return `<${color2.constructor.name} h:${color2.h} s:${color2.s} l:${color2.l} a:${color2.a}>`;\n    } else if (color2.format === \"hex\" /* HEX */ || color2.format === \"name\" /* NAME */) {\n      return `<${color2.constructor.name} \"${initialValue}\">`;\n    } else {\n      return `<${color2.constructor.name} r:${color2.r} g:${color2.g} b:${color2.b} a:${color2.a}>`;\n    }\n  };\n  Color2.isColor = (color2) => {\n    if (typeof color2 === \"string\") {\n      return Color2.isColorString(color2);\n    } else {\n      return Color2.isColorObject(color2);\n    }\n  };\n  Color2.isColorString = (colorString) => {\n    if (typeof colorString === \"string\") {\n      return stringToObject(colorString) !== false;\n    }\n    return false;\n  };\n  Color2.isColorObject = (color2) => {\n    return color2 && typeof color2 !== \"string\" && typeof color2.r === \"number\" && typeof color2.g === \"number\" && typeof color2.b === \"number\" && typeof color2.h === \"number\" && typeof color2.s === \"number\" && typeof color2.l === \"number\" && typeof color2.a === \"number\" && typeof color2.roundA === \"number\" && typeof color2.format === \"string\";\n  };\n  Color2.toString = (color2) => {\n    return Color2.toRgbString(color2);\n  };\n  Color2.toHex = (color2, allow3Char = false) => {\n    return rgbToHex(color2.r, color2.g, color2.b, allow3Char);\n  };\n  Color2.toHexString = (color2, allow3Char = false) => {\n    return `#${Color2.toHex(color2, allow3Char)}`;\n  };\n  Color2.toRgbString = (color2) => {\n    return color2.a === 1 ? \"rgb(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \")\" : \"rgba(\" + Math.round(color2.r) + \", \" + Math.round(color2.g) + \", \" + Math.round(color2.b) + \", \" + color2.roundA + \")\";\n  };\n  Color2.toHusl = (color2) => {\n    return {\n      ...rgbToHsluv(color2.r, color2.g, color2.b),\n      a: color2.roundA\n    };\n  };\n  Color2.toHslString = (color2) => {\n    const hsl = Color2.toHsl(color2);\n    const h = Math.round(hsl.h);\n    const s = Math.round(hsl.s * 100);\n    const l = Math.round(hsl.l * 100);\n    return color2.a === 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toHsv = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: color2.a };\n  };\n  Color2.toHsvString = (color2) => {\n    const hsv = rgbToHsv(color2.r, color2.g, color2.b);\n    const h = Math.round(hsv.h * 360);\n    const s = Math.round(hsv.s * 100);\n    const v = Math.round(hsv.v * 100);\n    return color2.a === 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + color2.roundA + \")\";\n  };\n  Color2.toName = (color2) => {\n    if (color2.a === 0) {\n      return \"transparent\";\n    }\n    if (color2.a < 1) {\n      return false;\n    }\n    const hex = rgbToHex(color2.r, color2.g, color2.b, true);\n    for (const key7 of Object.keys(cssNames)) {\n      const value = cssNames[key7];\n      if (value === hex) {\n        return key7;\n      }\n    }\n    return false;\n  };\n  Color2.toHsl = (color2) => {\n    return {\n      h: Math.round(color2.h),\n      s: color2.s,\n      l: color2.l,\n      a: color2.a\n    };\n  };\n  Color2.toRgb = (color2) => {\n    return {\n      r: Math.round(color2.r),\n      g: Math.round(color2.g),\n      b: Math.round(color2.b),\n      a: color2.a\n    };\n  };\n  Color2.brighten = (color2, amount = 10) => {\n    const rgb = Color2.toRgb(color2);\n    rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n    rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n    rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n    return Color2(rgb);\n  };\n  Color2.lighten = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l += amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.darken = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.l -= amount / 100;\n    hsl.l = Math.min(1, Math.max(0, hsl.l));\n    return Color2(hsl);\n  };\n  Color2.saturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s += amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.desaturate = (color2, amount = 10) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.s -= amount / 100;\n    hsl.s = Math.min(1, Math.max(0, hsl.s));\n    return Color2(hsl);\n  };\n  Color2.grayscale = (color2) => {\n    return Color2.desaturate(color2, 100);\n  };\n  Color2.hueRotate = (color2, angle) => {\n    const hsl = Color2.toHsl(color2);\n    hsl.h += angle;\n    hsl.h = hsl.h > 360 ? hsl.h - 360 : hsl.h;\n    return Color2(hsl);\n  };\n  Color2.alpha = (color2, a = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a\n    });\n  };\n  Color2.transparent = (color2) => {\n    return Color2.alpha(color2, 0);\n  };\n  Color2.multiplyAlpha = (color2, alphaValue = 1) => {\n    return Color2({\n      r: color2.r,\n      g: color2.g,\n      b: color2.b,\n      a: color2.a * alphaValue\n    });\n  };\n  Color2.interpolate = (colorA, colorB, model = \"rgb\" /* RGB */) => {\n    if (!Color2.isColorObject(colorA) || !Color2.isColorObject(colorB)) {\n      throw new TypeError(\"Both arguments for Color.interpolate must be Color objects\");\n    }\n    return (progress2) => {\n      const color2 = Color2.mixAsColor(colorA, colorB, progress2, false, model);\n      return color2;\n    };\n  };\n  Color2.mix = (from, toColor, { model = \"rgb\" /* RGB */ } = {}) => {\n    const fromColor = typeof from === \"string\" ? Color2(from) : from;\n    const mixer = Color2.interpolate(fromColor, toColor, model);\n    return (p) => Color2.toRgbString(mixer(p));\n  };\n  Color2.mixAsColor = (colorA, colorB, fraction2 = 0.5, limit = false, model = \"rgb\" /* RGB */) => {\n    let result = null;\n    if (ColorMixModel.isRGB(model)) {\n      result = Color2({\n        r: modulate(fraction2, [0, 1], [colorA.r, colorB.r], limit),\n        g: modulate(fraction2, [0, 1], [colorA.g, colorB.g], limit),\n        b: modulate(fraction2, [0, 1], [colorA.b, colorB.b], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      });\n    } else {\n      let hslA, hslB;\n      if (ColorMixModel.isHSL(model)) {\n        hslA = Color2.toHsl(colorA);\n        hslB = Color2.toHsl(colorB);\n      } else {\n        hslA = Color2.toHusl(colorA);\n        hslB = Color2.toHusl(colorB);\n      }\n      if (hslA.s === 0) {\n        hslA.h = hslB.h;\n      } else if (hslB.s === 0) {\n        hslB.h = hslA.h;\n      }\n      const fromH = hslA.h;\n      const toH = hslB.h;\n      let deltaH = toH - fromH;\n      if (deltaH > 180) {\n        deltaH = toH - 360 - fromH;\n      } else if (deltaH < -180) {\n        deltaH = toH + 360 - fromH;\n      }\n      const tween = {\n        h: modulate(fraction2, [0, 1], [fromH, fromH + deltaH], limit),\n        s: modulate(fraction2, [0, 1], [hslA.s, hslB.s], limit),\n        l: modulate(fraction2, [0, 1], [hslA.l, hslB.l], limit),\n        a: modulate(fraction2, [0, 1], [colorA.a, colorB.a], limit)\n      };\n      if (ColorMixModel.isHSL(model)) {\n        result = Color2(tween);\n      } else {\n        result = Color2(rgbaFromHusl(tween.h, tween.s, tween.l, tween.a));\n      }\n    }\n    return result;\n  };\n  Color2.random = (alphaValue = 1) => {\n    function gen() {\n      return Math.floor(Math.random() * 255);\n    }\n    return Color2(\"rgba(\" + gen() + \", \" + gen() + \", \" + gen() + \", \" + alphaValue + \")\");\n  };\n  Color2.grey = (amount = 0.5, alphaValue = 1) => {\n    amount = Math.floor(amount * 255);\n    return Color2(\"rgba(\" + amount + \", \" + amount + \", \" + amount + \", \" + alphaValue + \")\");\n  };\n  Color2.gray = Color2.grey;\n  Color2.rgbToHsl = (r, g, b) => {\n    return rgbToHsl(r, g, b);\n  };\n  Color2.isValidColorProperty = (name, value) => {\n    const isColorKey = name.toLowerCase().slice(-5) === \"color\" || name === \"fill\" || name === \"stroke\";\n    if (isColorKey && typeof value === \"string\" && Color2.isColorString(value)) {\n      return true;\n    }\n    return false;\n  };\n  Color2.difference = (colorA, colorB) => {\n    const _r = (colorA.r + colorB.r) / 2;\n    const deltaR = colorA.r - colorB.r;\n    const deltaG = colorA.g - colorB.g;\n    const deltaB = colorA.b - colorB.b;\n    const deltaR2 = Math.pow(deltaR, 2);\n    const deltaG2 = Math.pow(deltaG, 2);\n    const deltaB2 = Math.pow(deltaB, 2);\n    return Math.sqrt(2 * deltaR2 + 4 * deltaG2 + 3 * deltaB2 + _r * (deltaR2 - deltaB2) / 256);\n  };\n  Color2.equal = (colorA, colorB, tolerance = 0.1) => {\n    if (Math.abs(colorA.r - colorB.r) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.g - colorB.g) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.b - colorB.b) >= tolerance) {\n      return false;\n    }\n    if (Math.abs(colorA.a - colorB.a) * 256 >= tolerance) {\n      return false;\n    }\n    return true;\n  };\n  const channelToDecimal = interpolate([0, 255], [0, 1]);\n  function convertChannelToLinearRgb(channel) {\n    channel = channelToDecimal(channel);\n    const abs = Math.abs(channel);\n    if (abs < 0.04045)\n      return channel / 12.92;\n    return (Math.sign(channel) || 1) * Math.pow((abs + 0.055) / 1.055, 2.4);\n  }\n  Color2.luminance = (color2) => {\n    const { r, g, b } = Color2.toRgb(color2);\n    return 0.2126 * convertChannelToLinearRgb(r) + 0.7152 * convertChannelToLinearRgb(g) + 0.0722 * convertChannelToLinearRgb(b);\n  };\n  Color2.contrast = (a, b) => {\n    const l1 = Color2.luminance(a);\n    const l2 = Color2.luminance(b);\n    return (Math.max(l1, l2) + 0.05) / (Math.min(l1, l2) + 0.05);\n  };\n  return Color2;\n})();\nfunction getCompleteColorStrategy(colorOrR, g, b, a = 1) {\n  let completeColor;\n  if (typeof colorOrR === \"number\" && !Number.isNaN(colorOrR) && typeof g === \"number\" && !Number.isNaN(g) && typeof b === \"number\" && !Number.isNaN(b)) {\n    const _r = colorOrR;\n    const _g = g;\n    const _b = b;\n    const _a = a;\n    completeColor = getCompleteColorFromRGB({ r: _r, g: _g, b: _b, a: _a });\n  } else if (typeof colorOrR === \"string\") {\n    completeColor = getCompleteColorFromString(colorOrR);\n  } else if (typeof colorOrR === \"object\") {\n    if (colorOrR.hasOwnProperty(\"r\") && colorOrR.hasOwnProperty(\"g\") && colorOrR.hasOwnProperty(\"b\")) {\n      completeColor = getCompleteColorFromRGB(colorOrR);\n    } else {\n      completeColor = getCompleteColorFromHSL(colorOrR);\n    }\n  }\n  return completeColor;\n}\nfunction getCompleteColorFromString(color2) {\n  const result = stringToObject(color2);\n  if (result) {\n    if (result.format === \"hsl\" /* HSL */) {\n      return getCompleteColorFromHSL(result);\n    } else if (result.format === \"hsv\" /* HSV */) {\n      return getCompleteColorFromHSV(result);\n    } else {\n      return getCompleteColorFromRGB(result);\n    }\n  }\n}\nfunction getCompleteColorFromHSV(color2) {\n  const rgb = hsvToRgb(color2.h, color2.s, color2.v);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromRGB(color2) {\n  const rgb = rgbToRgb(color2.r, color2.g, color2.b);\n  const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n  return {\n    ...hsl,\n    ...rgb,\n    format: \"rgb\" /* RGB */,\n    a: color2.a !== void 0 ? correctAlpha(color2.a) : 1\n  };\n}\nfunction getCompleteColorFromHSL(color2) {\n  let h;\n  let s;\n  let l;\n  let rgb = { r: 0, g: 0, b: 0 };\n  let hsl = { h: 0, s: 0, l: 0 };\n  h = isNumeric(color2.h) ? color2.h : 0;\n  h = (h + 360) % 360;\n  s = isNumeric(color2.s) ? color2.s : 1;\n  if (typeof color2.s === \"string\") {\n    s = numberFromString(color2.s);\n  }\n  l = isNumeric(color2.l) ? color2.l : 0.5;\n  if (typeof color2.l === \"string\") {\n    l = numberFromString(color2.l);\n  }\n  rgb = hslToRgb(h, s, l);\n  hsl = {\n    h,\n    s,\n    l\n  };\n  return {\n    ...rgb,\n    ...hsl,\n    a: color2.a === void 0 ? 1 : color2.a,\n    format: \"hsl\" /* HSL */\n  };\n}\nfunction correctAlpha(alphaValue) {\n  alphaValue = parseFloat(alphaValue);\n  if (alphaValue < 0) {\n    alphaValue = 0;\n  }\n  if (isNaN(alphaValue) || alphaValue > 1) {\n    alphaValue = 1;\n  }\n  return alphaValue;\n}\n\n// ../../library/src/interpolation/ColorInterpolation.ts\nvar ColorInterpolation = (type = \"husl\" /* HUSL */) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return Color.interpolate(Color(from), Color(to), type);\n    },\n    difference(from, to) {\n      return Color.difference(Color(from), Color(to));\n    }\n  };\n};\n\n// ../../library/src/interpolation/NoInterpolation.ts\nvar NoInterpolation = {\n  interpolate(from, to) {\n    ;\n    [from, to] = Interpolation.handleUndefined(from, to);\n    return (progress2) => {\n      return progress2 < 0.5 ? from : to;\n    };\n  },\n  difference(from, to) {\n    return from === to ? 0 : 1;\n  }\n};\n\n// ../../library/src/interpolation/ObjectInterpolation.ts\nvar ObjectInterpolation = (valueInterpolation) => {\n  return {\n    interpolate(from, to) {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      const result = Object.assign({}, from);\n      const interpolations = {};\n      const keys3 = /* @__PURE__ */ new Set();\n      for (const key7 in from) {\n        interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n        keys3.add(key7);\n      }\n      for (const key7 in to) {\n        if (!keys3.has(key7)) {\n          interpolations[key7] = valueInterpolation.interpolate(from[key7], to[key7]);\n          keys3.add(key7);\n        }\n      }\n      return (progress2) => {\n        for (const key7 in interpolations) {\n          result[key7] = interpolations[key7](progress2);\n        }\n        return result;\n      };\n    },\n    difference(from, to) {\n      let sum = 0;\n      for (const key7 in from) {\n        const difference = valueInterpolation.difference(from[key7], to[key7]);\n        sum += Math.pow(difference, 2);\n      }\n      return Math.sqrt(sum);\n    }\n  };\n};\n\n// ../../library/src/interpolation/ValueInterpolation.ts\nvar DefaultInterpolationOptions = {\n  colorModel: \"husl\" /* HUSL */\n};\nvar ValueInterpolation = class {\n  /**\n   * @internal\n   */\n  constructor(options = DefaultInterpolationOptions) {\n    /**\n     * @internal\n     */\n    this.interpolate = (from, to) => {\n      ;\n      [from, to] = Interpolation.handleUndefined(from, to);\n      return this.interPolationForValue(from).interpolate(from, to);\n    };\n    /**\n     * @internal\n     */\n    this.difference = (from, to) => {\n      const interpolation = this.interPolationForValue(from);\n      return interpolation.difference(from, to);\n    };\n    this.options = { ...DefaultInterpolationOptions, ...options };\n  }\n  /**\n   * @internal\n   */\n  interPolationForValue(value) {\n    const type = typeof value;\n    if (type === \"number\") {\n      return NumberInterpolation;\n    } else if (type === \"boolean\" || type === \"function\") {\n      return NoInterpolation;\n    } else if (Color.isColor(value)) {\n      return ColorInterpolation(this.options.colorModel);\n    } else if (type === \"object\") {\n      if (value === null) {\n        return NoInterpolation;\n      }\n      const constructor = value.constructor;\n      if (constructor && isInterpolatable(constructor)) {\n        const interpolation = constructor.interpolationFor(value, this);\n        if (interpolation && interpolation !== this && interpolation.constructor !== ValueInterpolation) {\n          return interpolation;\n        }\n      }\n      return ObjectInterpolation(this);\n    }\n    console.warn(`No interpolation defined for ${value}`);\n    return NoInterpolation;\n  }\n};\nvar AnyInterpolation = /* @__PURE__ */ new ValueInterpolation();\n\n// ../../library/src/animation/Animators/PrecalculatedAnimator.ts\nvar Defaults2 = {\n  delta: 1 / 60,\n  maxValues: 1e4\n};\nvar PrecalculatedAnimator = class {\n  constructor(options) {\n    this.currentTime = 0;\n    this.options = { ...Defaults2, ...options };\n    this.animator = options.animator;\n  }\n  preCalculate() {\n    if (!this.animator.isReady()) {\n      return;\n    }\n    const { delta } = this.options;\n    this.values = [];\n    while (!this.animator.isFinished() && this.values.length < this.options.maxValues) {\n      let value = this.animator.next(this.options.delta);\n      if (typeof value === \"object\" && value) {\n        const object = value;\n        const copy = { ...object };\n        value = copy;\n      }\n      this.values.push(value);\n    }\n    this.totalTime = this.values.length * delta;\n  }\n  indexForTime(time2) {\n    return Math.max(\n      0,\n      Math.min(this.values.length - 1, Math.round(this.values.length * (time2 / this.totalTime)) - 1)\n    );\n  }\n  valueForTime(time2) {\n    const index = this.indexForTime(time2);\n    const value = this.values[index];\n    return value;\n  }\n  setFrom(value) {\n    this.animator.setFrom(value);\n    this.preCalculate();\n  }\n  setTo(end) {\n    this.animator.setTo(end);\n    this.preCalculate();\n  }\n  isReady() {\n    return this.values !== void 0 && this.values.length > 0 && this.totalTime > 0;\n  }\n  next(delta) {\n    this.currentTime += delta;\n    return this.valueForTime(this.currentTime);\n  }\n  isFinished() {\n    return this.totalTime === 0 || this.currentTime >= this.totalTime;\n  }\n  get endValue() {\n    this.preCalculate();\n    const value = this.valueForTime(this.totalTime);\n    return this.values.length > 0 ? value : this.animator.next(0);\n  }\n};\n\n// ../../library/src/utils/safeWindow.ts\nvar mockWindow = {\n  addEventListener: () => {\n  },\n  removeEventListener: () => {\n  },\n  dispatchEvent: () => false,\n  ResizeObserver: void 0,\n  onpointerdown: false,\n  onpointermove: false,\n  onpointerup: false,\n  ontouchstart: false,\n  ontouchmove: false,\n  ontouchend: false,\n  onmousedown: false,\n  onmousemove: false,\n  onmouseup: false,\n  devicePixelRatio: 1,\n  scrollX: 0,\n  scrollY: 0,\n  location: {\n    href: \"\"\n  },\n  setTimeout: () => 0,\n  clearTimeout: () => {\n  },\n  setInterval: () => 0,\n  clearInterval: () => {\n  },\n  requestAnimationFrame: () => 0,\n  cancelAnimationFrame: () => {\n  },\n  getSelection: () => null,\n  matchMedia: (query) => {\n    return {\n      matches: false,\n      media: query,\n      onchange: () => {\n      },\n      addEventListener: () => {\n      },\n      removeEventListener: () => {\n      },\n      addListener: () => {\n      },\n      removeListener: () => {\n      },\n      dispatchEvent: () => false\n    };\n  },\n  innerHeight: 0,\n  SVGSVGElement: {}\n};\nvar safeWindow = typeof window === \"undefined\" ? mockWindow : window;\n\n// ../../library/src/core/Time.ts\nvar _raf = (f) => {\n  setTimeout(f, 1 / 60);\n};\nvar __raf = safeWindow[\"requestAnimationFrame\"] || _raf;\nvar raf = (f) => __raf(f);\n\n// ../../library/src/core/EventEmitter.ts\nvar import_eventemitter3 = __toESM(require_eventemitter3(), 1);\nvar { EventEmitter: EventEmitter3 } = import_eventemitter3.default;\nvar EventEmitter = class {\n  constructor() {\n    this._emitter = new EventEmitter3();\n  }\n  eventNames() {\n    return this._emitter.eventNames();\n  }\n  eventListeners() {\n    const listeners = {};\n    for (const eventName of this._emitter.eventNames()) {\n      listeners[eventName] = this._emitter.listeners(eventName);\n    }\n    return listeners;\n  }\n  on(eventName, fn) {\n    this.addEventListener(eventName, fn, false, false, this);\n  }\n  off(eventName, fn) {\n    this.removeEventListeners(eventName, fn);\n  }\n  once(eventName, fn) {\n    this.addEventListener(eventName, fn, true, false, this);\n  }\n  unique(eventName, fn) {\n    this.addEventListener(eventName, fn, false, true, this);\n  }\n  addEventListener(eventName, fn, once, unique, context) {\n    if (unique) {\n      for (const name of this._emitter.eventNames()) {\n        if (fn === this._emitter.listeners(name)) {\n          return;\n        }\n      }\n    }\n    if (once === true) {\n      this._emitter.once(eventName, fn, context);\n    } else {\n      this._emitter.addListener(eventName, fn, context);\n    }\n  }\n  removeEventListeners(eventName, fn) {\n    if (eventName) {\n      this._emitter.removeListener(eventName, fn);\n    } else {\n      this.removeAllEventListeners();\n    }\n  }\n  removeAllEventListeners() {\n    this._emitter.removeAllListeners();\n  }\n  countEventListeners(eventName, handler) {\n    if (eventName) {\n      return this._emitter.listeners(eventName).length;\n    } else {\n      let count = 0;\n      for (const name of this._emitter.eventNames()) {\n        count += this._emitter.listeners(name).length;\n      }\n      return count;\n    }\n  }\n  emit(eventName, ...args) {\n    this._emitter.emit(eventName, ...args);\n  }\n};\n\n// ../../library/src/core/Loop.ts\nvar LoopTimeStep = 1 / 60;\nvar Loop = class extends EventEmitter {\n  /**\n   * @internal\n   */\n  constructor(start = false) {\n    super();\n    this._started = false;\n    this._frame = 0;\n    this._frameTasks = [];\n    /**\n     * @internal\n     */\n    this.tick = () => {\n      if (!this._started)\n        return;\n      raf(this.tick);\n      this.emit(\"update\", this._frame, LoopTimeStep);\n      this.emit(\"render\", this._frame, LoopTimeStep);\n      this._processFrameTasks();\n      this._frame++;\n    };\n    if (start) {\n      this.start();\n    }\n  }\n  /**\n   * To add a task to be done at the end of a frame.\n   * Tasks added from a task will be ignored. These will run after loop events have been processed.\n   * @internal\n   */\n  addFrameTask(task) {\n    this._frameTasks.push(task);\n  }\n  _processFrameTasks() {\n    var _a;\n    const postEventTasks = this._frameTasks;\n    const length = postEventTasks.length;\n    if (length === 0)\n      return;\n    for (let i = 0; i < length; i++) {\n      (_a = postEventTasks[i]) == null ? void 0 : _a.call(postEventTasks);\n    }\n    postEventTasks.length = 0;\n  }\n  /**\n   * @internal\n   */\n  static set TimeStep(value) {\n    LoopTimeStep = value;\n  }\n  /**\n   * @internal\n   */\n  static get TimeStep() {\n    return LoopTimeStep;\n  }\n  /**\n   * @internal\n   */\n  start() {\n    if (this._started)\n      return this;\n    this._frame = 0;\n    this._started = true;\n    raf(this.tick);\n    return this;\n  }\n  /**\n   * @internal\n   * @deprecated Don\u2019t use `stop` as you could be stopping the MainLoop for others.\n   */\n  stop() {\n    this._started = false;\n    return this;\n  }\n  /**\n   * @internal\n   */\n  get frame() {\n    return this._frame;\n  }\n  /**\n   * @internal\n   */\n  get time() {\n    return this._frame * LoopTimeStep;\n  }\n};\nvar MainLoop = new Loop();\n\n// ../../library/src/render/types/RenderEnvironment.ts\nvar RenderTarget = /* @__PURE__ */ ((RenderTarget2) => {\n  RenderTarget2[\"canvas\"] = \"CANVAS\";\n  RenderTarget2[\"export\"] = \"EXPORT\";\n  RenderTarget2[\"thumbnail\"] = \"THUMBNAIL\";\n  RenderTarget2[\"preview\"] = \"PREVIEW\";\n  return RenderTarget2;\n})(RenderTarget || {});\nvar RenderEnvironment = {\n  imageBaseURL: \"\",\n  target: \"PREVIEW\" /* preview */,\n  zoom: 1\n};\nfunction executeInRenderEnvironment(customEnvironment, task) {\n  const previousEnvironment = Object.assign({}, RenderEnvironment);\n  Object.assign(RenderEnvironment, customEnvironment);\n  const result = task();\n  Object.assign(RenderEnvironment, previousEnvironment);\n  return result;\n}\nfunction setGlobalRenderEnvironment(environment2) {\n  Object.assign(RenderEnvironment, environment2);\n}\nfunction useRenderEnvironment(target, imageBaseURL, zoom) {\n  let willChangeElements = false;\n  if (RenderEnvironment.imageBaseURL !== imageBaseURL) {\n    RenderEnvironment.imageBaseURL = imageBaseURL;\n    willChangeElements = true;\n  }\n  if (RenderEnvironment.target !== target) {\n    RenderEnvironment.target = target;\n    willChangeElements = true;\n  }\n  if (RenderEnvironment.zoom !== zoom) {\n    RenderEnvironment.zoom = zoom;\n  }\n  return { willChangeElements };\n}\n((RenderTarget2) => {\n  function current() {\n    return RenderEnvironment.target;\n  }\n  RenderTarget2.current = current;\n  function hasRestrictions() {\n    const target = RenderEnvironment.target;\n    if (target === \"CANVAS\" /* canvas */)\n      return true;\n    if (target === \"EXPORT\" /* export */)\n      return true;\n    return false;\n  }\n  RenderTarget2.hasRestrictions = hasRestrictions;\n})(RenderTarget || (RenderTarget = {}));\n\n// ../../library/src/animation/Drivers/AnimationDriver.ts\nvar AnimationDriver = class {\n  constructor(animator, updateCallback, finishedCallback) {\n    this.animator = animator;\n    this.updateCallback = updateCallback;\n    this.finishedCallback = finishedCallback;\n    this.update = (frame2, elapsed) => {\n      if (this.animator.isFinished()) {\n        this.finish();\n      } else {\n        const value = this.animator.next(elapsed);\n        this.updateCallback(value);\n      }\n    };\n    if (!this.animator.isReady()) {\n      console.warn(\"AnimationDriver initialized with animator that isn't ready\");\n    }\n  }\n  finish() {\n    if (this.finishedCallback) {\n      this.finishedCallback(this.animator.isFinished());\n    }\n  }\n  isFinished() {\n    return this.animator.isFinished();\n  }\n};\n\n// ../../library/src/animation/Drivers/MainLoopDriver.ts\nvar MainLoopAnimationDriver = class extends AnimationDriver {\n  play() {\n    if (RenderEnvironment.target !== \"PREVIEW\" /* preview */) {\n      this.finishedCallback && this.finishedCallback(false);\n      return;\n    }\n    MainLoop.on(\"update\", this.update);\n  }\n  cancel() {\n    MainLoop.off(\"update\", this.update);\n  }\n  finish() {\n    MainLoop.off(\"update\", this.update);\n    super.finish();\n  }\n};\n\n// ../../library/src/animation/FramerAnimation.ts\nvar DefaultDeprecatedAnimationOptions = {\n  precalculate: false,\n  colorModel: \"husl\" /* HUSL */\n};\nvar FramerAnimation = class {\n  /**\n   * @internal\n   */\n  constructor(target, from, to, animatorClass, options, driverClass = MainLoopAnimationDriver) {\n    /**\n     * @internal\n     */\n    this.playStateSource = \"idle\";\n    /**\n     * @internal\n     */\n    this.readyPromise = Promise.resolve();\n    this.resetFinishedPromise();\n    const deprecatedAnimationOptions = { ...DefaultDeprecatedAnimationOptions };\n    const animatorOptions = {};\n    if (options) {\n      Object.assign(deprecatedAnimationOptions, options);\n      Object.assign(animatorOptions, options);\n    }\n    let interpolation;\n    if (deprecatedAnimationOptions.customInterpolation) {\n      interpolation = deprecatedAnimationOptions.customInterpolation;\n    } else {\n      interpolation = new ValueInterpolation(options);\n    }\n    let animator;\n    if (!animatorClass) {\n      animator = new BezierAnimator({}, interpolation);\n    } else {\n      animator = new animatorClass(animatorOptions, interpolation);\n    }\n    if (deprecatedAnimationOptions.precalculate) {\n      animator = new PrecalculatedAnimator({ animator });\n    }\n    animator.setFrom(from);\n    animator.setTo(to);\n    const updateCallback = (value) => {\n      FramerAnimation.driverCallbackHandler(target, value);\n    };\n    const finishedCallback = (isFinished) => {\n      if (isFinished) {\n        FramerAnimation.driverCallbackHandler(target, to);\n        if (this.playStateSource === \"running\") {\n          this.playStateValue = \"finished\";\n        }\n      }\n    };\n    this.driver = new driverClass(animator, updateCallback, finishedCallback);\n  }\n  /**\n   * @internal\n   */\n  static driverCallbackHandler(target, value) {\n    if (isAnimatable(target) || isMotionValue2(target)) {\n      target.set(value);\n    } else {\n      const targetObject = target;\n      Animatable.transaction((update) => {\n        for (const key7 in targetObject) {\n          const targetValue = targetObject[key7];\n          if (isAnimatable(targetValue)) {\n            update(targetValue, value[key7]);\n          } else {\n            targetObject[key7] = value[key7];\n          }\n        }\n      });\n    }\n  }\n  /**\n   * @internal\n   */\n  get playStateValue() {\n    return this.playStateSource;\n  }\n  /**\n   * @internal\n   */\n  set playStateValue(value) {\n    if (value !== this.playStateSource) {\n      const oldValue = value;\n      this.playStateSource = value;\n      switch (value) {\n        case \"idle\":\n          if (oldValue === \"running\") {\n            this.oncancel && this.oncancel();\n          }\n          this.readyResolve && this.readyResolve();\n          this.resetReadyPromise();\n          break;\n        case \"finished\":\n          if (oldValue === \"idle\") {\n            console.warn(\"Bad state transition\");\n            break;\n          }\n          this.onfinish && this.onfinish();\n          this.finishedResolve && this.finishedResolve();\n          break;\n        case \"running\":\n          this.resetReadyPromise();\n          break;\n      }\n      if (oldValue === \"finished\") {\n        this.resetFinishedPromise();\n      }\n      if (value === \"finished\") {\n        this.playStateValue = \"idle\";\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  get playState() {\n    return this.playStateValue;\n  }\n  /**\n   * @internal\n   */\n  resetReadyPromise() {\n    this.readyResolve = null;\n    this.readyPromise = new Promise((resolve, reject) => {\n      this.readyResolve = resolve;\n    });\n  }\n  /**\n       * Wait for the animation to be ready to play.\n       * @remarks\n       * ```jsx\n       * const animation = animate.ease(value, 100)\n       * animation.ready().then(() => {\n       *    // Animation is ready\n       * })\n  \n       * // async/await syntax\n       * const animation = animate.ease(value, 100)\n       * await animation.ready()\n       * // Animation is ready\n       * ```\n       * @returns Promise that is resolved when the animation is ready to play\n       * @public\n       */\n  get ready() {\n    return this.readyPromise;\n  }\n  /**\n   * @internal\n   */\n  resetFinishedPromise() {\n    this.finishedResolve = null;\n    this.finishedReject = null;\n    this.finishedPromise = new Promise((resolve, reject) => {\n      this.finishedResolve = resolve;\n      this.finishedReject = reject;\n    });\n    this.finishedPromise.catch((reason) => {\n    });\n  }\n  /**\n   * Wait for the animation to be finished.\n   * @remarks\n   * ```jsx\n   * // async/await syntax\n   * const animation = animate.ease(value, 100)\n   * await animation.finished()\n   * // Animation is finished\n   *\n   *\n   * const animation = animate.ease(value, 100)\n   * animation.ready().then(() => {\n   *    // Animation is finished\n   * })\n   * ```\n   * @returns Promise that is resolved when the animation is ready to play\n   * @public\n   */\n  get finished() {\n    return this.finishedPromise;\n  }\n  /**\n   * @internal\n   */\n  play() {\n    this.playStateValue = \"running\";\n    this.driver.play();\n  }\n  /**\n   * Cancels the animation if it is still running.\n   * @remarks\n   * ```jsx\n   * const animation = animate.ease(value, 100, {duration: 3})\n   * setTimeout(() => animation.cancel(), 500)\n   * ```\n   * @public\n   */\n  cancel() {\n    if (this.playStateValue !== \"running\") {\n      return;\n    }\n    this.driver.cancel();\n    if (this.playState !== \"idle\") {\n      const reason = \"AbortError\";\n      this.finishedReject && this.finishedReject(reason);\n    }\n    this.playStateValue = \"idle\";\n  }\n  /**\n   * @internal\n   */\n  finish() {\n    if (this.playStateSource === \"running\") {\n      this.playStateValue = \"finished\";\n      this.driver.finish();\n    }\n  }\n  /**\n   * @internal\n   */\n  isFinished() {\n    return this.playStateValue === \"finished\";\n  }\n};\n\n// ../../library/src/animation/animate.ts\nfunction deprecatedAnimate(from, to, animator, options) {\n  deprecationWarning(\"animate()\", \"2.0.0\", \"the new animation API (https://www.framer.com/api/animation/)\");\n  const target = from;\n  let fromValue;\n  if (isAnimatable(from) || isMotionValue2(from)) {\n    fromValue = from.get();\n  } else {\n    fromValue = Animatable.objectToValues(from);\n  }\n  const animation = new FramerAnimation(target, fromValue, to, animator, options);\n  animation.play();\n  return animation;\n}\nvar animate2 = /* @__PURE__ */ (() => {\n  function animate3(from, to, animatorOrTransition, options) {\n    return isAnimatable(from) ? deprecatedAnimate(from, to, animatorOrTransition, options) : animate(from, to, animatorOrTransition);\n  }\n  animate3.spring = (from, to, options) => {\n    return animate3(from, to, SpringAnimator, options);\n  };\n  animate3.bezier = (from, to, options) => {\n    return animate3(from, to, BezierAnimator, options);\n  };\n  animate3.linear = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"linear\" /* Linear */ });\n  };\n  animate3.ease = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease\" /* Ease */ });\n  };\n  animate3.easeIn = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in\" /* EaseIn */ });\n  };\n  animate3.easeOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-out\" /* EaseOut */ });\n  };\n  animate3.easeInOut = (from, to, options) => {\n    return animate3.bezier(from, to, { ...options, curve: \"ease-in-out\" /* EaseInOut */ });\n  };\n  return animate3;\n})();\n\n// ../../library/src/animation/Motion/MotionSetup.tsx\nimport React14 from \"react\";\n\n// ../../library/src/animation/Motion/autoValueHandlers.ts\nvar correctBorderScale = (axis) => ({\n  correct: (latest, { delta, treeScale }) => {\n    if (typeof latest === \"string\")\n      latest = parseFloat(latest);\n    if (latest === 0)\n      return \"0px\";\n    let corrected = latest;\n    if (delta && treeScale) {\n      corrected = Math.round(latest / delta[axis].scale / treeScale[axis]);\n      corrected = Math.max(corrected, 1);\n    }\n    return corrected + \"px\";\n  }\n});\n\n// ../../library/src/animation/Motion/MotionSetup.tsx\naddScaleCorrector({\n  borderTopWidth: correctBorderScale(\"y\"),\n  borderLeftWidth: correctBorderScale(\"x\"),\n  borderRightWidth: correctBorderScale(\"x\"),\n  borderBottomWidth: correctBorderScale(\"y\")\n});\nfunction MotionSetup({ children }) {\n  return /* @__PURE__ */ React14.createElement(React14.Fragment, null, children);\n}\n\n// ../../library/src/animation/Motion/startAnimation.ts\nfunction startAnimation(_key, value, target, transition = {}) {\n  warnOnce(\n    `\"startAnimation\" is unsupported. Use \"animate\" instead: https://www.framer.com/api/motion/utilities/#animate`\n  );\n  return new Promise((resolve) => {\n    animate(value, target, {\n      ...transition,\n      onComplete: () => resolve()\n    });\n  });\n}\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nimport React15, { useCallback, useContext as useContext2, useMemo, useRef } from \"react\";\n\n// ../../library/src/utils/assert.ts\nfunction assert(condition, ...msg2) {\n  var _a, _b;\n  if (condition)\n    return;\n  const e = Error(\"Assertion Error\" + (msg2.length > 0 ? \": \" + msg2.join(\" \") : \"\"));\n  if (e.stack) {\n    try {\n      const lines = e.stack.split(\"\\n\");\n      if ((_a = lines[1]) == null ? void 0 : _a.includes(\"assert\")) {\n        lines.splice(1, 1);\n        e.stack = lines.join(\"\\n\");\n      } else if ((_b = lines[0]) == null ? void 0 : _b.includes(\"assert\")) {\n        lines.splice(0, 1);\n        e.stack = lines.join(\"\\n\");\n      }\n    } catch {\n    }\n  }\n  throw e;\n}\nfunction assertNever(x, error) {\n  throw error || new Error(x ? `Unexpected value: ${x}` : \"Application entered invalid state\");\n}\n\n// ../../library/src/components/AnimateLayout/LayoutIdContext.tsx\nvar LayoutIdContext = React15.createContext({\n  getLayoutId: (args) => null,\n  persistLayoutIdCache: () => {\n  },\n  top: false,\n  enabled: true\n});\nfunction LayoutIdProvider({ children }) {\n  const context = useContext2(LayoutIdContext);\n  if (context.top)\n    return /* @__PURE__ */ React15.createElement(React15.Fragment, null, children);\n  const cache3 = useRef({\n    // When we provide a layoutId for a node based on it's first\n    // duplicatedFrom id, we save it's layoutId mapped to it's actual id.\n    // Future screen's nodes will check this cache first, to see if they've\n    // previously been assigned a layoutId, or if any of there other\n    // duplicatedFrom ids matched a node that was previously assigned a\n    // layoutId.\n    byId: {},\n    byName: {},\n    // When we navigate from screens that were duplicated from a future\n    // screen, to that future screen, we want to do a reverse lookup on the\n    // last duplicatedFrom id, rather than the id. We need to keep them\n    // separate so they don't overlap.\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {},\n    // When we don't have a cached layoutId for all duplicatedFrom ids, we\n    // need to increment and save it so that we don't create clashing\n    // layoutIds. We also need to reset name counts between screens, so we\n    // record those separately.\n    count: {\n      byId: {},\n      byName: {}\n    }\n  });\n  const screen = useRef({\n    byId: {},\n    byName: {},\n    byLastId: {},\n    byPossibleId: {},\n    byLastName: {},\n    byLayoutId: {}\n  });\n  const usedIds = useRef(/* @__PURE__ */ new Set()).current;\n  const getLayoutId = useCallback(({ id, name, duplicatedFrom }) => {\n    if (!id)\n      return null;\n    const cacheKey = name ? \"byName\" : \"byId\";\n    const previousId = cache3.current[cacheKey][id];\n    if (previousId)\n      return previousId;\n    const nodeIdentifier = name || id;\n    if (!duplicatedFrom && !usedIds.has(nodeIdentifier) && (!cache3.current.byLayoutId[nodeIdentifier] || cache3.current.byLayoutId[nodeIdentifier] === nodeIdentifier)) {\n      if (cache3.current.count[cacheKey][nodeIdentifier] === void 0) {\n        cache3.current.count[cacheKey][nodeIdentifier] = 0;\n        cache3.current.byLayoutId[nodeIdentifier] = nodeIdentifier;\n        screen.current[cacheKey][id] = nodeIdentifier;\n      }\n      usedIds.add(nodeIdentifier);\n      return nodeIdentifier;\n    }\n    let possibleMatch = void 0;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      for (let index = duplicatedFrom.length - 1; index >= 0; index--) {\n        const duplicatedId = duplicatedFrom[index];\n        assert(!!duplicatedId, `duplicatedId must be defined`);\n        const match = cache3.current[cacheKey][duplicatedId];\n        const byLastIdMatch = cache3.current.byLastId[duplicatedId];\n        if (byLastIdMatch && !possibleMatch) {\n          const matchedLayoutId = cache3.current.byLayoutId[byLastIdMatch];\n          const shouldUseNamedLastIdMatch = !matchedLayoutId || matchedLayoutId === name;\n          if (byLastIdMatch && !usedIds.has(byLastIdMatch) && (name ? shouldUseNamedLastIdMatch : true)) {\n            possibleMatch = [byLastIdMatch, duplicatedId];\n          }\n        }\n        const previousLayoutId = cache3.current.byLayoutId[match];\n        const shouldUseNamedMatch = !previousLayoutId || previousLayoutId === name;\n        if (match && !usedIds.has(match) && (name ? shouldUseNamedMatch : true)) {\n          screen.current[cacheKey][id] = match;\n          screen.current.byLastId[duplicatedId] = match;\n          usedIds.add(match);\n          return match;\n        }\n      }\n    }\n    const last = cache3.current.byLastId[id];\n    if (last && !usedIds.has(last)) {\n      usedIds.add(last);\n      screen.current.byId[id] = last;\n      return last;\n    }\n    if (possibleMatch) {\n      const [match, duplicatedId] = possibleMatch;\n      screen.current[cacheKey][id] = match;\n      screen.current.byLastId[duplicatedId] = match;\n      usedIds.add(match);\n      return match;\n    }\n    const possible = cache3.current.byPossibleId[id];\n    if (possible && !usedIds.has(possible)) {\n      usedIds.add(possible);\n      screen.current.byId[id] = possible;\n      return possible;\n    }\n    const rootDuplicatedId = duplicatedFrom == null ? void 0 : duplicatedFrom[0];\n    const identifier = name || rootDuplicatedId || id;\n    const value = cache3.current.count[cacheKey][identifier] + 1 || 0;\n    const { layoutId, value: nextValue } = nextLayoutId(identifier, value, usedIds);\n    cache3.current.count[cacheKey][identifier] = nextValue;\n    screen.current[cacheKey][id] = layoutId;\n    if (duplicatedFrom == null ? void 0 : duplicatedFrom.length) {\n      if (!name) {\n        const lastId = duplicatedFrom[duplicatedFrom.length - 1];\n        if (lastId) {\n          screen.current.byLastId[lastId] = layoutId;\n        }\n        if (duplicatedFrom.length > 1) {\n          for (let index = 0; index < duplicatedFrom.length - 1; index++) {\n            const possibleId = duplicatedFrom[index];\n            if (possibleId === void 0)\n              continue;\n            if (!screen.current.byPossibleId[possibleId]) {\n              screen.current.byPossibleId[possibleId] = layoutId;\n            }\n          }\n        }\n      }\n    }\n    screen.current.byLayoutId[layoutId] = nodeIdentifier;\n    usedIds.add(layoutId);\n    return layoutId;\n  }, []);\n  const persistLayoutIdCache = useCallback(() => {\n    cache3.current = {\n      byId: {\n        ...cache3.current.byId,\n        ...screen.current.byId\n      },\n      byLastId: {\n        ...cache3.current.byLastId,\n        ...screen.current.byLastId\n      },\n      byPossibleId: {\n        ...cache3.current.byPossibleId,\n        ...screen.current.byPossibleId\n      },\n      byName: {\n        ...cache3.current.byName,\n        ...screen.current.byName\n      },\n      byLastName: { ...cache3.current.byLastName, ...screen.current.byLastName },\n      byLayoutId: { ...cache3.current.byLayoutId, ...screen.current.byLayoutId },\n      // Unlike the count.byId, we need to reset the count.byName because\n      // named layers might not have duplicatedFrom ids (e.g. imported\n      // from Figma). When we can use duplicatedFrom ids to check if an id\n      // was assigned on a previous screen, we don't increment the count,\n      // which means that the count only increments for new items, and\n      // only increments on a new screen if the node is new. Since named\n      // layers need to always match in some way between screens, we reset\n      // the count so that the second named layer on a second screen is\n      // always name-1 if it doesn't have any duplicatedFrom ids.\n      count: {\n        ...cache3.current.count,\n        byName: {}\n      }\n    };\n    screen.current = {\n      byId: {},\n      byName: {},\n      byLastId: {},\n      byPossibleId: {},\n      byLastName: {},\n      byLayoutId: {}\n    };\n    usedIds.clear();\n  }, []);\n  const contextValue = useRef({\n    getLayoutId,\n    persistLayoutIdCache,\n    top: true,\n    enabled: true\n  }).current;\n  return /* @__PURE__ */ React15.createElement(LayoutIdContext.Provider, { value: contextValue }, children);\n}\nfunction nextLayoutId(identifier, initialValue, usedIds) {\n  let value = initialValue;\n  let layoutId = value ? `${identifier}-${value}` : identifier;\n  while (usedIds.has(layoutId)) {\n    value++;\n    layoutId = `${identifier}-${value}`;\n  }\n  return { layoutId, value };\n}\nfunction AutomaticLayoutIds({ enabled = true, ...props }) {\n  const context = useContext2(LayoutIdContext);\n  const contextValue = useMemo(() => {\n    return {\n      ...context,\n      enabled\n    };\n  }, [enabled]);\n  return /* @__PURE__ */ React15.createElement(LayoutIdContext.Provider, { ...props, value: contextValue });\n}\n\n// ../../library/src/components/Device/Device.tsx\nimport React17, { Component as Component2 } from \"react\";\n\n// ../../library/src/components/utils/useConstant.ts\nimport { useRef as useRef2 } from \"react\";\nfunction useConstant(init) {\n  const ref = useRef2(null);\n  if (ref.current === null) {\n    ref.current = init();\n  }\n  return ref.current;\n}\n\n// ../../library/src/components/Device/ErrorPlaceholder.tsx\nimport React16 from \"react\";\nvar baseStyle = {\n  background: void 0,\n  display: \"flex\",\n  flexDirection: \"column\",\n  justifyContent: \"center\",\n  alignItems: \"center\",\n  lineHeight: \"1.4em\",\n  textOverflow: \"ellipsis\",\n  overflow: \"hidden\",\n  minHeight: 0,\n  width: \"100%\",\n  height: \"100%\"\n};\nvar errorStyle = {\n  ...baseStyle,\n  border: \"1px solid rgba(149, 149, 149, 0.15)\",\n  borderRadius: 6,\n  fontSize: \"12px\",\n  backgroundColor: \"rgba(149, 149, 149, 0.1)\",\n  color: \"#a5a5a5\"\n};\nvar textStyle = {\n  overflow: \"hidden\",\n  whiteSpace: \"nowrap\",\n  textOverflow: \"ellipsis\",\n  maxWidth: \"100%\",\n  flexShrink: 0,\n  padding: `0 10px`\n};\nvar titleStyle = {\n  ...textStyle,\n  // TODO: Use Fresco tokens for this.\n  fontWeight: 500\n};\nvar messageStyle = {\n  ...textStyle,\n  whiteSpace: \"pre\",\n  maxHeight: \"calc(50% - calc(20px * var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)))\",\n  WebkitMaskImage: \"linear-gradient(to bottom, black 80%, transparent 100%)\"\n};\nfunction ErrorPlaceholder(props) {\n  const { error, file } = props;\n  const title = file ? `Error in ${stripSlash(file)}` : \"Error\";\n  const message = error instanceof Error ? error.message : \"\" + error;\n  return /* @__PURE__ */ React16.createElement(\"div\", { style: errorStyle }, /* @__PURE__ */ React16.createElement(\"div\", { className: \"text\", style: titleStyle }, title), message && /* @__PURE__ */ React16.createElement(\"div\", { className: \"text\", style: messageStyle }, message));\n}\nfunction stripSlash(title) {\n  if (title.startsWith(\"./\")) {\n    return title.replace(\"./\", \"\");\n  }\n  return title;\n}\n\n// ../../library/src/components/Device/Device.tsx\nfunction getScaleData(deviceOptions, containerSize) {\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const scaleX = containerSize.width / componentWidth;\n  const scaleY = containerSize.height / componentHeight;\n  const scale = Math.min(scaleX, scaleY, 1);\n  let screenScalePixelFix = 1;\n  if (scale < 1) {\n    const actualScreenWidth = deviceOptions.screenWidth * scale;\n    const desiredScreenWidth = actualScreenWidth + 1;\n    const screenScaleX = desiredScreenWidth / actualScreenWidth;\n    const actualScreenHeight = deviceOptions.screenHeight * scale;\n    const desiredScreenHeight = actualScreenHeight + 1;\n    const screenScaleY = desiredScreenHeight / actualScreenHeight;\n    const screenScale = Math.max(screenScaleX, screenScaleY);\n    screenScalePixelFix = screenScale;\n  }\n  return {\n    scale,\n    screenScalePixelFix,\n    scaledComponentWidth: componentWidth * scale,\n    scaledComponentHeight: componentHeight * scale,\n    scaledDeviceWidth: deviceOptions.deviceWidth * scale,\n    scaledDeviceHeight: deviceOptions.deviceHeight * scale\n  };\n}\nfunction getColorsFromTheme(theme, type) {\n  if (type === \"none\")\n    return {};\n  if (!theme)\n    return {};\n  const isDarkTheme = theme === \"dark\";\n  return {\n    shadowColor: isDarkTheme ? \"rgba(0, 0, 0, 0.55)\" : \"rgba(0, 0, 0, 0.15)\",\n    bezelColor: isDarkTheme ? \"#222\" : \"#fff\",\n    bezelShadeColor: isDarkTheme ? \"#000\" : \"rgba(0, 0, 0, 0.2)\",\n    screenColor: isDarkTheme ? \"#333\" : \"#eee\"\n  };\n}\nvar ErrorBoundary2 = class extends Component2 {\n  constructor() {\n    super(...arguments);\n    this.state = {};\n  }\n  componentDidCatch(error, info) {\n    let stack = info.componentStack.split(\"\\n\").filter((line) => line.length !== 0);\n    let currentIndex = 0;\n    for (const line of stack) {\n      if (line.startsWith(`    in ${this.constructor.name}`)) {\n        break;\n      }\n      currentIndex++;\n    }\n    stack = stack.slice(0, currentIndex);\n    this.setState({\n      lastError: {\n        error,\n        componentStack: stack\n      }\n    });\n  }\n  componentDidUpdate(_, prevState) {\n    if (this.state.lastError === void 0)\n      return;\n    if (prevState.lastError === this.state.lastError)\n      this.setState({ lastError: void 0 });\n  }\n  render() {\n    if (this.state.lastError) {\n      return /* @__PURE__ */ React17.createElement(ErrorPlaceholder, { error: this.state.lastError.error.message, file: \"Prototype\" });\n    }\n    return this.props.children;\n  }\n};\nfunction Device({\n  canResize = false,\n  children,\n  ResizeObserver: ResizeObserver2 = safeWindow.ResizeObserver,\n  ...options\n}) {\n  var _a;\n  const optionsRef = React17.useRef(void 0);\n  if (optionsRef.current === void 0)\n    optionsRef.current = options;\n  const deviceAppearance = (_a = options.deviceOptions) == null ? void 0 : _a.appearance.type;\n  const scaleDataRef = React17.useRef();\n  const containerRef = React17.useRef(null);\n  const deviceRef = React17.useRef(null);\n  const screenRef = React17.useRef(null);\n  const updateImperativeScale = ({ scale, screenScalePixelFix }) => {\n    if (!scaleDataRef.current || !deviceRef.current || !screenRef.current)\n      return;\n    deviceRef.current.style.transform = `scale(${scale})`;\n    screenRef.current.style.transform = `scale(${screenScalePixelFix})`;\n  };\n  if (scaleDataRef.current === void 0 && options.deviceOptions && options.scaleTo && options.scaleTo !== \"dynamic\") {\n    const scale = scaleDataRef.current = getScaleData(options.deviceOptions, options.scaleTo);\n    updateImperativeScale(scale);\n  }\n  const invertScale = React17.useCallback(\n    (point) => {\n      if (!scaleDataRef.current)\n        return point;\n      const { scale = 1 } = scaleDataRef.current;\n      return { x: point.x / scale, y: point.y / scale };\n    },\n    [scaleDataRef]\n  );\n  const updateScale = React17.useCallback(() => {\n    var _a2;\n    const { deviceOptions, scaleTo, onScaleChange } = (_a2 = optionsRef.current) != null ? _a2 : {};\n    if (!deviceOptions || !scaleTo || scaleTo !== \"dynamic\" || !containerRef.current)\n      return;\n    if (containerRef.current.offsetWidth === 0 || containerRef.current.offsetHeight === 0)\n      return;\n    const scaleData = scaleDataRef.current = getScaleData(deviceOptions, {\n      width: containerRef.current.offsetWidth,\n      height: containerRef.current.offsetHeight\n    });\n    onScaleChange == null ? void 0 : onScaleChange(scaleData);\n    updateImperativeScale(scaleData);\n  }, []);\n  const observer = useConstant(() => {\n    if (!ResizeObserver2) {\n      return;\n    }\n    return new ResizeObserver2(() => updateScale());\n  });\n  React17.useLayoutEffect(() => {\n    optionsRef.current = {\n      deviceOptions: options.deviceOptions,\n      onScaleChange: options.onScaleChange,\n      overrideTheme: options.overrideTheme,\n      scaleTo: options.scaleTo\n    };\n  }, [options.deviceOptions, options.onScaleChange, options.overrideTheme, options.scaleTo]);\n  React17.useLayoutEffect(() => {\n    updateScale();\n  }, [updateScale]);\n  React17.useEffect(() => {\n    if (!observer || !containerRef.current)\n      return;\n    observer.observe(containerRef.current);\n    return () => observer.disconnect();\n  }, [observer]);\n  const { containerStyle, handStyle, deviceStyle, deviceImageStyle, screenStyle } = getDeviceStyle(options);\n  const resizeStyles = canResize ? {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    height: \"100%\"\n  } : {};\n  return /* @__PURE__ */ React17.createElement(\"div\", { style: { ...containerStyle, ...resizeStyles }, ref: containerRef }, /* @__PURE__ */ React17.createElement(\"div\", { style: { ...deviceStyle }, ref: deviceRef }, handStyle && /* @__PURE__ */ React17.createElement(\"div\", { style: handStyle }), deviceAppearance === \"external-clay\" && deviceImageStyle && /* @__PURE__ */ React17.createElement(\"div\", { style: deviceImageStyle }), /* @__PURE__ */ React17.createElement(\n    \"div\",\n    {\n      style: {\n        ...screenStyle,\n        pointerEvents: void 0,\n        backgroundColor: children ? \"white\" : screenStyle.backgroundColor\n      },\n      ref: screenRef\n    },\n    /* @__PURE__ */ React17.createElement(MotionConfig, { transformPagePoint: invertScale }, /* @__PURE__ */ React17.createElement(ErrorBoundary2, null, children))\n  ), deviceAppearance === \"realistic\" && deviceImageStyle && /* @__PURE__ */ React17.createElement(\"div\", { style: deviceImageStyle })));\n}\nvar DEVICE_PADDING = 45;\nvar HAND_IMG_WIDTH = 2400;\nvar HAND_IMG_HEIGHT = 3740;\nvar HAND_IMG_GAP_WIDTH = 859;\nvar HAND_IMG_GAP_LEFT = 772;\nvar HAND_IMG_GAP_BOTTOM = 992 - 5;\nvar noDeviceSize = { componentWidth: 500, componentHeight: 500 };\nfunction getComponentSize(options) {\n  if (!options)\n    return noDeviceSize;\n  const { deviceWidth, deviceHeight, noPadding } = options;\n  const padding = noPadding ? 0 : DEVICE_PADDING * 2;\n  return {\n    componentWidth: deviceWidth + padding,\n    componentHeight: deviceHeight + padding\n  };\n}\nfunction getDeviceStyle({ scaleTo, deviceOptions, overrideTheme } = {}) {\n  var _a, _b, _c;\n  const noDeviceStyle = { containerStyle: {}, deviceStyle: {}, screenStyle: {} };\n  if (!deviceOptions)\n    return noDeviceStyle;\n  const { componentWidth, componentHeight } = getComponentSize(deviceOptions);\n  const overriddenColors = getColorsFromTheme(overrideTheme, deviceOptions.appearance.type);\n  const {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenMaxHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius,\n    screenMaskImage,\n    screenColor,\n    shadow,\n    background,\n    hand\n  } = deviceOptions;\n  const boxShadows = [];\n  if (appearance.type === \"clay\" && shadow) {\n    boxShadows.push(shadow);\n  }\n  let bezelStyle = void 0;\n  if (appearance.type === \"clay\") {\n    bezelStyle = {\n      borderRadius: appearance.bezelRadius,\n      backgroundColor: overriddenColors.bezelColor || appearance.bezelColor\n    };\n    if (overriddenColors.bezelShadeColor || appearance.bezelShadeColor) {\n      boxShadows.push(`inset 0 0 15px ${overriddenColors.bezelShadeColor || appearance.bezelShadeColor}`);\n    }\n  }\n  const handOffsetLeft = (_a = hand == null ? void 0 : hand.offsetLeft) != null ? _a : 0;\n  const handOffsetRight = (_b = hand == null ? void 0 : hand.offsetRight) != null ? _b : 0;\n  const handOffsetBottom = (_c = hand == null ? void 0 : hand.offsetBottom) != null ? _c : 0;\n  const handScale = (deviceWidth - handOffsetLeft - handOffsetRight) / HAND_IMG_GAP_WIDTH;\n  return {\n    containerStyle: {\n      width: scaleTo ? \"100%\" : componentWidth,\n      height: scaleTo ? \"100%\" : componentHeight,\n      flex: \"1 1 0\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      background\n    },\n    handStyle: hand && {\n      width: HAND_IMG_WIDTH * handScale,\n      height: HAND_IMG_HEIGHT * handScale,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      backgroundImage: `url(\"${hand.imageUrl}\")`,\n      backgroundSize: \"contain\",\n      backgroundRepeat: \"no-repeat\",\n      left: -HAND_IMG_GAP_LEFT * handScale + handOffsetLeft,\n      bottom: -HAND_IMG_GAP_BOTTOM * handScale + handOffsetBottom\n    },\n    deviceStyle: {\n      width: deviceWidth,\n      height: deviceHeight,\n      flexShrink: 0,\n      position: \"absolute\",\n      boxShadow: boxShadows.join(\",\"),\n      ...bezelStyle\n    },\n    deviceImageStyle: appearance.type === \"realistic\" || appearance.type === \"external-clay\" ? {\n      width: appearance.imageWidth,\n      height: appearance.imageHeight,\n      position: \"absolute\",\n      pointerEvents: \"none\",\n      overflow: \"hidden\",\n      backgroundImage: `url(\"${appearance.imageUrl}\")`,\n      backgroundPosition: \"top left\",\n      backgroundRepeat: \"no-repeat\",\n      backgroundSize: `${appearance.imageWidth}px ${appearance.imageHeight}px`,\n      // Rotate 90 degrees counter-clockwise around (0,0), then move the\n      // result down into the viewport (rightmost transform is applied first).\n      transformOrigin: \"top left\",\n      transform: appearance.rotateImage ? `translateY(${appearance.imageWidth}px) rotate(-90deg)` : void 0\n    } : void 0,\n    screenStyle: {\n      width: screenWidth,\n      height: screenHeight,\n      maxHeight: screenMaxHeight,\n      position: \"absolute\",\n      top: screenOffsetTop,\n      left: screenOffsetLeft,\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      overflow: \"hidden\",\n      borderRadius: screenRadius,\n      backgroundColor: overriddenColors.screenColor || screenColor,\n      ...screenMaskImage && {\n        maskImage: screenMaskImage,\n        WebkitMaskImage: screenMaskImage,\n        maskSize: \"contain\",\n        WebkitMaskSize: \"contain\"\n      }\n    }\n  };\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nimport React20 from \"react\";\n\n// ../../library/src/render/types/NewConstraints.tsx\nimport React18 from \"react\";\n\n// ../../library/src/render/utils/isFiniteNumber.ts\nfunction isFiniteNumber(value) {\n  return typeof value === \"number\" && isFinite(value);\n}\nfunction finiteNumber(value) {\n  return isFiniteNumber(value) ? value : void 0;\n}\n\n// ../../library/src/utils/type-guards.ts\nfunction isEmpty(obj) {\n  return !obj || !Object.keys(obj).length && obj.constructor === Object;\n}\nfunction isReactElement(test) {\n  return typeof test !== \"string\" && typeof test !== \"number\";\n}\nfunction isReactChild(test) {\n  return test !== null && typeof test !== \"undefined\" && typeof test !== \"boolean\" && !isEmpty(test);\n}\n\n// ../../library/src/render/types/Rect.ts\nvar Rect;\n((Rect2) => {\n  function equals(rect, other) {\n    if (rect === other)\n      return true;\n    if (!rect || !other)\n      return false;\n    return rect.x === other.x && rect.y === other.y && rect.width === other.width && rect.height === other.height;\n  }\n  Rect2.equals = equals;\n  Rect2.atOrigin = (size2) => {\n    return { ...size2, x: 0, y: 0 };\n  };\n  Rect2.fromTwoPoints = (a, b) => {\n    return {\n      x: Math.min(a.x, b.x),\n      y: Math.min(a.y, b.y),\n      width: Math.abs(a.x - b.x),\n      height: Math.abs(a.y - b.y)\n    };\n  };\n  Rect2.fromRect = (rect) => {\n    return {\n      x: rect.left,\n      y: rect.top,\n      width: rect.right - rect.left,\n      height: rect.bottom - rect.top\n    };\n  };\n  Rect2.multiply = (rect, n) => {\n    return {\n      x: rect.x * n,\n      y: rect.y * n,\n      width: rect.width * n,\n      height: rect.height * n\n    };\n  };\n  Rect2.divide = (rect, n) => {\n    return (0, Rect2.multiply)(rect, 1 / n);\n  };\n  Rect2.offset = (rect, delta) => {\n    const xOffset = typeof delta.x === \"number\" ? delta.x : 0;\n    const yOffset = typeof delta.y === \"number\" ? delta.y : 0;\n    return {\n      ...rect,\n      x: rect.x + xOffset,\n      y: rect.y + yOffset\n    };\n  };\n  function inflate(rect, value) {\n    if (value === 0)\n      return rect;\n    const doubleValue = 2 * value;\n    return {\n      x: rect.x - value,\n      y: rect.y - value,\n      width: rect.width + doubleValue,\n      height: rect.height + doubleValue\n    };\n  }\n  Rect2.inflate = inflate;\n  Rect2.pixelAligned = (rect) => {\n    const x = Math.round(rect.x);\n    const y = Math.round(rect.y);\n    const rectMaxX = Math.round(rect.x + rect.width);\n    const rectMaxY = Math.round(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  };\n  Rect2.halfPixelAligned = (rect) => {\n    const x = Math.round(rect.x * 2) / 2;\n    const y = Math.round(rect.y * 2) / 2;\n    const rectMaxX = Math.round((rect.x + rect.width) * 2) / 2;\n    const rectMaxY = Math.round((rect.y + rect.height) * 2) / 2;\n    const width = Math.max(rectMaxX - x, 1);\n    const height = Math.max(rectMaxY - y, 1);\n    return { x, y, width, height };\n  };\n  Rect2.round = (rect, decimals = 0) => {\n    const x = roundedNumber(rect.x, decimals);\n    const y = roundedNumber(rect.y, decimals);\n    const width = roundedNumber(rect.width, decimals);\n    const height = roundedNumber(rect.height, decimals);\n    return { x, y, width, height };\n  };\n  Rect2.roundToOutside = (rect) => {\n    const x = Math.floor(rect.x);\n    const y = Math.floor(rect.y);\n    const rectMaxX = Math.ceil(rect.x + rect.width);\n    const rectMaxY = Math.ceil(rect.y + rect.height);\n    const width = Math.max(rectMaxX - x, 0);\n    const height = Math.max(rectMaxY - y, 0);\n    return { x, y, width, height };\n  };\n  Rect2.minX = (rect) => {\n    return rect.x;\n  };\n  Rect2.maxX = (rect) => {\n    return rect.x + rect.width;\n  };\n  Rect2.minY = (rect) => {\n    return rect.y;\n  };\n  Rect2.maxY = (rect) => {\n    return rect.y + rect.height;\n  };\n  Rect2.positions = (rect) => {\n    return {\n      minX: rect.x,\n      midX: rect.x + rect.width / 2,\n      maxX: (0, Rect2.maxX)(rect),\n      minY: rect.y,\n      midY: rect.y + rect.height / 2,\n      maxY: (0, Rect2.maxY)(rect)\n    };\n  };\n  Rect2.center = (rect) => {\n    return {\n      x: rect.x + rect.width / 2,\n      y: rect.y + rect.height / 2\n    };\n  };\n  Rect2.fromPoints = (ps) => {\n    const xValues = ps.map((point) => point.x);\n    const yValues = ps.map((point) => point.y);\n    const x = Math.min(...xValues);\n    const y = Math.min(...yValues);\n    const width = Math.max(...xValues) - x;\n    const height = Math.max(...yValues) - y;\n    return { x, y, width, height };\n  };\n  Rect2.merge = (...rect) => {\n    const min = {\n      x: Math.min(...rect.map(Rect2.minX)),\n      y: Math.min(...rect.map(Rect2.minY))\n    };\n    const max = {\n      x: Math.max(...rect.map(Rect2.maxX)),\n      y: Math.max(...rect.map(Rect2.maxY))\n    };\n    return (0, Rect2.fromTwoPoints)(min, max);\n  };\n  Rect2.intersection = (rect1, rect2) => {\n    const x = Math.max(rect1.x, rect2.x);\n    const x2 = Math.min(rect1.x + rect1.width, rect2.x + rect2.width);\n    const y = Math.max(rect1.y, rect2.y);\n    const y2 = Math.min(rect1.y + rect1.height, rect2.y + rect2.height);\n    return { x, y, width: x2 - x, height: y2 - y };\n  };\n  Rect2.points = (rect) => {\n    return [\n      { x: (0, Rect2.minX)(rect), y: (0, Rect2.minY)(rect) },\n      { x: (0, Rect2.minX)(rect), y: (0, Rect2.maxY)(rect) },\n      { x: (0, Rect2.maxX)(rect), y: (0, Rect2.minY)(rect) },\n      { x: (0, Rect2.maxX)(rect), y: (0, Rect2.maxY)(rect) }\n    ];\n  };\n  Rect2.transform = (rect, matrix) => {\n    const { x: x1, y: y1 } = matrix.transformPoint({ x: rect.x, y: rect.y });\n    const { x: x2, y: y2 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y });\n    const { x: x3, y: y3 } = matrix.transformPoint({ x: rect.x + rect.width, y: rect.y + rect.height });\n    const { x: x4, y: y4 } = matrix.transformPoint({ x: rect.x, y: rect.y + rect.height });\n    const x = Math.min(x1, x2, x3, x4);\n    const width = Math.max(x1, x2, x3, x4) - x;\n    const y = Math.min(y1, y2, y3, y4);\n    const height = Math.max(y1, y2, y3, y4) - y;\n    return { x, y, width, height };\n  };\n  Rect2.containsPoint = (rect, point) => {\n    if (point.x < (0, Rect2.minX)(rect)) {\n      return false;\n    }\n    if (point.x > (0, Rect2.maxX)(rect)) {\n      return false;\n    }\n    if (point.y < (0, Rect2.minY)(rect)) {\n      return false;\n    }\n    if (point.y > (0, Rect2.maxY)(rect)) {\n      return false;\n    }\n    if (isNaN(rect.x)) {\n      return false;\n    }\n    if (isNaN(rect.y)) {\n      return false;\n    }\n    return true;\n  };\n  Rect2.containsRect = (rectA, rectB) => {\n    for (const point of (0, Rect2.points)(rectB)) {\n      if (!(0, Rect2.containsPoint)(rectA, point)) {\n        return false;\n      }\n    }\n    return true;\n  };\n  Rect2.toCSS = (rect) => {\n    return {\n      display: \"block\",\n      transform: `translate(${rect.x}px, ${rect.y}px)`,\n      width: `${rect.width}px`,\n      height: `${rect.height}px`\n    };\n  };\n  Rect2.inset = (rect, n) => {\n    return {\n      x: rect.x + n,\n      y: rect.y + n,\n      width: Math.max(0, rect.width - 2 * n),\n      height: Math.max(0, rect.height - 2 * n)\n    };\n  };\n  Rect2.intersects = (rectA, rectB) => {\n    return !(rectB.x >= (0, Rect2.maxX)(rectA) || (0, Rect2.maxX)(rectB) <= rectA.x || rectB.y >= (0, Rect2.maxY)(rectA) || (0, Rect2.maxY)(rectB) <= rectA.y);\n  };\n  Rect2.overlapHorizontally = (rectA, rectB) => {\n    const aMax = Rect2.maxX(rectA);\n    const bMax = Rect2.maxX(rectB);\n    return aMax > rectB.x && bMax > rectA.x;\n  };\n  Rect2.overlapVertically = (rectA, rectB) => {\n    const aMax = Rect2.maxY(rectA);\n    const bMax = Rect2.maxY(rectB);\n    return aMax > rectB.y && bMax > rectA.y;\n  };\n  Rect2.doesNotIntersect = (rect, rects) => {\n    return rects.find((comparingRect) => {\n      return Rect2.intersects(comparingRect, rect);\n    }) === void 0;\n  };\n  Rect2.isEqual = (rectA, rectB) => {\n    if (rectA && rectB) {\n      const { x, y, width, height } = rectA;\n      return rectB.x === x && rectB.y === y && rectB.width === width && rectB.height === height;\n    } else {\n      return rectA === rectB;\n    }\n  };\n  Rect2.cornerPoints = (rect) => {\n    const rectMinX = rect.x;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMaxY = rect.y + rect.height;\n    const corner1 = { x: rectMinX, y: rectMinY };\n    const corner2 = { x: rectMaxX, y: rectMinY };\n    const corner3 = { x: rectMaxX, y: rectMaxY };\n    const corner4 = { x: rectMinX, y: rectMaxY };\n    return [corner1, corner2, corner3, corner4];\n  };\n  Rect2.midPoints = (rect) => {\n    const rectMinX = rect.x;\n    const rectMidX = rect.x + rect.width / 2;\n    const rectMaxX = rect.x + rect.width;\n    const rectMinY = rect.y;\n    const rectMidY = rect.y + rect.height / 2;\n    const rectMaxY = rect.y + rect.height;\n    const top = { x: rectMidX, y: rectMinY };\n    const right = { x: rectMaxX, y: rectMidY };\n    const bottom = { x: rectMidX, y: rectMaxY };\n    const left = { x: rectMinX, y: rectMidY };\n    return [top, right, bottom, left];\n  };\n  Rect2.pointDistance = (rect, point) => {\n    let x = 0;\n    let y = 0;\n    if (point.x < rect.x) {\n      x = rect.x - point.x;\n    } else if (point.x > Rect2.maxX(rect)) {\n      x = point.x - Rect2.maxX(rect);\n    }\n    if (point.y < rect.y) {\n      y = rect.y - point.y;\n    } else if (point.y > Rect2.maxY(rect)) {\n      y = point.y - Rect2.maxY(rect);\n    }\n    return Point.distance({ x, y }, { x: 0, y: 0 });\n  };\n  const fromAnyDefaults = {\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0\n  };\n  Rect2.fromAny = (rect, defaults = fromAnyDefaults) => {\n    return {\n      x: rect.x || defaults.x,\n      y: rect.y || defaults.y,\n      width: rect.width || defaults.width,\n      height: rect.height || defaults.height\n    };\n  };\n  Rect2.withMinSize = (rect, minSize) => {\n    const { width: minWidth, height: minHeight } = minSize;\n    const diffX = rect.width - minWidth;\n    const diffY = rect.height - minHeight;\n    return {\n      width: Math.max(rect.width, minWidth),\n      height: Math.max(rect.height, minHeight),\n      x: rect.width < minWidth ? rect.x + diffX / 2 : rect.x,\n      y: rect.height < minHeight ? rect.y + diffY / 2 : rect.y\n    };\n  };\n})(Rect || (Rect = {}));\n\n// ../../library/src/render/types/Constraints.ts\nvar constraintDefaults = {\n  left: null,\n  right: null,\n  top: null,\n  bottom: null,\n  centerX: \"50%\",\n  centerY: \"50%\",\n  aspectRatio: null,\n  parentSize: null,\n  width: 100,\n  height: 100\n};\nvar DimensionType = /* @__PURE__ */ ((DimensionType2) => {\n  DimensionType2[DimensionType2[\"FixedNumber\"] = 0] = \"FixedNumber\";\n  DimensionType2[DimensionType2[\"Percentage\"] = 1] = \"Percentage\";\n  DimensionType2[DimensionType2[\"Auto\"] = 2] = \"Auto\";\n  DimensionType2[DimensionType2[\"FractionOfFreeSpace\"] = 3] = \"FractionOfFreeSpace\";\n  DimensionType2[DimensionType2[\"Viewport\"] = 4] = \"Viewport\";\n  return DimensionType2;\n})(DimensionType || {});\nfunction isConstraintSupportingChild(child) {\n  if (!isReactChild(child) || !isReactElement(child)) {\n    return false;\n  }\n  return true;\n}\nvar ConstraintMask;\n((ConstraintMask2) => {\n  ConstraintMask2.quickfix = (constraints) => {\n    if (constraints.widthType === 2 /* Auto */ || constraints.heightType === 2 /* Auto */) {\n      constraints.aspectRatio = null;\n    }\n    if (isFiniteNumber(constraints.aspectRatio)) {\n      if (constraints.left && constraints.right) {\n        constraints.widthType = 0 /* FixedNumber */;\n      }\n      if (constraints.top && constraints.bottom) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n      if (constraints.left && constraints.right && constraints.top && constraints.bottom) {\n        constraints.bottom = false;\n      }\n      if (constraints.widthType !== 0 /* FixedNumber */ && constraints.heightType !== 0 /* FixedNumber */) {\n        constraints.heightType = 0 /* FixedNumber */;\n      }\n    }\n    if (constraints.left && constraints.right) {\n      if (constraints.fixedSize || constraints.widthType === 2 /* Auto */ || isFiniteNumber(constraints.maxWidth)) {\n        constraints.right = false;\n      }\n      constraints.widthType = 0 /* FixedNumber */;\n    }\n    if (constraints.top && constraints.bottom) {\n      if (constraints.fixedSize || constraints.heightType === 2 /* Auto */ || isFiniteNumber(constraints.maxHeight)) {\n        constraints.bottom = false;\n      }\n      constraints.heightType = 0 /* FixedNumber */;\n    }\n    return constraints;\n  };\n})(ConstraintMask || (ConstraintMask = {}));\nfunction valueToDimensionType(value) {\n  if (typeof value === \"string\") {\n    const trimmedValue = value.trim();\n    if (trimmedValue === \"auto\")\n      return 2 /* Auto */;\n    if (trimmedValue.endsWith(\"fr\"))\n      return 3 /* FractionOfFreeSpace */;\n    if (trimmedValue.endsWith(\"%\"))\n      return 1 /* Percentage */;\n    if (trimmedValue.endsWith(\"vw\") || trimmedValue.endsWith(\"vh\"))\n      return 4 /* Viewport */;\n  }\n  return 0 /* FixedNumber */;\n}\nvar ConstraintValues;\n((ConstraintValues2) => {\n  ConstraintValues2.fromProperties = (props) => {\n    const { left, right, top, bottom, width, height, centerX, centerY, aspectRatio, autoSize } = props;\n    const constraints = ConstraintMask.quickfix({\n      left: isFiniteNumber(left) || isAnimatable(left),\n      right: isFiniteNumber(right) || isAnimatable(right),\n      top: isFiniteNumber(top) || isAnimatable(top),\n      bottom: isFiniteNumber(bottom) || isAnimatable(bottom),\n      widthType: valueToDimensionType(width),\n      heightType: valueToDimensionType(height),\n      aspectRatio: aspectRatio || null,\n      fixedSize: autoSize === true\n    });\n    let widthValue = null;\n    let heightValue = null;\n    let widthType = 0 /* FixedNumber */;\n    let heightType = 0 /* FixedNumber */;\n    if (constraints.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n      const parsedWidth = parseFloat(width);\n      if (width.endsWith(\"fr\")) {\n        widthType = 3 /* FractionOfFreeSpace */;\n        widthValue = parsedWidth;\n      } else if (width === \"auto\") {\n        widthType = 2 /* Auto */;\n      } else {\n        widthType = 1 /* Percentage */;\n        widthValue = parsedWidth / 100;\n      }\n    } else if (width !== void 0 && typeof width !== \"string\") {\n      widthValue = Animatable.getNumber(width);\n    }\n    if (constraints.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n      const parsedHeight = parseFloat(height);\n      if (height.endsWith(\"fr\")) {\n        heightType = 3 /* FractionOfFreeSpace */;\n        heightValue = parsedHeight;\n      } else if (height === \"auto\") {\n        heightType = 2 /* Auto */;\n      } else {\n        heightType = 1 /* Percentage */;\n        heightValue = parseFloat(height) / 100;\n      }\n    } else if (height !== void 0 && typeof height !== \"string\") {\n      heightValue = Animatable.getNumber(height);\n    }\n    let centerAnchorX = 0.5;\n    let centerAnchorY = 0.5;\n    if (centerX) {\n      centerAnchorX = parseFloat(centerX) / 100;\n    }\n    if (centerY) {\n      centerAnchorY = parseFloat(centerY) / 100;\n    }\n    return {\n      left: constraints.left ? Animatable.getNumber(left) : null,\n      right: constraints.right ? Animatable.getNumber(right) : null,\n      top: constraints.top ? Animatable.getNumber(top) : null,\n      bottom: constraints.bottom ? Animatable.getNumber(bottom) : null,\n      widthType,\n      heightType,\n      width: widthValue,\n      height: heightValue,\n      aspectRatio: constraints.aspectRatio || null,\n      centerAnchorX,\n      centerAnchorY\n    };\n  };\n  ConstraintValues2.toSize = (values, parentSizeInfo, autoSize, freeSpace) => {\n    let width = null;\n    let height = null;\n    const parentWidth = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.width) : null;\n    const parentHeight = (parentSizeInfo == null ? void 0 : parentSizeInfo.sizing) ? Animatable.getNumber(parentSizeInfo == null ? void 0 : parentSizeInfo.sizing.height) : null;\n    const hOpposingPinsOffset = pinnedOffset(values.left, values.right);\n    if (parentWidth && isFiniteNumber(hOpposingPinsOffset)) {\n      width = parentWidth - hOpposingPinsOffset;\n    } else if (autoSize && values.widthType === 2 /* Auto */) {\n      width = autoSize.width;\n    } else if (isFiniteNumber(values.width)) {\n      switch (values.widthType) {\n        case 0 /* FixedNumber */:\n          width = values.width;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          width = freeSpace ? freeSpace.freeSpaceInParent.width / freeSpace.freeSpaceUnitDivisor.width * values.width : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentWidth) {\n            width = parentWidth * values.width;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.widthType);\n      }\n    }\n    const vOpposingPinsOffset = pinnedOffset(values.top, values.bottom);\n    if (parentHeight && isFiniteNumber(vOpposingPinsOffset)) {\n      height = parentHeight - vOpposingPinsOffset;\n    } else if (autoSize && values.heightType === 2 /* Auto */) {\n      height = autoSize.height;\n    } else if (isFiniteNumber(values.height)) {\n      switch (values.heightType) {\n        case 0 /* FixedNumber */:\n          height = values.height;\n          break;\n        case 3 /* FractionOfFreeSpace */:\n          height = freeSpace ? freeSpace.freeSpaceInParent.height / freeSpace.freeSpaceUnitDivisor.height * values.height : null;\n          break;\n        case 1 /* Percentage */:\n        case 4 /* Viewport */:\n          if (parentHeight) {\n            height = parentHeight * values.height;\n          }\n          break;\n        case 2 /* Auto */:\n          break;\n        default:\n          assertNever(values.heightType);\n      }\n    }\n    return sizeAfterApplyingConstraintsAndAspectRatio(\n      width,\n      height,\n      values,\n      {\n        height: parentHeight != null ? parentHeight : 0,\n        width: parentWidth != null ? parentWidth : 0\n      },\n      parentSizeInfo == null ? void 0 : parentSizeInfo.viewport\n    );\n  };\n  ConstraintValues2.toRect = (values, parentSizeInfo = null, autoSize = null, pixelAlign = false, freeSpace = null) => {\n    var _a;\n    let x = values.left || 0;\n    let y = values.top || 0;\n    const { width, height } = ConstraintValues2.toSize(values, parentSizeInfo, autoSize, freeSpace);\n    const parentSizeForPositioning = (_a = parentSizeInfo == null ? void 0 : parentSizeInfo.positioning) != null ? _a : null;\n    const positioningParentWidth = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.width) : null;\n    const positioningParentHeight = parentSizeForPositioning ? Animatable.getNumber(parentSizeForPositioning.height) : null;\n    if (values.left !== null) {\n      x = values.left;\n    } else if (positioningParentWidth && values.right !== null) {\n      x = positioningParentWidth - values.right - width;\n    } else if (positioningParentWidth) {\n      x = values.centerAnchorX * positioningParentWidth - width / 2;\n    }\n    if (values.top !== null) {\n      y = values.top;\n    } else if (positioningParentHeight && values.bottom !== null) {\n      y = positioningParentHeight - values.bottom - height;\n    } else if (positioningParentHeight) {\n      y = values.centerAnchorY * positioningParentHeight - height / 2;\n    }\n    const f = { x, y, width, height };\n    if (pixelAlign) {\n      return Rect.pixelAligned(f);\n    }\n    return f;\n  };\n})(ConstraintValues || (ConstraintValues = {}));\nvar defaultWidth = 200;\nvar defaultHeight = 200;\nfunction getConstraintValue(constraint, value, parentSize, viewport) {\n  if (typeof value === \"string\") {\n    if (value.endsWith(\"%\") && parentSize) {\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * parentSize.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * parentSize.height;\n        default:\n          break;\n      }\n    }\n    if (value.endsWith(\"vh\") && viewport) {\n      switch (constraint) {\n        case \"maxWidth\":\n        case \"minWidth\":\n          return parseFloat(value) / 100 * viewport.width;\n        case \"maxHeight\":\n        case \"minHeight\":\n          return parseFloat(value) / 100 * viewport.height;\n        default:\n          break;\n      }\n    }\n    return parseFloat(value);\n  }\n  return value;\n}\nfunction constrainHeight(height, values, parentSize, viewport) {\n  if (values.minHeight) {\n    height = Math.max(getConstraintValue(\"minHeight\", values.minHeight, parentSize, viewport), height);\n  }\n  if (values.maxHeight) {\n    height = Math.min(getConstraintValue(\"maxHeight\", values.maxHeight, parentSize, viewport), height);\n  }\n  return height;\n}\nfunction constrainWidth(width, values, parentSize, viewport) {\n  if (values.minWidth) {\n    width = Math.max(getConstraintValue(\"minWidth\", values.minWidth, parentSize, viewport), width);\n  }\n  if (values.maxWidth) {\n    width = Math.min(getConstraintValue(\"maxWidth\", values.maxWidth, parentSize, viewport), width);\n  }\n  return width;\n}\nfunction sizeAfterApplyingConstraintsAndAspectRatio(width, height, values, parentSize, viewport) {\n  let w = constrainWidth(isFiniteNumber(width) ? width : defaultWidth, values, parentSize, viewport);\n  let h = constrainHeight(isFiniteNumber(height) ? height : defaultHeight, values, parentSize, viewport);\n  if (isFiniteNumber(values.aspectRatio) && values.aspectRatio > 0) {\n    if (isFiniteNumber(values.left) && isFiniteNumber(values.right)) {\n      h = w / values.aspectRatio;\n    } else if (isFiniteNumber(values.top) && isFiniteNumber(values.bottom)) {\n      w = h * values.aspectRatio;\n    } else if (values.widthType !== 0 /* FixedNumber */) {\n      h = w / values.aspectRatio;\n    } else {\n      w = h * values.aspectRatio;\n    }\n  }\n  return {\n    width: w,\n    height: h\n  };\n}\nfunction pinnedOffset(start, end) {\n  if (!isFiniteNumber(start) || !isFiniteNumber(end))\n    return null;\n  return start + end;\n}\nfunction getMergedConstraintsProps(props, constraints) {\n  const result = {};\n  if (props.constraints) {\n    result.constraints = { ...props.constraints, ...constraints };\n  } else {\n    Object.assign(result, constraints);\n  }\n  return result;\n}\n\n// ../../library/src/render/types/NewConstraints.tsx\nfunction containsInvalidStringValues(props) {\n  if (typeof props.right === \"string\")\n    return true;\n  if (typeof props.bottom === \"string\")\n    return true;\n  if (typeof props.left === \"string\" && (!props.center || props.center === \"y\")) {\n    return true;\n  }\n  if (typeof props.top === \"string\" && (!props.center || props.center === \"x\")) {\n    return true;\n  }\n  return false;\n}\nfunction constraintsEnabled(props) {\n  if (!props._constraints)\n    return false;\n  if (containsInvalidStringValues(props))\n    return false;\n  return props._constraints.enabled;\n}\nfunction sizeFromFiniteNumberProps(props) {\n  const { size: size2 } = props;\n  let { width, height } = props;\n  if (isFiniteNumber(size2)) {\n    if (width === void 0) {\n      width = size2;\n    }\n    if (height === void 0) {\n      height = size2;\n    }\n  }\n  if (isFiniteNumber(width) && isFiniteNumber(height)) {\n    return {\n      width,\n      height\n    };\n  }\n  return null;\n}\nfunction rectFromFiniteNumberProps(props) {\n  const size2 = sizeFromFiniteNumberProps(props);\n  if (size2 === null) {\n    return null;\n  }\n  const { left, top } = props;\n  if (isFiniteNumber(left) && isFiniteNumber(top)) {\n    return {\n      x: left,\n      y: top,\n      ...size2\n    };\n  }\n  return null;\n}\nfunction calculateRect(props, parentSize, pixelAlign = true) {\n  if (props.positionFixed || props.positionAbsolute)\n    return null;\n  const parentSizeDisabled = parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */;\n  if (!constraintsEnabled(props) || parentSizeDisabled) {\n    return rectFromFiniteNumberProps(props);\n  }\n  const constraintValues = getConstraintValues(props);\n  const enabledParentSize = deprecatedParentSize(parentSize);\n  const parentSizeInfo = enabledParentSize ? { sizing: enabledParentSize, positioning: enabledParentSize, viewport: null } : null;\n  return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, pixelAlign, null);\n}\nfunction getConstraintValues(props) {\n  const { left, right, top, bottom, center, _constraints, size: size2 } = props;\n  let { width, height } = props;\n  if (width === void 0) {\n    width = size2;\n  }\n  if (height === void 0) {\n    height = size2;\n  }\n  const { aspectRatio, autoSize } = _constraints;\n  const constraintMask = ConstraintMask.quickfix({\n    left: isFiniteNumber(left),\n    right: isFiniteNumber(right),\n    top: isFiniteNumber(top),\n    bottom: isFiniteNumber(bottom),\n    widthType: valueToDimensionType(width),\n    heightType: valueToDimensionType(height),\n    aspectRatio: aspectRatio || null,\n    fixedSize: autoSize === true\n  });\n  let widthValue = null;\n  let heightValue = null;\n  let widthType = 0 /* FixedNumber */;\n  let heightType = 0 /* FixedNumber */;\n  if (constraintMask.widthType !== 0 /* FixedNumber */ && typeof width === \"string\") {\n    const parsedWidth = parseFloat(width);\n    if (width.endsWith(\"fr\")) {\n      widthType = 3 /* FractionOfFreeSpace */;\n      widthValue = parsedWidth;\n    } else if (width === \"auto\") {\n      widthType = 2 /* Auto */;\n    } else {\n      widthType = 1 /* Percentage */;\n      widthValue = parsedWidth / 100;\n    }\n  } else if (width !== void 0 && typeof width !== \"string\") {\n    widthValue = width;\n  }\n  if (constraintMask.heightType !== 0 /* FixedNumber */ && typeof height === \"string\") {\n    const parsedHeight = parseFloat(height);\n    if (height.endsWith(\"fr\")) {\n      heightType = 3 /* FractionOfFreeSpace */;\n      heightValue = parsedHeight;\n    } else if (height === \"auto\") {\n      heightType = 2 /* Auto */;\n    } else {\n      heightType = 1 /* Percentage */;\n      heightValue = parseFloat(height) / 100;\n    }\n  } else if (height !== void 0 && typeof height !== \"string\") {\n    heightValue = height;\n  }\n  let centerAnchorX = 0.5;\n  let centerAnchorY = 0.5;\n  if (center === true || center === \"x\") {\n    constraintMask.left = false;\n    if (typeof left === \"string\") {\n      centerAnchorX = parseFloat(left) / 100;\n    }\n  }\n  if (center === true || center === \"y\") {\n    constraintMask.top = false;\n    if (typeof top === \"string\") {\n      centerAnchorY = parseFloat(top) / 100;\n    }\n  }\n  return {\n    // Because we check isFiniteNumber when creating the masks,\n    // We know that left, right, top and bottom are numbers if the mask is true for the corresponding value\n    // We need to cast this because typescript does not understand that\n    left: constraintMask.left ? left : null,\n    right: constraintMask.right ? right : null,\n    top: constraintMask.top ? top : null,\n    bottom: constraintMask.bottom ? bottom : null,\n    widthType,\n    heightType,\n    width: widthValue,\n    height: heightValue,\n    aspectRatio: constraintMask.aspectRatio || null,\n    centerAnchorX,\n    centerAnchorY,\n    minHeight: props.minHeight,\n    maxHeight: props.maxHeight,\n    minWidth: props.minWidth,\n    maxWidth: props.maxWidth\n  };\n}\nvar ParentSizeState = /* @__PURE__ */ ((ParentSizeState2) => {\n  ParentSizeState2[ParentSizeState2[\"Unknown\"] = 0] = \"Unknown\";\n  ParentSizeState2[ParentSizeState2[\"Disabled\"] = 1] = \"Disabled\";\n  ParentSizeState2[ParentSizeState2[\"DisabledForCurrentLevel\"] = 2] = \"DisabledForCurrentLevel\";\n  return ParentSizeState2;\n})(ParentSizeState || {});\nvar ConstraintsContext = React18.createContext({\n  parentSize: 0 /* Unknown */\n});\nfunction deprecatedParentSize(parentSize) {\n  if (parentSize === 0 /* Unknown */ || parentSize === 1 /* Disabled */ || parentSize === 2 /* DisabledForCurrentLevel */) {\n    return null;\n  }\n  return parentSize;\n}\nfunction useParentSize() {\n  return React18.useContext(ConstraintsContext).parentSize;\n}\nfunction isSize(o) {\n  return typeof o === \"object\";\n}\nvar ProvideParentSize = (props) => {\n  const currentParentSize = useParentSize();\n  const { parentSize, children } = props;\n  const value = React18.useMemo(\n    () => ({ parentSize }),\n    // We are generating the memoKeys in runtime and react doesn't like it,\n    // but it should be safe to ignore.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [getParentWidth(parentSize), getParentHeight(parentSize)]\n  );\n  if (currentParentSize === 1 /* Disabled */) {\n    return children ? /* @__PURE__ */ React18.createElement(React18.Fragment, null, children) : null;\n  }\n  return /* @__PURE__ */ React18.createElement(ConstraintsContext.Provider, { value }, children);\n};\nfunction getParentWidth(parentSize) {\n  return isSize(parentSize) ? parentSize.width : parentSize;\n}\nfunction getParentHeight(parentSize) {\n  return isSize(parentSize) ? parentSize.height : parentSize;\n}\nvar ConsumeParentSize = ConstraintsContext.Consumer;\nfunction useProvideParentSize(node, parentSize) {\n  return /* @__PURE__ */ React18.createElement(ProvideParentSize, { parentSize }, node);\n}\nfunction useConstraints(props) {\n  const parentSize = useParentSize();\n  const calculatedRect = calculateRect(props, parentSize, true);\n  return calculatedRect;\n}\n\n// ../../library/src/render/types/PropertyControls.ts\nvar ControlType = /* @__PURE__ */ ((ControlType2) => {\n  ControlType2[\"Boolean\"] = \"boolean\";\n  ControlType2[\"Number\"] = \"number\";\n  ControlType2[\"String\"] = \"string\";\n  ControlType2[\"RichText\"] = \"richtext\";\n  ControlType2[\"FusedNumber\"] = \"fusednumber\";\n  ControlType2[\"Enum\"] = \"enum\";\n  ControlType2[\"SegmentedEnum\"] = \"segmentedenum\";\n  ControlType2[\"Color\"] = \"color\";\n  ControlType2[\"Image\"] = \"image\";\n  ControlType2[\"ResponsiveImage\"] = \"responsiveimage\";\n  ControlType2[\"File\"] = \"file\";\n  ControlType2[\"ComponentInstance\"] = \"componentinstance\";\n  ControlType2[\"Array\"] = \"array\";\n  ControlType2[\"EventHandler\"] = \"eventhandler\";\n  ControlType2[\"Transition\"] = \"transition\";\n  ControlType2[\"Link\"] = \"link\";\n  ControlType2[\"Date\"] = \"date\";\n  ControlType2[\"Object\"] = \"object\";\n  ControlType2[\"Font\"] = \"font\";\n  ControlType2[\"PageScope\"] = \"pagescope\";\n  return ControlType2;\n})(ControlType || {});\n\n// ../../library/src/modules/isFlexboxGapSupported.ts\nvar isFlexboxGapSupportedCached;\nfunction isFlexboxGapSupported() {\n  if (isFlexboxGapSupportedCached !== void 0) {\n    return isFlexboxGapSupportedCached;\n  }\n  const flex = document.createElement(\"div\");\n  Object.assign(flex.style, {\n    position: \"absolute\",\n    // avoid layout shift\n    display: \"flex\",\n    flexDirection: \"column\",\n    rowGap: \"1px\"\n  });\n  flex.appendChild(document.createElement(\"div\"));\n  flex.appendChild(document.createElement(\"div\"));\n  document.body.appendChild(flex);\n  const isSupported = flex.scrollHeight === 1;\n  if (flex.parentNode) {\n    flex.parentNode.removeChild(flex);\n  }\n  isFlexboxGapSupportedCached = isSupported;\n  return isSupported;\n}\n\n// ../../library/src/modules/workaroundFlexboxGapNotSupported.ts\nvar flexboxGapNotSupportedClass = \"flexbox-gap-not-supported\";\nvar initialized = false;\nfunction installFlexboxGapWorkaroundIfNeeded() {\n  if (initialized)\n    return;\n  initialized = true;\n  if (isFlexboxGapSupported())\n    return;\n  document.body.classList.add(flexboxGapNotSupportedClass);\n}\n\n// ../../library/src/render/utils/injectDeprecatedRichTextRules.ts\nvar richTextStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6,\n[data-framer-component-type=\"DeprecatedRichText\"] li,\n[data-framer-component-type=\"DeprecatedRichText\"] ol,\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] span:not([data-text-fill]) {\n    font-family: var(--framer-font-family, Inter, Inter Placeholder, sans-serif);\n    font-style: var(--framer-font-style, normal);\n    font-weight: var(--framer-font-weight, 400);\n    color: var(--framer-text-color, #000);\n    font-size: var(--framer-font-size, 16px);\n    letter-spacing: var(--framer-letter-spacing, 0);\n    text-transform: var(--framer-text-transform, none);\n    text-decoration: var(--framer-text-decoration, none);\n    line-height: var(--framer-line-height, 1.2em);\n    text-align: var(--framer-text-alignment, start);\n}\n`;\nvar richTextParagraphSpacingStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] div:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h1:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h2:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h3:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h4:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h5:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] h6:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ol:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] ul:not(:first-child),\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image:not(:first-child) {\n    margin-top: var(--framer-paragraph-spacing, 0);\n}\n`;\nvar richTextBackgroundMaskStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] span[data-text-fill] {\n    display: inline-block;\n    background-clip: text;\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n}\n`;\nvar richTextLinkStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a,\n[data-framer-component-type=\"DeprecatedRichText\"] a span:not([data-text-fill]) {\n    font-family: var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n    font-style: var(--framer-link-font-style, var(--framer-font-style, normal));\n    font-weight: var(--framer-link-font-weight, var(--framer-font-weight, 400));\n    color: var(--framer-link-text-color, var(--framer-text-color, #000));\n    font-size: var(--framer-link-font-size, var(--framer-font-size, 16px));\n    text-transform: var(--framer-link-text-transform, var(--framer-text-transform, none));\n    text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration, none));\n}\n`;\nvar richTextLinkHoverStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover,\n[data-framer-component-type=\"DeprecatedRichText\"] a:hover span:not([data-text-fill]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentStylesRule = `\na[data-framer-page-link-current],\na[data-framer-page-link-current] span:not([data-text-fill]) {\n    font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n    font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n    font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n    color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n    font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)));\n    text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n    text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n}\n`;\nvar richTextLinkCurrentHoverStylesRule = `\na[data-framer-page-link-current]:hover,\na[data-framer-page-link-current]:hover span:not([data-text-fill]) {\n    font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n    font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n    font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n    color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n    font-size: var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))));\n    text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n    text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n}\n`;\nvar richTextBoldStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] strong {\n    font-weight: bolder;\n}\n`;\nvar richTextItalicStylesRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] em {\n    font-style: italic;\n}\n`;\nvar richTextImageRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .framer-image {\n    display: block;\n    max-width: 100%;\n    height: auto;\n}\n`;\nvar richTextBlockElementResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] p,\n[data-framer-component-type=\"DeprecatedRichText\"] div,\n[data-framer-component-type=\"DeprecatedRichText\"] h1,\n[data-framer-component-type=\"DeprecatedRichText\"] h2,\n[data-framer-component-type=\"DeprecatedRichText\"] h3,\n[data-framer-component-type=\"DeprecatedRichText\"] h4,\n[data-framer-component-type=\"DeprecatedRichText\"] h5,\n[data-framer-component-type=\"DeprecatedRichText\"] h6 {\n    margin: 0;\n    padding: 0;\n}\n`;\nvar richTextStylesPresetResetRule = `\n[data-framer-component-type=\"DeprecatedRichText\"] .text-styles-preset-reset {\n    --framer-font-family: Inter, Inter Placeholder, sans-serif;\n    --framer-font-style: normal;\n    --framer-font-weight: 500;\n    --framer-text-color: #000;\n    --framer-font-size: 16px;\n    --framer-letter-spacing: 0;\n    --framer-text-transform: none;\n    --framer-text-decoration: none;\n    --framer-line-height: 1.2em;\n    --framer-text-alignment: start;\n}\n`;\nvar richTextStylesList = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul,\n[data-framer-component-type=\"DeprecatedRichText\"] ol {\n    display: table;\n    width: 100%;\n    padding-left: 0;\n    margin: 0;\n}\n`;\nvar richTextStylesListItem = `\n[data-framer-component-type=\"DeprecatedRichText\"] li {\n    display: table-row;\n    counter-increment: list-item;\n    list-style: none;\n}\n`;\nvar richTextStylesNumberedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ol > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: counter(list-item) \".\";\n    white-space: nowrap;\n}\n`;\nvar richTextStylesBulletedListMarker = `\n[data-framer-component-type=\"DeprecatedRichText\"] ul > li::before {\n    display: table-cell;\n    width: 2.25ch;\n    box-sizing: border-box;\n    padding-right: 0.75ch;\n    content: \"\\u2022\";\n}\n`;\nvar deprecatedRichTextCSSRules = [\n  `[data-framer-component-type=\"DeprecatedRichText\"] { cursor: inherit; }`,\n  richTextStylesPresetResetRule,\n  richTextBlockElementResetRule,\n  richTextStylesRule,\n  richTextParagraphSpacingStylesRule,\n  richTextBackgroundMaskStylesRule,\n  richTextLinkStylesRule,\n  richTextLinkHoverStylesRule,\n  richTextLinkCurrentStylesRule,\n  richTextLinkCurrentHoverStylesRule,\n  richTextBoldStylesRule,\n  richTextItalicStylesRule,\n  richTextImageRule,\n  richTextStylesList,\n  richTextStylesListItem,\n  richTextStylesNumberedListMarker,\n  richTextStylesBulletedListMarker\n];\n\n// ../../library/src/render/utils/injectRichTextRules.ts\nvar richTextCSSRules = [\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        ol.framer-text,\n        ul.framer-text {\n            margin: 0;\n            padding: 0;\n        }\n    `,\n  /* css */\n  `\n        p.framer-text,\n        div.framer-text,\n        h1.framer-text,\n        h2.framer-text,\n        h3.framer-text,\n        h4.framer-text,\n        h5.framer-text,\n        h6.framer-text,\n        li.framer-text,\n        ol.framer-text,\n        ul.framer-text,\n        span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-font-family, Inter, Inter Placeholder, sans-serif);\n            font-style: var(--framer-font-style, normal);\n            font-weight: var(--framer-font-weight, 400);\n            color: var(--framer-text-color, #000);\n            font-size: calc(var(--framer-font-size, 16px) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-letter-spacing, 0);\n            text-transform: var(--framer-text-transform, none);\n            text-decoration: var(--framer-text-decoration, none);\n            line-height: var(--framer-line-height, 1.2em);\n            text-align: var(--framer-text-alignment, start);\n        }\n    `,\n  /* css */\n  `\n        strong.framer-text {\n            font-weight: bolder;\n        }\n    `,\n  /* css */\n  `\n        em.framer-text {\n            font-style: italic;\n        }\n    `,\n  /* css */\n  `\n        p.framer-text:not(:first-child),\n        div.framer-text:not(:first-child),\n        h1.framer-text:not(:first-child),\n        h2.framer-text:not(:first-child),\n        h3.framer-text:not(:first-child),\n        h4.framer-text:not(:first-child),\n        h5.framer-text:not(:first-child),\n        h6.framer-text:not(:first-child),\n        ol.framer-text:not(:first-child),\n        ul.framer-text:not(:first-child),\n        .framer-image.framer-text:not(:first-child) {\n            margin-top: var(--framer-paragraph-spacing, 0);\n        }\n    `,\n  // The first child of a list item is a paragraph. If the second child is a\n  // nested list we don't want it to have paragraph spacing.\n  /* css */\n  `\n        li.framer-text > ul.framer-text:nth-child(2),\n        li.framer-text > ol.framer-text:nth-child(2) {\n            margin-top: 0;\n        }\n    `,\n  // background-clip: text clips to the physical dimensions of text as appose\n  // to the rendered dimensions. normal text will bleed out side these\n  // constraints but since this is just a clipping mask over the area the text\n  // takes up we have cases where the text will get clipped. That is why we\n  // need to expand the area that the gradient applies to to allow users to\n  // use low line-heights. This will result in gradients not aligning\n  // perfectly to the edges of the text. but this is a acceptable trade off at\n  // this point. For now we increase the area of the clipping mask on the\n  // bottom (for descenders) and the right for italic or wide fonts.\n  /* css */\n  `\n        .framer-text[data-text-fill] {\n            display: inline-block;\n            background-clip: text;\n            -webkit-background-clip: text;\n            /* make this a transparent color if you want to visualise the clipping  */\n            -webkit-text-fill-color: transparent;\n            padding: max(0em, calc(calc(1.3em - var(--framer-line-height, 1.3em)) / 2));\n            margin: min(0em, calc(calc(1.3em - var(--framer-line-height, 1.3em)) / -2));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text,\n        code.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-code-text-color, var(--framer-text-color, #000));\n            font-size: calc(var(--framer-font-size, 16px) * var(--framer-font-size-scale, 1));\n            letter-spacing: var(--framer-letter-spacing, 0);\n            line-height: var(--framer-line-height, 1.2em);\n        }\n    `,\n  /* css */\n  `\n        a.framer-text,\n        a.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-link-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-link-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-text-color, var(--framer-text-color, #000));\n            font-size: calc(var(--framer-link-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-text-transform, var(--framer-text-transform, none));\n            text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration, none));\n            /* Cursor inherit to overwrite the user agent stylesheet on rich text links. */\n            cursor: var(--framer-custom-cursors, pointer);\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text,\n        code.framer-text a.framer-text span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-link-font-size, var(--framer-font-size, 16px)) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text:hover,\n        a.framer-text:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text:hover,\n        code.framer-text a.framer-text:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current],\n        a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif)));\n            font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal)));\n            font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400)));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000)));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none)));\n            text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none)));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current],\n        code.framer-text a.framer-text[data-framer-page-link-current] span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        a.framer-text[data-framer-page-link-current]:hover,\n        a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-link-hover-font-family, var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif))));\n            font-style: var(--framer-link-hover-font-style, var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style, normal))));\n            font-weight: var(--framer-link-hover-font-weight, var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight, 400))));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color, #000))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n            text-transform: var(--framer-link-hover-text-transform, var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform, none))));\n            text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration, none))));\n        }\n    `,\n  /* css */\n  `\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover,\n        code.framer-text a.framer-text[data-framer-page-link-current]:hover span.framer-text:not([data-text-fill]) {\n            font-family: var(--framer-code-font-family, var(--framer-font-family, Inter, Inter Placeholder, sans-serif));\n            font-style: var(--framer-code-font-style, var(--framer-font-style, normal));\n            font-weight: var(--framer-code-font-weight, var(--framer-font-weight, 400));\n            color: var(--framer-link-hover-text-color, var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-code-text-color, var(--framer-text-color, #000)))));\n            font-size: calc(var(--framer-link-hover-font-size, var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size, 16px)))) * var(--framer-font-size-scale, 1));\n        }\n    `,\n  /* css */\n  `\n        .framer-image.framer-text {\n            display: block;\n            max-width: 100%;\n            height: auto;\n        }\n    `,\n  /* css */\n  `\n        .text-styles-preset-reset.framer-text {\n            --framer-font-family: Inter, Inter Placeholder, sans-serif;\n            --framer-font-style: normal;\n            --framer-font-weight: 500;\n            --framer-text-color: #000;\n            --framer-font-size: 16px;\n            --framer-letter-spacing: 0;\n            --framer-text-transform: none;\n            --framer-text-decoration: none;\n            --framer-line-height: 1.2em;\n            --framer-text-alignment: start;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text,\n        ol.framer-text {\n            display: table;\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        li.framer-text {\n            display: table-row;\n            counter-increment: list-item;\n            list-style: none;\n        }\n    `,\n  /* css */\n  `\n        ol.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-inline-end: 0.75ch;\n            content: counter(list-item) \".\";\n            white-space: nowrap;\n        }\n    `,\n  /* css */\n  `\n        ul.framer-text > li.framer-text::before {\n            display: table-cell;\n            width: 2.25ch;\n            box-sizing: border-box;\n            padding-inline-end: 0.75ch;\n            content: \"\\u2022\";\n        }\n    `,\n  /* css */\n  `\n        .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n            width: 100%;\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] {\n                position: relative;\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"]::before {\n                content: \"\";\n                display: block;\n                padding-bottom: calc(100% / calc(var(--aspect-ratio)));\n            }\n        }\n    `,\n  /* css */\n  `\n        @supports not (aspect-ratio: 1) {\n            .framer-text-module[style*=\"aspect-ratio\"] > :first-child {\n                position: absolute;\n                top: 0;\n                left: 0;\n                height: 100%;\n            }\n        }\n    `\n];\n\n// ../../library/src/render/utils/setDocumentStyles.ts\nvar defaultCache = /* @__PURE__ */ new Set();\nvar defaultSheet;\nfunction injectCSSRule(cssRule, sheet, cache3 = defaultCache) {\n  if (!cssRule || cache3.has(cssRule) || typeof document === \"undefined\")\n    return;\n  cache3.add(cssRule);\n  if (!sheet) {\n    if (!defaultSheet) {\n      const styleElement = document.createElement(\"style\");\n      styleElement.setAttribute(\"type\", \"text/css\");\n      styleElement.setAttribute(\"data-framer-css\", \"true\");\n      if (!document.head) {\n        console.warn(\"not injecting CSS: the document is missing a <head> element\");\n        return;\n      }\n      document.head.appendChild(styleElement);\n      if (styleElement.sheet) {\n        defaultSheet = styleElement.sheet;\n      } else {\n        console.warn(\"not injecting CSS: injected <style> element does not have a sheet\", styleElement);\n        return;\n      }\n    }\n    sheet = defaultSheet;\n  }\n  try {\n    sheet.insertRule(cssRule, sheet.cssRules.length);\n  } catch {\n  }\n}\n\n// ../../library/src/render/utils/injectComponentCSSRules.ts\nvar componentCSSRules = [`[data-framer-component-type] { position: absolute; }`];\nvar textAlignmentRule = `\n[data-framer-component-type=\"Text\"] > * {\n    text-align: var(--framer-text-alignment, start);\n}`;\nvar textBlockSpanRule = `\n[data-framer-component-type=\"Text\"] span span,\n[data-framer-component-type=\"Text\"] p span,\n[data-framer-component-type=\"Text\"] h1 span,\n[data-framer-component-type=\"Text\"] h2 span,\n[data-framer-component-type=\"Text\"] h3 span,\n[data-framer-component-type=\"Text\"] h4 span,\n[data-framer-component-type=\"Text\"] h5 span,\n[data-framer-component-type=\"Text\"] h6 span {\n    display: block;\n}`;\nvar textInlineSpanRule = `\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span {\n    display: unset;\n}`;\nvar renderTextStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    font-family: var(--font-family);\n    font-style: var(--font-style);\n    font-weight: min(calc(var(--framer-font-weight-increase, 0) + var(--font-weight, 400)), 900);\n    color: var(--text-color);\n    letter-spacing: var(--letter-spacing);\n    font-size: var(--font-size);\n    text-transform: var(--text-transform);\n    text-decoration: var(--text-decoration);\n    line-height: var(--line-height);\n}`;\nvar textStylesRule = `\n[data-framer-component-type=\"Text\"] div div span,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] span span span,\n[data-framer-component-type=\"Text\"] p span span,\n[data-framer-component-type=\"Text\"] h1 span span,\n[data-framer-component-type=\"Text\"] h2 span span,\n[data-framer-component-type=\"Text\"] h3 span span,\n[data-framer-component-type=\"Text\"] h4 span span,\n[data-framer-component-type=\"Text\"] h5 span span,\n[data-framer-component-type=\"Text\"] h6 span span,\n[data-framer-component-type=\"Text\"] a {\n    --font-family: var(--framer-font-family);\n    --font-style: var(--framer-font-style);\n    --font-weight: var(--framer-font-weight);\n    --text-color: var(--framer-text-color);\n    --letter-spacing: var(--framer-letter-spacing);\n    --font-size: var(--framer-font-size);\n    --text-transform: var(--framer-text-transform);\n    --text-decoration: var(--framer-text-decoration);\n    --line-height: var(--framer-line-height);\n}`;\nvar linkStylesRule = `\n[data-framer-component-type=\"Text\"] a,\n[data-framer-component-type=\"Text\"] a div span,\n[data-framer-component-type=\"Text\"] a span span span,\n[data-framer-component-type=\"Text\"] a p span span,\n[data-framer-component-type=\"Text\"] a h1 span span,\n[data-framer-component-type=\"Text\"] a h2 span span,\n[data-framer-component-type=\"Text\"] a h3 span span,\n[data-framer-component-type=\"Text\"] a h4 span span,\n[data-framer-component-type=\"Text\"] a h5 span span,\n[data-framer-component-type=\"Text\"] a h6 span span {\n    --font-family: var(--framer-link-font-family, var(--framer-font-family));\n    --font-style: var(--framer-link-font-style, var(--framer-font-style));\n    --font-weight: var(--framer-link-font-weight, var(--framer-font-weight));\n    --text-color: var(--framer-link-text-color, var(--framer-text-color));\n    --font-size: var(--framer-link-font-size, var(--framer-font-size));\n    --text-transform: var(--framer-link-text-transform, var(--framer-text-transform));\n    --text-decoration: var(--framer-link-text-decoration, var(--framer-text-decoration));\n}`;\nvar linkHoverStylesRule = `\n[data-framer-component-type=\"Text\"] a:hover,\n[data-framer-component-type=\"Text\"] a div span:hover,\n[data-framer-component-type=\"Text\"] a span span span:hover,\n[data-framer-component-type=\"Text\"] a p span span:hover,\n[data-framer-component-type=\"Text\"] a h1 span span:hover,\n[data-framer-component-type=\"Text\"] a h2 span span:hover,\n[data-framer-component-type=\"Text\"] a h3 span span:hover,\n[data-framer-component-type=\"Text\"] a h4 span span:hover,\n[data-framer-component-type=\"Text\"] a h5 span span:hover,\n[data-framer-component-type=\"Text\"] a h6 span span:hover {\n    --font-family: var(--framer-link-hover-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-hover-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-hover-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-hover-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-hover-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-hover-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-hover-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar linkCurrentStylesRule = `\n[data-framer-component-type=\"Text\"].isCurrent a,\n[data-framer-component-type=\"Text\"].isCurrent a div span,\n[data-framer-component-type=\"Text\"].isCurrent a span span span,\n[data-framer-component-type=\"Text\"].isCurrent a p span span,\n[data-framer-component-type=\"Text\"].isCurrent a h1 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h2 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h3 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h4 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h5 span span,\n[data-framer-component-type=\"Text\"].isCurrent a h6 span span {\n    --font-family: var(--framer-link-current-font-family, var(--framer-link-font-family, var(--framer-font-family)));\n    --font-style: var(--framer-link-current-font-style, var(--framer-link-font-style, var(--framer-font-style)));\n    --font-weight: var(--framer-link-current-font-weight, var(--framer-link-font-weight, var(--framer-font-weight)));\n    --text-color: var(--framer-link-current-text-color, var(--framer-link-text-color, var(--framer-text-color)));\n    --font-size: var(--framer-link-current-font-size, var(--framer-link-font-size, var(--framer-font-size)));\n    --text-transform: var(--framer-link-current-text-transform, var(--framer-link-text-transform, var(--framer-text-transform)));\n    --text-decoration: var(--framer-link-current-text-decoration, var(--framer-link-text-decoration, var(--framer-text-decoration)));\n}`;\nvar textCSSRules = [\n  `[data-framer-component-type=\"Text\"] { cursor: inherit; }`,\n  `[data-framer-component-text-autosized] * { white-space: pre; }`,\n  textAlignmentRule,\n  textBlockSpanRule,\n  textInlineSpanRule,\n  renderTextStylesRule,\n  textStylesRule,\n  linkStylesRule,\n  linkHoverStylesRule,\n  linkCurrentStylesRule\n];\nvar stackPositionRule = `\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-component-type],\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > *,\n:not([data-framer-generated]) > [data-framer-stack-content-wrapper] > [data-framer-legacy-stack-gap-enabled] > [data-framer-component-type] {\n    position: relative;\n}`;\nvar nativeStackGapRules = [\n  `[data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: var(--stack-native-row-gap);\n        column-gap: var(--stack-native-column-gap);\n    }`,\n  `.${flexboxGapNotSupportedClass} [data-framer-stack-content-wrapper][data-framer-stack-gap-enabled=\"true\"] {\n        row-gap: unset;\n        column-gap: unset;\n    }`\n];\nvar stackGapRule = `\n.${flexboxGapNotSupportedClass} [data-framer-legacy-stack-gap-enabled=\"true\"] > *, [data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"] {\n    margin-top: calc(var(--stack-gap-y) / 2);\n    margin-bottom: calc(var(--stack-gap-y) / 2);\n    margin-right: calc(var(--stack-gap-x) / 2);\n    margin-left: calc(var(--stack-gap-x) / 2);\n}\n`;\nvar stackDirectionRuleVertical = `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child {\n    margin-top: 0;\n    margin-left: 0;\n}`;\nvar stackDirectionRuleHorizontal = `\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:last-child,\n[data-framer-stack-direction-reverse=\"false\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:last-child,\n.${flexboxGapNotSupportedClass}\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"]\n> *:first-child,\n[data-framer-stack-direction-reverse=\"true\"]\n[data-framer-legacy-stack-gap-enabled=\"true\"][data-framer-stack-flexbox-gap=\"false\"]\n> *:first-child {\n    margin-right: 0;\n    margin-bottom: 0;\n}`;\nvar stackCSSRules = [\n  stackPositionRule,\n  stackGapRule,\n  ...nativeStackGapRules,\n  stackDirectionRuleVertical,\n  stackDirectionRuleHorizontal\n];\nvar navigationCSSRules = [\n  `\nNavigationContainer\n[data-framer-component-type=\"NavigationContainer\"] > *,\n[data-framer-component-type=\"NavigationContainer\"] > [data-framer-component-type] {\n    position: relative;\n}`\n];\nvar scrollCSSRules = [\n  `[data-framer-component-type=\"Scroll\"]::-webkit-scrollbar { display: none; }`,\n  `[data-framer-component-type=\"ScrollContentWrapper\"] > * { position: relative; }`\n];\nvar nativeScrollCSSRules = [\n  `[data-framer-component-type=\"NativeScroll\"] { -webkit-overflow-scrolling: touch; }`,\n  `[data-framer-component-type=\"NativeScroll\"] > * { position: relative; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-both { overflow-x: scroll; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical { overflow-x: hidden; overflow-y: scroll; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal { overflow-x: scroll; overflow-y: hidden; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-vertical > * { width: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].direction-horizontal > * { height: 100% !important; }`,\n  `[data-framer-component-type=\"NativeScroll\"].scrollbar-hidden::-webkit-scrollbar { display: none; }`\n];\nvar deviceComponentCSSRules = [\n  `[data-framer-component-type=\"DeviceComponent\"].no-device > * { width: 100% !important; height: 100% !important; }`\n];\nvar pageContentWrapperWrapperCSSRules = [\n  `[data-framer-component-type=\"PageContentWrapper\"] > *, [data-framer-component-type=\"PageContentWrapper\"] > [data-framer-component-type] { position: relative; }`\n];\nvar presenceCSS = [\n  `[data-is-present=\"false\"], [data-is-present=\"false\"] * { pointer-events: none !important; }`\n];\nvar cursorCSS = [\n  `[data-framer-cursor=\"pointer\"] { cursor: pointer; }`,\n  `[data-framer-cursor=\"grab\"] { cursor: grab; }`,\n  `[data-framer-cursor=\"grab\"]:active { cursor: grabbing; }`\n];\nvar frameCSS = [\n  // Non-sites prototyping projects render with FrameWithMotion and Stacks. In\n  // that context this rule ensures pointer events work in a specific way\n  // designed for prototypes that we don't care about anymore in sites. We\n  // can't remove it for legacy reasons, but sites will never render any\n  // elements that are impacted by this rule. However, users can still use the\n  // <Frame> api in code, at which point this rule will kick in. We don't\n  // encourage the use of this API anymore, and bugs that come from this will\n  // be the user's concern.\n  `[data-framer-component-type=\"Frame\"] *, [data-framer-component-type=\"Stack\"] * { pointer-events: auto; }`,\n  // This is fully deprecated, and will never exist in code that is generated\n  // after 24/01/2023. There will be existing code-generated that depends on\n  // this rule existing, so we can't remove it.\n  `[data-framer-generated] * { pointer-events: unset }`\n];\nvar resetCSS = [\n  `[data-reset=\"button\"] {\n        border-width: 0;\n        padding: 0;\n        background: none;\n}`\n];\nvar hideScrollbars = [\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar { width: 0px; height: 0px; }`,\n  `[data-hide-scrollbars=\"true\"]::-webkit-scrollbar-thumb { background: transparent; }`\n];\nvar frameCSSRules = (isPreview) => {\n  return isPreview ? frameCSS : [];\n};\nvar svgCSSRules = [`.svgContainer svg { display: block; }`];\nvar combineCSSRules = (isPreview) => [\n  ...componentCSSRules,\n  ...textCSSRules,\n  ...richTextCSSRules,\n  ...deprecatedRichTextCSSRules,\n  ...stackCSSRules,\n  ...navigationCSSRules,\n  ...scrollCSSRules,\n  ...nativeScrollCSSRules,\n  ...pageContentWrapperWrapperCSSRules,\n  ...deviceComponentCSSRules,\n  ...presenceCSS,\n  ...cursorCSS,\n  ...frameCSSRules(isPreview),\n  ...svgCSSRules,\n  ...resetCSS,\n  ...hideScrollbars\n];\nvar combinedCSSRules = combineCSSRules(false);\nvar combinedCSSRulesForPreview = combineCSSRules(true);\nvar didInject = false;\nfunction injectComponentCSSRules() {\n  if (didInject)\n    return;\n  didInject = true;\n  const styles = RenderTarget.current() === \"PREVIEW\" /* preview */ ? combinedCSSRulesForPreview : combinedCSSRules;\n  for (const rule of styles) {\n    injectCSSRule(rule, void 0, void 0);\n  }\n}\n\n// ../../library/src/utils/utils.ts\nfunction isFunction(value) {\n  return typeof value === \"function\";\n}\nfunction isBoolean(value) {\n  return typeof value === \"boolean\";\n}\nfunction isString2(value) {\n  return typeof value === \"string\";\n}\nfunction isNumber(value) {\n  return typeof value === \"number\" && Number.isFinite(value);\n}\nfunction isArray(value) {\n  return Array.isArray(value);\n}\nfunction isObject2(value) {\n  return value !== null && typeof value === \"object\" && !isArray(value);\n}\nfunction isUndefined(value) {\n  return typeof value === \"undefined\";\n}\nfunction isValidDate(value) {\n  return value instanceof Date && !isNaN(value.getTime());\n}\n\n// ../../library/src/utils/applyControlDefaultsToReactDefaultProps.ts\nfunction isReactComponent(component) {\n  return isObject2(component) || isFunction(component);\n}\nvar optionalKey = \"optional\";\nfunction controlIsOptional(control) {\n  return !!control && optionalKey in control && control[optionalKey] === true;\n}\nfunction shouldBeNever(_) {\n}\nfunction getControlDefaultValue(control) {\n  try {\n    switch (control.type) {\n      case \"string\" /* String */:\n      case \"color\" /* Color */:\n      case \"date\" /* Date */:\n      case \"link\" /* Link */:\n        return isString2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"boolean\" /* Boolean */:\n        return isBoolean(control.defaultValue) ? control.defaultValue : void 0;\n      case \"enum\" /* Enum */:\n        if (isUndefined(control.defaultValue))\n          return void 0;\n        return control.options.includes(control.defaultValue) ? control.defaultValue : void 0;\n      case \"fusednumber\" /* FusedNumber */:\n      case \"number\" /* Number */:\n        return isNumber(control.defaultValue) ? control.defaultValue : void 0;\n      case \"transition\" /* Transition */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"font\" /* Font */:\n        return isObject2(control.defaultValue) ? control.defaultValue : void 0;\n      case \"object\" /* Object */: {\n        const value = isObject2(control.defaultValue) ? control.defaultValue : {};\n        if (isObject2(control.controls)) {\n          applyControlDefaultsToDefaultProps(value, control.controls);\n        }\n        return value;\n      }\n      case \"array\" /* Array */:\n        return isArray(control.defaultValue) ? control.defaultValue : void 0;\n      case \"file\" /* File */:\n      case \"image\" /* Image */:\n      case \"richtext\" /* RichText */:\n      case \"pagescope\" /* PageScope */:\n      case \"eventhandler\" /* EventHandler */:\n      case \"segmentedenum\" /* SegmentedEnum */:\n      case \"responsiveimage\" /* ResponsiveImage */:\n      case \"componentinstance\" /* ComponentInstance */:\n        return void 0;\n      default:\n        shouldBeNever(control);\n        return void 0;\n    }\n  } catch {\n    return void 0;\n  }\n}\nfunction applyControlDefaultsToDefaultProps(defaultProps, controls) {\n  for (const controlKey in controls) {\n    const control = controls[controlKey];\n    if (!control)\n      continue;\n    const currentDefault = defaultProps[controlKey];\n    if (!isUndefined(currentDefault))\n      continue;\n    if (controlIsOptional(control))\n      continue;\n    const defaultValue = getControlDefaultValue(control);\n    if (isUndefined(defaultValue))\n      continue;\n    defaultProps[controlKey] = defaultValue;\n  }\n}\nfunction getDefaultProps(component) {\n  if (isObject2(component.defaultProps)) {\n    return component.defaultProps;\n  }\n  const defaultProps = {};\n  component.defaultProps = defaultProps;\n  return defaultProps;\n}\nfunction applyControlDefaultsToReactDefaultProps(component, controls) {\n  if (!isReactComponent(component))\n    return;\n  const defaultProps = getDefaultProps(component);\n  applyControlDefaultsToDefaultProps(defaultProps, controls);\n}\n\n// ../../library/src/utils/addPropertyControls.ts\nfunction addPropertyControls(component, propertyControls) {\n  Object.assign(component, { propertyControls });\n  applyControlDefaultsToReactDefaultProps(component, propertyControls);\n}\nfunction getPropertyControls(component) {\n  return component.propertyControls;\n}\n\n// ../../library/src/components/Device/presets.ts\nvar defaultPresetId = \"iphone-12-pro\";\nvar presetsBase = {\n  iPhonePro: {\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 21,\n    clayBezelRight: 21,\n    clayBezelTop: 21,\n    clayBezelBottom: 21,\n    clayBezelRadius: 38 + 21\n  },\n  iPhone8: {\n    screenRadius: 0,\n    clayBezelLeft: 24,\n    clayBezelRight: 24,\n    clayBezelTop: 96,\n    clayBezelBottom: 96,\n    clayBezelRadius: 38 * 1.5\n  },\n  iPadPro: {\n    screenRadius: 25,\n    clayBezelLeft: 38,\n    clayBezelRight: 38,\n    clayBezelTop: 38,\n    clayBezelBottom: 38,\n    clayBezelRadius: 25 + 38\n  },\n  desktop: {\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 20,\n    clayBezelBottom: 20,\n    clayBezelRadius: 20\n  }\n};\nvar devicePresets = [\n  {\n    id: \"iphone-12\",\n    title: \"iPhone 12\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 500,\n      height: 974,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-mini\",\n    title: \"iPhone 12 Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 450,\n      height: 890,\n      screenOffsetTop: 55,\n      screenOffsetLeft: 45\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M142 18c0 19 14 47 43 48h349c31 0 44-29 44-48 0-12 4-18 14-18h18c38 0 52 4 66 11 14 8 25 19 33 33v1c7 14 11 28 11 65v1340c0 38-4 52-11 66-8 14-19 25-33 33h-1c-14 7-28 11-65 11H110c-38 0-52-4-66-11-14-8-25-19-33-33v-1c-7-13-11-27-11-64V110c0-38 4-52 11-66 8-14 19-25 33-33h1C58 4 72 0 109 0h16c11 0 17 6 17 18z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 460,\n      height: 880,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#14496D\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#DB4141\" }\n      ],\n      handOffset: { left: 31.5, right: 30.5, bottom: 30 }\n    }\n  },\n  {\n    id: \"iphone-12-pro\",\n    title: \"iPhone 12 Pro\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 390,\n    screenHeight: 844,\n    externalClay: {\n      width: 494,\n      height: 968,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<g style=\"transform: scale(0.5);\"><path d=\"M171.2 0c2.3 0 4 .5 5.4 1.3 1.6 1 2.8 2.2 3.7 3.8.8 1.6 1.2 2.3 1.2 4.9 0 12 2.2 19 6.2 26.5s9.8 13.3 17.3 17.4c7.5 4 15.8 6.1 30.6 6.1h311.5c14.3 0 22.5-2.2 29.9-6.1 7.5-4 13.3-10 17.3-17.4 4-7.5 6.2-14.5 6.2-26.5 0-2.6.4-3.2 1.1-4.9.8-1.6 2-2.9 3.4-3.8 1.4-.8 3.2-1.3 5.4-1.3h54.2c40.1 0 54.7 4.2 69.4 12a81.8 81.8 0 0134 34c7.8 14.7 12 29.3 12 69.4v1457.2c0 40.1-4.2 54.7-12 69.4a81.8 81.8 0 01-34 34c-14.7 7.8-29.3 12-69.4 12H115.4c-40.1 0-54.7-4.2-69.4-12a81.8 81.8 0 01-34-34c-7.8-14.7-12-29.3-12-69.4V115.4C0 75.3 4.2 60.7 12 46a81.8 81.8 0 0134-34C60.7 4.2 75.3 0 115.4 0h55.4z\" fill=\"#000\" fill-rule=\"evenodd\"/></g>',\n    realisticImage: {\n      width: 490,\n      height: 944,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 29, right: 29, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-12-pro-max\",\n    title: \"iPhone 12 Pro Max\",\n    screenRadius: 50,\n    // to prevent leaking pixel in the corners, see https://github.com/framer/company/issues/20429\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 428,\n    screenHeight: 926,\n    externalClay: {\n      width: 532,\n      height: 1050,\n      screenOffsetTop: 62,\n      screenOffsetLeft: 52\n    },\n    screenMask: '<path d=\"M102 0c6 0 7 3 7 9 0 10 7 23 24 23h164c13 0 22-12 22-23 0-6 1-9 7-9h34c24 0 32 2 41 7s15 11 20 20 7 17 7 41v790c0 24-2 32-7 41s-11 15-20 20-17 7-41 7H68c-24 0-32-2-41-7s-15-11-20-20-7-17-7-41V68c0-24 2-32 7-41S18 12 27 7s17-7 41-7h34z\" fill=\"#000\" fill-rule=\"evenodd\"/>',\n    realisticImage: {\n      width: 528,\n      height: 1026,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"graphite\", title: \"Graphite\", colorValue: \"#585753\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pacific-blue\", title: \"Pacific Blue\", colorValue: \"#415D6C\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 28.5, right: 28, bottom: 29 }\n    }\n  },\n  {\n    id: \"iphone-11\",\n    title: \"iPhone 11\",\n    // Screen mask takes care of the rounded screen corners for iPhones Pro,\n    // and actually using a radius here produces visual artifacts in Chrome.\n    screenRadius: (\n      /* 38 */\n      0\n    ),\n    clayBezelLeft: 35.5,\n    clayBezelRight: 35.5,\n    clayBezelTop: 35.5,\n    clayBezelBottom: 35.5,\n    clayBezelRadius: 77,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M85.5 0C89.1 0 92 3 92 6.5c.3 6 1.5 10 3.4 13.5 2.2 4.1 5.5 7.4 9.6 9.6 4.2 2.2 8.9 3.4 17 3.4h170c8.1 0 12.8-1.2 17-3.4 4.1-2.2 7.4-5.5 9.6-9.6A31 31 0 00322 6.5c0-3.6 3-6.5 6.5-6.5h32.3c18.5 0 25.2 2 32 5.5 6.7 3.7 12 9 15.7 15.7 3.6 6.8 5.5 13.5 5.5 32v789.6c0 18.5-2 25.2-5.5 32-3.7 6.7-9 12-15.7 15.7-6.8 3.6-13.5 5.5-32 5.5H53.2c-18.5 0-25.2-2-32-5.5-6.7-3.7-12-9-15.7-15.7C2 868 0 861.3 0 842.8V53.2c0-18.5 2-25.2 5.5-32 3.7-6.7 9-12 15.7-15.7C28 2 34.7 0 53.2 0h32.3z\" fill=\"#000\" fill-rule=\"nonzero\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#202120\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F9F6EF\" },\n        { id: \"purple\", title: \"Purple\", colorValue: \"#D1CDDB\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#ADE0CD\" },\n        { id: \"red\", title: \"Red\", colorValue: \"#B90D2E\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FFE680\" }\n      ],\n      handOffset: { left: 14.5, right: 14.5, bottom: 14.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro\",\n    title: \"iPhone 11 Pro\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 375,\n    screenHeight: 812,\n    externalClay: {\n      width: 485,\n      height: 942,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M292 8.668V9c0 9.266-7.07 21-23.332 21h-162C90.402 30 83.332 18.266 83.332 9v-.332c0-4.285 0-8.668-7.664-8.668H43.332C16.312 0 0 16.313 0 43.332v725.336C0 795.688 16.313 812 43.332 812h288.336c27.02 0 43.332-16.313 43.332-43.332V43.332C375 16.312 358.687 0 331.668 0h-32C292 0 292 4.383 292 8.668zm0 0\"/>',\n    realisticImage: {\n      width: 475,\n      height: 912,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 24.5, right: 24.5, bottom: 23.5 }\n    }\n  },\n  {\n    id: \"iphone-11-pro-max\",\n    title: \"iPhone 11 Pro Max\",\n    ...presetsBase.iPhonePro,\n    screenWidth: 414,\n    screenHeight: 896,\n    externalClay: {\n      width: 524,\n      height: 1026,\n      screenOffsetTop: 65,\n      screenOffsetLeft: 55\n    },\n    screenMask: '<path d=\"M96 0c3.313 0 5.91 2.688 6 6 .18 6.645 1.191 10.148 2.938 13.41 1.917 3.586 4.73 6.402 8.316 8.317 3.586 1.918 7.441 2.941 15.445 2.941h156.602c8.004 0 11.86-1.023 15.445-2.941 3.586-1.915 6.399-4.73 8.317-8.317 1.746-3.265 2.746-6.758 2.937-13.41.094-3.313 2.688-6 6-6h46.004c17.387 0 23.687 1.809 30.043 5.21 6.355 3.4 11.344 8.388 14.742 14.743C412.191 26.31 414 32.61 414 49.996v796.008c0 17.387-1.809 23.687-5.21 30.043-3.4 6.355-8.388 11.344-14.743 14.742-6.356 3.402-12.656 5.211-30.043 5.211H49.996c-17.387 0-23.687-1.809-30.043-5.21-6.355-3.4-11.344-8.388-14.742-14.743C1.809 869.69 0 863.39 0 846.004V49.996C0 32.61 1.809 26.31 5.21 19.953c3.4-6.355 8.388-11.344 14.743-14.742C26.31 1.809 32.61 0 49.996 0zm0 0\"/>',\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 50,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#52514F\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#EBEBE3\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FBD7BD\" },\n        { id: \"midnight-green\", title: \"Midnight Green\", colorValue: \"#4F5850\" }\n      ],\n      handOffset: { left: 23.5, right: 24.5, bottom: 24 }\n    }\n  },\n  {\n    id: \"iphone-8\",\n    title: \"iPhone 8\",\n    ...presetsBase.iPhone8,\n    screenWidth: 375,\n    screenHeight: 667,\n    externalClay: {\n      width: 491,\n      height: 971,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 475,\n      height: 927,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 18.5 }\n    }\n  },\n  {\n    id: \"iphone-8-plus\",\n    title: \"iPhone 8 Plus\",\n    ...presetsBase.iPhone8,\n    screenWidth: 414,\n    screenHeight: 736,\n    externalClay: {\n      width: 530,\n      height: 1064,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 164\n    },\n    realisticImage: {\n      width: 514,\n      height: 996,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#28282A\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#DFE1E2\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#F6E6DB\" }\n      ],\n      handOffset: { left: 21, right: 20.5, bottom: 19 }\n    }\n  },\n  {\n    id: \"iphone-se\",\n    title: \"iPhone SE\",\n    screenWidth: 320,\n    screenHeight: 568,\n    screenRadius: 0,\n    clayBezelLeft: 20,\n    clayBezelRight: 20,\n    clayBezelTop: 112,\n    clayBezelBottom: 112,\n    clayBezelRadius: 38 * 1.5,\n    externalClay: {\n      width: 436,\n      height: 872,\n      screenOffsetLeft: 58,\n      screenOffsetTop: 152\n    },\n    realisticImage: {\n      width: 420,\n      height: 828,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 130,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#F7CFCA\" }\n      ],\n      handOffset: { left: 22, right: 22, bottom: 26.5 }\n    }\n  },\n  {\n    id: \"samsung-galaxy-s7\",\n    title: \"Samsung Galaxy S7\",\n    screenRadius: 0,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 640,\n    externalClay: {\n      width: 454,\n      height: 880,\n      screenOffsetTop: 120,\n      screenOffsetLeft: 47\n    },\n    realisticImage: {\n      width: 440,\n      height: 860,\n      screenOffsetLeft: 40,\n      screenOffsetTop: 110,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ],\n      handOffset: { left: 26, right: 25.5, bottom: 32 }\n    }\n  },\n  // deprecated\n  {\n    id: \"samsung-note-10\",\n    title: \"Samsung Note 10\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 10,\n    clayBezelLeft: 7,\n    clayBezelRight: 7,\n    clayBezelTop: 15,\n    clayBezelBottom: 15,\n    clayBezelRadius: 15\n  },\n  {\n    id: \"pixel-5\",\n    title: \"Google Pixel 5\",\n    screenRadius: 31,\n    clayBezelLeft: 22,\n    clayBezelRight: 22,\n    clayBezelTop: 22,\n    clayBezelBottom: 22,\n    clayBezelRadius: 66,\n    screenWidth: 360,\n    screenHeight: 780,\n    externalClay: {\n      width: 460,\n      height: 900,\n      screenOffsetTop: 60,\n      screenOffsetLeft: 50\n    },\n    realisticImage: {\n      width: 920 / 2,\n      height: 1760 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2,\n      availableColors: [\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#2E2C36\" },\n        { id: \"sorta-sage\", title: \"Sorta Sage\", colorValue: \"#B7C9C0\" }\n      ],\n      handOffset: {\n        left: 31.5,\n        right: 31,\n        bottom: 31\n        /* 1t */\n      }\n    }\n  },\n  {\n    id: \"pixel-4\",\n    title: \"Google Pixel 4\",\n    screenWidth: 360,\n    screenHeight: 760,\n    screenRadius: 34,\n    clayBezelLeft: 10,\n    clayBezelRight: 10,\n    clayBezelTop: 50,\n    clayBezelBottom: 25,\n    clayBezelRadius: 50,\n    externalClay: {\n      width: 460,\n      height: 938,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 89\n    },\n    realisticImage: {\n      width: 460,\n      height: 920,\n      screenOffsetLeft: 50,\n      screenOffsetTop: 80,\n      availableColors: [\n        { id: \"clearly-white\", title: \"Clearly White\", colorValue: \"#EAEDF2\" },\n        { id: \"just-black\", title: \"Just Black\", colorValue: \"#1A1A1A\" },\n        { id: \"oh-so-orange\", title: \"Oh So Orange\", colorValue: \"#FF7A68\" }\n      ],\n      handOffset: {\n        left: 35.5,\n        right: 35.5,\n        bottom: 57\n        /* 1t */\n      }\n    }\n  },\n  // Desktop ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"macbook-air\",\n    title: \"MacBook Air\",\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1890,\n      height: 1125,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 98\n    },\n    realisticImage: {\n      width: 3848 / 2,\n      height: 2240 / 2,\n      screenOffsetLeft: 484 / 2,\n      screenOffsetTop: 196 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#FCECD5\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-13\",\n    title: `MacBook Pro 13\"`,\n    screenWidth: 1440,\n    screenHeight: 900,\n    disableRotation: true,\n    externalClay: {\n      width: 1914,\n      height: 1169,\n      screenOffsetLeft: 236,\n      screenOffsetTop: 109\n    },\n    realisticImage: {\n      width: 3916 / 2,\n      height: 2330 / 2,\n      screenOffsetLeft: 518 / 2,\n      screenOffsetTop: 218 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"macbook-pro-16\",\n    title: `MacBook Pro 16\"`,\n    screenWidth: 1536,\n    screenHeight: 960,\n    disableRotation: true,\n    externalClay: {\n      width: 1984,\n      height: 1179,\n      screenOffsetLeft: 225,\n      screenOffsetTop: 78\n    },\n    realisticImage: {\n      width: 4032 / 2,\n      height: 2348 / 2,\n      screenOffsetLeft: 480 / 2,\n      screenOffsetTop: 148 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#B1B5B7\" }\n      ]\n    }\n  },\n  {\n    id: \"imac-21-5\",\n    title: `iMac 21.5\"`,\n    screenWidth: 2048,\n    screenHeight: 1152,\n    disableRotation: true,\n    externalClay: {\n      width: 2288,\n      height: 1892,\n      screenOffsetLeft: 120,\n      screenOffsetTop: 120\n    },\n    realisticImage: {\n      width: 4562 / 2,\n      height: 3796 / 2,\n      screenOffsetLeft: 232 / 2,\n      screenOffsetTop: 244 / 2\n    }\n  },\n  {\n    id: \"imac-27\",\n    title: `iMac 27\"`,\n    screenWidth: 2560,\n    screenHeight: 1440,\n    disableRotation: true,\n    externalClay: {\n      width: 2848,\n      height: 2351,\n      screenOffsetLeft: 144,\n      screenOffsetTop: 151\n    },\n    realisticImage: {\n      width: 5676 / 2,\n      height: 4720 / 2,\n      screenOffsetLeft: 278 / 2,\n      screenOffsetTop: 292 / 2,\n      availableColors: [\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E5E6E1\" },\n        { id: \"pro\", title: \"Pro\", colorValue: \"#5F5E63\" }\n      ]\n    }\n  },\n  {\n    id: \"pro-display-xdr\",\n    title: `Pro Display XDR`,\n    screenWidth: 3008,\n    screenHeight: 1692,\n    disableRotation: true,\n    externalClay: {\n      width: 3148,\n      height: 2325,\n      screenOffsetLeft: 70,\n      screenOffsetTop: 60\n    },\n    realisticImage: {\n      width: 6276 / 2,\n      height: 4695 / 2,\n      screenOffsetLeft: 130 / 2,\n      screenOffsetTop: 130 / 2\n    }\n  },\n  {\n    id: \"dell-xps\",\n    title: `Dell XPS`,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    disableRotation: true,\n    externalClay: {\n      width: 2624,\n      height: 1381,\n      screenOffsetLeft: 352,\n      screenOffsetTop: 57\n    },\n    realisticImage: {\n      width: 5412 / 2,\n      height: 2746 / 2,\n      screenOffsetLeft: 786 / 2,\n      screenOffsetTop: 108 / 2\n    }\n  },\n  {\n    id: \"surface-book\",\n    title: `Microsoft Surface Book`,\n    screenWidth: 1500,\n    screenHeight: 1e3,\n    disableRotation: true,\n    externalClay: {\n      width: 2089,\n      height: 1234,\n      screenOffsetLeft: 296,\n      screenOffsetTop: 93\n    },\n    realisticImage: {\n      width: 4200 / 2,\n      height: 2508 / 2,\n      screenOffsetLeft: 600 / 2,\n      screenOffsetTop: 210 / 2\n    }\n  },\n  // Tablets ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"ipad\",\n    title: \"iPad\",\n    screenRadius: 0,\n    screenWidth: 810,\n    screenHeight: 1080,\n    clayBezelLeft: 30,\n    clayBezelRight: 30,\n    clayBezelTop: 95,\n    clayBezelBottom: 95,\n    clayBezelRadius: 0,\n    externalClay: {\n      width: 966,\n      height: 1378,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 149\n    },\n    realisticImage: {\n      width: 1920 / 2,\n      height: 2720 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 140,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-mini\",\n    title: \"iPad Mini\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 768,\n    screenHeight: 1024,\n    externalClay: {\n      width: 924,\n      height: 1384,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 180\n    },\n    realisticImage: {\n      width: 1856 / 2,\n      height: 2728 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 340 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"gold\", title: \"Gold\", colorValue: \"#EFD8BD\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-air\",\n    title: \"iPad Air\",\n    screenRadius: 18,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 820,\n    screenHeight: 1180,\n    externalClay: {\n      width: 994,\n      height: 1374,\n      screenOffsetLeft: 87,\n      screenOffsetTop: 97\n    },\n    realisticImage: {\n      width: 1960 / 2,\n      height: 2680 / 2,\n      screenOffsetLeft: 160 / 2,\n      screenOffsetTop: 160 / 2,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" },\n        { id: \"rose-gold\", title: \"Rose Gold\", colorValue: \"#ECCBC4\" },\n        { id: \"blue\", title: \"Blue\", colorValue: \"#CBDAE6\" },\n        { id: \"green\", title: \"Green\", colorValue: \"#DAF0D9\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-11\",\n    title: \"iPad Pro 11\\u2033\",\n    screenRadius: 17,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 834,\n    screenHeight: 1194,\n    externalClay: {\n      width: 990,\n      height: 1370,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 1968 / 2,\n      height: 2688 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"ipad-pro-12-9\",\n    title: \"iPad Pro 12.9\\u2033\",\n    ...presetsBase.iPadPro,\n    screenRadius: 17,\n    screenWidth: 1024,\n    screenHeight: 1366,\n    externalClay: {\n      width: 1180,\n      height: 1542,\n      screenOffsetLeft: 78,\n      screenOffsetTop: 88\n    },\n    realisticImage: {\n      width: 2348 / 2,\n      height: 3032 / 2,\n      screenOffsetLeft: 75,\n      screenOffsetTop: 75,\n      availableColors: [\n        { id: \"space-grey\", title: \"Space Grey\", colorValue: \"#C3C4C8\" },\n        { id: \"silver\", title: \"Silver\", colorValue: \"#E1E2E4\" }\n      ]\n    }\n  },\n  {\n    id: \"surface-3\",\n    title: \"Microsoft Surface 3\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 960,\n    screenHeight: 640,\n    externalClay: {\n      width: 1184,\n      height: 864,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 2280 / 2,\n      height: 1580 / 2,\n      screenOffsetLeft: 180 / 2,\n      screenOffsetTop: 150 / 2\n    }\n  },\n  {\n    id: \"surface-pro-4\",\n    title: \"Microsoft Surface Pro 4\",\n    screenRadius: 0,\n    clayBezelLeft: 49,\n    clayBezelRight: 49,\n    clayBezelTop: 49,\n    clayBezelBottom: 49,\n    clayBezelRadius: 49,\n    screenWidth: 1368,\n    screenHeight: 912,\n    externalClay: {\n      width: 1592,\n      height: 1136,\n      screenOffsetLeft: 112,\n      screenOffsetTop: 112\n    },\n    realisticImage: {\n      width: 3176 / 2,\n      height: 2224 / 2,\n      screenOffsetLeft: 220 / 2,\n      screenOffsetTop: 200 / 2\n    }\n  },\n  // Watches ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"apple-watch-44\",\n    title: `Apple Watch 44mm`,\n    screenRadius: 33,\n    screenWidth: 184,\n    screenHeight: 224,\n    disableRotation: true,\n    externalClay: {\n      width: 298,\n      height: 502,\n      screenOffsetLeft: 57,\n      screenOffsetTop: 129\n    },\n    realisticImage: {\n      width: 548 / 2,\n      height: 908 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  {\n    id: \"apple-watch-40\",\n    title: `Apple Watch 40mm`,\n    screenRadius: 27,\n    screenWidth: 162,\n    screenHeight: 197,\n    disableRotation: true,\n    externalClay: {\n      width: 280,\n      height: 463,\n      screenOffsetLeft: 59,\n      screenOffsetTop: 124\n    },\n    realisticImage: {\n      width: 504 / 2,\n      height: 854 / 2,\n      screenOffsetLeft: 90 / 2,\n      screenOffsetTop: 230 / 2,\n      availableColors: [\n        { id: \"black\", title: \"Black\", colorValue: \"#2E2C36\" },\n        { id: \"white\", title: \"White\", colorValue: \"#F7F3F0\" },\n        { id: \"yellow\", title: \"Yellow\", colorValue: \"#FDDC6C\" },\n        { id: \"orange\", title: \"Orange\", colorValue: \"#F35C56\" }\n      ]\n    }\n  },\n  // TVs ------------------------------------------------------------------------------------------------------------------------\n  {\n    id: \"tv-full-hd\",\n    title: `Full HD`,\n    screenRadius: 0,\n    screenWidth: 1920,\n    screenHeight: 1080,\n    externalClay: {\n      width: 1968,\n      height: 1168,\n      screenOffsetLeft: 24,\n      screenOffsetTop: 12\n    },\n    realisticImage: {\n      width: 4040 / 2,\n      height: 2360 / 2,\n      screenOffsetLeft: 100 / 2,\n      screenOffsetTop: 100 / 2\n    }\n  },\n  {\n    id: \"tv-4k\",\n    title: `4K`,\n    screenRadius: 0,\n    screenWidth: 3840,\n    screenHeight: 2160,\n    externalClay: {\n      width: 3908,\n      height: 2308,\n      screenOffsetLeft: 34,\n      screenOffsetTop: 24\n    },\n    realisticImage: {\n      width: 7960 / 2,\n      height: 4600 / 2,\n      screenOffsetLeft: 140 / 2,\n      screenOffsetTop: 140 / 2\n    }\n  },\n  // Old devices ------------------------------------------------------------------------------------------------------------------------\n  // deprecated\n  {\n    id: \"720p\",\n    title: \"720p\",\n    ...presetsBase.desktop,\n    screenWidth: 720,\n    screenHeight: 1280\n  },\n  // deprecated\n  {\n    id: \"900p\",\n    title: \"900p\",\n    ...presetsBase.desktop,\n    screenWidth: 900,\n    screenHeight: 1440\n  },\n  // deprecated\n  {\n    id: \"1080p\",\n    title: \"1080p\",\n    ...presetsBase.desktop,\n    screenWidth: 1080,\n    screenHeight: 1920\n  },\n  // deprecated\n  {\n    id: \"1440p\",\n    title: \"1440p\",\n    ...presetsBase.desktop,\n    screenWidth: 1440,\n    screenHeight: 2560\n  },\n  // deprecated\n  {\n    id: \"4k\",\n    title: \"4K\",\n    ...presetsBase.desktop,\n    screenWidth: 2160,\n    screenHeight: 3840\n  }\n];\nvar deviceCodeComponentPresetIds = [\n  \"iphone-12\",\n  \"iphone-12-mini\",\n  \"iphone-12-pro\",\n  \"iphone-11\",\n  \"iphone-11-pro\",\n  \"iphone-11-pro-max\",\n  \"iphone-8\",\n  \"iphone-8-plus\",\n  \"iphone-se\",\n  \"samsung-note-10\",\n  \"pixel-4\",\n  \"ipad\",\n  \"ipad-pro-11\",\n  \"ipad-pro-12-9\",\n  \"720p\",\n  \"900p\",\n  \"1080p\",\n  \"1440p\",\n  \"4k\"\n];\nvar devicePresetsMap = devicePresets.reduce((map, preset) => {\n  map[preset.id] = preset;\n  return map;\n}, {});\nfunction getDevicePreset(presetId) {\n  var _a;\n  return (_a = devicePresetsMap[presetId]) != null ? _a : devicePresetsMap[defaultPresetId];\n}\n\n// ../../library/src/components/Device/DeviceCodeComponentProps.ts\nvar defaultDeviceProps = {\n  preset: defaultPresetId,\n  customWidth: 375,\n  customHeight: 800,\n  customBezel: 20,\n  isMixedBezel: false,\n  bezelTop: 20,\n  bezelRight: 20,\n  bezelBottom: 20,\n  bezelLeft: 20,\n  customBezelRadius: 20,\n  customScreenRadius: 0,\n  orientation: \"portrait\",\n  skin: \"clay\",\n  theme: \"dark\",\n  shadow: true,\n  backgroundColor: void 0\n};\nfunction convertPropsToDeviceOptions(props, { forceOldClay = false } = {}) {\n  var _a, _b, _c, _d, _e, _f, _g;\n  if (props.preset === \"no-device\") {\n    return;\n  }\n  let preset;\n  if (props.preset === \"custom\") {\n    preset = {\n      screenWidth: props.customWidth,\n      screenHeight: props.customHeight,\n      screenRadius: props.customScreenRadius,\n      clayBezelTop: props.isMixedBezel ? props.bezelTop : props.customBezel,\n      clayBezelRight: props.isMixedBezel ? props.bezelRight : props.customBezel,\n      clayBezelBottom: props.isMixedBezel ? props.bezelBottom : props.customBezel,\n      clayBezelLeft: props.isMixedBezel ? props.bezelLeft : props.customBezel,\n      clayBezelRadius: props.customBezelRadius\n    };\n  } else {\n    preset = getDevicePreset(props.preset);\n  }\n  const colors = getColorsFromTheme(props.theme);\n  const shadowColor = colors.shadowColor;\n  const shadow = props.shadow ? `0 10px 30px ${shadowColor}` : void 0;\n  const rotate = !preset.disableRotation && (props.orientation === \"landscape\" || props.rotated);\n  let deviceWidth;\n  let deviceHeight;\n  let screenOffsetTop;\n  let screenOffsetLeft;\n  let colorId = props.colorId;\n  let appearance;\n  if ((props.skin === void 0 || props.skin === \"realistic\") && preset.realisticImage && props.preset) {\n    deviceWidth = preset.realisticImage.width;\n    deviceHeight = preset.realisticImage.height;\n    screenOffsetTop = preset.realisticImage.screenOffsetTop;\n    screenOffsetLeft = preset.realisticImage.screenOffsetLeft;\n    colorId = colorId != null ? colorId : colorIdForTheme(props.theme, preset.realisticImage.availableColors);\n    appearance = {\n      type: \"realistic\",\n      imageUrl: colorId ? `https://preview.framercdn.com/images/devices/${props.preset}-${colorId}.png` : `https://preview.framercdn.com/images/devices/${props.preset}.png`,\n      imageWidth: preset.realisticImage.width,\n      imageHeight: preset.realisticImage.height,\n      rotateImage: rotate\n    };\n  } else {\n    deviceWidth = preset.screenWidth + ((_a = preset.clayBezelLeft) != null ? _a : 0) + ((_b = preset.clayBezelRight) != null ? _b : 0);\n    deviceHeight = preset.screenHeight + ((_c = preset.clayBezelTop) != null ? _c : 0) + ((_d = preset.clayBezelBottom) != null ? _d : 0);\n    screenOffsetTop = (_e = preset.clayBezelTop) != null ? _e : 0;\n    screenOffsetLeft = (_f = preset.clayBezelLeft) != null ? _f : 0;\n    if (preset.externalClay && !forceOldClay) {\n      deviceWidth = preset.externalClay.width;\n      deviceHeight = preset.externalClay.height;\n      screenOffsetTop = preset.externalClay.screenOffsetTop;\n      screenOffsetLeft = preset.externalClay.screenOffsetLeft;\n      appearance = {\n        type: \"external-clay\",\n        imageUrl: `https://preview.framercdn.com/images/devices/${props.preset}-${props.theme}.svg`,\n        imageWidth: preset.externalClay.width,\n        imageHeight: preset.externalClay.height,\n        rotateImage: rotate\n      };\n    } else {\n      appearance = {\n        type: \"clay\",\n        bezelRadius: preset.clayBezelRadius !== void 0 ? `${preset.clayBezelRadius}px` : void 0,\n        bezelColor: colors.bezelColor,\n        bezelShadeColor: colors.bezelShadeColor\n      };\n    }\n  }\n  let screenWidth = preset.screenWidth;\n  let screenHeight = preset.screenHeight;\n  if (rotate) {\n    const screenOffsetRight = deviceWidth - screenWidth - screenOffsetLeft;\n    [deviceWidth, deviceHeight] = [deviceHeight, deviceWidth];\n    [screenWidth, screenHeight] = [screenHeight, screenWidth];\n    [screenOffsetTop, screenOffsetLeft] = [screenOffsetRight, screenOffsetTop];\n  }\n  const handOffset = (_g = preset.realisticImage) == null ? void 0 : _g.handOffset;\n  return {\n    deviceWidth,\n    deviceHeight,\n    appearance,\n    screenWidth,\n    screenHeight,\n    screenOffsetTop,\n    screenOffsetLeft,\n    screenRadius: preset.screenRadius !== void 0 ? `${preset.screenRadius}px` : void 0,\n    screenMaskImage: appearance.type !== \"realistic\" && preset.screenMask ? makeScreenMaskImage({\n      mask: preset.screenMask,\n      // width/height of the mask = screen width/height pre-rotation\n      width: preset.screenWidth,\n      height: preset.screenHeight,\n      rotate\n    }) : void 0,\n    screenColor: colors.screenColor,\n    shadow,\n    hand: props.hand !== void 0 && supportsHand(props) ? {\n      imageUrl: `https://preview.framercdn.com/images/hands/${props.hand}.png`,\n      offsetLeft: handOffset == null ? void 0 : handOffset.left,\n      offsetRight: handOffset == null ? void 0 : handOffset.right,\n      offsetBottom: handOffset == null ? void 0 : handOffset.bottom\n    } : void 0,\n    background: props.backgroundColor,\n    theme: props.theme,\n    colorId\n  };\n}\nfunction makeScreenMaskImage({\n  mask,\n  width,\n  height,\n  rotate = false\n}) {\n  const transform2 = rotate ? (\n    // Rotate 90 degrees counter-clockwise around (0,0), then move the\n    // result down into the viewport (rightmost transform is applied first).\n    `transform=\"translate(0 ${width}) rotate(-90)\"`\n  ) : \"\";\n  const encoded = encodeURIComponent(\n    `<svg xmlns=\"http://www.w3.org/2000/svg\" viewport=\"0 0 ${width} ${height}\" preserveAspectRatio=\"none\"><g x=\"0\" y=\"0\" ${transform2}>${mask}</g></svg>`\n  );\n  return `url(\"data:image/svg+xml;utf8,${encoded}\")`;\n}\nvar lightColors = /* @__PURE__ */ new Set([\"white\", \"silver\", \"clearly-white\", \"sorta-sage\"]);\nvar darkColors = /* @__PURE__ */ new Set([\"black\", \"space-grey\", \"graphite\", \"just-black\", \"pro\"]);\nfunction colorIdForTheme(theme, availableColors) {\n  var _a;\n  if (!availableColors)\n    return;\n  const colors = theme === \"light\" ? lightColors : darkColors;\n  for (const color2 of availableColors) {\n    if (colors.has(color2.id)) {\n      return color2.id;\n    }\n  }\n  return (_a = availableColors[0]) == null ? void 0 : _a.id;\n}\nfunction supportsHand({ preset: presetId, skin, orientation = \"portrait\" }) {\n  var _a;\n  if (!presetId || presetId === \"custom\" || presetId === \"no-device\" || orientation === \"landscape\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return skin !== \"clay\" && ((_a = preset.realisticImage) == null ? void 0 : _a.handOffset) !== void 0;\n}\n\n// ../../library/src/components/Device/usePrototypingMetaTags.ts\nimport React19 from \"react\";\nfunction applyMetaTag(name, props) {\n  var _a;\n  let tag = document.querySelector(`meta[name=\"${name}\"]`);\n  if (!tag) {\n    tag = document.createElement(\"meta\");\n    (_a = document.getElementsByTagName(\"head\")[0]) == null ? void 0 : _a.appendChild(tag);\n    tag.setAttribute(\"name\", name);\n  }\n  for (const [k, v] of Object.entries(props)) {\n    tag.setAttribute(k, v);\n  }\n}\nfunction usePrototypingMetaTags() {\n  React19.useEffect(() => {\n    applyMetaTag(\"mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-capable\", { content: \"yes\" });\n    applyMetaTag(\"apple-mobile-web-app-status-bar-style\", {\n      content: \"black-translucent\"\n    });\n    applyMetaTag(\"viewport\", {\n      content: \"viewport-fit=cover, user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1\"\n    });\n  }, []);\n}\n\n// ../../library/src/components/Device/DeviceCodeComponent.tsx\nfunction DeviceCodeComponentInner({ children, ...props }) {\n  usePrototypingMetaTags();\n  const deviceOptions = convertPropsToDeviceOptions(props, { forceOldClay: true });\n  if (!deviceOptions) {\n    injectComponentCSSRules();\n    return /* @__PURE__ */ React20.createElement(\n      \"div\",\n      {\n        \"data-framer-component-type\": \"DeviceComponent\",\n        className: \"no-device\",\n        style: { width: \"100%\", height: \"100%\" }\n      },\n      /* @__PURE__ */ React20.createElement(ProvideParentSize, { parentSize: 1 /* Disabled */ }, children)\n    );\n  }\n  const child = Array.isArray(children) ? children[0] : children;\n  const resizedChild = child && React20.isValidElement(child) ? React20.cloneElement(child, {\n    width: deviceOptions.screenWidth,\n    height: deviceOptions.screenHeight\n  }) : null;\n  return /* @__PURE__ */ React20.createElement(Device, { scaleTo: \"dynamic\", deviceOptions }, resizedChild);\n}\nvar DeviceCodeComponent = /* @__PURE__ */ (() => {\n  const { componentWidth: defaultWidth2, componentHeight: defaultHeight2 } = getComponentSize(\n    convertPropsToDeviceOptions(defaultDeviceProps, { forceOldClay: true })\n  );\n  DeviceCodeComponentInner.defaultProps = {\n    width: defaultWidth2,\n    height: defaultHeight2,\n    ...defaultDeviceProps\n  };\n  const deviceCodeComponentPresets = devicePresets.filter((preset) => deviceCodeComponentPresetIds.includes(preset.id));\n  addPropertyControls(DeviceCodeComponentInner, {\n    children: {\n      title: \"Content\",\n      type: \"componentinstance\" /* ComponentInstance */\n    },\n    preset: {\n      type: \"enum\" /* Enum */,\n      options: [\"no-device\", \"custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.id)),\n      optionTitles: [\"No Device\", \"Custom\"].concat(deviceCodeComponentPresets.map((preset) => preset.title))\n    },\n    customWidth: {\n      title: \"Width\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customHeight: {\n      title: \"Height\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezel: {\n      title: \"Bezel\",\n      type: \"fusednumber\" /* FusedNumber */,\n      min: 0,\n      toggleKey: \"isMixedBezel\",\n      toggleTitles: [\"a\", \"b\"],\n      valueKeys: [\"bezelTop\", \"bezelRight\", \"bezelBottom\", \"bezelLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customBezelRadius: {\n      title: \"Bezel Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    customScreenRadius: {\n      title: \"Screen Radius\",\n      type: \"number\" /* Number */,\n      min: 0,\n      displayStepper: true,\n      hidden: (props) => props.preset !== \"custom\"\n    },\n    orientation: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"portrait\", \"landscape\"],\n      optionTitles: [\"Portrait\", \"Landscape\"],\n      optionIcons: [\"orientation-portrait\", \"orientation-landscape\"],\n      hidden: (props) => !!props.preset && !supportsOrientation(props.preset)\n    },\n    skin: {\n      title: \"Device\",\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"realistic\", \"clay\"],\n      optionTitles: [\"Realistic\", \"Clay\"],\n      defaultValue: \"clay\",\n      hidden: (props) => !!props.preset && !supportsRealisticSkin(props.preset)\n    },\n    theme: {\n      type: \"enum\" /* Enum */,\n      displaySegmentedControl: true,\n      options: [\"light\", \"dark\"],\n      optionTitles: [\"Light\", \"Dark\"],\n      hidden: (props) => !!props.preset && !supportsThemes(props.preset, props.skin)\n    },\n    shadow: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      hidden: ({ skin, preset }) => preset !== \"custom\" && skin === \"realistic\" || preset === \"no-device\"\n    },\n    hand: {\n      type: \"enum\" /* Enum */,\n      options: [void 0, \"hand-1\", \"hand-2\"],\n      optionTitles: [\"None\", \"Model 1\", \"Model 2\"],\n      hidden: (props) => !supportsHand(props)\n    },\n    backgroundColor: {\n      type: \"color\" /* Color */,\n      title: \"Background\",\n      optional: true,\n      hidden: ({ preset }) => preset === \"no-device\"\n    }\n  });\n  return DeviceCodeComponentInner;\n})();\nfunction supportsOrientation(presetId) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  return !preset.disableRotation;\n}\nfunction supportsRealisticSkin(presetId) {\n  if (presetId === \"custom\" || presetId === \"no-device\")\n    return false;\n  const preset = getDevicePreset(presetId);\n  return !!preset.realisticImage;\n}\nfunction supportsThemes(presetId, skin) {\n  if (presetId === \"no-device\")\n    return false;\n  if (presetId === \"custom\" || skin !== \"realistic\")\n    return true;\n  const preset = getDevicePreset(presetId);\n  const realisticImage = preset.realisticImage;\n  if (realisticImage === void 0) {\n    return true;\n  }\n  if (colorIdForTheme(\"dark\", realisticImage.availableColors) !== void 0) {\n    return true;\n  }\n  return false;\n}\n\n// ../../library/src/components/EmptyState.tsx\nimport React29 from \"react\";\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nvar import_process3 = __toESM(require_browser(), 1);\nimport React28, { forwardRef, useContext as useContext5, useRef as useRef4 } from \"react\";\n\n// ../../library/src/utils/isPropValid.ts\nfunction memoize(fn) {\n  const cache3 = /* @__PURE__ */ Object.create(null);\n  return (arg) => {\n    if (cache3[arg] === void 0)\n      cache3[arg] = fn(arg);\n    return cache3[arg];\n  };\n}\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/;\nvar isPropValid = /* @__PURE__ */ memoize(\n  (prop) => reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110 && prop.charCodeAt(2) < 91\n  /* Z+1 */\n);\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nimport React21 from \"react\";\n\n// ../../library/src/useIsomorphicLayoutEffect.ts\nimport { useEffect, useLayoutEffect } from \"react\";\nvar useIsomorphicLayoutEffect2 = typeof document !== \"undefined\" ? useLayoutEffect : useEffect;\n\n// ../../library/src/utils/runtimeInjection.ts\nvar mockWithWarning = (message) => {\n  return () => {\n    warnOnce(message);\n  };\n};\nvar implementation = {\n  // We need a default implementation for useImageSource and useImageElement as it is used for rendering image backgrounds which would break otherwise.\n  // The default value is used for HTML export and when using the library without Framer.\n  useImageSource(image) {\n    var _a;\n    return (_a = image.src) != null ? _a : \"\";\n  },\n  useImageElement(image, rect, nodeId) {\n    const element = new Image();\n    element.src = runtime.useImageSource(image, rect, nodeId);\n    if (image.srcSet)\n      element.srcset = image.srcSet;\n    return element;\n  }\n};\nvar isRuntimeInjected = false;\nvar runtimeProxy = {\n  get(target, key7, reciever) {\n    if (Reflect.has(target, key7)) {\n      return Reflect.get(target, key7, reciever);\n    }\n    if (isRuntimeInjected) {\n      return mockWithWarning(`${String(key7)} is not available in this version of Framer.`);\n    } else {\n      return mockWithWarning(`${String(key7)} is only available inside of Framer. https://www.framer.com/`);\n    }\n  }\n};\nvar runtime = new Proxy(implementation, runtimeProxy);\nfunction _injectRuntime(injectedRuntime) {\n  Object.assign(implementation, injectedRuntime);\n  isRuntimeInjected = true;\n}\n\n// ../../library/src/render/utils/imageRendering.ts\nfunction minZoomForPixelatedImageRendering(image, containerSize, devicePixelRatio3 = 1) {\n  var _a, _b, _c, _d;\n  let { width: frameWidth, height: frameHeight } = containerSize;\n  const imageWidth = (_b = (_a = image.pixelWidth) != null ? _a : image.intrinsicWidth) != null ? _b : 0;\n  const imageHeight = (_d = (_c = image.pixelHeight) != null ? _c : image.intrinsicHeight) != null ? _d : 0;\n  if (frameWidth < 1 || frameHeight < 1 || imageWidth < 1 || imageHeight < 1) {\n    return void 0;\n  }\n  frameWidth *= devicePixelRatio3;\n  frameHeight *= devicePixelRatio3;\n  const frameAspectRatio = frameWidth / frameHeight;\n  const imageAspectRatio = imageWidth / imageHeight;\n  switch (image.fit) {\n    case \"fill\":\n      if (imageAspectRatio > frameAspectRatio) {\n        return imageHeight / frameHeight;\n      } else {\n        return imageWidth / frameWidth;\n      }\n    case \"fit\":\n    case \"stretch\":\n      return Math.max(imageWidth / frameWidth, imageHeight / frameHeight);\n  }\n}\nfunction imageRenderingForZoom(zoom, minPixelatedZoom) {\n  if (minPixelatedZoom && Math.max(1, zoom) > minPixelatedZoom) {\n    return \"pixelated\";\n  }\n  return \"auto\";\n}\n\n// ../../library/src/render/style/BackgroundImageComponent.tsx\nvar wrapperStyle = {\n  position: \"absolute\",\n  borderRadius: \"inherit\",\n  top: 0,\n  right: 0,\n  bottom: 0,\n  left: 0\n};\nvar placeholderStyle = {\n  backgroundSize: \"16px 16px\",\n  backgroundImage: \"repeating-linear-gradient(45deg, rgba(180, 180, 180, 0.8) 0, rgba(180, 180, 180, 0.8) 1px, rgba(255, 255, 255, 0.2) 0, rgba(255, 255, 255, 0.2) 50%)\",\n  border: \"1px solid #c4c4c4\"\n};\nfunction cssObjectFit(imageFit) {\n  switch (imageFit) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"fill\";\n    default:\n      return \"cover\";\n  }\n}\nfunction cssImageRendering(image, containerSize) {\n  if (!containerSize)\n    return \"auto\";\n  const devicePixelRatio3 = RenderTarget.current() === \"CANVAS\" /* canvas */ ? safeWindow.devicePixelRatio : 1;\n  const minPixelatedZoom = minZoomForPixelatedImageRendering(image, containerSize, devicePixelRatio3);\n  if (RenderTarget.current() === \"CANVAS\" /* canvas */) {\n    return imageRenderingForZoom(1, minPixelatedZoom);\n  } else {\n    return imageRenderingForZoom(RenderEnvironment.zoom, minPixelatedZoom);\n  }\n}\nfunction getImageStyle(image, containerSize) {\n  return {\n    display: \"block\",\n    width: \"100%\",\n    height: \"100%\",\n    borderRadius: \"inherit\",\n    objectPosition: \"center\",\n    objectFit: cssObjectFit(image.fit),\n    imageRendering: cssImageRendering(image, containerSize)\n  };\n}\nfunction InnerImage({ image, containerSize, nodeId, alt }) {\n  const wrapperRef = React21.useRef(null);\n  const source = runtime.useImageSource(image, containerSize, nodeId);\n  const imageStyle = getImageStyle(image, containerSize);\n  const isStaticRendering = RenderTarget.current() !== \"CANVAS\" /* canvas */;\n  if (isStaticRendering) {\n    return /* @__PURE__ */ React21.createElement(\n      \"img\",\n      {\n        src: source,\n        alt: alt != null ? alt : image.alt,\n        srcSet: image.srcSet,\n        sizes: image.sizes,\n        style: imageStyle,\n        loading: image.loading\n      }\n    );\n  } else {\n    const imageElement = runtime.useImageElement(image, containerSize, nodeId);\n    useIsomorphicLayoutEffect2(() => {\n      const wrapper = wrapperRef.current;\n      if (wrapper === null)\n        return;\n      wrapper.appendChild(imageElement);\n      return () => {\n        wrapper.removeChild(imageElement);\n      };\n    }, [imageElement]);\n    Object.assign(imageElement.style, imageStyle);\n    return /* @__PURE__ */ React21.createElement(\"div\", { ref: wrapperRef, style: { display: \"contents\", borderRadius: \"inherit\" } });\n  }\n}\nfunction BackgroundImageComponent({ layoutId, image, ...props }) {\n  if (layoutId) {\n    layoutId = layoutId + \"-background\";\n  }\n  const hasImage = isString2(image.src);\n  const hasPlaceholder = !hasImage;\n  return /* @__PURE__ */ React21.createElement(\n    motion.div,\n    {\n      layoutId,\n      style: hasPlaceholder ? { ...wrapperStyle, ...placeholderStyle } : wrapperStyle,\n      \"data-framer-background-image-wrapper\": true\n    },\n    hasImage && /* @__PURE__ */ React21.createElement(InnerImage, { image, ...props })\n  );\n}\n\n// ../../library/src/render/types/BackgroundImage.ts\nvar key2 = \"src\";\nvar BackgroundImage;\n((BackgroundImage2) => {\n  BackgroundImage2.isImageObject = function(image) {\n    if (!image || typeof image === \"string\")\n      return false;\n    return key2 in image;\n  };\n})(BackgroundImage || (BackgroundImage = {}));\n\n// ../../library/src/render/style/backgroundImageFromProps.ts\nfunction applyForwardOverrides(background, props) {\n  const { _forwardedOverrideId, _forwardedOverrides, id } = props;\n  const forwardedOverrideId = _forwardedOverrideId != null ? _forwardedOverrideId : id;\n  const src = _forwardedOverrides && forwardedOverrideId ? _forwardedOverrides[forwardedOverrideId] : void 0;\n  if (src && typeof src === \"string\") {\n    background = { ...background, src };\n  }\n  return background;\n}\nfunction backgroundImageFromProps(props) {\n  const { background, image } = props;\n  if (image !== void 0 && background && !BackgroundImage.isImageObject(background)) {\n    return;\n  }\n  let backgroundImage = null;\n  if (isString2(image)) {\n    backgroundImage = { alt: \"\", src: image };\n  } else {\n    backgroundImage = Animatable.get(background, null);\n  }\n  if (!BackgroundImage.isImageObject(backgroundImage)) {\n    return;\n  }\n  return applyForwardOverrides(backgroundImage, props);\n}\n\n// ../../library/src/render/style/BorderComponent.tsx\nimport React22 from \"react\";\nfunction collectBorderStyleForProps(props, style, collapseEqualBorders = true) {\n  const { borderWidth, borderStyle, borderColor } = props;\n  if (!borderWidth) {\n    return;\n  }\n  let borderTop;\n  let borderBottom;\n  let borderLeft;\n  let borderRight;\n  if (typeof borderWidth === \"number\") {\n    borderTop = borderBottom = borderLeft = borderRight = borderWidth;\n  } else {\n    borderTop = borderWidth.top || 0;\n    borderBottom = borderWidth.bottom || 0;\n    borderLeft = borderWidth.left || 0;\n    borderRight = borderWidth.right || 0;\n  }\n  if (borderTop === 0 && borderBottom === 0 && borderLeft === 0 && borderRight === 0) {\n    return;\n  }\n  if (collapseEqualBorders && borderTop === borderBottom && borderTop === borderLeft && borderTop === borderRight) {\n    style.border = `${borderTop}px ${borderStyle} ${borderColor}`;\n    return;\n  }\n  style.borderStyle = props.borderStyle;\n  style.borderColor = props.borderColor;\n  style.borderTopWidth = `${borderTop}px`;\n  style.borderBottomWidth = `${borderBottom}px`;\n  style.borderLeftWidth = `${borderLeft}px`;\n  style.borderRightWidth = `${borderRight}px`;\n}\nfunction Border(props) {\n  const layoutId = props.layoutId ? `${props.layoutId}-border` : void 0;\n  if (!props.borderWidth) {\n    return null;\n  }\n  const style = {\n    position: \"absolute\",\n    left: 0,\n    right: 0,\n    top: 0,\n    bottom: 0,\n    borderRadius: \"inherit\",\n    pointerEvents: \"none\"\n  };\n  if (props.border) {\n    ;\n    style.border = props.border;\n    return /* @__PURE__ */ React22.createElement(motion.div, { style });\n  }\n  collectBorderStyleForProps(props, style, false);\n  return /* @__PURE__ */ React22.createElement(motion.div, { \"data-frame-border\": true, style, layoutId });\n}\n\n// ../../library/src/utils/environment.ts\nvar import_process = __toESM(require_browser(), 1);\n\n// ../../library/src/utils/safeNavigator.ts\nvar safeNavigator = typeof navigator !== \"undefined\" ? navigator : void 0;\n\n// ../../library/src/utils/environment.ts\nvar isBrowser2 = () => typeof document === \"object\";\nvar isWebKit = () => {\n  var _a;\n  return ((_a = safeNavigator) == null ? void 0 : _a.userAgent.includes(\"AppleWebKit/\")) && !isChrome() && !isEdge();\n};\nvar webkitVersion = () => {\n  let version2 = -1;\n  const regexp = /AppleWebKit\\/([\\d.]+)/;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar safariVersion = () => {\n  let version2 = -1;\n  const regexp = /Version\\/([\\d.]+)/;\n  const result = safeNavigator && regexp.exec(safeNavigator.userAgent);\n  if (result && result[1]) {\n    version2 = parseFloat(result[1]);\n  }\n  return version2;\n};\nvar isChrome = () => safeNavigator && /Chrome/.test(safeNavigator.userAgent) && /Google Inc/.test(safeNavigator.vendor) && !isEdge();\nvar isSafari = () => safeNavigator && /Safari/.test(safeNavigator.userAgent) && /Apple Computer/.test(safeNavigator.vendor);\nvar isFirefox = () => safeNavigator && /Firefox\\/\\d+\\.\\d+$/.test(safeNavigator.userAgent);\nvar isFramerX = () => safeNavigator && /FramerX/.test(safeNavigator.userAgent);\nvar isEdge = () => safeNavigator && /Edg\\//.test(safeNavigator.userAgent);\nvar isAndroid = () => safeNavigator && /(android)/i.test(safeNavigator.userAgent);\nvar isIOS = () => safeNavigator && /(iPhone|iPod|iPad)/i.test(safeNavigator.platform);\nvar isMacOS = () => safeNavigator && /Mac/.test(safeNavigator.platform);\nvar isWindows = () => safeNavigator && /Win/.test(safeNavigator.platform);\nvar isTouch = () => safeWindow.ontouchstart === null && safeWindow.ontouchmove === null && safeWindow.ontouchend === null;\nvar isDesktop = () => deviceType() === \"desktop\";\nvar isPhone = () => deviceType() === \"phone\";\nvar isTablet = () => deviceType() === \"tablet\";\nvar isMobile = () => isPhone() || isTablet();\nvar isFileUrl = (url) => url.startsWith(\"file://\");\nvar isDataUrl = (url) => url.startsWith(\"data:\");\nvar isTest = () => import_process.default.env.NODE_ENV === \"test\";\nvar isRelativeUrl = (url) => !/^([a-zA-Z]{1,8}:\\/\\/).*$/.test(url);\nvar isLocalServerUrl = (url) => /[a-zA-Z]{1,8}:\\/\\/127\\.0\\.0\\.1/.test(url) || /[a-zA-Z]{1,8}:\\/\\/localhost/.test(url);\nvar isLocalUrl = (url) => {\n  if (isFileUrl(url))\n    return true;\n  if (isLocalServerUrl(url))\n    return true;\n  return false;\n};\nvar isLocalAssetUrl = (url, baseUrl) => {\n  if (baseUrl === null)\n    baseUrl = safeWindow.location.href;\n  if (isDataUrl(url))\n    return false;\n  if (isLocalUrl(url))\n    return true;\n  if (isRelativeUrl(url) && isLocalUrl(baseUrl))\n    return true;\n  return false;\n};\nvar devicePixelRatio2 = () => safeWindow.devicePixelRatio;\nvar isJP2Supported = function() {\n  if (isFirefox())\n    return false;\n  return isWebKit();\n};\nvar isWebPSupported = () => isChrome();\nvar deviceType = () => {\n  if (safeNavigator && /(tablet)|(iPad)|(Nexus 9)/i.test(safeNavigator.userAgent))\n    return \"tablet\";\n  if (safeNavigator && /(mobi)/i.test(safeNavigator.userAgent))\n    return \"phone\";\n  return \"desktop\";\n};\nvar deviceOS = () => {\n  if (isMacOS())\n    return \"macos\";\n  if (isIOS())\n    return \"ios\";\n  if (isAndroid())\n    return \"android\";\n  if (isWindows())\n    return \"windows\";\n};\nvar deviceFont = (os) => {\n  if (!os) {\n    os = deviceOS();\n  }\n  const fonts = {\n    apple: \"-apple-system, BlinkMacSystemFont, SF Pro Text, SF UI Text, Helvetica Neue\",\n    google: \"Roboto, Helvetica Neue\",\n    microsoft: \"Segoe UI, Helvetica Neue\"\n  };\n  if (os === \"macos\")\n    return fonts.apple;\n  if (os === \"ios\")\n    return fonts.apple;\n  if (os === \"android\")\n    return fonts.google;\n  if (os === \"windows\")\n    return fonts.microsoft;\n  return fonts.apple;\n};\nvar environment = {\n  isWebKit,\n  webkitVersion,\n  isChrome,\n  isSafari,\n  isFirefox,\n  isFramerX,\n  isEdge,\n  isAndroid,\n  isIOS,\n  isMacOS,\n  isWindows,\n  isTouch,\n  isDesktop,\n  isPhone,\n  isTablet,\n  isMobile,\n  isFileUrl,\n  isDataUrl,\n  isRelativeUrl,\n  isLocalServerUrl,\n  isLocalUrl,\n  isLocalAssetUrl,\n  devicePixelRatio: devicePixelRatio2,\n  isJP2Supported,\n  isWebPSupported,\n  deviceType,\n  deviceOS,\n  deviceFont,\n  safariVersion\n};\n\n// ../../library/src/render/utils/layoutHintDataPropsForCenter.ts\nvar isChrome2 = isChrome();\nfunction layoutHintDataPropsForCenter(center) {\n  const props = {};\n  if (!isChrome2 || RenderTarget.current() !== \"CANVAS\" /* canvas */) {\n    return props;\n  }\n  if (center === true || center === \"x\") {\n    props[\"data-framer-layout-hint-center-x\"] = true;\n  }\n  if (center === true || center === \"y\") {\n    props[\"data-framer-layout-hint-center-y\"] = true;\n  }\n  return props;\n}\n\n// ../../library/src/render/utils/nodeIdFromString.ts\nfunction nodeIdFromString(str) {\n  return str.replace(/^id_/, \"\").replace(/\\\\/g, \"\");\n}\n\n// ../../library/src/render/utils/processOverrideForwarding.ts\nimport React23 from \"react\";\nfunction processOverrideForwarding(props, children) {\n  if (!children) {\n    children = props.children;\n    if (!children)\n      return { props, children };\n  }\n  let _forwardedOverrides = props._forwardedOverrides;\n  const extractions = props._overrideForwardingDescription;\n  if (extractions) {\n    _forwardedOverrides = void 0;\n    for (const key7 in extractions) {\n      const propName = extractions[key7];\n      const value = props[propName];\n      if (value !== void 0) {\n        if (!_forwardedOverrides) {\n          _forwardedOverrides = {};\n          props = { ...props };\n        }\n        _forwardedOverrides[key7] = props[propName];\n        delete props[propName];\n      }\n    }\n  }\n  if (!_forwardedOverrides)\n    return { props, children };\n  children = React23.Children.map(children, (child) => {\n    if (!React23.isValidElement(child))\n      return child;\n    return React23.cloneElement(child, { _forwardedOverrides });\n  });\n  return { props, children };\n}\n\n// ../../library/src/render/utils/transformCustomValues.ts\nvar isCustomValue = (v) => {\n  return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar isColorProp = (key7) => key7 === \"background\" || key7.endsWith(\"color\") || key7.endsWith(\"Color\");\nvar resolveSingleCustomValue = (key7, v) => {\n  if (v && typeof v === \"object\") {\n    invariant(\n      isCustomValue(v),\n      \"Motion styles must be numbers, strings, or an instance with a `toValue` and `mix` methods.\"\n    );\n    return v.toValue();\n  } else if (isColorProp(key7) && typeof v === \"string\" && Color.isColor(v)) {\n    return Color(v).toValue();\n  }\n  return v;\n};\nvar resolveCustomValues = (key7, v) => {\n  if (Array.isArray(v)) {\n    const numValues = v.length;\n    const resolved = [];\n    for (let i = 0; i < numValues; i++) {\n      resolved.push(resolveSingleCustomValue(key7, v[i]));\n    }\n    return resolved;\n  } else {\n    return resolveSingleCustomValue(key7, v);\n  }\n};\nvar customValueHandlers = {\n  size: {\n    set: (inputValues, outputValues, value) => {\n      if (inputValues.height === void 0) {\n        outputValues.height = value;\n      }\n      if (inputValues.width === void 0) {\n        outputValues.width = value;\n      }\n    },\n    type: px\n  },\n  radius: {\n    set: (inputValues, outputValues, value) => {\n      outputValues.borderRadius = value;\n    },\n    type: px\n  },\n  shadow: {\n    set: (inputValues, outputValues, value) => {\n      outputValues.boxShadow = value;\n    },\n    type: complex\n  }\n};\nvar transformValues = (values) => {\n  const transformedValues = {};\n  for (const key7 in values) {\n    const resolved = resolveCustomValues(key7, values[key7]);\n    const valueHandler = customValueHandlers[key7];\n    if (valueHandler) {\n      const isDefaultType = valueHandler.type && typeof values[key7] === \"number\";\n      const value = isDefaultType ? valueHandler.type.transform(values[key7]) : values[key7];\n      valueHandler.set(values, transformedValues, value);\n    } else {\n      transformedValues[key7] = resolved;\n    }\n  }\n  return transformedValues;\n};\n\n// ../../library/src/render/utils/transformTemplate.ts\nfunction transformTemplate(center) {\n  return (_, generated) => {\n    if (center === true) {\n      return `translate(-50%, -50%) ${generated}`;\n    } else {\n      if (center === \"x\") {\n        return `translateX(-50%) ${generated}`;\n      } else if (center === \"y\") {\n        return `translateY(-50%) ${generated}`;\n      }\n    }\n    return generated || \"none\";\n  };\n}\n\n// ../../library/src/render/utils/useLayoutId.ts\nimport { useContext as useContext3, useMemo as useMemo2 } from \"react\";\nfunction useLayoutId(props, { specificLayoutId, postfix } = {}) {\n  const { name, layoutIdKey, duplicatedFrom, __fromCodeComponentNode = false, drag } = props;\n  const { getLayoutId, enabled } = useContext3(LayoutIdContext);\n  return useMemo2(() => {\n    if (!enabled)\n      return props.layoutId;\n    const existingLayoutId = specificLayoutId || props.layoutId;\n    if (!existingLayoutId) {\n      if (drag || !layoutIdKey || __fromCodeComponentNode)\n        return void 0;\n    }\n    const layoutIdCandidate = existingLayoutId || getLayoutId({ id: layoutIdKey, name, duplicatedFrom });\n    if (!layoutIdCandidate)\n      return void 0;\n    return postfix ? `${layoutIdCandidate}-${postfix}` : layoutIdCandidate;\n  }, [enabled]);\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nimport { useContext as useContext4 } from \"react\";\n\n// ../../library/src/render/presentation/ComponentContainerContext.tsx\nimport React24 from \"react\";\nvar ComponentContainerContext = React24.createContext(false);\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/resizeObservers.js\nvar resizeObservers = [];\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/hasActiveObservations.js\nvar hasActiveObservations = function() {\n  return resizeObservers.some(function(ro) {\n    return ro.activeTargets.length > 0;\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/hasSkippedObservations.js\nvar hasSkippedObservations = function() {\n  return resizeObservers.some(function(ro) {\n    return ro.skippedTargets.length > 0;\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/deliverResizeLoopError.js\nvar msg = \"ResizeObserver loop completed with undelivered notifications.\";\nvar deliverResizeLoopError = function() {\n  var event;\n  if (typeof ErrorEvent === \"function\") {\n    event = new ErrorEvent(\"error\", {\n      message: msg\n    });\n  } else {\n    event = document.createEvent(\"Event\");\n    event.initEvent(\"error\", false, false);\n    event.message = msg;\n  }\n  window.dispatchEvent(event);\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverBoxOptions.js\nvar ResizeObserverBoxOptions;\n(function(ResizeObserverBoxOptions2) {\n  ResizeObserverBoxOptions2[\"BORDER_BOX\"] = \"border-box\";\n  ResizeObserverBoxOptions2[\"CONTENT_BOX\"] = \"content-box\";\n  ResizeObserverBoxOptions2[\"DEVICE_PIXEL_CONTENT_BOX\"] = \"device-pixel-content-box\";\n})(ResizeObserverBoxOptions || (ResizeObserverBoxOptions = {}));\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/freeze.js\nvar freeze = function(obj) {\n  return Object.freeze(obj);\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverSize.js\nvar ResizeObserverSize = function() {\n  function ResizeObserverSize2(inlineSize, blockSize) {\n    this.inlineSize = inlineSize;\n    this.blockSize = blockSize;\n    freeze(this);\n  }\n  return ResizeObserverSize2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/DOMRectReadOnly.js\nvar DOMRectReadOnly = function() {\n  function DOMRectReadOnly2(x, y, width, height) {\n    this.x = x;\n    this.y = y;\n    this.width = width;\n    this.height = height;\n    this.top = this.y;\n    this.left = this.x;\n    this.bottom = this.top + this.height;\n    this.right = this.left + this.width;\n    return freeze(this);\n  }\n  DOMRectReadOnly2.prototype.toJSON = function() {\n    var _a = this, x = _a.x, y = _a.y, top = _a.top, right = _a.right, bottom = _a.bottom, left = _a.left, width = _a.width, height = _a.height;\n    return { x, y, top, right, bottom, left, width, height };\n  };\n  DOMRectReadOnly2.fromRect = function(rectangle) {\n    return new DOMRectReadOnly2(rectangle.x, rectangle.y, rectangle.width, rectangle.height);\n  };\n  return DOMRectReadOnly2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/element.js\nvar isSVG = function(target) {\n  return target instanceof SVGElement && \"getBBox\" in target;\n};\nvar isHidden = function(target) {\n  if (isSVG(target)) {\n    var _a = target.getBBox(), width = _a.width, height = _a.height;\n    return !width && !height;\n  }\n  var _b = target, offsetWidth = _b.offsetWidth, offsetHeight = _b.offsetHeight;\n  return !(offsetWidth || offsetHeight || target.getClientRects().length);\n};\nvar isElement = function(obj) {\n  var _a, _b;\n  if (obj instanceof Element) {\n    return true;\n  }\n  var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;\n  return !!(scope && obj instanceof scope.Element);\n};\nvar isReplacedElement = function(target) {\n  switch (target.tagName) {\n    case \"INPUT\":\n      if (target.type !== \"image\") {\n        break;\n      }\n    case \"VIDEO\":\n    case \"AUDIO\":\n    case \"EMBED\":\n    case \"OBJECT\":\n    case \"CANVAS\":\n    case \"IFRAME\":\n    case \"IMG\":\n      return true;\n  }\n  return false;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/global.js\nvar global = typeof window !== \"undefined\" ? window : {};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateBoxSize.js\nvar cache2 = /* @__PURE__ */ new WeakMap();\nvar scrollRegexp = /auto|scroll/;\nvar verticalRegexp = /^tb|vertical/;\nvar IE = /msie|trident/i.test(global.navigator && global.navigator.userAgent);\nvar parseDimension = function(pixel) {\n  return parseFloat(pixel || \"0\");\n};\nvar size = function(inlineSize, blockSize, switchSizes) {\n  if (inlineSize === void 0) {\n    inlineSize = 0;\n  }\n  if (blockSize === void 0) {\n    blockSize = 0;\n  }\n  if (switchSizes === void 0) {\n    switchSizes = false;\n  }\n  return new ResizeObserverSize((switchSizes ? blockSize : inlineSize) || 0, (switchSizes ? inlineSize : blockSize) || 0);\n};\nvar zeroBoxes = freeze({\n  devicePixelContentBoxSize: size(),\n  borderBoxSize: size(),\n  contentBoxSize: size(),\n  contentRect: new DOMRectReadOnly(0, 0, 0, 0)\n});\nvar calculateBoxSizes = function(target, forceRecalculation) {\n  if (forceRecalculation === void 0) {\n    forceRecalculation = false;\n  }\n  if (cache2.has(target) && !forceRecalculation) {\n    return cache2.get(target);\n  }\n  if (isHidden(target)) {\n    cache2.set(target, zeroBoxes);\n    return zeroBoxes;\n  }\n  var cs = getComputedStyle(target);\n  var svg = isSVG(target) && target.ownerSVGElement && target.getBBox();\n  var removePadding = !IE && cs.boxSizing === \"border-box\";\n  var switchSizes = verticalRegexp.test(cs.writingMode || \"\");\n  var canScrollVertically = !svg && scrollRegexp.test(cs.overflowY || \"\");\n  var canScrollHorizontally = !svg && scrollRegexp.test(cs.overflowX || \"\");\n  var paddingTop = svg ? 0 : parseDimension(cs.paddingTop);\n  var paddingRight = svg ? 0 : parseDimension(cs.paddingRight);\n  var paddingBottom = svg ? 0 : parseDimension(cs.paddingBottom);\n  var paddingLeft = svg ? 0 : parseDimension(cs.paddingLeft);\n  var borderTop = svg ? 0 : parseDimension(cs.borderTopWidth);\n  var borderRight = svg ? 0 : parseDimension(cs.borderRightWidth);\n  var borderBottom = svg ? 0 : parseDimension(cs.borderBottomWidth);\n  var borderLeft = svg ? 0 : parseDimension(cs.borderLeftWidth);\n  var horizontalPadding = paddingLeft + paddingRight;\n  var verticalPadding = paddingTop + paddingBottom;\n  var horizontalBorderArea = borderLeft + borderRight;\n  var verticalBorderArea = borderTop + borderBottom;\n  var horizontalScrollbarThickness = !canScrollHorizontally ? 0 : target.offsetHeight - verticalBorderArea - target.clientHeight;\n  var verticalScrollbarThickness = !canScrollVertically ? 0 : target.offsetWidth - horizontalBorderArea - target.clientWidth;\n  var widthReduction = removePadding ? horizontalPadding + horizontalBorderArea : 0;\n  var heightReduction = removePadding ? verticalPadding + verticalBorderArea : 0;\n  var contentWidth = svg ? svg.width : parseDimension(cs.width) - widthReduction - verticalScrollbarThickness;\n  var contentHeight = svg ? svg.height : parseDimension(cs.height) - heightReduction - horizontalScrollbarThickness;\n  var borderBoxWidth = contentWidth + horizontalPadding + verticalScrollbarThickness + horizontalBorderArea;\n  var borderBoxHeight = contentHeight + verticalPadding + horizontalScrollbarThickness + verticalBorderArea;\n  var boxes = freeze({\n    devicePixelContentBoxSize: size(Math.round(contentWidth * devicePixelRatio), Math.round(contentHeight * devicePixelRatio), switchSizes),\n    borderBoxSize: size(borderBoxWidth, borderBoxHeight, switchSizes),\n    contentBoxSize: size(contentWidth, contentHeight, switchSizes),\n    contentRect: new DOMRectReadOnly(paddingLeft, paddingTop, contentWidth, contentHeight)\n  });\n  cache2.set(target, boxes);\n  return boxes;\n};\nvar calculateBoxSize = function(target, observedBox, forceRecalculation) {\n  var _a = calculateBoxSizes(target, forceRecalculation), borderBoxSize = _a.borderBoxSize, contentBoxSize = _a.contentBoxSize, devicePixelContentBoxSize = _a.devicePixelContentBoxSize;\n  switch (observedBox) {\n    case ResizeObserverBoxOptions.DEVICE_PIXEL_CONTENT_BOX:\n      return devicePixelContentBoxSize;\n    case ResizeObserverBoxOptions.BORDER_BOX:\n      return borderBoxSize;\n    default:\n      return contentBoxSize;\n  }\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverEntry.js\nvar ResizeObserverEntry = function() {\n  function ResizeObserverEntry2(target) {\n    var boxes = calculateBoxSizes(target);\n    this.target = target;\n    this.contentRect = boxes.contentRect;\n    this.borderBoxSize = freeze([boxes.borderBoxSize]);\n    this.contentBoxSize = freeze([boxes.contentBoxSize]);\n    this.devicePixelContentBoxSize = freeze([boxes.devicePixelContentBoxSize]);\n  }\n  return ResizeObserverEntry2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/calculateDepthForNode.js\nvar calculateDepthForNode = function(node) {\n  if (isHidden(node)) {\n    return Infinity;\n  }\n  var depth = 0;\n  var parent = node.parentNode;\n  while (parent) {\n    depth += 1;\n    parent = parent.parentNode;\n  }\n  return depth;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/broadcastActiveObservations.js\nvar broadcastActiveObservations = function() {\n  var shallowestDepth = Infinity;\n  var callbacks2 = [];\n  resizeObservers.forEach(function processObserver(ro) {\n    if (ro.activeTargets.length === 0) {\n      return;\n    }\n    var entries = [];\n    ro.activeTargets.forEach(function processTarget(ot) {\n      var entry = new ResizeObserverEntry(ot.target);\n      var targetDepth = calculateDepthForNode(ot.target);\n      entries.push(entry);\n      ot.lastReportedSize = calculateBoxSize(ot.target, ot.observedBox);\n      if (targetDepth < shallowestDepth) {\n        shallowestDepth = targetDepth;\n      }\n    });\n    callbacks2.push(function resizeObserverCallback() {\n      ro.callback.call(ro.observer, entries, ro.observer);\n    });\n    ro.activeTargets.splice(0, ro.activeTargets.length);\n  });\n  for (var _i = 0, callbacks_1 = callbacks2; _i < callbacks_1.length; _i++) {\n    var callback = callbacks_1[_i];\n    callback();\n  }\n  return shallowestDepth;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/algorithms/gatherActiveObservationsAtDepth.js\nvar gatherActiveObservationsAtDepth = function(depth) {\n  resizeObservers.forEach(function processObserver(ro) {\n    ro.activeTargets.splice(0, ro.activeTargets.length);\n    ro.skippedTargets.splice(0, ro.skippedTargets.length);\n    ro.observationTargets.forEach(function processTarget(ot) {\n      if (ot.isActive()) {\n        if (calculateDepthForNode(ot.target) > depth) {\n          ro.activeTargets.push(ot);\n        } else {\n          ro.skippedTargets.push(ot);\n        }\n      }\n    });\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/process.js\nvar process3 = function() {\n  var depth = 0;\n  gatherActiveObservationsAtDepth(depth);\n  while (hasActiveObservations()) {\n    depth = broadcastActiveObservations();\n    gatherActiveObservationsAtDepth(depth);\n  }\n  if (hasSkippedObservations()) {\n    deliverResizeLoopError();\n  }\n  return depth > 0;\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/queueMicroTask.js\nvar trigger;\nvar callbacks = [];\nvar notify = function() {\n  return callbacks.splice(0).forEach(function(cb) {\n    return cb();\n  });\n};\nvar queueMicroTask = function(callback) {\n  if (!trigger) {\n    var toggle_1 = 0;\n    var el_1 = document.createTextNode(\"\");\n    var config = { characterData: true };\n    new MutationObserver(function() {\n      return notify();\n    }).observe(el_1, config);\n    trigger = function() {\n      el_1.textContent = \"\" + (toggle_1 ? toggle_1-- : toggle_1++);\n    };\n  }\n  callbacks.push(callback);\n  trigger();\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/queueResizeObserver.js\nvar queueResizeObserver = function(cb) {\n  queueMicroTask(function ResizeObserver2() {\n    requestAnimationFrame(cb);\n  });\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/utils/scheduler.js\nvar watching = 0;\nvar isWatching = function() {\n  return !!watching;\n};\nvar CATCH_PERIOD = 250;\nvar observerConfig = { attributes: true, characterData: true, childList: true, subtree: true };\nvar events = [\n  \"resize\",\n  \"load\",\n  \"transitionend\",\n  \"animationend\",\n  \"animationstart\",\n  \"animationiteration\",\n  \"keyup\",\n  \"keydown\",\n  \"mouseup\",\n  \"mousedown\",\n  \"mouseover\",\n  \"mouseout\",\n  \"blur\",\n  \"focus\"\n];\nvar time = function(timeout) {\n  if (timeout === void 0) {\n    timeout = 0;\n  }\n  return Date.now() + timeout;\n};\nvar scheduled = false;\nvar Scheduler = function() {\n  function Scheduler2() {\n    var _this = this;\n    this.stopped = true;\n    this.listener = function() {\n      return _this.schedule();\n    };\n  }\n  Scheduler2.prototype.run = function(timeout) {\n    var _this = this;\n    if (timeout === void 0) {\n      timeout = CATCH_PERIOD;\n    }\n    if (scheduled) {\n      return;\n    }\n    scheduled = true;\n    var until = time(timeout);\n    queueResizeObserver(function() {\n      var elementsHaveResized = false;\n      try {\n        elementsHaveResized = process3();\n      } finally {\n        scheduled = false;\n        timeout = until - time();\n        if (!isWatching()) {\n          return;\n        }\n        if (elementsHaveResized) {\n          _this.run(1e3);\n        } else if (timeout > 0) {\n          _this.run(timeout);\n        } else {\n          _this.start();\n        }\n      }\n    });\n  };\n  Scheduler2.prototype.schedule = function() {\n    this.stop();\n    this.run();\n  };\n  Scheduler2.prototype.observe = function() {\n    var _this = this;\n    var cb = function() {\n      return _this.observer && _this.observer.observe(document.body, observerConfig);\n    };\n    document.body ? cb() : global.addEventListener(\"DOMContentLoaded\", cb);\n  };\n  Scheduler2.prototype.start = function() {\n    var _this = this;\n    if (this.stopped) {\n      this.stopped = false;\n      this.observer = new MutationObserver(this.listener);\n      this.observe();\n      events.forEach(function(name) {\n        return global.addEventListener(name, _this.listener, true);\n      });\n    }\n  };\n  Scheduler2.prototype.stop = function() {\n    var _this = this;\n    if (!this.stopped) {\n      this.observer && this.observer.disconnect();\n      events.forEach(function(name) {\n        return global.removeEventListener(name, _this.listener, true);\n      });\n      this.stopped = true;\n    }\n  };\n  return Scheduler2;\n}();\nvar scheduler = new Scheduler();\nvar updateCount = function(n) {\n  !watching && n > 0 && scheduler.start();\n  watching += n;\n  !watching && scheduler.stop();\n};\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObservation.js\nvar skipNotifyOnElement = function(target) {\n  return !isSVG(target) && !isReplacedElement(target) && getComputedStyle(target).display === \"inline\";\n};\nvar ResizeObservation = function() {\n  function ResizeObservation2(target, observedBox) {\n    this.target = target;\n    this.observedBox = observedBox || ResizeObserverBoxOptions.CONTENT_BOX;\n    this.lastReportedSize = {\n      inlineSize: 0,\n      blockSize: 0\n    };\n  }\n  ResizeObservation2.prototype.isActive = function() {\n    var size2 = calculateBoxSize(this.target, this.observedBox, true);\n    if (skipNotifyOnElement(this.target)) {\n      this.lastReportedSize = size2;\n    }\n    if (this.lastReportedSize.inlineSize !== size2.inlineSize || this.lastReportedSize.blockSize !== size2.blockSize) {\n      return true;\n    }\n    return false;\n  };\n  return ResizeObservation2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverDetail.js\nvar ResizeObserverDetail = function() {\n  function ResizeObserverDetail2(resizeObserver, callback) {\n    this.activeTargets = [];\n    this.skippedTargets = [];\n    this.observationTargets = [];\n    this.observer = resizeObserver;\n    this.callback = callback;\n  }\n  return ResizeObserverDetail2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserverController.js\nvar observerMap = /* @__PURE__ */ new WeakMap();\nvar getObservationIndex = function(observationTargets, target) {\n  for (var i = 0; i < observationTargets.length; i += 1) {\n    if (observationTargets[i].target === target) {\n      return i;\n    }\n  }\n  return -1;\n};\nvar ResizeObserverController = function() {\n  function ResizeObserverController2() {\n  }\n  ResizeObserverController2.connect = function(resizeObserver, callback) {\n    var detail = new ResizeObserverDetail(resizeObserver, callback);\n    observerMap.set(resizeObserver, detail);\n  };\n  ResizeObserverController2.observe = function(resizeObserver, target, options) {\n    var detail = observerMap.get(resizeObserver);\n    var firstObservation = detail.observationTargets.length === 0;\n    if (getObservationIndex(detail.observationTargets, target) < 0) {\n      firstObservation && resizeObservers.push(detail);\n      detail.observationTargets.push(new ResizeObservation(target, options && options.box));\n      updateCount(1);\n      scheduler.schedule();\n    }\n  };\n  ResizeObserverController2.unobserve = function(resizeObserver, target) {\n    var detail = observerMap.get(resizeObserver);\n    var index = getObservationIndex(detail.observationTargets, target);\n    var lastObservation = detail.observationTargets.length === 1;\n    if (index >= 0) {\n      lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);\n      detail.observationTargets.splice(index, 1);\n      updateCount(-1);\n    }\n  };\n  ResizeObserverController2.disconnect = function(resizeObserver) {\n    var _this = this;\n    var detail = observerMap.get(resizeObserver);\n    detail.observationTargets.slice().forEach(function(ot) {\n      return _this.unobserve(resizeObserver, ot.target);\n    });\n    detail.activeTargets.splice(0, detail.activeTargets.length);\n  };\n  return ResizeObserverController2;\n}();\n\n// ../../../node_modules/@juggle/resize-observer/lib/ResizeObserver.js\nvar ResizeObserver = function() {\n  function ResizeObserver2(callback) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to construct 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (typeof callback !== \"function\") {\n      throw new TypeError(\"Failed to construct 'ResizeObserver': The callback provided as parameter 1 is not a function.\");\n    }\n    ResizeObserverController.connect(this, callback);\n  }\n  ResizeObserver2.prototype.observe = function(target, options) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (!isElement(target)) {\n      throw new TypeError(\"Failed to execute 'observe' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n    }\n    ResizeObserverController.observe(this, target, options);\n  };\n  ResizeObserver2.prototype.unobserve = function(target) {\n    if (arguments.length === 0) {\n      throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': 1 argument required, but only 0 present.\");\n    }\n    if (!isElement(target)) {\n      throw new TypeError(\"Failed to execute 'unobserve' on 'ResizeObserver': parameter 1 is not of type 'Element\");\n    }\n    ResizeObserverController.unobserve(this, target);\n  };\n  ResizeObserver2.prototype.disconnect = function() {\n    ResizeObserverController.disconnect(this);\n  };\n  ResizeObserver2.toString = function() {\n    return \"function ResizeObserver () { [polyfill code] }\";\n  };\n  return ResizeObserver2;\n}();\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nimport React26, { useEffect as useEffect2 } from \"react\";\n\n// ../../library/src/modules/useForceUpdate.ts\nimport React25 from \"react\";\nfunction useForceUpdate3() {\n  const [_, setForcedRenderCount] = React25.useState(0);\n  return React25.useCallback(() => setForcedRenderCount((v) => v + 1), []);\n}\n\n// ../../library/src/components/hoc/withMeasuredSize.tsx\nvar DEFAULT_SIZE = 200;\nvar _sharedResizeObserver, _callbacks;\nvar SharedObserver = class {\n  constructor() {\n    __privateAdd(this, _sharedResizeObserver, void 0);\n    __privateAdd(this, _callbacks, /* @__PURE__ */ new WeakMap());\n    var _a;\n    const ResizeObserver2 = (_a = safeWindow.ResizeObserver) != null ? _a : ResizeObserver;\n    __privateSet(this, _sharedResizeObserver, new ResizeObserver2(this.updateResizedElements.bind(this)));\n  }\n  updateResizedElements(entries) {\n    for (const entry of entries) {\n      const callbackForElement = __privateGet(this, _callbacks).get(entry.target);\n      if (callbackForElement)\n        callbackForElement(entry.contentRect);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    __privateGet(this, _sharedResizeObserver).observe(element);\n    __privateGet(this, _callbacks).set(element, callback);\n  }\n  unobserve(element) {\n    __privateGet(this, _sharedResizeObserver).unobserve(element);\n    __privateGet(this, _callbacks).delete(element);\n  }\n};\n_sharedResizeObserver = new WeakMap();\n_callbacks = new WeakMap();\nvar sharedResizeObserver = isBrowser2() ? new SharedObserver() : void 0;\nfunction useRerenderOnResize(ref) {\n  const update = useForceUpdate3();\n  useEffect2(() => {\n    const element = ref == null ? void 0 : ref.current;\n    if (!element)\n      return;\n    sharedResizeObserver == null ? void 0 : sharedResizeObserver.observeElementWithCallback(ref.current, update);\n    return () => {\n      sharedResizeObserver == null ? void 0 : sharedResizeObserver.unobserve(element);\n    };\n  }, [ref, update]);\n}\nfunction useMeasuredSize(ref) {\n  const forceUpdate = useForceUpdate3();\n  const size2 = React26.useRef(null);\n  function updateSize(newSize) {\n    if (newSize.width === 0 && newSize.height === 0)\n      return;\n    if (!size2.current || newSize.height !== size2.current.height || newSize.width !== size2.current.width) {\n      size2.current = { width: newSize.width, height: newSize.height };\n      forceUpdate();\n    }\n  }\n  useIsomorphicLayoutEffect2(() => {\n    if (!ref.current)\n      return;\n    const { offsetWidth, offsetHeight } = ref.current;\n    updateSize({\n      width: offsetWidth,\n      height: offsetHeight\n    });\n    sharedResizeObserver.observeElementWithCallback(ref.current, updateSize);\n    return () => {\n      if (!ref.current)\n        return;\n      sharedResizeObserver.unobserve(ref.current);\n    };\n  }, []);\n  return size2.current;\n}\nvar SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE = \"data-framer-size-compatibility-wrapper\";\nvar withMeasuredSize = (Component15) => (props) => {\n  var _a, _b, _c, _d;\n  const ref = React26.useRef(null);\n  const size2 = useMeasuredSize(ref);\n  const dataProps = { [SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE]: true };\n  const shouldRender = Boolean(size2);\n  const fallbackWidth = (_a = props.width) != null ? _a : DEFAULT_SIZE;\n  const fallbackHeight = (_b = props.height) != null ? _b : DEFAULT_SIZE;\n  return /* @__PURE__ */ React26.createElement(\"div\", { style: { width: \"100%\", height: \"100%\", pointerEvents: \"none\" }, ref, ...dataProps }, shouldRender && /* @__PURE__ */ React26.createElement(\n    Component15,\n    {\n      ...props,\n      width: (_c = size2 == null ? void 0 : size2.width) != null ? _c : fallbackWidth,\n      height: (_d = size2 == null ? void 0 : size2.height) != null ? _d : fallbackHeight\n    }\n  ));\n};\n\n// ../../library/src/render/utils/getMeasurableCodeComponentChildren.ts\nfunction getMeasurableCodeComponentChildren(element) {\n  const childrenCollection = element.firstElementChild && element.firstElementChild.hasAttribute(SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE) ? element.firstElementChild.children : element.children;\n  return [...childrenCollection].filter(isMeasurable).map(unwrapInlinedDisplayContents);\n}\nfunction isMeasurable(element) {\n  if (element instanceof HTMLBaseElement || element instanceof HTMLHeadElement || element instanceof HTMLLinkElement || element instanceof HTMLMetaElement || element instanceof HTMLScriptElement || element instanceof HTMLStyleElement || element instanceof HTMLTitleElement) {\n    return false;\n  }\n  return element instanceof HTMLElement || element instanceof SVGElement;\n}\nfunction unwrapInlinedDisplayContents(element) {\n  if (!(element instanceof HTMLElement))\n    return element;\n  if (element.children.length === 0)\n    return element;\n  if (element.style.display !== \"contents\")\n    return element;\n  const firstMeasurableChild = [...element.children].find(isMeasurable);\n  if (firstMeasurableChild) {\n    return unwrapInlinedDisplayContents(firstMeasurableChild);\n  }\n  return element;\n}\n\n// ../../library/src/render/utils/useMeasureLayout.ts\nfunction useMeasureLayout(props, ref, getChildren = () => [], options = {}) {\n  const { id, visible, _needsMeasure } = props;\n  const { skipHook = false } = options;\n  const inCodeComponent = Boolean(useContext4(ComponentContainerContext));\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  useIsomorphicLayoutEffect2(() => {\n    if (!onCanvas || inCodeComponent || skipHook) {\n      return;\n    }\n    if (!(ref.current && id && visible && _needsMeasure)) {\n      return;\n    }\n    runtime.queueMeasureRequest(nodeIdFromString(id), ref.current, getChildren(ref.current));\n  });\n}\nfunction measureClosestComponentContainer(element) {\n  const container = element.closest(\"[data-framer-component-container]\");\n  if (!container)\n    return;\n  runtime.queueMeasureRequest(\n    nodeIdFromString(container.id),\n    container,\n    getMeasurableCodeComponentChildren(container)\n  );\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nimport { Component as Component3 } from \"react\";\n\n// ../../library/src/render/utils/isEqual.ts\nfunction hasProp(o, prop) {\n  return Object.prototype.hasOwnProperty.call(o, prop);\n}\nfunction withEquals(o) {\n  if (!hasProp(o, \"equals\"))\n    return false;\n  return typeof o.equals === \"function\";\n}\nfunction valueEqual(a, b) {\n  if (a === b)\n    return true;\n  return a !== a && b !== b;\n}\nfunction arrayShallowEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length)\n    return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!valueEqual(a[i], b[i]))\n      return false;\n  }\n  return true;\n}\nfunction arrayDeepEqual(a, b) {\n  const length = a.length;\n  if (length !== b.length)\n    return false;\n  for (let i = length; i-- !== 0; ) {\n    if (!equal(a[i], b[i], true))\n      return false;\n  }\n  return true;\n}\nfunction mapShallowEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!valueEqual(aValue, b.get(key7)))\n      return false;\n  }\n  return true;\n}\nfunction mapDeepEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const [key7, aValue] of a.entries()) {\n    if (!equal(aValue, b.get(key7), true))\n      return false;\n  }\n  return true;\n}\nfunction setEqual(a, b) {\n  if (a.size !== b.size)\n    return false;\n  for (const aValue of a.keys()) {\n    if (!b.has(aValue))\n      return false;\n  }\n  return true;\n}\nfunction objectShallowEqual(a, b) {\n  const keys3 = Object.keys(a);\n  if (keys3.length !== Object.keys(b).length)\n    return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7))\n      return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!valueEqual(a[key7], b[key7]))\n      return false;\n  }\n  return true;\n}\nfunction objectDeepEqual(a, b) {\n  const keys3 = Object.keys(a);\n  if (keys3.length !== Object.keys(b).length)\n    return false;\n  for (const key7 of keys3) {\n    if (!hasProp(b, key7))\n      return false;\n    if (key7 === \"_owner\" && hasProp(a, \"$$typeof\") && a.$$typeof) {\n      continue;\n    }\n    if (!equal(a[key7], b[key7], true))\n      return false;\n  }\n  return true;\n}\nfunction equal(a, b, deep) {\n  if (a === b)\n    return true;\n  if (!a || !b)\n    return a !== a && b !== b;\n  const typeA = typeof a;\n  const typeB = typeof b;\n  if (typeA !== typeB)\n    return false;\n  if (typeA !== \"object\")\n    return false;\n  const aIsArray = Array.isArray(a);\n  const bIsArray = Array.isArray(b);\n  if (aIsArray && bIsArray) {\n    if (deep) {\n      return arrayDeepEqual(a, b);\n    } else {\n      return arrayShallowEqual(a, b);\n    }\n  } else if (aIsArray !== bIsArray) {\n    return false;\n  }\n  const aIsMap = a instanceof Map;\n  const bIsMap = b instanceof Map;\n  if (aIsMap && bIsMap) {\n    if (deep) {\n      return mapDeepEqual(a, b);\n    } else {\n      return mapShallowEqual(a, b);\n    }\n  } else if (aIsMap !== bIsMap) {\n    return false;\n  }\n  const aIsSet = a instanceof Set;\n  const bIsSet = b instanceof Set;\n  if (aIsSet && bIsSet) {\n    return setEqual(a, b);\n  } else if (aIsSet !== bIsSet) {\n    return false;\n  }\n  const dateA = a instanceof Date;\n  const dateB = b instanceof Date;\n  if (dateA && dateB) {\n    return a.getTime() === b.getTime();\n  } else if (dateA !== dateB) {\n    return false;\n  }\n  const regexpA = a instanceof RegExp;\n  const regexpB = b instanceof RegExp;\n  if (regexpA && regexpB) {\n    return a.toString() === b.toString();\n  } else if (regexpA !== regexpB) {\n    return false;\n  }\n  if (withEquals(a) && withEquals(b)) {\n    return a.equals(b);\n  }\n  if (deep) {\n    return objectDeepEqual(a, b);\n  } else {\n    return objectShallowEqual(a, b);\n  }\n}\nfunction isEqual(a, b, deep = true) {\n  try {\n    return equal(a, b, deep);\n  } catch (error) {\n    if (error instanceof Error && error.message.match(/stack|recursion/i)) {\n      console.warn(\"Warning: isEqual does not handle circular references.\", error.name, error.message);\n      return false;\n    }\n    throw error;\n  }\n}\n\n// ../../library/src/render/utils/setLayerBacked.ts\nvar smallValue = \"0.000001px\";\nvar translateZ = ` translateZ(${smallValue})`;\nvar useTranslateZHack = isFramerX() || isSafari() || isTest();\nfunction forceLayerBackingWithMotionStyle(motionStyle) {\n  motionStyle.willChange = \"transform\";\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  if (useTranslateZHack && onCanvas) {\n    motionStyle.translateZ = smallValue;\n  }\n}\nfunction forceLayerBackingWithCSSProperties(cssProperties) {\n  cssProperties.willChange = \"transform\";\n  setTranslateZHack(cssProperties, true);\n}\nfunction setTranslateZHack(style, enabled) {\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  if (!useTranslateZHack || !onCanvas) {\n    return;\n  }\n  const transform2 = style.transform || \"\";\n  if (enabled) {\n    const hasTranslateZ = transform2.includes(translateZ);\n    if (!hasTranslateZ) {\n      style.transform = transform2 + translateZ;\n    }\n  } else {\n    style.transform = transform2.replace(translateZ, \"\");\n  }\n}\n\n// ../../library/src/render/utils/useWebkitFixes.ts\nimport { useEffect as useEffect3, useRef as useRef3 } from \"react\";\nfunction resetSetStyle(element, key7, toValue, microtask = true) {\n  if (!element) {\n    return;\n  }\n  const value = toValue ? toValue : element.style[key7];\n  const reset = () => {\n    element.style[key7] = value;\n  };\n  element.style[key7] = null;\n  if (microtask) {\n    void Promise.resolve().then(reset);\n  } else {\n    setTimeout(reset, 0);\n  }\n}\n\n// ../../library/src/render/presentation/Layer.tsx\nvar Layer = class extends Component3 {\n  constructor() {\n    super(...arguments);\n    this.layerElement = null;\n    this.setLayerElement = (element) => {\n      this.layerElement = element;\n    };\n  }\n  static applyWillChange(props, style, usingMotionStyle) {\n    if (props.willChangeTransform) {\n      if (usingMotionStyle) {\n        forceLayerBackingWithMotionStyle(style);\n      } else {\n        forceLayerBackingWithCSSProperties(style);\n      }\n    }\n  }\n  /** @internal */\n  shouldComponentUpdate(nextProps, nextState) {\n    return nextProps._needsMeasure || this.state !== nextState || !isEqual(this.props, nextProps);\n  }\n  /** @internal */\n  componentDidUpdate(prevProps) {\n    if (this.props[\"clip\"] && this.props[\"radius\"] === 0 && prevProps[\"radius\"] !== 0) {\n      resetSetStyle(this.layerElement, \"overflow\", \"hidden\", false);\n    }\n  }\n};\nLayer.defaultProps = {};\n\n// ../../library/src/utils/memoize.ts\nfunction manageCache(cache3, maxEntries) {\n  const size2 = cache3.size;\n  if (size2 < maxEntries)\n    return;\n  let i = Math.round(Math.random());\n  for (const key7 of cache3.keys()) {\n    if ((++i & 1) === 1)\n      continue;\n    cache3.delete(key7);\n  }\n}\nfunction memoize2(maxEntries, cache3, key7, create) {\n  const r = cache3.get(key7);\n  if (r)\n    return r;\n  manageCache(cache3, maxEntries);\n  const g = create(key7);\n  cache3.set(key7, g);\n  return g;\n}\n\n// ../../library/src/utils/string.ts\nvar hash = (value) => {\n  let hasher = 0, i, chr;\n  if (value.length === 0)\n    return hasher;\n  for (i = 0; i < value.length; i++) {\n    chr = value.charCodeAt(i);\n    hasher = (hasher << 5) - hasher + chr;\n    hasher |= 0;\n  }\n  return hasher;\n};\n\n// ../../library/src/render/types/Color/ConvertColor.ts\nvar ConvertColor = {\n  hueRotate: (color2, angle) => {\n    return Color.toHslString(Color.hueRotate(Color(color2), angle));\n  },\n  setAlpha: (color2, alpha) => {\n    return Color.toRgbString(Color.alpha(Color(color2), alpha));\n  },\n  getAlpha: (color2) => {\n    const obj = stringToObject(color2);\n    return obj ? obj.a : 1;\n  },\n  multiplyAlpha: (color2, alpha) => {\n    return Color.toRgbString(Color.multiplyAlpha(Color(color2), alpha));\n  },\n  toHex: (color2) => {\n    return Color.toHexString(Color(color2)).toUpperCase();\n  },\n  toRgb: (color2) => {\n    return Color.toRgb(Color(color2));\n  },\n  toRgbString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  toHSV: (color2) => {\n    return Color.toHsv(Color(color2));\n  },\n  toHSL: (color2) => {\n    return Color.toHsl(Color(color2));\n  },\n  toHslString: (color2) => {\n    return Color.toHslString(Color(color2));\n  },\n  toHsvString: (color2) => {\n    return Color.toHsvString(Color(color2));\n  },\n  hsvToHSLString: (hsv) => {\n    return Color.toHslString(Color(hsvToStr(hsv.h, hsv.s, hsv.v, hsv.a)));\n  },\n  hsvToString: (hsv) => {\n    return hsvToStr(hsv.h, hsv.s, hsv.v);\n  },\n  rgbaToString: (color2) => {\n    return Color.toRgbString(Color(color2));\n  },\n  hslToString: (hsl) => {\n    return Color.toRgbString(Color(hsl));\n  },\n  toColorPickerSquare: (h) => {\n    return Color.toRgbString(Color({ h, s: 1, l: 0.5, a: 1 }));\n  },\n  isValid: (color2) => {\n    return Color(color2).isValid !== false;\n  },\n  equals: (a, b) => {\n    if (typeof a === \"string\") {\n      a = Color(a);\n    }\n    if (typeof b === \"string\") {\n      b = Color(b);\n    }\n    return Color.equal(a, b);\n  },\n  toHexOrRgbaString: (input) => {\n    const color2 = Color(input);\n    return color2.a !== 1 ? Color.toRgbString(color2) : Color.toHexString(color2);\n  }\n};\n\n// ../../library/src/render/utils/gradientColorStops.ts\nvar CSSVariableRegExp = /var\\(.+\\)/;\nvar colorCache = /* @__PURE__ */ new Map();\nfunction cachedMultiplyAlpha(s, a) {\n  const key7 = [s, a];\n  if (CSSVariableRegExp.test(s)) {\n    return s;\n  }\n  return memoize2(1e3, colorCache, key7, () => ConvertColor.multiplyAlpha(s, a));\n}\nfunction gradientColorStops(gradient, alpha = 1) {\n  let stops;\n  if (\"stops\" in gradient) {\n    stops = gradient.stops;\n  } else {\n    stops = [\n      { value: gradient.start, position: 0 },\n      { value: gradient.end, position: 1 }\n    ];\n  }\n  if (alpha === 1) {\n    return stops;\n  } else {\n    return stops.map((stop) => ({ ...stop, value: cachedMultiplyAlpha(stop.value, alpha) }));\n  }\n}\nfunction gradientColorStopsHash(gradient, alpha) {\n  let result = 0;\n  gradientColorStops(gradient, alpha).forEach((stop) => {\n    result ^= hash(stop.value) ^ stop.position;\n  });\n  return result;\n}\n\n// ../../library/src/render/types/MultiStopGradient.ts\nvar multiStopGradientKeys = [\"stops\"];\nfunction isMultiStopGradient(value) {\n  return value && multiStopGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/SimpleGradient.ts\nvar simpleGradientKeys = [\"start\", \"end\"];\nfunction isSimpleGradient(value) {\n  return value && simpleGradientKeys.every((key7) => key7 in value);\n}\n\n// ../../library/src/render/types/LinearGradient.ts\nvar linearGradientKeys = [\"angle\", \"alpha\"];\nvar LinearGradient = {\n  /**\n   * @param value -\n   */\n  isLinearGradient: (value) => {\n    return value && linearGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (linearGradient) => {\n    return linearGradient.angle ^ gradientColorStopsHash(linearGradient, linearGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (linearGradient, overrideAngle) => {\n    const stops = gradientColorStops(linearGradient, linearGradient.alpha);\n    const angle = overrideAngle !== void 0 ? overrideAngle : linearGradient.angle;\n    const cssStops = stops.map((stop) => `${stop.value} ${stop.position * 100}%`);\n    return `linear-gradient(${angle}deg, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/types/RadialGradient.ts\nvar radialGradientKeys = [\n  \"widthFactor\",\n  \"heightFactor\",\n  \"centerAnchorX\",\n  \"centerAnchorY\",\n  \"alpha\"\n];\nvar RadialGradient = {\n  /**\n   * @param value -\n   * @public\n   */\n  isRadialGradient: (value) => {\n    return value && radialGradientKeys.every((key7) => key7 in value) && (isSimpleGradient(value) || isMultiStopGradient(value));\n  },\n  /** @internal */\n  hash: (radialGradient) => {\n    return radialGradient.centerAnchorX ^ radialGradient.centerAnchorY ^ radialGradient.widthFactor ^ radialGradient.heightFactor ^ gradientColorStopsHash(radialGradient, radialGradient.alpha);\n  },\n  /** @internal */\n  toCSS: (radialGradient) => {\n    const { alpha, widthFactor, heightFactor, centerAnchorX, centerAnchorY } = radialGradient;\n    const stops = gradientColorStops(radialGradient, alpha);\n    const cssStops = stops.map((stop) => `${stop.value} ${stop.position * 100}%`);\n    return `radial-gradient(${widthFactor * 100}% ${heightFactor * 100}% at ${centerAnchorX * 100}% ${centerAnchorY * 100}%, ${cssStops.join(\", \")})`;\n  }\n};\n\n// ../../library/src/render/traits/Background.ts\nfunction collectBackgroundFromProps({ background, backgroundColor }, style) {\n  if (backgroundColor) {\n    if (typeof backgroundColor === \"string\" || isMotionValue2(backgroundColor)) {\n      style.backgroundColor = backgroundColor;\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  } else if (background) {\n    background = Animatable.get(background, null);\n    if (typeof background === \"string\" || isMotionValue2(background)) {\n      style.background = background;\n    } else if (LinearGradient.isLinearGradient(background)) {\n      style.background = LinearGradient.toCSS(background);\n    } else if (RadialGradient.isRadialGradient(background)) {\n      style.background = RadialGradient.toCSS(background);\n    } else if (Color.isColorObject(background)) {\n      style.backgroundColor = background.initialValue || Color.toRgbString(background);\n    }\n  }\n}\n\n// ../../library/src/render/utils/extractStyleFromProps.ts\nfunction extractStyleFromProps(props, name, styleRef, into) {\n  if (into === void 0) {\n    into = name;\n  }\n  if (props[name] !== void 0) {\n    styleRef[into] = props[name];\n    return;\n  }\n}\n\n// ../../library/src/render/presentation/Frame/getStyleForFrameProps.ts\nfunction hasLeftAndRight(style) {\n  if (!style)\n    return false;\n  return style.left !== void 0 && style.right !== void 0;\n}\nfunction hasTopAndBottom(style) {\n  if (!style)\n    return false;\n  return style.top !== void 0 && style.bottom !== void 0;\n}\nfunction getStyleForFrameProps(props) {\n  if (!props) {\n    return {};\n  }\n  const style = {};\n  if (props.preserve3d === true) {\n    style.transformStyle = \"preserve-3d\";\n  } else if (props.preserve3d === false) {\n    style.transformStyle = \"flat\";\n  }\n  if (props.backfaceVisible === true) {\n    style.backfaceVisibility = \"visible\";\n  } else if (props.backfaceVisible === false) {\n    style.backfaceVisibility = \"hidden\";\n  }\n  if (style.backfaceVisibility) {\n    style.WebkitBackfaceVisibility = style.backfaceVisibility;\n  }\n  if (props.perspective !== void 0) {\n    style.perspective = style.WebkitPerspective = props.perspective;\n  }\n  if (!props.__fromCanvasComponent) {\n    if (props.center === true) {\n      style.left = \"50%\";\n      style.top = \"50%\";\n    } else {\n      if (props.center === \"x\") {\n        style.left = \"50%\";\n      } else if (props.center === \"y\") {\n        style.top = \"50%\";\n      }\n    }\n  }\n  extractStyleFromProps(props, \"size\", style);\n  extractStyleFromProps(props, \"width\", style);\n  extractStyleFromProps(props, \"height\", style);\n  extractStyleFromProps(props, \"minWidth\", style);\n  extractStyleFromProps(props, \"minHeight\", style);\n  extractStyleFromProps(props, \"top\", style);\n  extractStyleFromProps(props, \"right\", style);\n  extractStyleFromProps(props, \"bottom\", style);\n  extractStyleFromProps(props, \"left\", style);\n  extractStyleFromProps(props, \"position\", style);\n  extractStyleFromProps(props, \"overflow\", style);\n  extractStyleFromProps(props, \"opacity\", style);\n  if (!props._border || !props._border.borderWidth)\n    extractStyleFromProps(props, \"border\", style);\n  extractStyleFromProps(props, \"borderRadius\", style);\n  extractStyleFromProps(props, \"radius\", style, \"borderRadius\");\n  extractStyleFromProps(props, \"color\", style);\n  extractStyleFromProps(props, \"shadow\", style, \"boxShadow\");\n  extractStyleFromProps(props, \"x\", style);\n  extractStyleFromProps(props, \"y\", style);\n  extractStyleFromProps(props, \"z\", style);\n  extractStyleFromProps(props, \"rotate\", style);\n  extractStyleFromProps(props, \"rotateX\", style);\n  extractStyleFromProps(props, \"rotateY\", style);\n  extractStyleFromProps(props, \"rotateZ\", style);\n  extractStyleFromProps(props, \"scale\", style);\n  extractStyleFromProps(props, \"scaleX\", style);\n  extractStyleFromProps(props, \"scaleY\", style);\n  extractStyleFromProps(props, \"skew\", style);\n  extractStyleFromProps(props, \"skewX\", style);\n  extractStyleFromProps(props, \"skewY\", style);\n  extractStyleFromProps(props, \"originX\", style);\n  extractStyleFromProps(props, \"originY\", style);\n  extractStyleFromProps(props, \"originZ\", style);\n  collectBackgroundFromProps(props, style);\n  return style;\n}\n\n// ../../library/src/render/presentation/Frame/FrameWithMotion.tsx\nfunction hasEvents(props) {\n  for (const key7 in props) {\n    if (key7 === \"drag\" || key7.startsWith(\"while\") || typeof props[key7] === \"function\" && key7.startsWith(\"on\") && !key7.includes(\"Animation\")) {\n      return true;\n    }\n  }\n  return false;\n}\nvar pointerEvents = [\n  \"onClick\",\n  \"onDoubleClick\",\n  \"onMouse\",\n  \"onMouseDown\",\n  \"onMouseUp\",\n  \"onTapDown\",\n  \"onTap\",\n  \"onTapUp\",\n  \"onPointer\",\n  \"onPointerDown\",\n  \"onPointerUp\",\n  \"onTouch\",\n  \"onTouchDown\",\n  \"onTouchUp\"\n];\nvar pointerEventsSet = /* @__PURE__ */ new Set([\n  ...pointerEvents,\n  ...pointerEvents.map((event) => `${event}Capture`)\n  // Add capture event variants\n]);\nfunction getCursorFromEvents(props) {\n  if (props.drag) {\n    return \"grab\";\n  }\n  for (const key7 in props) {\n    if (pointerEventsSet.has(key7)) {\n      return \"pointer\";\n    }\n  }\n  return void 0;\n}\nvar overflowKey = \"overflow\";\nfunction hasScrollableContent(props) {\n  if (hasScrollingOverflow(props))\n    return true;\n  if (!props.style)\n    return false;\n  if (hasScrollingOverflow(props.style))\n    return true;\n  return false;\n}\nfunction hasScrollingOverflow(props) {\n  if (overflowKey in props && (props[overflowKey] === \"scroll\" || props[overflowKey] === \"auto\"))\n    return true;\n  return false;\n}\nfunction unwrapFrameProps(frameProps) {\n  const {\n    left,\n    top,\n    bottom,\n    right,\n    width,\n    height,\n    center,\n    _constraints,\n    size: size2,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute\n  } = frameProps;\n  const minWidth = resolveMotionValue(frameProps.minWidth);\n  const minHeight = resolveMotionValue(frameProps.minHeight);\n  const maxWidth = resolveMotionValue(frameProps.maxWidth);\n  const maxHeight = resolveMotionValue(frameProps.maxHeight);\n  const constraintProps = {\n    top: resolveMotionValue(top),\n    left: resolveMotionValue(left),\n    bottom: resolveMotionValue(bottom),\n    right: resolveMotionValue(right),\n    width: resolveMotionValue(width),\n    height: resolveMotionValue(height),\n    size: resolveMotionValue(size2),\n    center,\n    _constraints,\n    widthType,\n    heightType,\n    positionFixed,\n    positionAbsolute,\n    minWidth,\n    minHeight,\n    maxWidth,\n    maxHeight\n  };\n  return constraintProps;\n}\nvar defaultFrameRect = { x: 0, y: 0, width: 200, height: 200 };\nfunction useStyleAndRect(props) {\n  var _a, _b;\n  injectComponentCSSRules();\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const { style, _initialStyle, __fromCanvasComponent, size: size2 } = props;\n  const unwrappedProps = unwrapFrameProps(props);\n  const constraintsRect = useConstraints(unwrappedProps);\n  const defaultStyle = {\n    display: \"block\",\n    flexShrink: 0,\n    userSelect: RenderTarget.current() !== \"PREVIEW\" /* preview */ ? \"none\" : void 0\n  };\n  if (!props.__fromCanvasComponent) {\n    defaultStyle.backgroundColor = props.background === void 0 ? \"rgba(0, 170, 255, 0.3)\" : void 0;\n  }\n  const shouldDisablePointerEvents = !hasEvents(props) && !props.__fromCanvasComponent && !hasScrollableContent(props);\n  const safeToEditPointerEvents = props.style ? !(\"pointerEvents\" in props.style) : true;\n  if (shouldDisablePointerEvents && safeToEditPointerEvents) {\n    defaultStyle.pointerEvents = \"none\";\n  }\n  const addTextCentering = React28.Children.count(props.children) > 0 && React28.Children.toArray(props.children).every((child) => {\n    return typeof child === \"string\" || typeof child === \"number\";\n  });\n  const centerTextStyle = addTextCentering && {\n    display: \"flex\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    textAlign: \"center\"\n  };\n  const propsStyle = getStyleForFrameProps(props);\n  if (size2 === void 0 && !__fromCanvasComponent) {\n    if (!hasLeftAndRight(propsStyle)) {\n      defaultStyle.width = defaultFrameRect.width;\n    }\n    if (!hasTopAndBottom(propsStyle)) {\n      defaultStyle.height = defaultFrameRect.height;\n    }\n  }\n  if (unwrappedProps.minWidth !== void 0) {\n    defaultStyle.minWidth = unwrappedProps.minWidth;\n  }\n  if (unwrappedProps.minHeight !== void 0) {\n    defaultStyle.minHeight = unwrappedProps.minHeight;\n  }\n  let constraintsStyle = {};\n  if (constraintsEnabled(unwrappedProps)) {\n    if (constraintsRect && !isAutoSized(props)) {\n      constraintsStyle = {\n        left: constraintsRect.x,\n        top: constraintsRect.y,\n        width: constraintsRect.width,\n        height: constraintsRect.height,\n        right: void 0,\n        bottom: void 0\n      };\n    }\n  }\n  Object.assign(defaultStyle, centerTextStyle, _initialStyle, propsStyle, constraintsStyle, style);\n  Object.assign(defaultStyle, {\n    overflowX: (_a = defaultStyle.overflowX) != null ? _a : defaultStyle.overflow,\n    overflowY: (_b = defaultStyle.overflowY) != null ? _b : defaultStyle.overflow,\n    overflow: void 0\n  });\n  Layer.applyWillChange(props, defaultStyle, true);\n  let resultStyle = defaultStyle;\n  if (!defaultStyle.transform) {\n    resultStyle = { x: 0, y: 0, ...defaultStyle };\n  }\n  const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n  if (props.positionSticky) {\n    if (!onCanvas || inCodeComponent) {\n      resultStyle.position = \"sticky\";\n      resultStyle.willChange = \"transform\";\n      resultStyle.zIndex = 1;\n      resultStyle.top = props.positionStickyTop;\n      resultStyle.right = props.positionStickyRight;\n      resultStyle.bottom = props.positionStickyBottom;\n      resultStyle.left = props.positionStickyLeft;\n    }\n  } else if (onCanvas && (props.positionFixed || props.positionAbsolute)) {\n    resultStyle.position = \"absolute\";\n  }\n  if (\"rotate\" in resultStyle && resultStyle.rotate === void 0) {\n    delete resultStyle.rotate;\n  }\n  return [resultStyle, constraintsRect];\n}\nvar filteredProps = /* @__PURE__ */ new Set([\n  \"width\",\n  \"height\",\n  \"opacity\",\n  \"overflow\",\n  \"radius\",\n  \"background\",\n  \"color\",\n  \"x\",\n  \"y\",\n  \"z\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"scale\",\n  \"scaleX\",\n  \"scaleY\",\n  \"skew\",\n  \"skewX\",\n  \"skewY\",\n  \"originX\",\n  \"originY\",\n  \"originZ\"\n]);\nfunction getMotionProps(props) {\n  const motionProps = {};\n  for (const key7 in props) {\n    const isValid = isValidMotionProp(key7) || isPropValid(key7);\n    if (isValid && !filteredProps.has(key7)) {\n      motionProps[key7] = props[key7];\n    } else if (key7 === \"positionTransition\" || key7 === \"layoutTransition\") {\n      motionProps[\"layout\"] = true;\n      if (typeof props[key7] !== \"boolean\" && !props.transition) {\n        motionProps[\"transition\"] = props[key7];\n      }\n    }\n  }\n  return motionProps;\n}\nfunction hasDataFramerName(props) {\n  return \"data-framer-name\" in props;\n}\nvar VisibleFrame = /* @__PURE__ */ forwardRef(function VisibleFrame2(props, forwardedRef) {\n  var _a, _b;\n  const { name, center, border, _border, __portal } = props;\n  const { props: propsWithOverrides, children } = processOverrideForwarding(props);\n  const motionProps = getMotionProps(propsWithOverrides);\n  const layoutId = useLayoutId(props);\n  const cursor = getCursorFromEvents(props);\n  const fallbackRef = useRef4(null);\n  const ref = forwardedRef != null ? forwardedRef : fallbackRef;\n  const dataProps = {\n    \"data-framer-component-type\": \"Frame\",\n    \"data-framer-cursor\": cursor,\n    \"data-framer-highlight\": cursor === \"pointer\" ? true : void 0,\n    \"data-layoutid\": layoutId\n  };\n  if (!hasDataFramerName(props) && name) {\n    dataProps[\"data-framer-name\"] = name;\n  }\n  const [currentStyle, rect] = useStyleAndRect(propsWithOverrides);\n  const unwrappedProps = unwrapFrameProps(propsWithOverrides);\n  const autoSized = isAutoSized(unwrappedProps);\n  if (center && !(rect && !autoSized && constraintsEnabled(unwrappedProps))) {\n    if (!motionProps.transformTemplate)\n      motionProps.transformTemplate = transformTemplate(center);\n    Object.assign(dataProps, layoutHintDataPropsForCenter(center));\n  } else if (!motionProps.transformTemplate) {\n    motionProps.transformTemplate = void 0;\n  }\n  useMeasureLayout(props, ref);\n  const backgroundImage = backgroundImageFromProps(props);\n  const inCodeComponent = Boolean(useContext5(ComponentContainerContext));\n  const parentSize = resolveParentSize(propsWithOverrides, unwrappedProps, rect, inCodeComponent);\n  const wrappedContent = useProvideParentSize(\n    /* @__PURE__ */ React28.createElement(React28.Fragment, null, backgroundImage ? /* @__PURE__ */ React28.createElement(\n      BackgroundImageComponent,\n      {\n        alt: (_a = props.alt) != null ? _a : \"\",\n        image: backgroundImage,\n        containerSize: rect != null ? rect : void 0,\n        nodeId: props.id && nodeIdFromString(props.id),\n        layoutId\n      }\n    ) : null, children, /* @__PURE__ */ React28.createElement(Border, { ..._border, border, layoutId })),\n    parentSize\n  );\n  const MotionComponent = motion[(_b = props.as) != null ? _b : \"div\"];\n  return /* @__PURE__ */ React28.createElement(\n    MotionComponent,\n    {\n      ...dataProps,\n      ...motionProps,\n      layoutId,\n      style: currentStyle,\n      ref,\n      transformValues\n    },\n    wrappedContent,\n    __portal\n  );\n});\nvar FrameWithMotion = /* @__PURE__ */ forwardRef(function FrameWithMotion2(props, ref) {\n  if (import_process3.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n    safeWindow[\"perf\"].nodeRender();\n  const { visible = true } = props;\n  if (!visible)\n    return null;\n  return /* @__PURE__ */ React28.createElement(VisibleFrame, { ...props, ref });\n});\nfunction resolveParentSize(props, unwrappedProps, rect, inCodeComponent) {\n  if (inCodeComponent) {\n    const parentSize = rect ? { width: rect.width, height: rect.height } : 1 /* Disabled */;\n    return parentSize;\n  }\n  const { _usesDOMRect } = props;\n  const {\n    widthType = 0 /* FixedNumber */,\n    heightType = 0 /* FixedNumber */,\n    width,\n    height\n  } = unwrappedProps;\n  if (rect && !_usesDOMRect) {\n    return rect;\n  }\n  if (widthType === 0 /* FixedNumber */ && heightType === 0 /* FixedNumber */ && typeof width === \"number\" && typeof height === \"number\") {\n    return { width, height };\n  }\n  if (_usesDOMRect || props.positionFixed || props.positionAbsolute) {\n    return 2 /* DisabledForCurrentLevel */;\n  }\n  return 0 /* Unknown */;\n}\nfunction isAutoSized({\n  width,\n  height\n}) {\n  return width === \"auto\" || width === \"min-content\" || height === \"auto\" || height === \"min-content\";\n}\n\n// ../../library/src/components/EmptyState.tsx\nfunction EmptyState({\n  title = \"\",\n  description = \"Click and drag the connector to any frame on the canvas \\u2192\",\n  children,\n  size: size2,\n  hide,\n  insideUserCodeComponent = false,\n  position = \"absolute\"\n}) {\n  const { target } = RenderEnvironment;\n  const childCount = React29.Children.count(children);\n  if (insideUserCodeComponent && childCount === 0) {\n    return /* @__PURE__ */ React29.createElement(FrameWithMotion, { ...size2, \"data-name\": \"placeholder\" });\n  }\n  if (target !== \"CANVAS\" /* canvas */)\n    return null;\n  if (hide)\n    return null;\n  if (childCount !== 0)\n    return null;\n  return /* @__PURE__ */ React29.createElement(\n    FrameWithMotion,\n    {\n      key: \"empty-state\",\n      className: \"framerInternalUI-canvasPlaceholder\",\n      top: 0,\n      left: 0,\n      bottom: 0,\n      right: 0,\n      style: { position, ...size2 }\n    },\n    /* @__PURE__ */ React29.createElement(\n      \"div\",\n      {\n        style: {\n          display: \"flex\",\n          alignItems: \"center\",\n          lineHeight: \"1.4\",\n          height: \"100%\",\n          width: \"100%\"\n        }\n      },\n      /* @__PURE__ */ React29.createElement(\n        \"div\",\n        {\n          style: {\n            display: \"flex\",\n            alignItems: \"center\",\n            justifyContent: \"center\",\n            flexDirection: \"column\",\n            width: \"100%\",\n            // Use a mask to fade out the right edge of the content as it gets cropped.\n            WebkitMaskImage: `linear-gradient(90deg, black, black calc(100% - 12px * ${scaleFactor}), transparent)`\n          }\n        },\n        /* @__PURE__ */ React29.createElement(Title, null, title),\n        /* @__PURE__ */ React29.createElement(Description, null, description)\n      )\n    )\n  );\n}\nvar scaleFactor = \"var(--framerInternalCanvas-canvasPlaceholderContentScaleFactor, 1)\";\nfunction Title({ children }) {\n  return /* @__PURE__ */ React29.createElement(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 600,\n        marginBottom: \"5px\"\n      }\n    },\n    children\n  );\n}\nfunction Description({ children }) {\n  return /* @__PURE__ */ React29.createElement(\n    \"span\",\n    {\n      style: {\n        display: \"flex\",\n        flexDirection: \"column\",\n        textAlign: \"center\",\n        flexGrow: 1,\n        flexShrink: 0,\n        fontWeight: 400,\n        maxWidth: \"200px\"\n      }\n    },\n    children\n  );\n}\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nvar import_hoist_non_react_statics = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React30 from \"react\";\n\n// ../../library/src/render/types/NavigationLink.ts\nvar NavigateTo = /* @__PURE__ */ ((NavigateTo2) => {\n  NavigateTo2[\"Previous\"] = \"@Previous\";\n  return NavigateTo2;\n})(NavigateTo || {});\nvar NavigationTransitionType = /* @__PURE__ */ ((NavigationTransitionType2) => {\n  NavigationTransitionType2[\"push\"] = \"push\";\n  NavigationTransitionType2[\"instant\"] = \"instant\";\n  NavigationTransitionType2[\"fade\"] = \"fade\";\n  NavigationTransitionType2[\"modal\"] = \"modal\";\n  NavigationTransitionType2[\"overlay\"] = \"overlay\";\n  NavigationTransitionType2[\"flip\"] = \"flip\";\n  NavigationTransitionType2[\"magicMotion\"] = \"magicMotion\";\n  return NavigationTransitionType2;\n})(NavigationTransitionType || {});\n\n// ../../library/src/components/NavigationContext.ts\nimport { createContext } from \"react\";\n\n// ../../library/src/components/NavigatorMock.tsx\nvar NavigatorMock = class {\n  constructor() {\n    this.warning = () => {\n      warnOnce(\"The Navigator API is only available inside of Framer: https://www.framer.com/\");\n    };\n    this.goBack = () => this.warning();\n    this.instant = () => this.warning();\n    this.fade = () => this.warning();\n    this.push = () => this.warning();\n    this.modal = () => this.warning();\n    this.overlay = () => this.warning();\n    this.flip = () => this.warning();\n    this.customTransition = () => this.warning();\n    this.magicMotion = () => this.warning();\n  }\n};\nvar navigatorMock = new NavigatorMock();\n\n// ../../library/src/components/NavigationContext.ts\nvar NavigationContext = createContext(navigatorMock);\n\n// ../../library/src/components/hoc/WithNavigator.tsx\nfunction WithNavigator(BaseComponent, navigationTransition, navigationTransitionDirection, NavigationTarget2, navigationTransitionOptions) {\n  const InternalWithNavigator = class extends React30.Component {\n    render() {\n      return /* @__PURE__ */ React30.createElement(NavigationContext.Consumer, null, (navigation) => {\n        const navigate = () => {\n          if (navigationTransition === \"goBack\") {\n            navigation.goBack();\n            return;\n          }\n          if (!NavigationTarget2)\n            return;\n          const component = NavigationTarget2();\n          const appearsFrom = transitionDirectionToSide(navigationTransitionDirection);\n          switch (navigationTransition) {\n            case \"instant\" /* instant */:\n              navigation.instant(component);\n              break;\n            case \"fade\" /* fade */:\n              navigation.fade(component);\n              break;\n            case \"modal\" /* modal */:\n              navigation.modal(component, navigationTransitionOptions);\n              break;\n            case \"push\" /* push */:\n              navigation.push(component, { appearsFrom });\n              break;\n            case \"overlay\" /* overlay */:\n              navigation.overlay(component, {\n                ...navigationTransitionOptions,\n                appearsFrom\n              });\n              break;\n            case \"flip\" /* flip */:\n              navigation.flip(component, { appearsFrom });\n              break;\n            case \"magicMotion\" /* magicMotion */:\n              navigation.magicMotion(component, {});\n              break;\n          }\n        };\n        const { onTap, ...props } = this.props;\n        if (onTap) {\n          props.onTap = (...args) => {\n            onTap.apply(this, args);\n            navigate.apply(this, args);\n          };\n        } else {\n          props.onTap = navigate;\n        }\n        return /* @__PURE__ */ React30.createElement(BaseComponent, { ...props });\n      });\n    }\n  };\n  (0, import_hoist_non_react_statics.default)(InternalWithNavigator, BaseComponent);\n  return InternalWithNavigator;\n}\nfunction transitionDirectionToSide(direction) {\n  switch (direction) {\n    case \"left\":\n      return \"right\";\n    case \"right\":\n      return \"left\";\n    case \"up\":\n      return \"bottom\";\n    case \"down\":\n      return \"top\";\n  }\n}\n\n// ../../library/src/components/AnimateLayout/AnimateSharedLayout.tsx\nvar AnimateSharedLayout = (props) => props.children;\n\n// ../../library/src/render/presentation/Frame/index.tsx\nimport React36, { forwardRef as forwardRef2 } from \"react\";\n\n// ../../library/src/components/hoc/WithEvents.tsx\nvar import_hoist_non_react_statics3 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React32 from \"react\";\n\n// ../../library/src/utils/events.ts\nfunction pointForEvent(event, customTarget = null) {\n  let target;\n  if (customTarget instanceof HTMLElement) {\n    target = customTarget;\n  }\n  if (!target && event.target instanceof HTMLElement) {\n    target = event.target;\n  }\n  if (!target) {\n    return { x: event.pageX, y: event.pageY };\n  }\n  if (\"webkitConvertPointFromPageToNode\" in safeWindow) {\n    let webkitPoint = new safeWindow.WebKitPoint(event.pageX, event.pageY);\n    webkitPoint = safeWindow.webkitConvertPointFromPageToNode(target, webkitPoint);\n    return { x: webkitPoint.x, y: webkitPoint.y };\n  }\n  const rect = target.getBoundingClientRect();\n  const width = parseFloat(target.style.width);\n  const height = parseFloat(target.style.height);\n  const scale = {\n    x: width ? width / rect.width : 1,\n    y: height ? height / rect.height : 1\n  };\n  const point = {\n    x: scale.x * (event.pageX - rect.left - target.clientLeft + target.scrollLeft),\n    y: scale.y * (event.pageY - rect.top - target.clientTop + target.scrollTop)\n  };\n  return point;\n}\n\n// ../../library/src/events/FramerEvent.ts\nvar FramerEvent = class {\n  /**\n   * @internal\n   */\n  constructor(originalEvent, session) {\n    this.originalEvent = originalEvent;\n    this.session = session;\n    /**\n     * @internal\n     */\n    this.time = Date.now();\n    /**\n     * @internal\n     */\n    this.loopTime = MainLoop.time;\n    const customTarget = session && session.startEvent && session.startEvent.target || originalEvent.target;\n    const eventLike = FramerEvent.eventLikeFromOriginalEvent(originalEvent);\n    this.point = pointForEvent(eventLike, customTarget);\n    const deviceTarget = session && session.originElement ? session.originElement : document.body;\n    this.devicePoint = pointForEvent(eventLike, deviceTarget);\n    this.target = originalEvent.target || null;\n    const lastEvent = session && session.lastEvent;\n    if (originalEvent instanceof WheelEvent) {\n      this.delta = { x: originalEvent.deltaX, y: originalEvent.deltaY };\n    } else if (lastEvent && this.devicePoint && lastEvent.devicePoint) {\n      this.delta = Point.subtract(this.devicePoint, lastEvent.devicePoint);\n    } else {\n      this.delta = { x: 0, y: 0 };\n    }\n  }\n  static eventLikeFromOriginalEvent(originalEvent) {\n    if (\"touches\" in originalEvent) {\n      let touches = originalEvent.touches;\n      if (!touches || !touches.length) {\n        if (originalEvent.changedTouches && originalEvent.changedTouches.length) {\n          touches = originalEvent.changedTouches;\n        }\n      }\n      const firstTouch = touches[0];\n      if (!touches || !firstTouch) {\n        return { pageX: 0, pageY: 0, target: null };\n      }\n      const pageX = firstTouch.clientX || firstTouch.screenX || firstTouch.pageX;\n      const pageY = firstTouch.clientY || firstTouch.screenY || firstTouch.pageY;\n      return {\n        pageX,\n        pageY,\n        target: originalEvent.target\n      };\n    }\n    return originalEvent;\n  }\n  /**\n   * @internal\n   */\n  velocity(t) {\n    return this.session ? this.session.velocity(t) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get offset() {\n    return this.session ? this.session.offset(this) : { x: 0, y: 0 };\n  }\n  /**\n   * @internal\n   */\n  get isLeftMouseClick() {\n    if (environment.isTouch()) {\n      return void 0;\n    }\n    if (\"button\" in this.originalEvent && \"buttons\" in this.originalEvent && \"ctrlKey\" in this.originalEvent) {\n      return (this.originalEvent.button === 0 || this.originalEvent.buttons === 1) && !this.originalEvent.ctrlKey;\n    }\n    return false;\n  }\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nvar import_hoist_non_react_statics2 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React31 from \"react\";\n\n// ../../library/src/utils/math.ts\nvar clamp2 = (value, a, b) => {\n  const min = Math.min(a, b);\n  const max = Math.max(a, b);\n  if (value < min) {\n    value = min;\n  }\n  if (value > max) {\n    value = max;\n  }\n  return value;\n};\n\n// ../../library/src/components/hoc/WithDragging.tsx\nvar DraggingContext = React31.createContext({ dragging: false });\nfunction WithDragging(Component15) {\n  const _WithDraggingHOC = class extends React31.Component {\n    constructor(props, defaultProps) {\n      super(props, defaultProps);\n      this.state = {\n        isDragging: false\n      };\n      this.x = Animatable(0);\n      this.y = Animatable(0);\n      this.onChangePosition = (change, transaction) => {\n        if (change.value === change.oldValue) {\n          return;\n        }\n        if (this.props.onMove) {\n          this.props.onMove(this.point, this);\n        }\n      };\n      this.isMoving = false;\n      this.isAnimating = false;\n      this.directionLockAxis = null;\n      this._constraints = null;\n      this.panStart = (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.isMoving = this.isAnimating;\n        this.stopAnimation();\n        this.resetdirectionLock();\n        this.layerStartPoint = this.point;\n        this.correctedLayerStartPoint = this.point;\n        if (this._constraints && this.props.bounce) {\n          this.correctedLayerStartPoint = this.constrainPosition(\n            this.correctedLayerStartPoint,\n            this._constraints,\n            1 / this.props.overdragScale\n          );\n        }\n        this.previousPoint = this.correctedLayerStartPoint;\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n        }\n        if (this.props.onDragSessionStart) {\n          this.props.onDragSessionStart(event, this);\n        }\n      };\n      this.pan = (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          directionLock,\n          overdragScale,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragStart,\n          onDragWillMove,\n          onDragDidMove,\n          onDragSessionMove\n        } = this.props;\n        if (!enabled) {\n          return;\n        }\n        let point = { ...this.previousPoint };\n        point.x += event.delta.x * speedX;\n        point.y += event.delta.y * speedY;\n        this.previousPoint = { ...point };\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, overdragScale);\n        }\n        if (directionLock) {\n          if (this.directionLockAxis === null) {\n            const offset = event.offset;\n            offset.x = offset.x * speedX;\n            offset.y = offset.y * speedY;\n            this.updatedirectionLock(offset);\n            return;\n          } else {\n            if (this.directionLockAxis === \"y\") {\n              point.x = this.layerStartPoint.x;\n            }\n            if (this.directionLockAxis === \"x\") {\n              point.y = this.layerStartPoint.y;\n            }\n          }\n        }\n        if (!this.state.isDragging) {\n          this.setState({ isDragging: true });\n          this.isMoving = true;\n          if (onDragStart) {\n            onDragStart(event, this);\n          }\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n        if (onDragSessionMove) {\n          onDragSessionMove(event, this);\n        }\n      };\n      this.panEnd = (event) => {\n        if (!this.props.enabled) {\n          return;\n        }\n        this.startAnimation(event);\n        const { onDragSessionEnd, onDragEnd } = this.props;\n        if (this.state.isDragging) {\n          if (onDragEnd) {\n            onDragEnd(event, this);\n          }\n        }\n        if (onDragSessionEnd) {\n          onDragSessionEnd(event, this);\n        }\n        if (this.state.isDragging) {\n          this.setState({ isDragging: false });\n        }\n        this.isMoving = this.isAnimating;\n      };\n      // Mouse Wheel\n      this.mouseWheelStart = (event) => {\n        this.correctedLayerStartPoint = this.point;\n        this.previousPoint = this.correctedLayerStartPoint;\n        this.stopAnimation();\n      };\n      this.mouseWheel = (event) => {\n        const {\n          enabled,\n          speedX,\n          speedY,\n          vertical,\n          horizontal,\n          pixelAlign,\n          onDragWillMove,\n          onDragDidMove,\n          mouseWheel\n        } = this.props;\n        if (!mouseWheel || !enabled) {\n          return;\n        }\n        let point = { ...this.point };\n        point.x -= event.delta.x * speedX;\n        point.y -= event.delta.y * speedY;\n        if (this._constraints) {\n          point = this.constrainPosition(point, this._constraints, 0, false);\n        }\n        if (onDragWillMove) {\n          onDragWillMove(event, this);\n        }\n        if (pixelAlign) {\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n        }\n        if (!horizontal && !vertical) {\n          return;\n        }\n        let axis = null;\n        if (horizontal && !vertical) {\n          axis = \"x\";\n        } else if (vertical && !horizontal) {\n          axis = \"y\";\n        }\n        this.setPoint(point, axis);\n        if (onDragDidMove) {\n          onDragDidMove(event, this);\n        }\n      };\n      this.mouseWheelEnd = (event) => {\n      };\n      this.onAnimationStep = (axis, value) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        let delta = 0;\n        if (this.constraints) {\n          if (this.props.bounce) {\n            delta = value - this.getValue(axis);\n          } else {\n            const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n            if (axis === \"x\") {\n              delta = clamp2(value, minX, maxX) - this.getValue(axis);\n            }\n            if (axis === \"y\") {\n              delta = clamp2(value, minY, maxY) - this.getValue(axis);\n            }\n          }\n        } else {\n          delta = value - this.getValue(axis);\n        }\n        const updatePoint = this.point;\n        if (axis === \"x\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        if (axis === \"y\") {\n          updatePoint[axis] = updatePoint[axis] + delta;\n        }\n        this.setPoint(updatePoint, axis);\n      };\n      this.onAnimationStop = (axis) => {\n        if (axis === \"x\" && this.props.horizontal === false) {\n          return;\n        }\n        if (axis === \"y\" && this.props.vertical === false) {\n          return;\n        }\n        if (!this.animation) {\n          return;\n        }\n        if (this.props.pixelAlign) {\n          const point = this.point;\n          point.x = Math.round(point.x);\n          point.y = Math.round(point.y);\n          this.setPoint(point, axis);\n        }\n        if (this.animation.x.isFinished() && this.animation.y.isFinished()) {\n          return this.stopAnimation();\n        }\n      };\n      this.stopAnimation = () => {\n        this.isAnimating = false;\n        this.isMoving = false;\n        if (!this.animation) {\n          return;\n        }\n        this.animation.x.cancel();\n        this.animation.y.cancel();\n        if (this.props.onDragAnimationEnd) {\n          this.props.onDragAnimationEnd(this.animation, this);\n        }\n        this.animation = null;\n      };\n      const x = this.props.left;\n      const y = this.props.top;\n      if (!x) {\n        this.x = Animatable(0);\n      } else if (isAnimatable(x)) {\n        this.x = x;\n      } else {\n        this.x = Animatable(x);\n      }\n      if (!y) {\n        this.y = Animatable(0);\n      } else if (isAnimatable(y)) {\n        this.y = y;\n      } else {\n        this.y = Animatable(y);\n      }\n      this.x.onUpdate(this.onChangePosition);\n      this.y.onUpdate(this.onChangePosition);\n      const constraints = this.props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    UNSAFE_componentWillReceiveProps(props) {\n      if (this.props.left !== props.left && isFiniteNumber(props.left)) {\n        this.x.set(props.left);\n      }\n      if (this.props.top !== props.top && isFiniteNumber(props.top)) {\n        this.y.set(props.top);\n      }\n      const constraints = props.constraints;\n      if (constraints) {\n        this.constraints = constraints;\n      }\n    }\n    get point() {\n      return { x: this.x.get(), y: this.y.get() };\n    }\n    setPoint(point, axis = null) {\n      switch (axis) {\n        case \"x\":\n          this.x.set(point.x);\n          break;\n        case \"y\":\n          this.y.set(point.y);\n          break;\n        case null:\n          this.x.set(point.x);\n          this.y.set(point.y);\n          break;\n      }\n    }\n    getValue(axis) {\n      switch (axis) {\n        case \"x\":\n          return this.x.get();\n        case \"y\":\n          return this.y.get();\n      }\n    }\n    get width() {\n      const width = this.props.width;\n      if (!width) {\n        return 100;\n      }\n      if (isAnimatable(width)) {\n        return width.get();\n      }\n      if (typeof width === \"string\") {\n        return parseFloat(width);\n      }\n      return width;\n    }\n    get height() {\n      const height = this.props.height;\n      if (!height) {\n        return 100;\n      }\n      if (isAnimatable(height)) {\n        return height.get();\n      }\n      if (typeof height === \"string\") {\n        return parseFloat(height);\n      }\n      return height;\n    }\n    get constraints() {\n      return this._constraints;\n    }\n    set constraints(value) {\n      if (value !== null && typeof value === \"object\") {\n        this._constraints = {\n          x: value.x || 0,\n          y: value.y || 0,\n          width: value.width || 0,\n          height: value.height || 0\n        };\n      } else {\n        this._constraints = null;\n      }\n      if (this._constraints) {\n        this.updateAnimationConstraints(this._constraints);\n      }\n    }\n    get constraintsOffset() {\n      if (!this.constraints) {\n        return { x: 0, y: 0 };\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const point = this.point;\n      const constrainedPoint = { x: clamp2(point.x, minX, maxX), y: clamp2(point.y, minY, maxY) };\n      const offset = { x: point.x - constrainedPoint.x, y: point.y - constrainedPoint.y };\n      return offset;\n    }\n    get isBeyondConstraints() {\n      const constraintsOffset = this.constraintsOffset;\n      if (constraintsOffset.x !== 0) {\n        return true;\n      }\n      if (constraintsOffset.y !== 0) {\n        return true;\n      }\n      return false;\n    }\n    clampAndScale(value, min, max, scale, scaleAllowed) {\n      if (!scaleAllowed) {\n        return clamp2(value, min, max);\n      }\n      if (value < min) {\n        value = min + (value - min) * scale;\n      }\n      if (value > max) {\n        value = max + (value - max) * scale;\n      }\n      return value;\n    }\n    calculateConstraints(bounds) {\n      if (!bounds) {\n        return { minX: Infinity, maxX: Infinity, minY: Infinity, maxY: Infinity };\n      }\n      if (bounds.width < this.width) {\n        bounds.width = this.width;\n      }\n      if (bounds.height < this.height) {\n        bounds.height = this.height;\n      }\n      const constraints = {\n        minX: Rect.minX(bounds),\n        maxX: Rect.maxX(bounds),\n        minY: Rect.minY(bounds),\n        maxY: Rect.maxY(bounds)\n      };\n      constraints.maxX -= this.width;\n      constraints.maxY -= this.height;\n      return constraints;\n    }\n    constrainPosition(proposedPoint, bounds, scale, overdrag = this.props.overdrag) {\n      const { maxX, maxY, minX, minY } = this.calculateConstraints(this._constraints);\n      const point = {\n        x: this.clampAndScale(proposedPoint.x, minX, maxX, scale, overdrag),\n        y: this.clampAndScale(proposedPoint.y, minY, maxY, scale, overdrag)\n      };\n      if (this.props.speedX === 0 || this.props.horizontal === false) {\n        point.x = proposedPoint.x;\n      }\n      if (this.props.speedY === 0 || this.props.vertical === false) {\n        point.y = proposedPoint.y;\n      }\n      return point;\n    }\n    /* private */\n    updatedirectionLock(correctedDelta) {\n      if (Math.abs(correctedDelta.y) > this.props.directionLockThreshold.y) {\n        this.directionLockAxis = \"y\";\n      } else if (Math.abs(correctedDelta.x) > this.props.directionLockThreshold.x) {\n        this.directionLockAxis = \"x\";\n      }\n      if (this.directionLockAxis !== null) {\n        if (this.props.onDragDirectionLockStart) {\n          this.props.onDragDirectionLockStart(this.directionLockAxis, this);\n        }\n      }\n    }\n    resetdirectionLock() {\n      this.directionLockAxis = null;\n    }\n    // Inertial scroll animation\n    setupAnimation() {\n      if (this.animation) {\n        return;\n      }\n      this.animation = { x: this.setupAnimationForAxis(\"x\"), y: this.setupAnimationForAxis(\"y\") };\n      this.updateAnimationConstraints(this._constraints);\n    }\n    setupAnimationForAxis(axis) {\n      const properties = {};\n      properties[axis] = true;\n      const animator = new InertialScrollAnimator({\n        momentum: this.props.momentumOptions,\n        bounce: this.props.bounceOptions\n      });\n      const updateCallback = (value) => {\n        this.onAnimationStep(axis, value);\n      };\n      const doneCallback = () => {\n        this.onAnimationStop(axis);\n      };\n      return new MainLoopAnimationDriver(animator, updateCallback, doneCallback);\n    }\n    updateAnimationConstraints(constraints) {\n      if (!this.animation) {\n        return;\n      }\n      if (constraints) {\n        const { minX, minY, maxX, maxY } = this.calculateConstraints(constraints);\n        this.animation.x.animator.setLimits(minX, maxX);\n        this.animation.y.animator.setLimits(minY, maxY);\n      } else {\n        this.animation.x.animator.setLimits(-Infinity, Infinity);\n        this.animation.y.animator.setLimits(-Infinity, Infinity);\n      }\n    }\n    startAnimation(event) {\n      const { momentum, bounce, momentumVelocityMultiplier, speedX, speedY, overdrag, onDragAnimationStart } = this.props;\n      if (!(momentum || bounce)) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && momentum === false) {\n        return;\n      }\n      if (this.isBeyondConstraints === false && this.state.isDragging === false) {\n        return;\n      }\n      const { minX, minY, maxX, maxY } = this.calculateConstraints(this._constraints);\n      const startAnimationX = overdrag === true || this.point.x > minX && this.point.x < maxX;\n      const startAnimationY = overdrag === true || this.point.y > minY && this.point.y < maxY;\n      if (startAnimationX === startAnimationY && startAnimationY === false) {\n        return;\n      }\n      const velocity = event.velocity(0.1);\n      let velocityX = velocity.x * momentumVelocityMultiplier * speedX;\n      let velocityY = velocity.y * momentumVelocityMultiplier * speedY;\n      if (this.directionLockAxis === \"x\") {\n        velocityY = 0;\n      }\n      if (this.directionLockAxis === \"y\") {\n        velocityX = 0;\n      }\n      this.setupAnimation();\n      this.isAnimating = true;\n      this.isMoving = true;\n      if (!this.animation) {\n        return;\n      }\n      this.animation.x.animator.setState({ x: this.point.x, v: velocityX });\n      if (startAnimationX) {\n        this.animation.x.play();\n      }\n      this.animation.y.animator.setState({ x: this.point.y, v: velocityY });\n      if (startAnimationY) {\n        this.animation.y.play();\n      }\n      if (onDragAnimationStart) {\n        onDragAnimationStart(this.animation, this);\n      }\n    }\n    wrapHandler(ownHandler, originalHandler) {\n      if (!originalHandler) {\n        return ownHandler;\n      }\n      return (event) => {\n        ownHandler(event);\n        originalHandler(event);\n      };\n    }\n    render() {\n      const { onPanStart, onPan, onPanEnd, onMouseWheelStart, onMouseWheel, onMouseWheelEnd, ...attributes } = this.props;\n      const originalProps = { ...attributes };\n      Object.keys(_WithDraggingHOC.draggingDefaultProps).forEach((key7) => {\n        delete originalProps[key7];\n      });\n      originalProps.onPanStart = this.wrapHandler(this.panStart, onPanStart);\n      originalProps.onPan = this.wrapHandler(this.pan, onPan);\n      originalProps.onPanEnd = this.wrapHandler(this.panEnd, onPanEnd);\n      originalProps.onMouseWheelStart = this.wrapHandler(this.mouseWheelStart, onMouseWheelStart);\n      originalProps.onMouseWheel = this.wrapHandler(this.mouseWheel, onMouseWheel);\n      originalProps.onMouseWheelEnd = this.wrapHandler(this.mouseWheelEnd, onMouseWheelEnd);\n      originalProps.left = this.x;\n      originalProps.top = this.y;\n      return /* @__PURE__ */ React31.createElement(DraggingContext.Provider, { value: { dragging: this.state.isDragging } }, /* @__PURE__ */ React31.createElement(Component15, { ...originalProps }));\n    }\n  };\n  let WithDraggingHOC = _WithDraggingHOC;\n  WithDraggingHOC.draggingDefaultProps = {\n    momentum: true,\n    momentumOptions: { friction: 2.1, tolerance: 1 },\n    momentumVelocityMultiplier: 800,\n    speedX: 1,\n    speedY: 1,\n    bounce: true,\n    bounceOptions: { friction: 40, tension: 200, tolerance: 1 },\n    directionLock: false,\n    directionLockThreshold: { x: 10, y: 10 },\n    overdrag: true,\n    overdragScale: 0.5,\n    pixelAlign: true,\n    velocityTimeout: 100,\n    velocityScale: 890,\n    horizontal: true,\n    vertical: true,\n    enabled: true,\n    constraints: {},\n    mouseWheel: false\n  };\n  WithDraggingHOC.defaultProps = Object.assign(\n    {},\n    Component15.defaultProps,\n    _WithDraggingHOC.draggingDefaultProps\n  );\n  const withDragging = WithDraggingHOC;\n  (0, import_hoist_non_react_statics2.default)(withDragging, Component15);\n  return withDragging;\n}\n\n// ../../library/src/components/hoc/WithEvents.tsx\nvar hoverProps = {\n  onMouseEnter: \"mouseenter\",\n  onMouseLeave: \"mouseleave\"\n};\nvar hoverEventKeys = Object.keys(hoverProps);\nvar eventHandlerMapping = {\n  panstart: [\"onPanStart\"],\n  pan: [\"onPan\"],\n  panend: [\"onPanEnd\"],\n  tapstart: [\"onTapStart\", \"onMouseDown\"],\n  tap: [\"onTap\", \"onClick\"],\n  tapend: [\"onTapEnd\", \"onMouseUp\"],\n  mousewheelstart: [\"onMouseWheelStart\"],\n  mousewheel: [\"onMouseWheel\"],\n  mousewheelend: [\"onMouseWheelEnd\"]\n};\nvar tapEventKeys = /* @__PURE__ */ new Set([\"tapstart\", \"tap\", \"tapend\"]);\nfunction WithEvents(BaseComponent) {\n  var _a;\n  const withEvents = (_a = class extends React32.Component {\n    constructor() {\n      super(...arguments);\n      // This local variable is used to track if we should ignore a tap after a drag\n      // It's not in a state because we want to change it from the render function (so not cause a render)\n      this.shouldCancelTap = false;\n      this.activeEventListeners = /* @__PURE__ */ new Map();\n      this.hasFramerEventListener = false;\n      this.component = React32.createRef();\n    }\n    get element() {\n      return this.component.current && this.component.current.element;\n    }\n    componentDidMount() {\n      this.addEventListeners();\n    }\n    componentDidUpdate(prevProps) {\n      this.addEventListeners(prevProps);\n    }\n    componentWillUnmount() {\n      this.removeEventListeners();\n    }\n    addEventListeners(prevProps) {\n      if (this.element && !this.hasFramerEventListener) {\n        this.element.addEventListener(\"FramerEvent\", ({ detail }) => {\n          const type = detail.type;\n          const framerEvent = detail.event;\n          this.handleEvent(type, framerEvent);\n        });\n        hoverEventKeys.forEach((eventName) => this.addHoverEvent(eventName));\n        this.hasFramerEventListener = true;\n      } else if (this.element && prevProps) {\n        hoverEventKeys.forEach((eventName) => this.checkHoverEvent(eventName, prevProps));\n      } else if (!this.element) {\n        this.hasFramerEventListener = false;\n      }\n    }\n    removeEventListeners() {\n      hoverEventKeys.forEach((eventName) => this.removeHoverEvent(eventName));\n    }\n    addHoverEvent(eventName) {\n      const originalEventListener = this.props[eventName];\n      if (this.element && originalEventListener) {\n        const eventListener = (e) => {\n          const framerEvent = new FramerEvent(e);\n          originalEventListener(framerEvent);\n        };\n        this.activeEventListeners.set(eventName, eventListener);\n        const domEventName = hoverProps[eventName];\n        this.element.addEventListener(domEventName, eventListener);\n      }\n    }\n    removeHoverEvent(eventName) {\n      const eventListener = this.activeEventListeners.get(eventName);\n      if (this.element && eventListener) {\n        const domEventName = hoverProps[eventName];\n        this.element.removeEventListener(domEventName, eventListener);\n        this.activeEventListeners.delete(eventName);\n      }\n    }\n    checkHoverEvent(eventName, prevProps) {\n      if (prevProps[eventName] !== this.props[eventName]) {\n        this.removeHoverEvent(eventName);\n        this.addHoverEvent(eventName);\n      }\n    }\n    handleEvent(type, framerEvent) {\n      const eventListenerKeys = eventHandlerMapping[type];\n      if (!eventListenerKeys)\n        return;\n      eventListenerKeys.forEach((eventKey) => {\n        const eventListener = this.props[eventKey];\n        const cancelEvent = this.shouldCancelTap && tapEventKeys.has(eventKey);\n        if (eventListener && !cancelEvent) {\n          eventListener(framerEvent);\n        }\n      });\n    }\n    render() {\n      return /* @__PURE__ */ React32.createElement(DraggingContext.Consumer, null, (value) => {\n        this.shouldCancelTap = value.dragging;\n        return /* @__PURE__ */ React32.createElement(BaseComponent, { ...this.props, ref: this.component });\n      });\n    }\n  }, _a.defaultProps = Object.assign({}, BaseComponent.defaultProps), _a);\n  (0, import_hoist_non_react_statics3.default)(withEvents, BaseComponent);\n  return withEvents;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nvar import_process4 = __toESM(require_browser(), 1);\nimport React35 from \"react\";\n\n// ../../library/src/data/ObservableObject.ts\nvar hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar ObservableObject = /* @__PURE__ */ (() => {\n  function ObservableObject2(initial = {}, makeAnimatables = false, observeAnimatables = true) {\n    const unproxiedState = {};\n    unproxiedState[$private] = {\n      makeAnimatables,\n      observeAnimatables,\n      observers: new Observers(),\n      reset() {\n        for (const key7 in state) {\n          if (hasOwnProperty(state, key7)) {\n            state[key7] = hasOwnProperty(initial, key7) ? initial[key7] : void 0;\n          }\n        }\n      },\n      transactions: /* @__PURE__ */ new Set()\n    };\n    const state = new Proxy(unproxiedState, sharedProxyHandler);\n    Object.assign(state, initial);\n    return state;\n  }\n  ObservableObject2.resetObject = (target) => {\n    return target[$private].reset();\n  };\n  ObservableObject2.addObserver = (target, observer) => {\n    return target[$private].observers.add(observer);\n  };\n  return ObservableObject2;\n})();\nvar ObservableObjectProxyHandler = class {\n  constructor() {\n    this.set = (target, key7, value, receiver) => {\n      if (key7 === $private) {\n        return false;\n      }\n      const privateObject = target[$private];\n      let animatable;\n      let rawValue;\n      if (isAnimatable(value)) {\n        animatable = value;\n        rawValue = animatable.get();\n      } else {\n        rawValue = value;\n      }\n      if (privateObject.makeAnimatables && typeof value !== \"function\" && typeof value !== \"object\" && !animatable) {\n        animatable = Animatable(value);\n      }\n      if (privateObject.observeAnimatables && animatable) {\n        const transactions = privateObject.transactions;\n        animatable.onUpdate({\n          update: (change, transaction) => {\n            if (transaction) {\n              transactions.add(transaction);\n            }\n            privateObject.observers.notify({ value: receiver }, transaction);\n          },\n          finish: (transaction) => {\n            if (transactions.delete(transaction)) {\n              privateObject.observers.finishTransaction(transaction);\n            }\n          }\n        });\n      }\n      let result = false;\n      let changed = true;\n      if (target[key7] !== void 0) {\n        if (isAnimatable(target[key7])) {\n          changed = target[key7].get() !== rawValue;\n          target[key7].set(rawValue);\n        } else {\n          changed = target[key7] !== rawValue;\n          target[key7] = rawValue;\n        }\n        const rawValueIsObject = rawValue !== null && typeof rawValue === \"object\";\n        if (Array.isArray(rawValue) || rawValueIsObject)\n          changed = true;\n        result = true;\n      } else {\n        if (animatable) {\n          value = animatable;\n        }\n        result = Reflect.set(target, key7, value);\n      }\n      if (changed) {\n        privateObject.observers.notify({ value: receiver });\n      }\n      return result;\n    };\n    this.get = (target, key7, receiver) => {\n      if (key7 === $private) {\n        return target[key7];\n      }\n      const value = Reflect.get(target, key7, receiver);\n      return typeof value === \"function\" ? value.bind(receiver) : value;\n    };\n  }\n  deleteProperty(target, key7) {\n    const result = Reflect.deleteProperty(target, key7);\n    target[$private].observers.notify({ value: target });\n    return result;\n  }\n  ownKeys(target) {\n    const keys3 = Reflect.ownKeys(target);\n    const privateIndex = keys3.indexOf($private);\n    if (privateIndex !== -1) {\n      keys3.splice(privateIndex, 1);\n    }\n    return keys3;\n  }\n  getOwnPropertyDescriptor(target, key7) {\n    if (key7 === $private) {\n      return void 0;\n    }\n    return Reflect.getOwnPropertyDescriptor(target, key7);\n  }\n};\nvar sharedProxyHandler = /* @__PURE__ */ new ObservableObjectProxyHandler();\nvar $private = /* @__PURE__ */ Symbol(\"private\");\n\n// ../../library/src/render/traits/Blending.ts\nfunction collectBlendingFromProps(node, style) {\n  if (!node.blendingMode || node.blendingMode === \"normal\")\n    return;\n  style.mixBlendMode = node.blendingMode;\n}\n\n// ../../library/src/render/traits/Opacity.ts\nvar key3 = \"opacity\";\nfunction withOpacity(target) {\n  return key3 in target;\n}\nfunction collectOpacityFromProps(props, style) {\n  if (!withOpacity(props))\n    return;\n  const opacity = Animatable.getNumber(props.opacity);\n  if (opacity === 1)\n    return;\n  style.opacity = opacity;\n}\n\n// ../../library/src/render/traits/Overflow.ts\nfunction collectOverflowFromProps(props, style) {\n  if (props.overflow) {\n    style.overflow = props.overflow;\n  }\n}\n\n// ../../library/src/render/traits/Radius.ts\nvar key4 = \"radius\";\nfunction hasRadius(props) {\n  return key4 in props;\n}\nfunction getRadiusValue(value) {\n  let num = Number(value);\n  if (typeof value === \"string\" && isNaN(num)) {\n    return value;\n  } else if (isAnimatable(value)) {\n    num = Animatable.getNumber(value);\n  }\n  return num ? `${num}px` : \"0\";\n}\nfunction hasRadiusValue(value) {\n  return value && value !== \"0\";\n}\nfunction collectRadiusFromProps(props, style) {\n  if (!hasRadius(props))\n    return;\n  const { radius } = props;\n  if (typeof radius === \"string\" || isAnimatable(radius) || isFiniteNumber(radius)) {\n    const radiusValue = getRadiusValue(radius);\n    if (hasRadiusValue(radiusValue)) {\n      style.borderTopLeftRadius = style.borderTopRightRadius = style.borderBottomRightRadius = style.borderBottomLeftRadius = radiusValue;\n    }\n  } else if (radius) {\n    const topLeft = getRadiusValue(radius.topLeft);\n    const topRight = getRadiusValue(radius.topRight);\n    const bottomRight = getRadiusValue(radius.bottomRight);\n    const bottomLeft = getRadiusValue(radius.bottomLeft);\n    if (hasRadiusValue(topLeft) || hasRadiusValue(topRight) || hasRadiusValue(bottomRight) || hasRadiusValue(bottomLeft)) {\n      style.borderTopLeftRadius = topLeft;\n      style.borderTopRightRadius = topRight;\n      style.borderBottomRightRadius = bottomRight;\n      style.borderBottomLeftRadius = bottomLeft;\n    }\n  }\n}\n\n// ../../library/src/render/traits/TextColor.ts\nfunction collectTextColorFromProps(props, style) {\n  const { color: color2 } = props;\n  if (typeof color2 === \"string\") {\n    style.color = color2;\n  } else if (Color.isColorObject(color2)) {\n    style.color = color2.initialValue || Color.toRgbString(color2);\n  }\n}\n\n// ../../library/src/render/style/shadow.tsx\nimport React34 from \"react\";\n\n// ../../library/src/render/presentation/CustomProperties.tsx\nimport React33, { PureComponent } from \"react\";\nvar VariableRegex = /var\\(([^),]+)/;\nvar CustomPropertiesContext = /* @__PURE__ */ React33.createContext(() => null);\nvar CustomProperties = class extends PureComponent {\n  constructor() {\n    super(...arguments);\n    this.lookup = (variable) => {\n      const match = VariableRegex.exec(variable);\n      const customProperty = (match == null ? void 0 : match[1]) ? match[1].trim() : \"\";\n      return this.props.customProperties[customProperty] || null;\n    };\n  }\n  render() {\n    const { children, customProperties } = this.props;\n    return /* @__PURE__ */ React33.createElement(CustomPropertiesContext.Provider, { value: this.lookup }, /* @__PURE__ */ React33.createElement(\"div\", { style: customProperties }, children));\n  }\n};\n\n// ../../library/src/render/types/Shadow.ts\nvar shadowKeys = [\"color\", \"x\", \"y\", \"blur\"];\nvar Shadow = {\n  is: (shadow) => {\n    return shadow && shadowKeys.every((key7) => key7 in shadow);\n  }\n};\nvar boxShadowKeys = [\"x\", \"y\", \"color\", \"inset\", \"blur\", \"spread\"];\nvar BoxShadow = {\n  is: (shadow) => {\n    return shadow && boxShadowKeys.every((key7) => key7 in shadow);\n  },\n  toCSS: (shadow) => {\n    const inset = shadow.inset ? \"inset \" : \"\";\n    return `${inset}${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.spread}px ${shadow.color}`;\n  }\n};\n\n// ../../library/src/render/style/shadow.tsx\nfunction shadowsAsFilter(shadows) {\n  const filters = [];\n  if (shadows && shadows.length) {\n    const dropShadows = shadows.map((shadowItem) => {\n      return `drop-shadow(${shadowItem.x}px ${shadowItem.y}px ${shadowItem.blur}px ${shadowItem.color})`;\n    });\n    filters.push(...dropShadows);\n  }\n  return filters;\n}\nfunction collectTextShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const textShadow = props.shadows.map((shadow) => {\n    return `${shadow.x}px ${shadow.y}px ${shadow.blur}px ${shadow.color}`;\n  }).join(\", \");\n  if (!textShadow)\n    return;\n  style.textShadow = textShadow;\n}\nfunction collectBoxShadowsForProps(props, style) {\n  if (!props.shadows || props.shadows.length === 0)\n    return;\n  const boxShadow = props.shadows.map((shadowItem) => BoxShadow.toCSS(shadowItem)).join(\", \");\n  if (!boxShadow)\n    return;\n  style.boxShadow = boxShadow;\n}\nfunction shadowForShape(boxShadows, rect, shapeId, fillAlpha, strokeAlpha, strokeWidth, strokeClipId, svgStrokeAttributes) {\n  const definition = [];\n  let outsetElement = null;\n  let insetElement = null;\n  const needsStrokeClip = false;\n  const shadows = [];\n  const insetShadows = [];\n  const boxShadowsCount = boxShadows.length;\n  const svgShadowClass = \"svg-shadow\";\n  const svgShadowProps = RenderTarget.current() === \"CANVAS\" /* canvas */ ? { className: svgShadowClass } : {};\n  for (const shadow of boxShadows) {\n    shadow.inset ? insetShadows.push(shadow) : shadows.push(shadow);\n  }\n  if (shadows.length > 0) {\n    shadows.reverse();\n    const outsideShadowId = shapeId.add(\"_shadow_out\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowRects = [normalizedFrame];\n    for (const shadow of shadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowRects.push(shadowFrame);\n    }\n    let maxBlur = 0;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = shadows.length; i < il; i++) {\n      const shadow = shadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = outerShadowElements(shapeId, shadow, i);\n      maxBlur = Math.max(maxBlur, shadow.blur);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    let expandStrokeWidth = strokeWidth;\n    if (!isFiniteNumber(expandStrokeWidth))\n      expandStrokeWidth = 0;\n    let miter = svgStrokeAttributes.strokeMiterlimit;\n    if (!isFiniteNumber(miter))\n      miter = 4;\n    let shadowRect = Rect.merge(...shadowRects);\n    shadowRect = Rect.inflate(shadowRect, (expandStrokeWidth * miter / 2 + maxBlur) * 1.1);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    definition.push(\n      /* @__PURE__ */ React34.createElement(\n        \"filter\",\n        {\n          key: outsideShadowId.id,\n          id: outsideShadowId.id,\n          x: `${filterX.toFixed(1)}%`,\n          y: `${filterY.toFixed(1)}%`,\n          width: `${filterWidth.toFixed(1)}%`,\n          height: `${filterHeight.toFixed(1)}%`,\n          filterUnits: \"objectBoundingBox\",\n          ...svgShadowProps\n        },\n        filterElements,\n        shadows.length > 1 ? /* @__PURE__ */ React34.createElement(\"feMerge\", null, mergeElements) : null\n      )\n    );\n    outsetElement = /* @__PURE__ */ React34.createElement(\"g\", { filter: outsideShadowId.urlLink, ...svgShadowProps }, /* @__PURE__ */ React34.createElement(\n      \"use\",\n      {\n        ...svgStrokeAttributes,\n        fill: \"black\",\n        fillOpacity: fillAlpha <= 0 ? 0 : 1,\n        stroke: \"black\",\n        strokeOpacity: strokeAlpha <= 0 ? 0 : 1,\n        strokeWidth: strokeAlpha > 0 ? strokeWidth : 0,\n        xlinkHref: shapeId.link,\n        clipPath: strokeClipId.urlLink\n      }\n    ));\n  }\n  if (insetShadows.length) {\n    insetShadows.reverse();\n    const insideShadowId = shapeId.add(\"_shadow_inside\");\n    const normalizedFrame = Rect.atOrigin(rect);\n    const shadowFrames = [normalizedFrame];\n    for (const shadow of insetShadows) {\n      const shadowFrame = localShadowFrame(shadow, normalizedFrame, true);\n      if (shadowFrame === null) {\n        continue;\n      }\n      shadowFrames.push(shadowFrame);\n    }\n    const shadowRect = Rect.merge(...shadowFrames);\n    const width = rect.width + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const height = rect.height + (strokeWidth ? strokeWidth / 2 : 0.1);\n    const filterX = shadowRect.x / width * 100;\n    const filterY = shadowRect.y / height * 100;\n    const filterWidth = shadowRect.width / width * 100;\n    const filterHeight = shadowRect.height / height * 100;\n    const filterElements = [];\n    const mergeElements = [];\n    for (let i = 0, il = insetShadows.length; i < il; i++) {\n      const shadow = insetShadows[i];\n      if (!shadow)\n        continue;\n      const shadowElements = innerShadowElements(shapeId, shadow, i);\n      filterElements.push(shadowElements.filterElements);\n      mergeElements.push(shadowElements.mergeElement);\n    }\n    definition.push(\n      /* @__PURE__ */ React34.createElement(\n        \"filter\",\n        {\n          key: insideShadowId.id,\n          id: insideShadowId.id,\n          x: `${filterX.toFixed(1)}%`,\n          y: `${filterY.toFixed(1)}%`,\n          width: `${filterWidth.toFixed(1)}%`,\n          height: `${filterHeight.toFixed(1)}%`,\n          filterUnits: \"objectBoundingBox\",\n          ...svgShadowProps\n        },\n        filterElements,\n        insetShadows.length > 1 ? /* @__PURE__ */ React34.createElement(\"feMerge\", null, mergeElements) : null\n      )\n    );\n    let clipPath;\n    if (needsStrokeClip) {\n      clipPath = strokeClipId.urlLink;\n    }\n    insetElement = /* @__PURE__ */ React34.createElement(\n      \"use\",\n      {\n        fill: \"black\",\n        fillOpacity: \"1\",\n        filter: insideShadowId.urlLink,\n        xlinkHref: shapeId.link,\n        clipPath,\n        ...svgShadowProps\n      }\n    );\n  }\n  return { definition, outsetElement, insetElement, needsStrokeClip };\n}\nfunction outerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_outer_shadow\" + index);\n  const offsetResultId = shadowKey.add(\"offset\").id;\n  const blurResultId = shadowKey.add(\"blur\").id;\n  const matrixResultId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ React34.createElement(\n    OuterShadowFilterElements,\n    {\n      key: shadowKey.id + \"-filters\",\n      shadow,\n      blurId: blurResultId,\n      offsetId: offsetResultId,\n      matrixId: matrixResultId\n    }\n  );\n  const mergeElement = /* @__PURE__ */ React34.createElement(\"feMergeNode\", { key: shadowKey.id + \"-merge\", in: matrixResultId });\n  return { filterElements, mergeElement };\n}\nvar OuterShadowFilterElements = (props) => {\n  const lookup = React34.useContext(CustomPropertiesContext);\n  const { shadow, blurId, offsetId, matrixId } = props;\n  let color2 = shadow.color;\n  const result = lookup(color2);\n  if (result) {\n    color2 = result;\n  }\n  const rgb = ConvertColor.toRgb(color2);\n  const r = roundedNumberString(rgb.r / 255, 3);\n  const g = roundedNumberString(rgb.g / 255, 3);\n  const b = roundedNumberString(rgb.b / 255, 3);\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: \"SourceAlpha\", result: offsetId }), /* @__PURE__ */ React34.createElement(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: offsetId, result: blurId }), /* @__PURE__ */ React34.createElement(\n    \"feColorMatrix\",\n    {\n      colorInterpolationFilters: \"sRGB\",\n      values: matrixValues,\n      type: \"matrix\",\n      in: blurId,\n      result: matrixId\n    }\n  ));\n};\nfunction innerShadowElements(shapeID, shadow, index) {\n  const shadowKey = shapeID.add(\"_inside_shadow\" + index);\n  const blurId = shadowKey.add(\"blur\").id;\n  const offsetId = shadowKey.add(\"offset\").id;\n  const compositeId = shadowKey.add(\"composite\").id;\n  const matrixId = shadowKey.add(\"matrix\").id;\n  const filterElements = /* @__PURE__ */ React34.createElement(\n    InnerShadowFilterElements,\n    {\n      key: shadowKey.id + \"-filters\",\n      shadow,\n      blurId,\n      offsetId,\n      compositeId,\n      matrixId\n    }\n  );\n  const mergeElement = /* @__PURE__ */ React34.createElement(\"feMergeNode\", { key: shadowKey.id + \"-merge\", in: matrixId });\n  return { filterElements, mergeElement };\n}\nvar InnerShadowFilterElements = (props) => {\n  const lookup = React34.useContext(CustomPropertiesContext);\n  const { shadow, blurId, offsetId, compositeId, matrixId } = props;\n  let color2 = shadow.color;\n  const result = lookup(color2);\n  if (result) {\n    color2 = result;\n  }\n  const rgb = ConvertColor.toRgb(color2);\n  const r = rgb.r / 255;\n  const g = rgb.g / 255;\n  const b = rgb.b / 255;\n  const matrixValues = `0 0 0 0 ${r}   0 0 0 0 ${g}   0 0 0 0 ${b}  0 0 0 ${rgb.a} 0`;\n  return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(\"feGaussianBlur\", { stdDeviation: shadow.blur / 2, in: \"SourceAlpha\", result: blurId }), /* @__PURE__ */ React34.createElement(\"feOffset\", { dx: shadow.x, dy: shadow.y, in: blurId, result: offsetId }), /* @__PURE__ */ React34.createElement(\"feComposite\", { in: offsetId, in2: \"SourceAlpha\", operator: \"arithmetic\", k2: \"-1\", k3: \"1\", result: compositeId }), /* @__PURE__ */ React34.createElement(\n    \"feColorMatrix\",\n    {\n      colorInterpolationFilters: \"sRGB\",\n      values: matrixValues,\n      type: \"matrix\",\n      in: compositeId,\n      result: matrixId\n    }\n  ));\n};\nfunction calcMaxRealisticShadowBlur(distance2, focus) {\n  return interpolate([0, 0.5, 1], [distance2 * 5, distance2, 0])(focus);\n}\nvar maxSpread = 5;\nfunction calcRealisticShadowSpread(diffusion) {\n  return mix(-maxSpread, 0, diffusion);\n}\nfunction localShadowFrame(shadow, frame2, isSVG2 = false) {\n  if (!isSVG2 && shadow[\"inset\"])\n    return null;\n  let growth = shadow.blur;\n  let minX;\n  let maxX;\n  let minY;\n  let maxY;\n  if (isSVG2) {\n    minX = -Math.abs(shadow.x) - growth;\n    maxX = Math.abs(shadow.x) + frame2.width + growth;\n    minY = -Math.abs(shadow.y) - growth;\n    maxY = Math.abs(shadow.y) + frame2.height + growth;\n  } else if (BoxShadow.is(shadow) && shadow.type === \"realistic\") {\n    growth = calcMaxRealisticShadowBlur(distance(shadow.x, shadow.y), shadow.focus) + calcRealisticShadowSpread(shadow.diffusion);\n    if (shadow.x >= 0) {\n      minX = 0 - growth;\n      maxX = shadow.x + frame2.width + growth;\n    } else {\n      minX = shadow.x - growth;\n      maxX = frame2.width + growth;\n    }\n    if (shadow.y >= 0) {\n      minY = 0 - growth;\n      maxY = shadow.y + frame2.height + growth;\n    } else {\n      minY = shadow.y - growth;\n      maxY = frame2.height + growth;\n    }\n  } else {\n    growth += shadow.spread;\n    minX = shadow.x - growth;\n    maxX = shadow.x + frame2.width + growth;\n    minY = shadow.y - growth;\n    maxY = shadow.y + frame2.height + growth;\n  }\n  if (maxX <= minX || maxY <= minY)\n    return null;\n  return { x: minX, y: minY, width: maxX - minX, height: maxY - minY };\n}\n\n// ../../library/src/render/utils/filtersForNode.ts\nfunction collectLayerFilters(props, style) {\n  const filters = [];\n  if (isFiniteNumber(props.brightness)) {\n    filters.push(`brightness(${props.brightness / 100})`);\n  }\n  if (isFiniteNumber(props.contrast)) {\n    filters.push(`contrast(${props.contrast / 100})`);\n  }\n  if (isFiniteNumber(props.grayscale)) {\n    filters.push(`grayscale(${props.grayscale / 100})`);\n  }\n  if (isFiniteNumber(props.hueRotate)) {\n    filters.push(`hue-rotate(${props.hueRotate}deg)`);\n  }\n  if (isFiniteNumber(props.invert)) {\n    filters.push(`invert(${props.invert / 100})`);\n  }\n  if (isFiniteNumber(props.saturate)) {\n    filters.push(`saturate(${props.saturate / 100})`);\n  }\n  if (isFiniteNumber(props.sepia)) {\n    filters.push(`sepia(${props.sepia / 100})`);\n  }\n  if (isFiniteNumber(props.blur)) {\n    filters.push(`blur(${props.blur}px)`);\n  }\n  if (props.dropShadows) {\n    filters.push(...shadowsAsFilter(props.dropShadows));\n  }\n  if (filters.length === 0)\n    return;\n  style.filter = style.WebkitFilter = filters.join(\" \");\n}\nfunction collectBackgroundFilters(props, style) {\n  if (isFiniteNumber(props.backgroundBlur)) {\n    style.backdropFilter = style.WebkitBackdropFilter = `blur(${props.backgroundBlur}px)`;\n  }\n}\nfunction collectFiltersFromProps(props, style) {\n  collectBackgroundFilters(props, style);\n  collectLayerFilters(props, style);\n}\n\n// ../../library/src/render/style/collectVisualStyleFromProps.ts\nfunction collectVisualStyleFromProps(props, style, isTextNode = false) {\n  collectBackgroundFromProps(props, style);\n  collectRadiusFromProps(props, style);\n  collectFiltersFromProps(props, style);\n  collectBlendingFromProps(props, style);\n  collectOverflowFromProps(props, style);\n  collectOpacityFromProps(props, style);\n  collectTextColorFromProps(props, style);\n  if (isTextNode) {\n    collectTextShadowsForProps(props, style);\n  } else {\n    collectBoxShadowsForProps(props, style);\n  }\n}\n\n// ../../library/src/render/traits/Transform.ts\nvar { getNumber } = Animatable;\nvar transformDefaults = {\n  z: 0,\n  rotation: 0,\n  rotationX: 0,\n  rotationY: 0,\n  rotationZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0\n};\nfunction getRotation(rotation, rotate) {\n  if (typeof rotate === \"string\") {\n    rotate = parseFloat(rotate);\n  }\n  return isFiniteNumber(rotate) ? rotate : getNumber(rotation);\n}\nfunction collectTransformFromProps(props, rect, style) {\n  const motionStyle = style;\n  const x = typeof rect.x === \"number\" ? `${rect.x}px` : rect.x;\n  const y = typeof rect.y === \"number\" ? `${rect.y}px` : rect.y;\n  const z = getNumber(props.z);\n  const scaleZ = getNumber(props.scaleZ);\n  const originZ = getNumber(props.originZ);\n  const rotationZ = getRotation(props.rotationZ, resolveMotionValue(motionStyle.rotateZ));\n  const rotationX = getRotation(props.rotationX, resolveMotionValue(motionStyle.rotateX));\n  const rotationY = getRotation(props.rotationY, resolveMotionValue(motionStyle.rotateY));\n  const scale = getNumber(props.scale);\n  const scaleX = getNumber(props.scaleX);\n  const scaleY = getNumber(props.scaleY);\n  const skew = getNumber(props.skew);\n  const skewX = getNumber(props.skewX);\n  const skewY = getNumber(props.skewY);\n  const rotation = getRotation(props.rotation, resolveMotionValue(motionStyle.rotate));\n  const force3d = RenderEnvironment.target === \"EXPORT\" /* export */;\n  if (force3d || z !== 0 || scaleZ !== 1 || originZ !== 0 || rotationZ !== 0 || rotationX !== 0 || rotationY !== 0) {\n    style.transform = `\n            ${`translate3d(${x}, ${y}, ${z}px)`}\n            scale3d(${scaleX * scale}, ${scaleY * scale}, ${scaleZ})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            translateZ(${originZ}px)\n            rotateX(${rotationX}deg)\n            rotateY(${rotationY}deg)\n            rotateZ(${(rotation + rotationZ).toFixed(4)}deg)\n            translateZ(${-originZ}px)`;\n  } else {\n    style.transform = `\n            ${`translate(${x}, ${y})`}\n            scale(${scaleX * scale}, ${scaleY * scale})\n            skew(${skew}deg,${skew}deg)\n            skewX(${skewX}deg)\n            skewY(${skewY}deg)\n            rotate(${rotation.toFixed(4)}deg)`;\n  }\n  const transformOrigin = `${getNumber(props.originX) * 100}% ${getNumber(props.originY) * 100}%`;\n  style.transformOrigin = transformOrigin;\n  style.WebkitTransformOrigin = transformOrigin;\n}\n\n// ../../library/src/render/presentation/Frame/DeprecatedFrame.tsx\nfunction cssBackgroundSize(size2) {\n  switch (size2) {\n    case \"fit\":\n      return \"contain\";\n    case \"stretch\":\n      return \"100% 100%\";\n    default:\n      return \"cover\";\n  }\n}\nfunction collectBackgroundImageFromProps(props, style) {\n  const image = backgroundImageFromProps(props);\n  if (image) {\n    style.backgroundImage = `url(\"${image.src}\")`;\n    style.backgroundSize = cssBackgroundSize(image.fit);\n    style.backgroundRepeat = \"no-repeat\";\n    style.backgroundPosition = \"center\";\n  }\n}\nfunction toPixelString(value) {\n  return isFiniteNumber(value) ? `${value}px` : value;\n}\nfunction applyLayoutProp(style, props, key7) {\n  if (props[key7] !== void 0) {\n    const value = Animatable.get(props[key7], void 0);\n    style[key7] = toPixelString(value);\n  }\n}\nvar DeprecatedFrame = /* @__PURE__ */ (() => {\n  const _DeprecatedFrameInner = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.element = null;\n      this.imageDidChange = false;\n      this.state = {\n        size: null\n      };\n      this.updateStyle = () => {\n        if (!this.element) {\n          return;\n        }\n        Object.assign(this.element.style, this.getStyle());\n      };\n      this.setElement = (element) => {\n        this.element = element;\n        this.setLayerElement(element);\n      };\n      this.onPropsChange = (props) => {\n        const rect = _DeprecatedFrameInner.rect(Animatable.objectToValues(props.value));\n        if (this.state.size && isAnimatable(this.state.size.width) && isAnimatable(props.value.width)) {\n          this.state.size.width.set(rect.width);\n        }\n        if (this.state.size && isAnimatable(this.state.size.height) && isAnimatable(props.value.height)) {\n          this.state.size.height.set(rect.height);\n        }\n        this.updateStyle();\n      };\n      this.onSizeChange = () => {\n        this.updateStyle();\n      };\n    }\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? { sizing: props.parentSize, positioning: props.parentSize, viewport: null } : null;\n      return ConstraintValues.toRect(constraintValues, parentSizeInfo, null, true);\n    }\n    get rect() {\n      return _DeprecatedFrameInner.rect(this.props);\n    }\n    static getDerivedStateFromProps(nextProps, prevState) {\n      const size2 = _DeprecatedFrameInner.updatedSize(nextProps, prevState);\n      const { target } = RenderEnvironment;\n      const nextBackgroundImageSrc = nextProps.background && BackgroundImage.isImageObject(nextProps.background) ? nextProps.background.src : null;\n      if (nextBackgroundImageSrc) {\n        return {\n          size: size2\n        };\n      }\n      if (prevState.size) {\n        if (target === \"PREVIEW\" /* preview */) {\n          return null;\n        }\n        if (prevState.size.width === size2.width && prevState.size.height === size2.height) {\n          return null;\n        }\n      }\n      return {\n        size: size2\n      };\n    }\n    static updatedSize(props, state) {\n      const rect = _DeprecatedFrameInner.rect(props);\n      let size2 = state.size;\n      const newSize = { width: rect.width, height: rect.height };\n      const { target } = RenderEnvironment;\n      if (!size2) {\n        if (target === \"PREVIEW\" /* preview */) {\n          size2 = ObservableObject(newSize, true);\n        } else {\n          size2 = newSize;\n        }\n      } else {\n        if (isAnimatable(size2.width) && isAnimatable(size2.height)) {\n          size2.width.set(newSize.width);\n          size2.height.set(newSize.height);\n        } else {\n          size2 = newSize;\n        }\n      }\n      return size2;\n    }\n    getStyle() {\n      const rect = this.rect;\n      const style = {\n        display: \"block\",\n        position: \"absolute\",\n        width: `${rect.width}px`,\n        height: `${rect.height}px`,\n        pointerEvents: void 0,\n        // TODO: this should be \"none\" for non-event consuming instances, for performance.\n        userSelect: \"none\"\n      };\n      let left = Animatable.get(this.props.left, void 0);\n      let top = Animatable.get(this.props.top, void 0);\n      Object.assign(style, this.props._initialStyle);\n      const hasParentSize = this.context.parentSize !== 1 /* Disabled */;\n      const perspective = Animatable.get(this.props.perspective, void 0);\n      style.perspective = perspective;\n      style.WebkitPerspective = perspective;\n      let backfaceVisibility = void 0;\n      const backfaceVisible = Animatable.get(this.props.backfaceVisible, void 0);\n      if (backfaceVisible === true) {\n        backfaceVisibility = \"visible\";\n      } else if (backfaceVisible === false) {\n        backfaceVisibility = \"hidden\";\n      }\n      style.backfaceVisibility = backfaceVisibility;\n      style.WebkitBackfaceVisibility = backfaceVisibility;\n      const preserve3d = Animatable.get(this.props.preserve3d, void 0);\n      if (preserve3d === true) {\n        style.transformStyle = \"preserve-3d\";\n      } else if (preserve3d === false) {\n        style.transformStyle = \"flat\";\n      }\n      if (!hasParentSize) {\n        applyLayoutProp(style, this.props, \"right\");\n        applyLayoutProp(style, this.props, \"bottom\");\n        const width = Animatable.get(this.props.width, void 0);\n        const stringWidth = toPixelString(width);\n        const height = Animatable.get(this.props.height, void 0);\n        const stringHeight = toPixelString(height);\n        if (typeof left === \"string\" && left.endsWith(\"%\") && this.props.right === null) {\n          left = `calc(${left} - calc(${stringWidth}} / 2))`;\n          style.width = stringWidth;\n        }\n        if (typeof top === \"string\" && top.endsWith(\"%\") && this.props.bottom === null) {\n          top = `calc(${top} - calc(${stringHeight} / 2))`;\n          style.height = stringHeight;\n        }\n        if (top !== void 0 && style.bottom !== void 0) {\n          style.height = void 0;\n          top = toPixelString(Animatable.get(this.props.top, void 0));\n        } else {\n          style.height = stringHeight;\n        }\n        if (left !== void 0 && style.right !== void 0) {\n          style.width = void 0;\n          left = toPixelString(Animatable.get(this.props.left, void 0));\n        } else {\n          style.width = stringWidth;\n        }\n      }\n      const transformRect = { ...rect };\n      if (typeof left !== \"undefined\") {\n        transformRect.x = left;\n      }\n      if (typeof top !== \"undefined\") {\n        transformRect.y = top;\n      }\n      collectTransformFromProps(this.props, transformRect, style);\n      collectVisualStyleFromProps(this.props, style);\n      collectBackgroundImageFromProps(this.props, style);\n      Layer.applyWillChange(this.props, style, false);\n      if (this.props.style) {\n        Object.assign(style, this.props.style);\n      }\n      return style;\n    }\n    componentDidMount() {\n      const { target } = RenderEnvironment;\n      if (target === \"PREVIEW\" /* preview */) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentDidUpdate() {\n      const { target } = RenderEnvironment;\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      if (target === \"PREVIEW\" /* preview */) {\n        this.propsObserver = ObservableObject(this.props, true);\n        this.propsObserverCancel = ObservableObject.addObserver(this.propsObserver, this.onPropsChange);\n        if (this.props.parentSize && isAnimatable(this.props.parentSize.width) && isAnimatable(this.props.parentSize.height)) {\n          this.sizeObserver = ObservableObject(this.props.parentSize, true);\n          this.sizeObserverCancel = ObservableObject.addObserver(this.sizeObserver, this.onSizeChange);\n        }\n      }\n    }\n    componentWillUnmount() {\n      this.propsObserverCancel && this.propsObserverCancel();\n      this.propsObserverCancel = void 0;\n      this.sizeObserverCancel && this.sizeObserverCancel();\n      this.sizeObserverCancel = void 0;\n    }\n    render() {\n      if (import_process4.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const { visible, id, className } = this.props;\n      if (!visible) {\n        return null;\n      }\n      const style = this.getStyle();\n      const rect = this.rect;\n      const parentSize = { width: rect.width, height: rect.height };\n      return /* @__PURE__ */ React35.createElement(\"div\", { id, style, ref: this.setElement, className }, /* @__PURE__ */ React35.createElement(ProvideParentSize, { parentSize }, this.layoutChildren()), /* @__PURE__ */ React35.createElement(Border, { ...this.props }));\n    }\n    layoutChildren() {\n      let _forwardedOverrides = this.props._forwardedOverrides;\n      const extractions = this.props._overrideForwardingDescription;\n      if (extractions) {\n        let added = false;\n        _forwardedOverrides = {};\n        for (const [key7, value] of Object.entries(extractions)) {\n          added = true;\n          _forwardedOverrides[key7] = this.props[value];\n        }\n        if (!added) {\n          _forwardedOverrides = void 0;\n        }\n      }\n      let children = React35.Children.map(this.props.children, (child) => {\n        if (isConstraintSupportingChild(child)) {\n          return React35.cloneElement(child, {\n            parentSize: this.state.size,\n            _forwardedOverrides\n          });\n        } else if (_forwardedOverrides && child) {\n          return React35.cloneElement(child, { _forwardedOverrides });\n        } else {\n          return child;\n        }\n      });\n      if (children && children.length === 1 && typeof children[0] === \"string\") {\n        children = [/* @__PURE__ */ React35.createElement(Center, { key: \"0\" }, children)];\n      }\n      return children;\n    }\n  };\n  let DeprecatedFrameInner = _DeprecatedFrameInner;\n  DeprecatedFrameInner.supportsConstraints = true;\n  DeprecatedFrameInner.defaultFrameSpecificProps = {\n    ...constraintDefaults,\n    ...transformDefaults,\n    opacity: 1,\n    background: Color(\"rgba(0, 170, 255, 0.3)\"),\n    visible: true,\n    borderWidth: 0,\n    borderColor: \"#222\",\n    borderStyle: \"solid\"\n  };\n  DeprecatedFrameInner.defaultProps = {\n    ...Layer.defaultProps,\n    ..._DeprecatedFrameInner.defaultFrameSpecificProps\n  };\n  DeprecatedFrameInner.contextType = ConstraintsContext;\n  return DeprecatedFrameInner;\n})();\nfunction Center(props) {\n  const style = Object.assign(\n    {},\n    {\n      height: \"100%\",\n      display: \"flex\",\n      alignItems: \"center\",\n      justifyContent: \"center\",\n      fontFamily: \"Helvetica\"\n    },\n    props.style || {}\n  );\n  return /* @__PURE__ */ React35.createElement(\"div\", { style }, props.children);\n}\n\n// ../../library/src/render/presentation/Frame/isDeprecatedFrameProps.ts\nvar frameWithMotionPropsFields = [\n  \"_border\",\n  \"_constraints\",\n  \"animate\",\n  \"initial\",\n  \"variants\",\n  \"transition\",\n  \"inherit\",\n  \"center\",\n  \"initial\",\n  \"transformTemplate\",\n  \"transformValues\",\n  \"animate\",\n  \"variants\",\n  \"transition\",\n  \"onUpdate\",\n  \"onAnimationComplete\",\n  \"onPanSessionStart\",\n  \"onTapCancel\",\n  \"whileTap\",\n  \"whileHover\",\n  \"onHoverStart\",\n  \"onHoverEnd\",\n  \"drag\",\n  \"dragDirectionLock\",\n  \"dragPropagation\",\n  \"dragConstraints\",\n  \"dragElastic\",\n  \"dragMomentum\",\n  \"dragTransition\",\n  \"onDragStart\",\n  \"onDragEnd\",\n  \"onDrag\",\n  \"onDirectionLock\",\n  \"onDragTransitionEnd\",\n  \"x\",\n  \"y\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"rotateZ\",\n  \"position\",\n  \"border\",\n  \"borderRadius\",\n  \"shadow\",\n  \"size\"\n];\nvar deprecatedFramePropsFields = [\n  \"autoSize\",\n  \"aspectRatio\",\n  \"borderWidth\",\n  \"borderStyle\",\n  \"borderColor\",\n  \"centerX\",\n  \"centerY\"\n];\nfunction isDeprecatedFrameProps(props) {\n  let field;\n  for (const propKey in props) {\n    if (isAnimatable(props[propKey]))\n      return true;\n  }\n  for (field of frameWithMotionPropsFields) {\n    if (props.hasOwnProperty(field))\n      return false;\n  }\n  for (field of deprecatedFramePropsFields) {\n    if (props.hasOwnProperty(field))\n      return true;\n  }\n  return false;\n}\n\n// ../../library/src/render/presentation/Frame/index.tsx\nvar DeprecatedFrameWithEvents = /* @__PURE__ */ WithEvents(DeprecatedFrame);\nvar Frame = /* @__PURE__ */ (() => {\n  const FrameInner = forwardRef2(function FrameInner2(props, ref) {\n    const parentSize = useParentSize();\n    if (isDeprecatedFrameProps(props)) {\n      const currentParentSize = props.parentSize || deprecatedParentSize(parentSize);\n      return /* @__PURE__ */ React36.createElement(DeprecatedFrameWithEvents, { ...props, parentSize: currentParentSize });\n    }\n    return /* @__PURE__ */ React36.createElement(FrameWithMotion, { ...props, ref });\n  });\n  FrameInner[\"displayName\"] = \"Frame\";\n  return FrameInner;\n})();\n\n// ../../library/src/components/Draggable.ts\nvar Draggable = /* @__PURE__ */ WithDragging(DeprecatedFrameWithEvents);\n\n// ../../library/src/components/Navigation.tsx\nimport React44, { Component as Component6 } from \"react\";\n\n// ../../library/src/components/AnimateLayout/SharedLayoutRoot.tsx\nimport React37, { Component as Component4 } from \"react\";\nvar TREE_ROOT_ID = \"__LAYOUT_TREE_ROOT\";\nvar SharedLayoutContext = /* @__PURE__ */ React37.createContext({\n  schedulePromoteTree: () => {\n  },\n  scheduleProjectionDidUpdate: () => {\n  },\n  initLead: () => {\n  }\n});\nvar SharedLayoutRoot = class extends Component4 {\n  constructor() {\n    super(...arguments);\n    this.shouldAnimate = false;\n    this.scheduledPromotion = false;\n    this.scheduledDidUpdate = false;\n    this.scheduleProjectionDidUpdate = () => {\n      this.scheduledDidUpdate = true;\n    };\n    // schedule a promotion to run later in getSnapshotBeforeUpdate\n    this.schedulePromoteTree = (tree, transition, shouldAnimate) => {\n      this.follow = this.lead;\n      this.shouldAnimate = shouldAnimate;\n      this.lead = tree;\n      this.transition = transition;\n      this.scheduledPromotion = true;\n    };\n    this.initLead = (tree, shouldAnimate) => {\n      this.follow = this.lead;\n      this.lead = tree;\n      if (this.follow && shouldAnimate) {\n        this.follow.layoutMaybeMutated = true;\n      }\n    };\n    this.sharedLayoutContext = {\n      schedulePromoteTree: this.schedulePromoteTree,\n      scheduleProjectionDidUpdate: this.scheduleProjectionDidUpdate,\n      initLead: this.initLead\n    };\n  }\n  // Runs after all descendent SharedLayoutTree finish taking snapshots in\n  // their getSnapshotBeforeUpdate lifecycle method.\n  getSnapshotBeforeUpdate() {\n    var _a;\n    if (!this.scheduledPromotion || !this.lead || !this.follow)\n      return null;\n    const needsReset = !!((_a = this.lead) == null ? void 0 : _a.layoutMaybeMutated) && !this.shouldAnimate;\n    this.lead.projectionNodes.forEach((projectionNode) => {\n      var _a2;\n      projectionNode == null ? void 0 : projectionNode.promote({\n        needsReset,\n        transition: this.shouldAnimate ? this.transition : void 0,\n        preserveFollowOpacity: projectionNode.options.layoutId === TREE_ROOT_ID && !((_a2 = this.follow) == null ? void 0 : _a2.isExiting)\n      });\n    });\n    if (this.shouldAnimate) {\n      this.follow.layoutMaybeMutated = true;\n    } else {\n      this.scheduleProjectionDidUpdate();\n    }\n    this.lead.layoutMaybeMutated = false;\n    this.transition = void 0;\n    this.scheduledPromotion = false;\n    return null;\n  }\n  componentDidUpdate() {\n    var _a, _b;\n    if (!this.lead)\n      return null;\n    if (this.scheduledDidUpdate) {\n      (_b = (_a = this.lead.rootProjectionNode) == null ? void 0 : _a.root) == null ? void 0 : _b.didUpdate();\n      this.scheduledDidUpdate = false;\n    }\n  }\n  render() {\n    return /* @__PURE__ */ React37.createElement(SharedLayoutContext.Provider, { value: this.sharedLayoutContext }, this.props.children);\n  }\n};\n\n// ../../library/src/components/MagicMotionCrossfadeRoot.tsx\nimport React38 from \"react\";\nvar rootStyles = {\n  width: \"100%\",\n  height: \"100%\",\n  backgroundColor: \"none\"\n};\nfunction MagicMotionCrossfadeRoot(props) {\n  return /* @__PURE__ */ React38.createElement(motion.div, { layoutId: TREE_ROOT_ID, style: rootStyles }, props.children);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nimport React43, { useContext as useContext8, useEffect as useEffect5, useRef as useRef6 } from \"react\";\n\n// ../../library/src/modules/useAppearEffect.ts\nimport React39 from \"react\";\nvar _sharedIntersectionObserver, _callbacks2;\nvar SharedIntersectionObserver = class {\n  constructor(options) {\n    __privateAdd(this, _sharedIntersectionObserver, void 0);\n    __privateAdd(this, _callbacks2, /* @__PURE__ */ new WeakMap());\n    if (!document)\n      return;\n    __privateSet(this, _sharedIntersectionObserver, new IntersectionObserver(this.resizeObserverCallback.bind(this), options));\n  }\n  resizeObserverCallback(entries, observer) {\n    for (const entry of entries) {\n      const callbackForElement = __privateGet(this, _callbacks2).get(entry.target);\n      if (callbackForElement)\n        callbackForElement([entry], observer);\n    }\n  }\n  observeElementWithCallback(element, callback) {\n    if (!__privateGet(this, _sharedIntersectionObserver))\n      return;\n    __privateGet(this, _sharedIntersectionObserver).observe(element);\n    __privateGet(this, _callbacks2).set(element, callback);\n  }\n  unobserve(element) {\n    if (!__privateGet(this, _sharedIntersectionObserver))\n      return;\n    __privateGet(this, _sharedIntersectionObserver).unobserve(element);\n    __privateGet(this, _callbacks2).delete(element);\n  }\n  get root() {\n    var _a;\n    return (_a = __privateGet(this, _sharedIntersectionObserver)) == null ? void 0 : _a.root;\n  }\n};\n_sharedIntersectionObserver = new WeakMap();\n_callbacks2 = new WeakMap();\nvar SharedIntersectionObserverContext = /* @__PURE__ */ React39.createContext(/* @__PURE__ */ new Map());\nfunction useSharedIntersectionObserver(ref, callback, options) {\n  if (typeof IntersectionObserver === \"undefined\")\n    return;\n  const key7 = useConstant(() => `${options.rootMargin}`);\n  const observers = React39.useContext(SharedIntersectionObserverContext);\n  const { enabled } = options;\n  React39.useEffect(() => {\n    var _a;\n    const element = ref.current;\n    if (!enabled || !element)\n      return;\n    let observer = observers.get(key7);\n    if (!observer || observer.root !== ((_a = options.root) == null ? void 0 : _a.current)) {\n      const { root, ...rest } = options;\n      observer = new SharedIntersectionObserver({ ...rest, root: root == null ? void 0 : root.current });\n      observers.set(key7, observer);\n    }\n    observer.observeElementWithCallback(element, callback);\n    return () => observer == null ? void 0 : observer.unobserve(element);\n  }, [enabled]);\n}\nvar thresholds = /* @__PURE__ */ new Array(100).fill(void 0).map((_, i) => i * 0.01);\nvar ViewportContext = /* @__PURE__ */ React39.createContext(null);\nfunction useAppearEffect(ref, appearCallback, options) {\n  const internalState = React39.useRef({\n    isInView: false,\n    hasAnimatedOnce: false\n  });\n  const { enabled, animateOnce, threshold, rootMargin = `0px 0px 0px 0px` } = options;\n  const callback = React39.useCallback(\n    ([entry]) => {\n      var _a;\n      if (!entry)\n        return;\n      const { isInView, hasAnimatedOnce } = internalState.current;\n      const isIntersecting = isIntersectingWithThreshold(entry, (_a = threshold == null ? void 0 : threshold.y) != null ? _a : 0);\n      if (isIntersecting && !isInView) {\n        if (animateOnce && hasAnimatedOnce)\n          return;\n        internalState.current.hasAnimatedOnce = true;\n        internalState.current.isInView = true;\n        appearCallback(true);\n        return;\n      }\n      if (!isIntersecting && isInView) {\n        internalState.current.isInView = false;\n        if (animateOnce)\n          return;\n        appearCallback(false);\n        return;\n      }\n    },\n    [animateOnce, threshold == null ? void 0 : threshold.y, appearCallback]\n  );\n  useSharedIntersectionObserver(ref, callback, {\n    threshold: thresholds,\n    rootMargin,\n    enabled: enabled != null ? enabled : true\n  });\n}\nfunction calculatedIntersection(intersectionRect, boundingClientRect) {\n  if (boundingClientRect.height === 0)\n    return 0;\n  return intersectionRect.height / Math.min(boundingClientRect.height, safeWindow.innerHeight);\n}\nfunction isIntersectingWithThreshold({ boundingClientRect, intersectionRect, isIntersecting }, threshold) {\n  if (boundingClientRect.height === 0)\n    return isIntersecting;\n  return isIntersecting && calculatedIntersection(intersectionRect, boundingClientRect) >= threshold;\n}\n\n// ../../library/src/components/AnimateLayout/SharedLayoutTree.tsx\nimport React40, { Component as Component5 } from \"react\";\nvar LayoutTree = class extends Component5 {\n  constructor() {\n    super(...arguments);\n    /**\n     * A list of projection nodes in the tree\n     */\n    this.projectionNodes = /* @__PURE__ */ new Map();\n    this.shouldPreserveFollowOpacity = (child) => {\n      return child.options.layoutId === TREE_ROOT_ID && !this.props.isExiting;\n    };\n    this.switchLayoutGroupContext = {\n      register: (child) => this.addChild(child),\n      deregister: (child) => this.removeChild(child),\n      // Configs to use for the initial promotion on mount in Motion\n      transition: this.props.isLead !== void 0 && this.props.animatesLayout ? this.props.transition : void 0,\n      shouldPreserveFollowOpacity: this.shouldPreserveFollowOpacity\n    };\n  }\n  componentDidMount() {\n    if (this.props.isLead) {\n      this.props.sharedLayoutContext.initLead(this, !!this.props.animatesLayout);\n    }\n  }\n  shouldComponentUpdate(nextProps) {\n    const { isLead, isExiting, isOverlayed, animatesLayout, transition, sharedLayoutContext } = nextProps;\n    this.isExiting = isExiting;\n    if (isLead === void 0)\n      return true;\n    const hasBecomeLead = !this.props.isLead && !!isLead;\n    const hasExitBeenCancelled = this.props.isExiting && !isExiting;\n    const shouldPromote = hasBecomeLead || hasExitBeenCancelled;\n    const shouldDemote = !!this.props.isLead && !isLead;\n    const overlayChanged = this.props.isOverlayed !== isOverlayed;\n    if (shouldPromote || shouldDemote) {\n      this.projectionNodes.forEach((projection) => projection == null ? void 0 : projection.willUpdate());\n    }\n    if (shouldPromote) {\n      sharedLayoutContext.schedulePromoteTree(this, transition, !!animatesLayout);\n    } else if (overlayChanged) {\n      sharedLayoutContext.scheduleProjectionDidUpdate();\n    }\n    return !!shouldPromote && !!animatesLayout;\n  }\n  addChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.set(layoutId, child);\n      this.setRootChild(child);\n    }\n  }\n  /**\n   * As children are added, make sure that `this.rootProjectionNode` is always the\n   * child with the smallest depth.\n   */\n  setRootChild(child) {\n    if (!this.rootProjectionNode)\n      return this.rootProjectionNode = child;\n    this.rootProjectionNode = this.rootProjectionNode.depth < child.depth ? this.rootProjectionNode : child;\n  }\n  removeChild(child) {\n    const layoutId = child.options.layoutId;\n    if (layoutId) {\n      this.projectionNodes.delete(layoutId);\n    }\n  }\n  render() {\n    return /* @__PURE__ */ React40.createElement(SwitchLayoutGroupContext.Provider, { value: this.switchLayoutGroupContext }, this.props.children);\n  }\n};\nvar SharedLayoutTree = (props) => {\n  const sharedLayoutContext = React40.useContext(SharedLayoutContext);\n  return /* @__PURE__ */ React40.createElement(LayoutTree, { ...props, sharedLayoutContext });\n};\n\n// ../../library/src/components/NavigationContainerContext.tsx\nimport React41, { useContext as useContext6 } from \"react\";\nvar NavigationContainerContext = React41.createContext(true);\nfunction useIsInCurrentNavigationTarget() {\n  const isInCurrentNavigationTarget = useContext6(NavigationContainerContext);\n  return isInCurrentNavigationTarget;\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nimport React42, { createContext as createContext2, useCallback as useCallback2, useContext as useContext7, useEffect as useEffect4, useRef as useRef5 } from \"react\";\n\n// ../../library/src/components/utils/useMap.ts\nfunction newMap() {\n  return /* @__PURE__ */ new Map();\n}\nfunction useMap() {\n  return useConstant(newMap);\n}\n\n// ../../library/src/components/NavigationTargetContext.tsx\nvar NavigationTargetContext = /* @__PURE__ */ createContext2({ register: () => {\n}, deregister: () => {\n} });\nvar NavigationTargetWrapper = ({ isCurrent, isOverlayed, children }) => {\n  const callbacks2 = useMap();\n  const register = useCallback2(\n    (fn) => {\n      if (callbacks2.has(fn)) {\n        console.warn(\"NavigationTargetWrapper: already registered\");\n        return;\n      }\n      callbacks2.set(fn, void 0);\n    },\n    [\n      callbacks2\n      /* constant, so should never change */\n    ]\n  );\n  const deregister = useCallback2(\n    (fn) => {\n      const cleanup = callbacks2.get(fn);\n      cleanup == null ? void 0 : cleanup();\n      callbacks2.delete(fn);\n    },\n    [\n      callbacks2\n      /* constant, so should never change */\n    ]\n  );\n  const value = useRef5({ register, deregister }).current;\n  useEffect4(() => {\n    callbacks2.forEach((_, cb) => {\n      const newCleanup = cb(isCurrent, isOverlayed);\n      callbacks2.set(cb, isFunction(newCleanup) ? newCleanup : void 0);\n    });\n    return () => {\n      callbacks2.forEach((cleanup, cb) => {\n        if (!cleanup)\n          return;\n        cleanup();\n        callbacks2.set(cb, void 0);\n      });\n    };\n  }, [\n    isCurrent,\n    isOverlayed,\n    callbacks2\n    /* constant, so should never change */\n  ]);\n  return /* @__PURE__ */ React42.createElement(NavigationTargetContext.Provider, { value }, children);\n};\nfunction useOnCurrentTargetChange(callback, deps = []) {\n  const { register, deregister } = useContext7(NavigationTargetContext);\n  useEffect4(() => {\n    if (!callback)\n      return;\n    register(callback);\n    return () => deregister(callback);\n  }, [register, deregister, ...deps]);\n}\n\n// ../../library/src/components/NavigationContainer.tsx\nvar NavigationContainer = /* @__PURE__ */ React43.memo(\n  function NavigationContainer2({\n    isLayeredContainer,\n    isCurrent,\n    isPrevious,\n    isOverlayed = false,\n    visible,\n    transitionProps,\n    children,\n    backdropColor,\n    onTapBackdrop,\n    backfaceVisible,\n    exitBackfaceVisible,\n    animation,\n    exitAnimation,\n    instant,\n    initialProps,\n    exitProps,\n    position = { top: 0, right: 0, bottom: 0, left: 0 },\n    withMagicMotion,\n    index,\n    areMagicMotionLayersPresent,\n    id,\n    isInitial\n  }) {\n    const animate3 = useAnimation();\n    const presence = useContext8(PresenceContext);\n    const { persistLayoutIdCache } = useContext8(LayoutIdContext);\n    const previousState = useRef6({\n      wasCurrent: void 0,\n      wasPrevious: false,\n      wasBeingRemoved: false,\n      wasReset: true,\n      origins: getOriginProps({}, initialProps, transitionProps)\n    });\n    const viewportRef = useRef6(null);\n    const isBeingRemoved = presence !== null && !presence.isPresent;\n    if (isCurrent && previousState.current.wasCurrent === void 0)\n      persistLayoutIdCache();\n    useEffect5(() => {\n      if (isLayeredContainer || !animate3)\n        return;\n      if (isBeingRemoved) {\n        previousState.current = {\n          ...previousState.current,\n          wasBeingRemoved: isBeingRemoved\n        };\n        return;\n      }\n      const { wasPrevious, wasCurrent } = previousState.current;\n      const shouldAnimateIn = isCurrent && !wasCurrent || // If the screen was being removed as a result of a \"go back\" transition, but that removal is interrupted,\n      // resulting in this screen being restored to the current screen, we need to trigger an animation.\n      !isBeingRemoved && previousState.current.wasBeingRemoved && isCurrent;\n      const shouldAnimateOut = isPrevious && !wasPrevious;\n      const origins = getOriginProps(previousState.current.origins, initialProps, transitionProps);\n      let wasReset = previousState.current.wasReset;\n      if (shouldAnimateIn || shouldAnimateOut) {\n        animate3.stop();\n        animate3.start({\n          zIndex: index,\n          ...origins,\n          ...transitionProps\n        });\n        wasReset = false;\n      } else if (wasReset === false) {\n        animate3.stop();\n        animate3.set({ zIndex: index, ...allAnimatableProperties, opacity: 0 });\n        wasReset = true;\n      }\n      previousState.current = {\n        wasCurrent: !!isCurrent,\n        wasPrevious: !!isPrevious,\n        wasBeingRemoved: false,\n        wasReset,\n        origins\n      };\n    }, [isCurrent, isPrevious, isBeingRemoved]);\n    const transition = instant ? { type: false } : \"velocity\" in animation ? { ...animation, velocity: 0 } : animation;\n    const exitTransition = instant ? { type: false } : exitAnimation || animation;\n    const layout = { ...position };\n    if (layout.left === void 0 || layout.right === void 0)\n      layout.width = \"auto\";\n    if (layout.top === void 0 || layout.bottom === void 0)\n      layout.height = \"auto\";\n    const needsPerspective = contains3Dprops(transitionProps) || contains3Dprops(initialProps);\n    const perspective = needsPerspective && (isLayeredContainer || isCurrent || isPrevious) ? 1200 : void 0;\n    const identity = { ...allAnimatableProperties, ...previousState.current.origins };\n    const animations2 = isLayeredContainer ? {\n      initial: { ...identity, ...initialProps },\n      animate: { ...identity, ...transitionProps, transition },\n      // Overlay animations are sometimes instant\n      exit: { ...identity, ...exitProps, transition: animation }\n      // Overlay exits are always animated\n    } : {\n      animate: animate3,\n      exit: { ...identity, ...exitProps, transition: exitTransition }\n    };\n    const isPresent = isBeingRemoved || areMagicMotionLayersPresent === false ? false : true;\n    const isCurrentTarget = !!isCurrent && isPresent;\n    const forceOpacity = isCurrent && isInitial;\n    return /* @__PURE__ */ React43.createElement(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"NavigationContainerWrapper\",\n        width: \"100%\",\n        height: \"100%\",\n        style: {\n          position: \"absolute\",\n          transformStyle: \"flat\",\n          backgroundColor: \"transparent\",\n          overflow: \"hidden\",\n          // Unlike Overlays, Screens set zIndex via animation controls to ensure it's set in parallel with the animation being played.\n          // However, when a screen exits, it needs to preserve it's zIndex, which can't be applied through an `exit` animation,\n          // and might be impacted by the layer created by `perspective`.\n          zIndex: isLayeredContainer || isBeingRemoved || isCurrent && withMagicMotion ? index : void 0,\n          pointerEvents: void 0,\n          visibility: visible ? \"visible\" : \"hidden\",\n          perspective\n        }\n      },\n      isLayeredContainer && /* @__PURE__ */ React43.createElement(\n        FrameWithMotion,\n        {\n          width: \"100%\",\n          height: \"100%\",\n          \"data-framer-component-type\": \"NavigationContainerBackdrop\",\n          transition: animation,\n          initial: { opacity: instant && visible ? 1 : 0 },\n          animate: { opacity: 1 },\n          exit: { opacity: 0 },\n          backgroundColor: backdropColor ? backdropColor : \"transparent\",\n          onTap: !isBeingRemoved ? onTapBackdrop : void 0\n        }\n      ),\n      /* @__PURE__ */ React43.createElement(\n        FrameWithMotion,\n        {\n          ...layout,\n          ...animations2,\n          transition: {\n            default: transition,\n            originX: { type: false },\n            originY: { type: false },\n            originZ: { type: false }\n          },\n          backgroundColor: \"transparent\",\n          backfaceVisible: !isBeingRemoved ? backfaceVisible : exitBackfaceVisible,\n          \"data-framer-component-type\": \"NavigationContainer\",\n          \"data-framer-is-current-navigation-target\": !!isCurrent,\n          style: {\n            pointerEvents: void 0,\n            // When we mount a new screen that is going to be animated in with animation controls,\n            // we need to ensure that the screen is hidden until the animation starts.\n            opacity: forceOpacity || isLayeredContainer || isCurrent && withMagicMotion ? 1 : 0\n          },\n          \"data-is-present\": isPresent ? void 0 : false,\n          ref: viewportRef\n        },\n        /* @__PURE__ */ React43.createElement(ViewportContext.Provider, { value: viewportRef }, /* @__PURE__ */ React43.createElement(NavigationContainerContext.Provider, { value: isCurrentTarget }, /* @__PURE__ */ React43.createElement(NavigationTargetWrapper, { isCurrent: isCurrentTarget, isOverlayed }, /* @__PURE__ */ React43.createElement(\n          SharedLayoutTree,\n          {\n            isLead: isCurrent,\n            animatesLayout: !!withMagicMotion,\n            transition,\n            isExiting: !isPresent,\n            isOverlayed,\n            id\n          },\n          children\n        ))))\n      )\n    );\n  },\n  shouldUsePreviousValue\n);\nfunction shouldUsePreviousValue(prevProps, nextProps) {\n  if (nextProps.isCurrent === void 0)\n    return false;\n  if (prevProps.isCurrent !== nextProps.isCurrent)\n    return false;\n  if (prevProps.isPrevious !== nextProps.isPrevious)\n    return false;\n  if (nextProps.isCurrent && prevProps.isOverlayed !== nextProps.isOverlayed)\n    return false;\n  return true;\n}\nfunction getOriginProps(currentOriginProps, initialProps, transitionProps) {\n  const result = { ...currentOriginProps };\n  if (initialProps) {\n    if (isFiniteNumber(initialProps.originX))\n      result.originX = initialProps.originX;\n    if (isFiniteNumber(initialProps.originY))\n      result.originY = initialProps.originY;\n    if (isFiniteNumber(initialProps.originZ))\n      result.originZ = initialProps.originZ;\n  }\n  if (transitionProps) {\n    if (isFiniteNumber(transitionProps.originX))\n      result.originX = transitionProps.originX;\n    if (isFiniteNumber(transitionProps.originY))\n      result.originY = transitionProps.originY;\n    if (isFiniteNumber(transitionProps.originZ))\n      result.originZ = transitionProps.originZ;\n  }\n  return result;\n}\nfunction contains3Dprops(containerProps) {\n  var _a, _b, _c;\n  if (!containerProps)\n    return false;\n  const containsProps = \"rotateX\" in containerProps || \"rotateY\" in containerProps || \"z\" in containerProps;\n  if (!containsProps)\n    return false;\n  const toPropsContain3d = containerProps.rotateX !== 0 || containerProps.rotateY !== 0 || containerProps.z !== 0;\n  const fromPropsContain3d = ((_a = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _a.rotateX.from) !== 0 || ((_b = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _b.rotateY.from) !== 0 || ((_c = containerProps == null ? void 0 : containerProps.transition) == null ? void 0 : _c.z.from) !== 0;\n  return toPropsContain3d || fromPropsContain3d;\n}\nvar allAnimatableProperties = {\n  x: 0,\n  y: 0,\n  z: 0,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0,\n  rotateZ: 0,\n  scale: 1,\n  scaleX: 1,\n  scaleY: 1,\n  scaleZ: 1,\n  skew: 0,\n  skewX: 0,\n  skewY: 0,\n  originX: 0.5,\n  originY: 0.5,\n  originZ: 0,\n  opacity: 1\n};\n\n// ../../library/src/components/NavigationTransitions.ts\nvar TransitionDefaults = {\n  Fade: {\n    exit: { opacity: 0 },\n    enter: { opacity: 0 }\n  },\n  PushLeft: {\n    exit: { x: \"-30%\" },\n    enter: { x: \"100%\" }\n  },\n  PushRight: {\n    exit: { x: \"30%\" },\n    enter: { x: \"-100%\" }\n  },\n  PushUp: {\n    exit: { y: \"-30%\" },\n    enter: { y: \"100%\" }\n  },\n  PushDown: {\n    exit: { y: \"30%\" },\n    enter: { y: \"-100%\" }\n  },\n  Instant: {\n    animation: { type: false },\n    enter: { opacity: 0 }\n  },\n  Modal: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { center: true },\n    enter: { opacity: 0, scale: 1.2 }\n  },\n  OverlayLeft: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { right: 0, top: 0, bottom: 0 },\n    enter: { x: \"100%\" }\n  },\n  OverlayRight: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { left: 0, top: 0, bottom: 0 },\n    enter: { x: \"-100%\" }\n  },\n  OverlayUp: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { bottom: 0, left: 0, right: 0 },\n    enter: { y: \"100%\" }\n  },\n  OverlayDown: {\n    overCurrentContext: true,\n    goBackOnTapOutside: true,\n    position: { top: 0, left: 0, right: 0 },\n    enter: { y: \"-100%\" }\n  },\n  FlipLeft: {\n    backfaceVisible: false,\n    exit: { rotateY: -180 },\n    enter: { rotateY: 180 }\n  },\n  FlipRight: {\n    backfaceVisible: false,\n    exit: { rotateY: 180 },\n    enter: { rotateY: -180 }\n  },\n  FlipUp: {\n    backfaceVisible: false,\n    exit: { rotateX: 180 },\n    enter: { rotateX: -180 }\n  },\n  FlipDown: {\n    backfaceVisible: false,\n    exit: { rotateX: -180 },\n    enter: { rotateX: 180 }\n  },\n  MagicMotion: {\n    withMagicMotion: true\n  }\n};\nfunction pushTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"right\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.PushLeft;\n    case \"left\":\n      return TransitionDefaults.PushRight;\n    case \"bottom\":\n      return TransitionDefaults.PushUp;\n    case \"top\":\n      return TransitionDefaults.PushDown;\n  }\n}\nfunction overlayTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.OverlayLeft;\n    case \"left\":\n      return TransitionDefaults.OverlayRight;\n    case \"bottom\":\n      return TransitionDefaults.OverlayUp;\n    case \"top\":\n      return TransitionDefaults.OverlayDown;\n  }\n}\nfunction flipTransition(options) {\n  const side = options && options.appearsFrom ? options.appearsFrom : \"bottom\";\n  switch (side) {\n    case \"right\":\n      return TransitionDefaults.FlipLeft;\n    case \"left\":\n      return TransitionDefaults.FlipRight;\n    case \"bottom\":\n      return TransitionDefaults.FlipUp;\n    case \"top\":\n      return TransitionDefaults.FlipDown;\n  }\n}\n\n// ../../library/src/components/reduceNavigationStateForAction.ts\nvar defaultState = () => ({\n  current: -1,\n  previous: -1,\n  currentOverlay: -1,\n  previousOverlay: -1,\n  visualIndex: 0,\n  overlayItemId: 0,\n  historyItemId: 0,\n  history: [],\n  overlayStack: [],\n  containers: {},\n  containerIndex: {},\n  containerVisualIndex: {},\n  containerIsRemoved: {},\n  transitionForContainer: {},\n  previousTransition: null\n});\nfunction reduceNavigationStateForAction(state, action) {\n  switch (action.type) {\n    case \"addOverlay\":\n      return addOverlay(state, action.transition, action.component);\n    case \"removeOverlay\":\n      return removeOverlay(state);\n    case \"add\":\n      return add(state, action.key, action.transition, action.component);\n    case \"remove\":\n      return remove(state);\n    case \"update\":\n      return updateComponent(state, action.key, action.component);\n    case \"back\":\n      return back(state);\n    case \"forward\":\n      return forward(state);\n    default:\n      return;\n  }\n}\nfunction updateComponent(currentState, key7, component) {\n  return {\n    ...currentState,\n    containers: {\n      ...currentState.containers,\n      [key7]: component\n    }\n  };\n}\nfunction addOverlay(currentState, transition, component) {\n  const currentOverlay = currentState.overlayStack[currentState.currentOverlay];\n  if (currentOverlay && currentOverlay.component === component)\n    return;\n  const overlayItemId = currentState.overlayItemId + 1;\n  const overlayStack = [\n    ...currentState.overlayStack,\n    {\n      key: `stack-${overlayItemId}`,\n      component,\n      transition\n    }\n  ];\n  return {\n    ...currentState,\n    overlayStack,\n    overlayItemId,\n    currentOverlay: Math.max(0, Math.min(currentState.currentOverlay + 1, overlayStack.length - 1)),\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction removeOverlay(currentState) {\n  return {\n    ...currentState,\n    overlayStack: [],\n    currentOverlay: -1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction add(currentState, key7, transition, component) {\n  if (!currentState.containers[key7])\n    currentState.containers[key7] = component;\n  currentState.history = currentState.history.slice(0, currentState.current + 1);\n  currentState.visualIndex = Math.max(currentState.history.length, 0);\n  const currentItem = currentState.history[currentState.history.length - 1];\n  const isCurrentScreen = currentItem && currentItem.key === key7;\n  currentState.overlayStack = [];\n  if (isCurrentScreen && currentState.currentOverlay > -1) {\n    return {\n      ...currentState,\n      currentOverlay: -1,\n      previousOverlay: currentState.currentOverlay\n    };\n  }\n  if (isCurrentScreen)\n    return;\n  const nextIndex = currentState.containerVisualIndex[key7];\n  const removed = currentState.containerIsRemoved[key7];\n  const shouldMoveForward = (currentItem == null ? void 0 : currentItem.key) && transition.withMagicMotion ? isNextTargetForward(key7, nextIndex, removed, currentState.history) : true;\n  currentState.history.push({\n    key: key7,\n    transition,\n    visualIndex: shouldMoveForward ? Math.max(currentState.visualIndex, 0) : currentState.containerVisualIndex[key7]\n  });\n  const current = currentState.current + 1;\n  const previous = currentState.current;\n  for (const containerKey in currentState.containerIndex) {\n    if (currentState.containerIndex[containerKey] === current) {\n      currentState.containerIndex[containerKey] = findLatestHistoryIndex(containerKey, currentState.history);\n    }\n  }\n  currentState.containerIndex[key7] = current;\n  const { containerVisualIndex, containerIsRemoved } = magicMotionPropsForAdd(currentState, key7, shouldMoveForward);\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerVisualIndex,\n    containerIsRemoved,\n    transitionForContainer,\n    previousTransition: null,\n    currentOverlay: -1,\n    historyItemId: currentState.historyItemId + 1,\n    previousOverlay: currentState.currentOverlay\n  };\n}\nfunction back(currentState) {\n  const containers = { ...currentState.containers };\n  const nextState = remove(currentState);\n  if (!nextState)\n    return;\n  nextState.containers = containers;\n  return nextState;\n}\nfunction forward(currentState) {\n  const nextItem = currentState.history[currentState.current + 1];\n  if (!nextItem)\n    return;\n  const { key: key7, transition, component } = nextItem;\n  const history = [...currentState.history];\n  const nextState = add(currentState, key7, transition, component);\n  if (!nextState)\n    return;\n  nextState.history = history;\n  return nextState;\n}\nfunction remove(currentState) {\n  const history = [...currentState.history.slice(0, currentState.current + 1)];\n  if (history.length === 1)\n    return;\n  const currentItem = history.pop();\n  if (!currentItem)\n    return;\n  const target = history[history.length - 1];\n  assert(target, \"The navigation history must have at least one component\");\n  currentState.containerIndex[target.key] = history.length - 1;\n  const shouldRemoveContainer = history.every((item) => item.key !== currentItem.key);\n  if (shouldRemoveContainer) {\n    delete currentState.containers[currentItem.key];\n  }\n  const current = currentState.current - 1;\n  const previous = currentState.current;\n  const { containerIsRemoved, containerVisualIndex, previousTransition, visualIndex } = magicMotionPropsForRemove(\n    currentState,\n    target,\n    currentItem\n  );\n  const transitionForContainer = updateTransitions(\n    current,\n    previous,\n    currentState.history,\n    currentState.containerIndex,\n    currentState.transitionForContainer\n  );\n  return {\n    ...currentState,\n    current,\n    previous,\n    containerIsRemoved,\n    containerVisualIndex,\n    previousTransition,\n    visualIndex,\n    transitionForContainer\n  };\n}\nfunction magicMotionPropsForAdd(currentState, nextKey, shouldMoveForward) {\n  const update = {\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    containerIsRemoved: { ...currentState.containerIsRemoved }\n  };\n  if (shouldMoveForward) {\n    update.containerVisualIndex[nextKey] = currentState.history.length - 1;\n    update.containerIsRemoved[nextKey] = false;\n  } else {\n    const nextVisualIndex = currentState.containerVisualIndex[nextKey];\n    for (const [key7, visualIndex] of Object.entries(currentState.containerVisualIndex)) {\n      if (nextVisualIndex !== void 0 && visualIndex > nextVisualIndex) {\n        update.containerIsRemoved[key7] = true;\n      }\n    }\n  }\n  return update;\n}\nfunction magicMotionPropsForRemove(currentState, target, currentItem) {\n  const validTargets = [target.key, currentItem.key];\n  const nextValidTarget = currentState.history[currentState.history.length - 2];\n  const previousTransition = currentState.previousTransition === null ? null : { ...currentState.previousTransition };\n  const update = {\n    containerIsRemoved: { ...currentState.containerIsRemoved },\n    containerVisualIndex: { ...currentState.containerVisualIndex },\n    previousTransition,\n    visualIndex: currentState.visualIndex\n  };\n  if (nextValidTarget)\n    validTargets.push(nextValidTarget.key);\n  const targetVisualIndex = currentState.containerVisualIndex[target.key];\n  const currentVisualIndex = currentState.containerVisualIndex[currentItem.key];\n  const shouldRemoveLastKey = targetVisualIndex !== void 0 && currentVisualIndex !== void 0 && targetVisualIndex <= currentVisualIndex || target.visualIndex !== void 0 && target.visualIndex < currentState.history.length - 1;\n  const nextIndex = target.visualIndex;\n  if (shouldRemoveLastKey) {\n    update.containerIsRemoved[currentItem.key] = true;\n    update.containerVisualIndex[target.key] = nextIndex !== void 0 ? nextIndex : currentState.history.length - 1;\n  } else {\n    update.visualIndex = currentState.visualIndex + 1;\n    update.containerVisualIndex[target.key] = currentState.visualIndex + 1;\n  }\n  if (currentItem.transition.withMagicMotion)\n    update.previousTransition = currentItem.transition || null;\n  currentState.containerIsRemoved[target.key] = false;\n  return update;\n}\nfunction findLatestHistoryIndex(key7, history) {\n  var _a;\n  for (let index = history.length; index > history.length; index--) {\n    if (((_a = history[index]) == null ? void 0 : _a.key) === key7)\n      return index;\n  }\n  return -1;\n}\nfunction updateTransitions(current, previous, history, containerIndex, transitionForContainer) {\n  const transitions = { ...transitionForContainer };\n  for (const [key7, screenIndex] of Object.entries(containerIndex)) {\n    const transition = transitionForScreen(screenIndex, { current, previous, history });\n    if (transition) {\n      transitions[key7] = transition;\n    }\n  }\n  return transitions;\n}\nfunction isNextTargetForward(key7, index, removed, history) {\n  if (removed || index === void 0)\n    return true;\n  if (index === 0)\n    return false;\n  const forwardHistory = history.slice(index, history.length);\n  if (forwardHistory.findIndex((item) => item.key === key7) > -1)\n    return true;\n  const backwardsHistory = history.slice(0, index - 1);\n  if (backwardsHistory.findIndex((item) => item.key === key7) > -1)\n    return false;\n  return true;\n}\nfunction transitionForScreen(screenIndex, stackState) {\n  const { current, previous, history } = stackState;\n  if (screenIndex !== current && screenIndex !== previous)\n    return void 0;\n  if (screenIndex === current && current > previous) {\n    const item = history[screenIndex];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current > previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === current && current < previous) {\n    const item = history[screenIndex + 1];\n    return sequence(\"enter\", item == null ? void 0 : item.transition.exit, item == null ? void 0 : item.transition.animation);\n  }\n  if (screenIndex === previous && current < previous) {\n    const item = history[screenIndex];\n    return sequence(\"exit\", item == null ? void 0 : item.transition.enter, item == null ? void 0 : item.transition.animation);\n  }\n}\nvar allAnimatableKeys = Object.keys(allAnimatableProperties);\nfunction sequence(direction, transition, animation) {\n  const value = {};\n  const from = {};\n  allAnimatableKeys.forEach((property) => {\n    value[property] = allAnimatableProperties[property];\n    from[property] = {\n      ...animation,\n      from: allAnimatableProperties[property]\n    };\n  });\n  if (transition) {\n    Object.keys(transition).forEach((property) => {\n      if (transition[property] === void 0)\n        return;\n      const transitionTo = transition[property];\n      const transitionFrom = typeof transition[property] === \"string\" ? `${allAnimatableProperties[property]}%` : allAnimatableProperties[property];\n      value[property] = direction === \"enter\" ? transitionFrom : transitionTo;\n      from[property] = {\n        ...animation,\n        from: direction === \"enter\" ? transitionTo : transitionFrom,\n        velocity: 0\n      };\n    });\n  }\n  return {\n    ...value,\n    transition: {\n      ...from\n    }\n  };\n}\n\n// ../../library/src/components/Navigation.tsx\nvar NavigationConsumer = NavigationContext.Consumer;\nvar NavigationCallbackContext = React44.createContext(void 0);\nvar NavigationCallbackProvider = NavigationCallbackContext.Provider;\nvar IsInitialNavigationContext = React44.createContext(void 0);\nvar Navigation = class extends Component6 {\n  constructor(props) {\n    var _a;\n    super(props);\n    this.lastEventTimeStamp = null;\n    this.state = defaultState();\n    this.navigationAction = (action) => {\n      if (!this.props.enabled && this.state.history.length > 0)\n        return;\n      const newState = reduceNavigationStateForAction(this.state, action);\n      if (!newState)\n        return;\n      const { skipLayoutAnimation } = this.props;\n      const historyItem = newState.history[newState.current];\n      const withMagicMotion = action.type === \"add\" && action.transition.withMagicMotion || action.type === \"forward\" && (historyItem == null ? void 0 : historyItem.transition.withMagicMotion) || action.type === \"remove\" && !!newState.previousTransition;\n      const updateState = () => {\n        var _a;\n        this.setState(newState);\n        if (historyItem == null ? void 0 : historyItem.key) {\n          (_a = this.context) == null ? void 0 : _a.call(this, historyItem.key);\n        }\n      };\n      if (skipLayoutAnimation && !withMagicMotion) {\n        skipLayoutAnimation(updateState);\n      } else {\n        updateState();\n      }\n    };\n    this.goBack = () => {\n      var _a;\n      if (this.isSameEventTransition())\n        return;\n      this.lastEventTimeStamp = ((_a = globalThis.event) == null ? void 0 : _a.timeStamp) || null;\n      if (this.state.currentOverlay !== -1)\n        return this.navigationAction({ type: \"removeOverlay\" });\n      return this.navigationAction({ type: \"remove\" });\n    };\n    const component = this.props.children;\n    if (!component || !isReactChild(component) || !isReactElement(component))\n      return;\n    const transition = { ...TransitionDefaults.Instant };\n    const key7 = ((_a = component.key) == null ? void 0 : _a.toString()) || `stack-${this.state.historyItemId + 1}`;\n    const action = { type: \"add\", key: key7, transition, component };\n    const newState = reduceNavigationStateForAction(this.state, action);\n    if (!newState)\n      return;\n    this.state = newState;\n  }\n  componentDidMount() {\n    var _a;\n    injectComponentCSSRules();\n    const historyItem = this.state.history[this.state.current];\n    if (!historyItem)\n      return;\n    (_a = this.context) == null ? void 0 : _a.call(this, historyItem.key);\n  }\n  UNSAFE_componentWillReceiveProps(props) {\n    var _a;\n    const component = props[\"children\"];\n    if (!isReactChild(component) || !isReactElement(component))\n      return;\n    const key7 = (_a = component.key) == null ? void 0 : _a.toString();\n    if (!key7)\n      return;\n    if (this.state.history.length === 0) {\n      this.transition(component, TransitionDefaults.Instant);\n    } else {\n      this.navigationAction({ type: \"update\", key: key7, component });\n    }\n  }\n  componentWillUnmount() {\n    var _a, _b;\n    (_b = (_a = this.props).resetProjection) == null ? void 0 : _b.call(_a);\n  }\n  getStackState(options) {\n    const { current, previous, currentOverlay, previousOverlay } = this.state;\n    if (options.overCurrentContext) {\n      return {\n        current: currentOverlay,\n        previous: previousOverlay,\n        history: this.state.overlayStack\n      };\n    }\n    return {\n      current,\n      previous,\n      history: this.state.history\n    };\n  }\n  /**\n   * To prevent bubbling events from triggering multiple transitions,\n   * we ensure that the current event has a different timestamp then the event that triggered the last transition.\n   * We use Window.event to ensure that even transitions invoked by code components - and may not pass a reference to the event - are caught.\n   * This works better than measuring the time of transition calls with performance.now()\n   * because the time between calls can get longer and longer as more screens are added to the stack,\n   * preventing a deterministic time between transitions to be used to determine if they were triggered at the same time or not.\n   */\n  isSameEventTransition() {\n    if (!globalThis.event)\n      return false;\n    return this.lastEventTimeStamp === globalThis.event.timeStamp;\n  }\n  transition(component, transitionTraits, transitionOptions) {\n    var _a, _b;\n    if (this.isSameEventTransition())\n      return;\n    this.lastEventTimeStamp = ((_a = globalThis.event) == null ? void 0 : _a.timeStamp) || null;\n    if (!component || !isReactChild(component) || !isReactElement(component))\n      return;\n    const transition = { ...transitionTraits, ...transitionOptions };\n    const overCurrentContext = !!transition.overCurrentContext;\n    if (overCurrentContext)\n      return this.navigationAction({ type: \"addOverlay\", transition, component });\n    const key7 = ((_b = component.key) == null ? void 0 : _b.toString()) || `stack-${this.state.historyItemId + 1}`;\n    this.navigationAction({ type: \"add\", key: key7, transition, component });\n  }\n  instant(component) {\n    this.transition(component, TransitionDefaults.Instant, void 0);\n  }\n  fade(component, options) {\n    this.transition(component, TransitionDefaults.Fade, options);\n  }\n  push(component, options) {\n    this.transition(component, pushTransition(options), options);\n  }\n  modal(component, options) {\n    this.transition(component, TransitionDefaults.Modal, options);\n  }\n  overlay(component, options) {\n    this.transition(component, overlayTransition(options), options);\n  }\n  flip(component, options) {\n    this.transition(component, flipTransition(options), options);\n  }\n  magicMotion(component, options) {\n    this.transition(component, TransitionDefaults.MagicMotion, options);\n  }\n  customTransition(component, transition) {\n    this.transition(component, transition);\n  }\n  render() {\n    var _a, _b, _c, _d, _e;\n    const stackState = this.getStackState({ overCurrentContext: false });\n    const overlayStackState = this.getStackState({ overCurrentContext: true });\n    const activeOverlay = activeOverlayItem(overlayStackState);\n    const isOverlayVisible = overlayStackState.current > -1;\n    const isInitial = this.state.history.length === 1;\n    const contentContainers = [];\n    for (const [key7, component] of Object.entries(this.state.containers)) {\n      const index = this.state.containerIndex[key7];\n      assert(index !== void 0, \"Container's index must be registered\");\n      const visualIndex = this.state.containerVisualIndex[key7];\n      assert(visualIndex !== void 0, \"Container's visual index must be registered\");\n      const removed = this.state.containerIsRemoved[key7];\n      const historyItem = this.state.history[index];\n      const transitionProps = this.state.transitionForContainer[key7];\n      const isCurrent = index === this.state.current;\n      const isPrevious = index === this.state.previous;\n      const areMagicMotionLayersPresent = isCurrent ? false : removed;\n      const withMagicMotion = ((_a = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _a.withMagicMotion) || isCurrent && !!this.state.previousTransition;\n      contentContainers.push(\n        /* @__PURE__ */ React44.createElement(\n          NavigationContainer,\n          {\n            key: key7,\n            id: key7,\n            index: visualIndex,\n            isInitial,\n            isCurrent,\n            isPrevious,\n            isOverlayed: isOverlayVisible,\n            visible: isCurrent || isPrevious,\n            position: (_b = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _b.position,\n            instant: isInstantContainerTransition(index, stackState),\n            transitionProps,\n            animation: animationPropsForContainer(index, stackState),\n            backfaceVisible: getBackfaceVisibleForScreen(index, stackState),\n            exitAnimation: (_c = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _c.animation,\n            exitBackfaceVisible: (_d = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _d.backfaceVisible,\n            exitProps: (_e = historyItem == null ? void 0 : historyItem.transition) == null ? void 0 : _e.enter,\n            withMagicMotion,\n            areMagicMotionLayersPresent: areMagicMotionLayersPresent ? false : void 0\n          },\n          /* @__PURE__ */ React44.createElement(MagicMotionCrossfadeRoot, null, containerContent({\n            component,\n            transition: historyItem == null ? void 0 : historyItem.transition\n          }))\n        )\n      );\n    }\n    const overlayContainers = this.state.overlayStack.map((item, stackIndex) => {\n      return /* @__PURE__ */ React44.createElement(\n        NavigationContainer,\n        {\n          isLayeredContainer: true,\n          key: item.key,\n          isCurrent: stackIndex === this.state.currentOverlay,\n          position: item.transition.position,\n          initialProps: initialPropsForOverlay(stackIndex, overlayStackState),\n          transitionProps: transitionPropsForOverlay(stackIndex, overlayStackState),\n          instant: isInstantContainerTransition(stackIndex, overlayStackState, true),\n          animation: animationPropsForContainer(stackIndex, overlayStackState),\n          exitProps: item.transition.enter,\n          visible: containerIsVisible(stackIndex, overlayStackState),\n          backdropColor: backdropColorForTransition(item.transition),\n          backfaceVisible: getBackfaceVisibleForOverlay(stackIndex, overlayStackState),\n          onTapBackdrop: backdropTapAction(item.transition, this.goBack),\n          index: this.state.current + 1 + stackIndex\n        },\n        containerContent({\n          component: item.component,\n          transition: item.transition\n        })\n      );\n    });\n    return /* @__PURE__ */ React44.createElement(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"NavigationRoot\",\n        top: 0,\n        left: 0,\n        width: \"100%\",\n        height: \"100%\",\n        position: \"relative\",\n        style: { overflow: \"hidden\", backgroundColor: \"unset\", pointerEvents: void 0, ...this.props.style }\n      },\n      /* @__PURE__ */ React44.createElement(NavigationContext.Provider, { value: this }, /* @__PURE__ */ React44.createElement(IsInitialNavigationContext.Provider, { value: isInitial }, /* @__PURE__ */ React44.createElement(\n        NavigationContainer,\n        {\n          isLayeredContainer: true,\n          position: void 0,\n          initialProps: {},\n          instant: false,\n          transitionProps: transitionPropsForStackWrapper(activeOverlay),\n          animation: animationForStackWrapper(activeOverlay),\n          backfaceVisible: backfaceVisibleForStackWrapper(activeOverlay),\n          visible: true,\n          backdropColor: void 0,\n          onTapBackdrop: void 0,\n          index: 0\n        },\n        /* @__PURE__ */ React44.createElement(LayoutIdProvider, null, /* @__PURE__ */ React44.createElement(SharedLayoutRoot, null, /* @__PURE__ */ React44.createElement(AnimatePresence, { presenceAffectsLayout: false }, contentContainers)))\n      ), /* @__PURE__ */ React44.createElement(AnimatePresence, null, overlayContainers)))\n    );\n  }\n};\nNavigation.defaultProps = {\n  enabled: true\n};\nNavigation.contextType = NavigationCallbackContext;\nvar animationDefault = {\n  stiffness: 500,\n  damping: 50,\n  restDelta: 1,\n  type: \"spring\"\n};\nfunction activeOverlayItem(overlayStack) {\n  let currentOverlayItem;\n  let previousOverlayItem;\n  if (overlayStack.current !== -1) {\n    currentOverlayItem = overlayStack.history[overlayStack.current];\n  } else {\n    previousOverlayItem = overlayStack.history[overlayStack.previous];\n  }\n  return { currentOverlayItem, previousOverlayItem };\n}\nfunction transitionPropsForStackWrapper({ currentOverlayItem }) {\n  return currentOverlayItem && currentOverlayItem.transition.exit;\n}\nfunction animationForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem && currentOverlayItem.transition.animation) {\n    return currentOverlayItem.transition.animation;\n  }\n  if (previousOverlayItem && previousOverlayItem.transition.animation) {\n    return previousOverlayItem.transition.animation;\n  }\n  return animationDefault;\n}\nfunction backfaceVisibleForStackWrapper({ currentOverlayItem, previousOverlayItem }) {\n  if (currentOverlayItem)\n    return currentOverlayItem.transition.backfaceVisible;\n  return previousOverlayItem && previousOverlayItem.transition.backfaceVisible;\n}\nfunction backdropColorForTransition(transition) {\n  if (transition.backdropColor)\n    return transition.backdropColor;\n  if (transition.overCurrentContext)\n    return \"rgba(4,4,15,.4)\";\n  return void 0;\n}\nfunction getBackfaceVisibleForOverlay(containerIndex, stackState) {\n  const { current, history } = stackState;\n  if (containerIndex === current) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else if (containerIndex < current) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.backfaceVisible;\n    }\n    return true;\n  }\n}\nfunction initialPropsForOverlay(containerIndex, stackState) {\n  const navigationItem = stackState.history[containerIndex];\n  if (navigationItem)\n    return navigationItem.transition.enter;\n}\nfunction getBackfaceVisibleForScreen(screenIndex, stackState) {\n  var _a, _b, _c, _d;\n  const { current, previous, history } = stackState;\n  if (screenIndex === previous && current > previous || screenIndex === current && current < previous) {\n    return (_b = (_a = history[screenIndex + 1]) == null ? void 0 : _a.transition) == null ? void 0 : _b.backfaceVisible;\n  }\n  return (_d = (_c = history[screenIndex]) == null ? void 0 : _c.transition) == null ? void 0 : _d.backfaceVisible;\n}\nfunction transitionPropsForOverlay(overlayIndex, stackState) {\n  const { current, history } = stackState;\n  if (overlayIndex === current) {\n    return;\n  } else if (overlayIndex < current) {\n    const navigationItem = history[overlayIndex + 1];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.exit;\n    }\n  } else {\n    const navigationItem = history[overlayIndex];\n    if (navigationItem && navigationItem.transition) {\n      return navigationItem.transition.enter;\n    }\n  }\n}\nfunction animationPropsForContainer(containerIndex, stackState) {\n  const { current, previous, history } = stackState;\n  const containerCurrent = previous > current ? previous : current;\n  if (containerIndex < containerCurrent) {\n    const navigationItem = history[containerIndex + 1];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else if (containerIndex !== containerCurrent) {\n    const navigationItem = history[containerIndex];\n    if (navigationItem && navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  } else {\n    const navigationItem = history[containerIndex];\n    if (navigationItem == null ? void 0 : navigationItem.transition.animation) {\n      return navigationItem.transition.animation;\n    }\n  }\n  return animationDefault;\n}\nfunction isInstantContainerTransition(containerIndex, stackState, overCurrentContext) {\n  const { current, previous, history } = stackState;\n  if (overCurrentContext && history.length > 1)\n    return true;\n  if (containerIndex !== previous && containerIndex !== current)\n    return true;\n  if (current === previous)\n    return true;\n  return false;\n}\nfunction containerIsVisible(containerIndex, stackState) {\n  const { current, previous } = stackState;\n  if (containerIndex > current && containerIndex > previous)\n    return false;\n  if (containerIndex === current)\n    return true;\n  return false;\n}\nfunction containerContent(item) {\n  const content = React44.Children.map(\n    item.component,\n    (child) => {\n      var _a, _b;\n      if (!isReactChild(child) || !isReactElement(child) || !child.props) {\n        return child;\n      }\n      const props = {\n        style: (_a = child.props.style) != null ? _a : {}\n      };\n      const position = (_b = item == null ? void 0 : item.transition) == null ? void 0 : _b.position;\n      const shouldStretchWidth = !position || position.left !== void 0 && position.right !== void 0;\n      const shouldStretchHeight = !position || position.top !== void 0 && position.bottom !== void 0;\n      const canStretchStyle = \"style\" in child.props ? isObject2(child.props.style) : true;\n      if (shouldStretchWidth) {\n        const canStretchWidth = \"width\" in child.props;\n        if (canStretchWidth)\n          props.width = \"100%\";\n        if (canStretchStyle)\n          props.style.width = \"100%\";\n      }\n      if (shouldStretchHeight) {\n        const canStretchHeight = \"height\" in child.props;\n        if (canStretchHeight)\n          props.height = \"100%\";\n        if (canStretchStyle)\n          props.style.height = \"100%\";\n      }\n      return React44.cloneElement(child, props);\n    }\n  );\n  return content;\n}\nfunction backdropTapAction(transition, goBackAction) {\n  if (transition.goBackOnTapOutside !== false)\n    return goBackAction;\n}\nfunction NavigationWrapper(props) {\n  const resetProjection = useResetProjection();\n  const skipLayoutAnimation = useInstantLayoutTransition();\n  return /* @__PURE__ */ React44.createElement(Navigation, { ...props, resetProjection, skipLayoutAnimation }, props.children);\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nvar import_process5 = __toESM(require_browser(), 1);\nimport React48 from \"react\";\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nimport { useCallback as useCallback3, useRef as useRef7 } from \"react\";\n\n// ../../library/src/render/utils/debounce.ts\nfunction debounce(fn, time2) {\n  let timeout;\n  const debounced = (...args) => {\n    safeWindow.clearTimeout(timeout);\n    timeout = safeWindow.setTimeout(fn, time2, ...args);\n  };\n  const cancel = () => {\n    safeWindow.clearTimeout(timeout);\n  };\n  debounced.cancel = cancel;\n  return debounced;\n}\n\n// ../../library/src/components/Scroll/useWheelScroll.ts\nfunction useWheelScroll(ref, {\n  enabled,\n  initial,\n  prev,\n  direction,\n  constraints,\n  offsetX,\n  offsetY,\n  onScrollStart,\n  onScroll,\n  onScrollEnd\n}) {\n  const isWheelScrollActive = useRef7(false);\n  const getPointData = useCallback3(() => {\n    const point = getPoint(offsetX, offsetY);\n    const data2 = {\n      point,\n      velocity: { x: offsetX.getVelocity(), y: offsetY.getVelocity() },\n      offset: { x: point.x - initial.x, y: point.y - initial.y },\n      delta: { x: point.x - prev.x, y: point.y - prev.y }\n    };\n    prev.x = point.x;\n    prev.y = point.y;\n    return data2;\n  }, []);\n  let handler;\n  if (enabled) {\n    let clampX = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.left, constraints.current.right);\n    }, clampY = function(v) {\n      return constraints.current === null ? v : clamp2(v, constraints.current.top, constraints.current.bottom);\n    }, updateX = function(delta) {\n      offsetX.stop();\n      offsetX.set(clampX(offsetX.get() - delta));\n    }, updateY = function(delta) {\n      offsetY.stop();\n      offsetY.set(clampY(offsetY.get() - delta));\n    };\n    const debouncedOnScrollEnd = debounce(() => {\n      onScrollEnd && onScrollEnd(getPointData());\n      isWheelScrollActive.current = false;\n    }, 200);\n    handler = (e) => {\n      e.preventDefault();\n      if (!isWheelScrollActive.current) {\n        const x = offsetX.get();\n        const y = offsetY.get();\n        initial.x = x;\n        initial.y = y;\n        prev.x = x;\n        prev.y = y;\n        onScrollStart && onScrollStart(getPointData());\n        isWheelScrollActive.current = true;\n      }\n      switch (direction) {\n        case \"horizontal\":\n          updateX(e.deltaX);\n          break;\n        case \"vertical\":\n          updateY(e.deltaY);\n          break;\n        default:\n          updateX(e.deltaX);\n          updateY(e.deltaY);\n      }\n      onScroll && onScroll(getPointData());\n      debouncedOnScrollEnd();\n    };\n  }\n  useDomEvent(ref, \"wheel\", handler, { passive: false });\n}\nfunction getPoint(x, y) {\n  return { x: x.get(), y: y.get() };\n}\n\n// ../../library/src/components/utils/paddingFromProps.ts\nfunction hasPaddingPerSide(props) {\n  const { paddingPerSide, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  return paddingPerSide !== false && (paddingTop !== void 0 || paddingBottom !== void 0 || paddingLeft !== void 0 || paddingRight !== void 0);\n}\nfunction paddingFromProps(props) {\n  const { padding = 0, paddingTop, paddingBottom, paddingLeft, paddingRight } = props;\n  if (hasPaddingPerSide(props)) {\n    return {\n      top: paddingTop !== void 0 ? paddingTop : padding,\n      bottom: paddingBottom !== void 0 ? paddingBottom : padding,\n      left: paddingLeft !== void 0 ? paddingLeft : padding,\n      right: paddingRight !== void 0 ? paddingRight : padding\n    };\n  }\n  return {\n    top: padding,\n    bottom: padding,\n    left: padding,\n    right: padding\n  };\n}\nfunction makePaddingString({\n  top,\n  left,\n  bottom,\n  right\n}) {\n  return `${top}px ${right}px ${bottom}px ${left}px`;\n}\n\n// ../../library/src/components/Page/PageContainer.tsx\nimport React47 from \"react\";\n\n// ../../library/src/components/Stack/Stack.tsx\nimport React46 from \"react\";\n\n// ../../library/src/modules/useSafariGapFix.tsx\nimport React45 from \"react\";\nfunction triggerStackReflow(element, display) {\n  if (!element)\n    return;\n  element.style.display = \"none\";\n  void element.offsetHeight;\n  element.style.display = display;\n}\nvar requiresPolyfill = Boolean(isSafari() && safariVersion() < 15.4);\nfunction useSafariGapFix(gap, ref, display) {\n  if (!requiresPolyfill)\n    return void 0;\n  const isInitialRender = React45.useRef(true);\n  const hasTriggeredReflow = React45.useRef(false);\n  const prevGapValue = React45.useRef(gap);\n  hasTriggeredReflow.current = false;\n  React45.useLayoutEffect(() => {\n    prevGapValue.current = gap;\n    if (isInitialRender.current) {\n      isInitialRender.current = false;\n      return;\n    }\n    if (!hasTriggeredReflow.current) {\n      triggerStackReflow(ref.current, display);\n      hasTriggeredReflow.current = true;\n    }\n  }, [gap, ref, prevGapValue, display]);\n  return React45.useCallback(() => {\n    if (prevGapValue.current === gap)\n      return;\n    if (!hasTriggeredReflow.current)\n      triggerStackReflow(ref.current, display);\n    hasTriggeredReflow.current = true;\n  }, [gap, ref]);\n}\n\n// ../../library/src/components/Stack/Stack.tsx\nvar Stack = /* @__PURE__ */ (() => {\n  const StackInner = React46.memo(\n    React46.forwardRef(function StackInner2(stackProps, forwardedRef) {\n      var _a, _b;\n      const {\n        as = \"div\",\n        direction = \"vertical\",\n        distribution = \"start\",\n        alignment = \"center\",\n        gap = 10,\n        wrap: wrap2 = false,\n        useFlexboxGap: externalUseFlexboxGap = true,\n        children,\n        style: styleProp,\n        className,\n        willChangeTransform,\n        __fromCodeComponentNode,\n        parentSize,\n        __contentWrapperStyle,\n        ...containerProps\n      } = stackProps;\n      const useFlexboxGap = Boolean(externalUseFlexboxGap || wrap2);\n      const stackRef = React46.useRef(null);\n      const onBeforeLayoutMeasure = useSafariGapFix(gap, stackRef, \"flex\");\n      const flexDirection = toFlexDirection(direction);\n      const isReverse = isReverseDirection(flexDirection);\n      const justifyContent = toJustifyOrAlignment(distribution);\n      const padding = hasPaddingPerSide(containerProps) || containerProps.padding ? makePaddingString(paddingFromProps(containerProps)) : void 0;\n      const style = { ...styleProp };\n      Layer.applyWillChange({ willChangeTransform }, style, true);\n      if (__fromCodeComponentNode && !constraintsEnabled(unwrapFrameProps(containerProps))) {\n        containerProps.width = \"100%\";\n        containerProps.height = \"100%\";\n        containerProps._constraints = { enabled: true };\n      }\n      const layoutId = useLayoutId(stackProps);\n      const { children: _children, props } = processOverrideForwarding(containerProps, children);\n      const widthType = (_a = containerProps.widthType) != null ? _a : containerProps.width === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */;\n      const heightType = (_b = containerProps.heightType) != null ? _b : containerProps.height === \"auto\" ? 2 /* Auto */ : 0 /* FixedNumber */;\n      const fractionChildren = handleFraction(_children, direction, widthType, heightType);\n      const gapChildren = wrapInGapElementForLegacyGap(\n        fractionChildren,\n        gap,\n        flexDirection,\n        justifyContent,\n        useFlexboxGap,\n        wrap2\n      );\n      const content = useProvideParentSize(gapChildren, parentSize != null ? parentSize : 1 /* Disabled */);\n      const attributes = {\n        \"data-framer-component-type\": \"Stack\"\n      };\n      const fromCanvasComponent = containerProps.__fromCanvasComponent;\n      if (fromCanvasComponent)\n        attributes[\"data-framer-generated\"] = true;\n      const alignItems = toJustifyOrAlignment(alignment);\n      const contentWrapperStyle = {\n        display: \"flex\",\n        flexDirection,\n        flexWrap: wrap2 ? \"wrap\" : \"nowrap\",\n        justifyContent,\n        alignItems,\n        alignContent: alignItems,\n        padding,\n        ...__contentWrapperStyle\n      };\n      const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n      if (useFlexboxGap && gapEnabled) {\n        const gapSupportedInMainAxis = isGapSupportedInMainAxis(justifyContent);\n        if (gapSupportedInMainAxis || direction !== \"horizontal\") {\n          contentWrapperStyle[\"--stack-native-column-gap\"] = `${gap}px`;\n        }\n        if (gapSupportedInMainAxis || direction !== \"vertical\") {\n          contentWrapperStyle[\"--stack-native-row-gap\"] = `${gap}px`;\n        }\n      }\n      if (contentWrapperStyle.width === void 0) {\n        contentWrapperStyle.width = widthType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (contentWrapperStyle.height === void 0) {\n        contentWrapperStyle.height = heightType === 2 /* Auto */ ? \"min-content\" : \"100%\";\n      }\n      if (fromCanvasComponent) {\n        if (styleProp == null ? void 0 : styleProp.width)\n          contentWrapperStyle.width = styleProp == null ? void 0 : styleProp.width;\n        if (styleProp == null ? void 0 : styleProp.height)\n          contentWrapperStyle.height = styleProp == null ? void 0 : styleProp.height;\n      }\n      return /* @__PURE__ */ React46.createElement(\n        FrameWithMotion,\n        {\n          as,\n          background: fromCanvasComponent ? void 0 : \"none\",\n          ...props,\n          layoutId,\n          ref: useForwardedRef(forwardedRef, stackRef),\n          ...attributes,\n          style,\n          className,\n          layoutScroll: true\n        },\n        /* @__PURE__ */ React46.createElement(\n          motion.div,\n          {\n            \"data-framer-stack-content-wrapper\": true,\n            \"data-framer-stack-direction-reverse\": isReverse,\n            \"data-framer-stack-gap-enabled\": gapEnabled,\n            style: contentWrapperStyle,\n            onBeforeLayoutMeasure\n          },\n          content\n        )\n      );\n    })\n  );\n  StackInner[\"defaultProps\"] = {\n    distribution: \"start\"\n  };\n  StackInner.displayName = \"Stack\";\n  addPropertyControls(StackInner, {\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"vertical\"\n    },\n    distribution: {\n      type: \"enum\" /* Enum */,\n      options: [\"start\", \"center\", \"end\", \"space-between\", \"space-around\", \"space-evenly\"],\n      optionTitles: [\"Start\", \"Center\", \"End\", \"Space Between\", \"Space Around\", \"Space Evenly\"],\n      title: \"Distribute\",\n      defaultValue: \"space-around\"\n    },\n    alignment: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      options: [\"start\", \"center\", \"end\"],\n      title: \"Align\",\n      defaultValue: \"center\"\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      hidden: (props) => {\n        return props.distribution !== void 0 && [\"space-between\", \"space-around\", \"space-evenly\"].includes(props.distribution);\n      },\n      defaultValue: 10\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"t\", \"r\", \"b\", \"l\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    }\n  });\n  return StackInner;\n})();\nfunction isFractionDimension(dimension) {\n  return typeof dimension === \"string\" && dimension.endsWith(\"fr\");\n}\nfunction fraction(dimension) {\n  const value = parseFloat(dimension);\n  return isFiniteNumber(value) ? value : 0;\n}\nfunction handleFraction(children, direction, widthType, heightType) {\n  return React46.Children.map(children, (child) => {\n    if (!isReactChild(child) || !isReactElement(child))\n      return;\n    const isVertical = direction === \"vertical\";\n    const style = {};\n    let hasFraction = false;\n    const { style: propsStyle, size: size2 } = child.props;\n    let { width, height } = child.props;\n    if (size2 !== void 0) {\n      if (width === void 0)\n        width = size2;\n      if (height === void 0)\n        height = size2;\n    }\n    let newWidth = width;\n    let newHeight = height;\n    if (isFractionDimension(width)) {\n      hasFraction = true;\n      hasFraction = true;\n      if (isVertical) {\n        if (widthType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newWidth = \"auto\";\n        } else {\n          newWidth = `${fraction(width) * 100}%`;\n        }\n      } else {\n        newWidth = 1;\n        style.flexGrow = fraction(width);\n        style.flexBasis = 0;\n      }\n      style.width = newWidth;\n    }\n    if (isFractionDimension(height)) {\n      hasFraction = true;\n      if (isVertical) {\n        newHeight = 1;\n        style.flexGrow = fraction(height);\n        style.flexBasis = 0;\n      } else {\n        if (heightType === 2 /* Auto */) {\n          style.alignSelf = \"stretch\";\n          newHeight = \"auto\";\n        } else {\n          newHeight = `${fraction(height) * 100}%`;\n        }\n      }\n      style.height = newHeight;\n    }\n    if (!hasFraction)\n      return child;\n    const nextStyle = { ...propsStyle, ...style };\n    return React46.cloneElement(child, {\n      width: newWidth,\n      height: newHeight,\n      style: nextStyle\n    });\n  });\n}\nfunction isGapSupportedInMainAxis(justifyContent) {\n  if (!justifyContent)\n    return false;\n  return ![\"space-between\", \"space-around\", \"space-evenly\", \"stretch\"].includes(justifyContent);\n}\nfunction isGapEnabled(gap, justifyContent, wrap2) {\n  if (!gap) {\n    return false;\n  }\n  if (!wrap2 && !isGapSupportedInMainAxis(justifyContent)) {\n    return false;\n  }\n  return true;\n}\nfunction wrapInGapElementForLegacyGap(children, gap, direction, justifyContent, useFlexboxGap, wrap2) {\n  const gapStyle = {\n    // We need the wrapper to have `display: contents` to prevent the child\n    // margins from collapsing when using the fallback gap solution.\n    // https://codesandbox.io/s/dreamy-haslett-01ie5?file=/src/styles.css\n    display: \"contents\"\n  };\n  const gapEnabled = isGapEnabled(gap, justifyContent, wrap2);\n  if (gapEnabled) {\n    const isVertical = isVerticalDirection(direction);\n    gapStyle[\"--stack-gap-x\"] = `${isVertical ? 0 : gap}px`;\n    gapStyle[\"--stack-gap-y\"] = `${isVertical ? gap : 0}px`;\n  }\n  return /* @__PURE__ */ React46.createElement(\n    \"div\",\n    {\n      \"data-framer-legacy-stack-gap-enabled\": gapEnabled,\n      \"data-framer-stack-flexbox-gap\": useFlexboxGap,\n      style: gapStyle\n    },\n    children\n  );\n}\nfunction toFlexDirection(direction) {\n  switch (direction) {\n    case \"vertical\":\n      return \"column\";\n    case \"horizontal\":\n      return \"row\";\n    default:\n      return direction;\n  }\n}\nfunction isVerticalDirection(direction) {\n  return direction === \"column\" || direction === \"column-reverse\";\n}\nfunction isReverseDirection(direction) {\n  switch (direction) {\n    case \"column-reverse\":\n    case \"row-reverse\":\n      return true;\n    default:\n      return false;\n  }\n}\nfunction toJustifyOrAlignment(distribution) {\n  switch (distribution) {\n    case \"start\":\n      return \"flex-start\";\n    case \"end\":\n      return \"flex-end\";\n    default:\n      return distribution;\n  }\n}\nfunction useForwardedRef(forwardedRef, innerRef) {\n  return (element) => {\n    innerRef.current = element;\n    if (typeof forwardedRef === \"function\") {\n      forwardedRef(element);\n    } else if (forwardedRef) {\n      forwardedRef.current = element;\n    }\n  };\n}\n\n// ../../library/src/components/Page/PageContainer.tsx\nvar pageContentWrapperType = \"PageContentWrapper\";\nfunction PageContainer({\n  children,\n  effect,\n  dragEnabled,\n  direction,\n  contentHeight,\n  contentWidth,\n  alignment,\n  gap,\n  isLastPage,\n  contentOffsetRef,\n  constraintsRef,\n  directionLock,\n  onDragStart,\n  onDrag,\n  onDragEnd,\n  layoutId\n}) {\n  const isHorizontalDirection = direction === \"horizontal\";\n  const dragAxis = isHorizontalDirection ? \"x\" : \"y\";\n  const hasHorizontalGap = isHorizontalDirection && !isLastPage && gap;\n  const hasVerticalGap = !isHorizontalDirection && !isLastPage && gap;\n  const hasAutoWidth = contentWidth !== \"stretch\" && isHorizontalDirection;\n  const hasAutoHeight = contentHeight !== \"stretch\" && !isHorizontalDirection;\n  const wrapperWidth = hasAutoWidth ? \"auto\" : \"100%\";\n  const wrapperHeight = hasAutoHeight ? \"auto\" : \"100%\";\n  const containerWidth = hasHorizontalGap && wrapperWidth === \"100%\" ? `calc(100% + ${gap}px)` : wrapperWidth;\n  const containerHeight = hasVerticalGap && wrapperHeight === \"100%\" ? `calc(100% + ${gap}px)` : wrapperHeight;\n  return /* @__PURE__ */ React47.createElement(\n    FrameWithMotion,\n    {\n      position: \"relative\",\n      \"data-framer-component-type\": \"PageContainer\",\n      width: containerWidth,\n      height: containerHeight,\n      layoutId: layoutId ? `${layoutId}-container` : void 0,\n      backgroundColor: \"transparent\",\n      drag: dragEnabled ? dragAxis : false,\n      dragDirectionLock: directionLock,\n      _dragX: contentOffsetRef.current.x,\n      _dragY: contentOffsetRef.current.y,\n      dragConstraints: constraintsRef.current,\n      onDrag,\n      onDragStart,\n      onDragEnd,\n      preserve3d: true,\n      style: {\n        pointerEvents: void 0,\n        paddingRight: hasHorizontalGap ? gap : 0,\n        paddingBottom: hasVerticalGap ? gap : 0\n      }\n    },\n    /* @__PURE__ */ React47.createElement(\n      FrameWithMotion,\n      {\n        position: \"relative\",\n        \"data-framer-component-type\": pageContentWrapperType,\n        width: wrapperWidth,\n        height: wrapperHeight,\n        preserve3d: false,\n        backgroundColor: \"transparent\",\n        key: effect ? Object.keys(effect).join(\"\") : \"\",\n        style: {\n          ...effect,\n          pointerEvents: void 0,\n          display: \"flex\",\n          flexDirection: isHorizontalDirection ? \"row\" : \"column\",\n          alignItems: alignment && toJustifyOrAlignment(alignment)\n        }\n      },\n      children\n    )\n  );\n}\n\n// ../../library/src/components/Page/EmulatedPage.tsx\nvar Page = /* @__PURE__ */ React48.forwardRef(function Page2(props, forwardedRef) {\n  var _a;\n  const {\n    direction = \"horizontal\",\n    contentWidth = \"stretch\",\n    contentHeight = \"stretch\",\n    alignment = \"start\",\n    currentPage = 0,\n    animateCurrentPageUpdate = true,\n    gap: gapValue = 10,\n    padding = 0,\n    momentum = false,\n    dragEnabled = true,\n    defaultEffect = \"none\",\n    background = \"transparent\",\n    overflow = \"hidden\",\n    __fromCodeComponentNode,\n    effect,\n    children,\n    contentOffsetX,\n    contentOffsetY,\n    onChangePage,\n    onScrollStart,\n    onScroll,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n    directionLock,\n    onScrollEnd,\n    onDirectionLock,\n    onUpdate,\n    wheelEnabled = false,\n    layoutId: specificLayoutId,\n    ...rest\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"page\" });\n  const containerProps = { ...rest, background };\n  const hasMountedRef = React48.useRef(false);\n  const hasFixedSize = RenderTarget.hasRestrictions() && props.__fromCodeComponentNode && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height);\n  if (!hasFixedSize && __fromCodeComponentNode && !containerProps.__fromCanvasComponent) {\n    containerProps.width = \"100%\";\n    containerProps.height = \"100%\";\n    containerProps._constraints = { enabled: true };\n  }\n  const { initial, prev } = React48.useRef({\n    initial: { x: 0, y: 0 },\n    prev: { x: 0, y: 0 }\n  }).current;\n  const isHorizontal = direction === \"horizontal\";\n  let gap = gapValue;\n  if (gap < 0) {\n    warnOnce(`The 'gap' property of Page component can not be negative, but is ${gapValue}.`);\n    gap = 0;\n  }\n  injectComponentCSSRules();\n  const pageCount = React48.Children.count(children);\n  const maxOffsetRef = React48.useRef(0);\n  const constraints = React48.useRef({ top: 0, left: 0, right: 0, bottom: 0 });\n  const fallbackContainerRef = React48.useRef(null);\n  const containerRef = forwardedRef || fallbackContainerRef;\n  const scrollableRef = React48.useRef(null);\n  const pageEffectValuesRef = React48.useRef([]);\n  const pageRectsRef = React48.useRef([]);\n  const internalX = useMotionValue(isMotionValue2(contentOffsetX) ? 0 : contentOffsetX != null ? contentOffsetX : 0);\n  const internalY = useMotionValue(isMotionValue2(contentOffsetY) ? 0 : contentOffsetY != null ? contentOffsetY : 0);\n  const contentOffsetRef = React48.useRef({\n    x: isMotionValue2(contentOffsetX) ? contentOffsetX : internalX,\n    y: isMotionValue2(contentOffsetY) ? contentOffsetY : internalY\n  });\n  const currentContentPageRef = React48.useRef(currentPage);\n  const propsBoundedCurrentPageRef = React48.useRef(currentPage);\n  const latestPropsRef = React48.useRef(props);\n  latestPropsRef.current = props;\n  const lastDirectionRef = React48.useRef(props.direction);\n  const snapToPage = useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal);\n  const [_, setForceUpdateCount] = React48.useState(0);\n  const containerSizeRef = React48.useRef({ width: 200, height: 200 });\n  if (hasFixedSize && isFiniteNumber(containerProps.width) && isFiniteNumber(containerProps.height)) {\n    containerSizeRef.current.width = containerProps.width;\n    containerSizeRef.current.height = containerProps.height;\n  }\n  const updateOnResize = React48.useCallback(() => {\n    if (!hasFixedSize)\n      setForceUpdateCount((v) => v + 1);\n  }, [hasFixedSize]);\n  React48.useEffect(() => {\n    if (RenderTarget.current() !== \"PREVIEW\" /* preview */)\n      return;\n    globalThis.addEventListener(\"resize\", updateOnResize);\n    return () => {\n      globalThis.removeEventListener(\"resize\", updateOnResize);\n    };\n  }, [updateOnResize]);\n  const applyEffects = () => {\n    pageEffectValuesRef.current.forEach((effectDictionary, index) => {\n      const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n      if (!effectDictionary || !values)\n        return;\n      for (const [key7, value] of Object.entries(values)) {\n        const effectValue = effectDictionary[key7];\n        if (isMotionValue2(effectValue)) {\n          effectValue.set(value);\n        }\n      }\n    });\n  };\n  const updateMaxOffsetFromPageContents = (containerSize) => {\n    const newPageContentRects = getPageContentRects(containerRef, containerSize, direction, gap);\n    if (newPageContentRects)\n      pageRectsRef.current = newPageContentRects;\n    const newMaxOffset = getMaxOffset(\n      containerSizeRef.current,\n      pageRectsRef.current,\n      direction,\n      latestPropsRef.current\n    );\n    if (newMaxOffset !== maxOffsetRef.current) {\n      maxOffsetRef.current = newMaxOffset;\n      constraints.current.top = -newMaxOffset;\n      constraints.current.left = -newMaxOffset;\n      if (RenderTarget.current() === \"CANVAS\" /* canvas */)\n        setForceUpdateCount((v) => v + 1);\n    }\n  };\n  const measureContainerSize = () => {\n    const element = containerRef.current;\n    if (!element)\n      return null;\n    const { offsetWidth, offsetHeight } = element;\n    const currentSize = containerSizeRef.current;\n    if (offsetWidth !== currentSize.width || offsetHeight !== currentSize.height) {\n      containerSizeRef.current = {\n        width: offsetWidth,\n        height: offsetHeight\n      };\n      return containerSizeRef.current;\n    }\n    return null;\n  };\n  const updateAndSnapToPage = (newPage, mount = false) => {\n    const newBoundedCurrentPage = getBoundedCurrentPage(newPage, pageCount);\n    const boundedCurrentPageDidChange = newBoundedCurrentPage !== propsBoundedCurrentPageRef.current;\n    if (boundedCurrentPageDidChange) {\n      propsBoundedCurrentPageRef.current = newBoundedCurrentPage;\n      updateCurrentPage(newBoundedCurrentPage, currentContentPageRef, !mount ? onChangePage : void 0);\n    }\n    const offset = offsetForPage(newBoundedCurrentPage, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    const animated = animateCurrentPageUpdate && RenderTarget.current() !== \"CANVAS\" /* canvas */ && !mount;\n    snapToPage(newBoundedCurrentPage, offset, { animated });\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (hasMountedRef.current)\n      return;\n    requestAnimationFrame(() => {\n      var _a2;\n      currentContentPageRef.current = currentPage;\n      const contentOffset = contentOffsetRef.current;\n      contentOffset.x.on(\"change\", applyEffects);\n      contentOffset.y.on(\"change\", applyEffects);\n      applyEffects();\n      hasMountedRef.current = true;\n      const containerSize = (_a2 = measureContainerSize()) != null ? _a2 : containerSizeRef.current;\n      updateMaxOffsetFromPageContents(containerSize);\n      updateAndSnapToPage(currentContentPageRef.current, true);\n    });\n  }, []);\n  React48.useEffect(() => {\n    if (currentPage !== currentContentPageRef.current)\n      updateAndSnapToPage(currentPage);\n  }, [currentPage]);\n  const handleMeasureLifecycle = () => {\n    const newContainerSize = measureContainerSize();\n    updateMaxOffsetFromPageContents(newContainerSize != null ? newContainerSize : containerSizeRef.current);\n    updateAndSnapToPage(currentContentPageRef.current);\n    if (newContainerSize || direction !== lastDirectionRef.current) {\n      if (direction === \"horizontal\") {\n        contentOffsetRef.current.y.set(0);\n      } else {\n        contentOffsetRef.current.x.set(0);\n      }\n      lastDirectionRef.current = direction;\n    }\n  };\n  useIsomorphicLayoutEffect2(() => {\n    if (RenderTarget.current() !== \"CANVAS\" /* canvas */)\n      return;\n    handleMeasureLifecycle();\n  });\n  const onDragStartHandler = (event, info) => {\n    if (onScrollStart)\n      onScrollStart(info);\n    if (onDragStart)\n      onDragStart(event, info);\n    prev.x = initial.x = info.point.x;\n    prev.y = initial.y = info.point.y;\n  };\n  const onDragHandler = (event, info) => {\n    if (onScroll)\n      onScroll(info);\n    if (onDrag)\n      onDrag(event, info);\n    prev.x = info.point.x;\n    prev.y = info.point.y;\n  };\n  const onDragTransitionEnd = () => {\n    if (props.onDragTransitionEnd)\n      props.onDragTransitionEnd();\n    if (onScrollEnd) {\n      const { x, y } = contentOffsetRef.current;\n      const point = { x: x.get(), y: y.get() };\n      onScrollEnd({\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      });\n    }\n  };\n  const onDragEndHandler = async (event, info) => {\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    contentOffset.stop();\n    const startPosition = contentOffset.get();\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const velocity = info.velocity[axis];\n    let index = nearestPageIndex(pageRectsRef.current, startPosition, startPosition, isHorizontal, momentum);\n    if (velocity) {\n      animateValue({\n        type: \"inertia\",\n        keyframes: [startPosition],\n        velocity,\n        modifyTarget: (endPosition) => {\n          index = nearestPageIndex(pageRectsRef.current, startPosition, endPosition, isHorizontal, momentum);\n          return endPosition;\n        }\n      }).stop();\n    }\n    updateCurrentPage(index, currentContentPageRef, onChangePage);\n    const offset = offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef);\n    if (onDragEnd)\n      onDragEnd(event, info);\n    const handler = contentOffsetRef.current[axis];\n    handler.set(startPosition);\n    animate(handler, offset, {\n      type: \"spring\",\n      velocity,\n      stiffness: 500,\n      damping: 50,\n      onComplete: onDragTransitionEnd\n    });\n  };\n  pageEffectValuesRef.current = [];\n  const childComponents = React48.Children.map(children, (child, index) => {\n    var _a2;\n    if (!isReactChild(child) || !isReactElement(child)) {\n      return child;\n    }\n    const update = {\n      right: void 0,\n      bottom: void 0,\n      top: void 0,\n      left: void 0,\n      _constraints: {\n        enabled: false\n      }\n    };\n    if (containerProps.__fromCanvasComponent) {\n      update.style = (_a2 = child.props.style) != null ? _a2 : {};\n      if (contentWidth === \"stretch\")\n        update.style.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.style.height = \"100%\";\n    } else {\n      if (contentWidth === \"stretch\")\n        update.width = \"100%\";\n      if (contentHeight === \"stretch\")\n        update.height = \"100%\";\n    }\n    let effectDictionary;\n    const values = effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef);\n    if (values) {\n      effectDictionary = {};\n      for (const key7 in values) {\n        effectDictionary[key7] = motionValue(values[key7]);\n      }\n    }\n    pageEffectValuesRef.current.push(effectDictionary);\n    return /* @__PURE__ */ React48.createElement(\n      PageContainer,\n      {\n        key: index,\n        effect: effectDictionary,\n        dragEnabled,\n        direction,\n        contentHeight,\n        contentWidth,\n        alignment,\n        gap,\n        isLastPage: index === pageCount - 1,\n        contentOffsetRef,\n        constraintsRef: constraints,\n        directionLock,\n        onDragStart: onDragStartHandler,\n        onDrag: onDragHandler,\n        onDragEnd: onDragEndHandler,\n        layoutId: layoutId ? `${layoutId}-${index}` : void 0\n      },\n      React48.cloneElement(child, update)\n    );\n  });\n  useWheelScroll(scrollableRef, {\n    enabled: wheelEnabled,\n    initial,\n    prev,\n    direction,\n    constraints,\n    offsetX: contentOffsetRef.current.x,\n    offsetY: contentOffsetRef.current.y,\n    onScrollStart,\n    onScroll,\n    onScrollEnd\n  });\n  return /* @__PURE__ */ React48.createElement(\n    FrameWithMotion,\n    {\n      \"data-framer-component-type\": \"PageWrapper\",\n      preserve3d: false,\n      perspective: hasEffect(props) ? 1200 : void 0,\n      ...containerProps,\n      style: { pointerEvents: void 0, ...containerProps.style, overflow },\n      layoutId,\n      ref: containerRef,\n      onLayoutMeasure: handleMeasureLifecycle\n    },\n    /* @__PURE__ */ React48.createElement(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Page\",\n        ref: scrollableRef,\n        background: null,\n        x: contentOffsetRef.current.x,\n        y: contentOffsetRef.current.y,\n        width: \"100%\",\n        height: \"100%\",\n        preserve3d: true,\n        layout: true,\n        layoutId: layoutId !== void 0 ? layoutId + \"-page\" : void 0,\n        style: {\n          padding: makePaddingString(paddingFromProps(props)),\n          display: \"flex\",\n          flexDirection: isHorizontal ? \"row\" : \"column\",\n          pointerEvents: (_a = props.style) == null ? void 0 : _a.pointerEvents\n        }\n      },\n      /* @__PURE__ */ React48.createElement(\n        EmptyState,\n        {\n          title: \"Page\",\n          description: \"Click and drag the connector to any frame on the canvas \\u2192\",\n          children,\n          size: containerSizeRef.current,\n          insideUserCodeComponent: !__fromCodeComponentNode\n        }\n      ),\n      childComponents\n    )\n  );\n});\nfunction cubeEffect(info) {\n  const { normalizedOffset, direction } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    originX: normalizedOffset < 0 ? 1 : 0,\n    originY: normalizedOffset < 0 ? 1 : 0,\n    rotateY: isHorizontal ? Math.min(Math.max(-90, normalizedOffset * 90), 90) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(Math.max(-90, normalizedOffset * -90), 90),\n    backfaceVisibility: \"hidden\",\n    WebkitBackfaceVisibility: \"hidden\"\n  };\n}\nfunction coverflowEffect(info) {\n  const { normalizedOffset, direction, size: size2 } = info;\n  const isHorizontal = direction === \"horizontal\";\n  return {\n    rotateY: isHorizontal ? Math.min(45, Math.max(-45, normalizedOffset * -45)) : 0,\n    rotateX: isHorizontal ? 0 : Math.min(45, Math.max(-45, normalizedOffset * 45)),\n    originX: isHorizontal ? normalizedOffset < 0 ? 0 : 1 : 0.5,\n    originY: isHorizontal ? 0.5 : normalizedOffset < 0 ? 0 : 1,\n    x: isHorizontal ? `${normalizedOffset * -25}%` : 0,\n    y: isHorizontal ? 0 : `${normalizedOffset * -25}%`,\n    z: -Math.abs(normalizedOffset),\n    scale: 1 - Math.abs(normalizedOffset / 10)\n  };\n}\nfunction calcPileAxisOffset(offset, length) {\n  return offset * length - offset * 8;\n}\nfunction pileEffect(info) {\n  const { normalizedOffset, direction, size: size2 } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const absoluteOffset = Math.abs(normalizedOffset);\n  return {\n    x: normalizedOffset < 0 && isHorizontal ? calcPileAxisOffset(absoluteOffset, size2.width) : 0,\n    y: normalizedOffset < 0 && !isHorizontal ? calcPileAxisOffset(absoluteOffset, size2.height) : 0,\n    scale: normalizedOffset < 0 ? 1 - absoluteOffset / 50 : 1\n  };\n}\nfunction wheelEffect(info) {\n  const { normalizedOffset, direction, size: size2 } = info;\n  const isHorizontal = direction === \"horizontal\";\n  const originZ = (isHorizontal ? size2.width : size2.height) * 18 / (2 * Math.PI);\n  const rotateX = isHorizontal ? 0 : normalizedOffset * -20;\n  const rotateY = isHorizontal ? normalizedOffset * 20 : 0;\n  const y = isHorizontal ? 0 : normalizedOffset * -size2.height;\n  const x = isHorizontal ? normalizedOffset * -size2.width : 0;\n  return {\n    opacity: 1 - Math.abs(normalizedOffset) / 4,\n    transform: `translate(${x}px, ${y}px) translateZ(-${originZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) translateZ(${originZ}px)`\n  };\n}\nfunction getDefaultEffect(type) {\n  switch (type) {\n    case \"cube\":\n      return cubeEffect;\n    case \"coverflow\":\n      return coverflowEffect;\n    case \"pile\":\n      return pileEffect;\n    case \"wheel\":\n      return wheelEffect;\n    default:\n      return null;\n  }\n}\nfunction nearestPageIndex(pageRects, startPosition, endPosition, isHorizontalDirection, allowSkippingPages) {\n  const distanceToStart = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + startPosition);\n  };\n  const distanceToEnd = function(rect) {\n    const rectPosition = isHorizontalDirection ? rect.x : rect.y;\n    return Math.abs(rectPosition + endPosition);\n  };\n  if (allowSkippingPages) {\n    const closestPages = [...pageRects].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  } else {\n    const closestToStart = [...pageRects].sort((a, b) => distanceToStart(a) - distanceToStart(b));\n    if (closestToStart.length === 1 && closestToStart[0])\n      return pageRects.indexOf(closestToStart[0]);\n    const pageA = closestToStart[0];\n    const pageB = closestToStart[1];\n    if (!pageA || !pageB)\n      return -1;\n    const closestPages = [pageA, pageB].sort((a, b) => distanceToEnd(a) - distanceToEnd(b));\n    if (!closestPages[0])\n      return -1;\n    return pageRects.indexOf(closestPages[0]);\n  }\n}\nfunction getPageContentRects(containerRef, containerSize, direction, gap) {\n  var _a;\n  const containerElement = containerRef.current;\n  if (!containerElement)\n    return;\n  const contentWrappers = [];\n  (_a = containerElement.firstChild) == null ? void 0 : _a.childNodes.forEach((node) => {\n    const childNode = node.firstChild;\n    if (!(childNode instanceof HTMLElement))\n      return;\n    const componentType = childNode.getAttribute(\"data-framer-component-type\");\n    if (componentType === pageContentWrapperType) {\n      contentWrappers.push(childNode);\n    }\n  });\n  const sizes = [];\n  contentWrappers.forEach((contentWrapper) => {\n    if (contentWrapper instanceof HTMLElement && contentWrapper.firstChild instanceof HTMLElement) {\n      let width = contentWrapper.firstChild.offsetWidth;\n      let height = contentWrapper.firstChild.offsetHeight;\n      if (import_process5.default.env.NODE_ENV === \"test\") {\n        width = 100;\n        height = 100;\n      }\n      sizes.push({ width, height });\n    } else {\n      sizes.push(null);\n    }\n  });\n  let maxX = 0;\n  let maxY = 0;\n  const isHorizontal = direction === \"horizontal\";\n  return sizes.map((queriedSize) => {\n    const size2 = queriedSize || containerSize;\n    const x = maxX;\n    const y = maxY;\n    if (isHorizontal) {\n      maxX += size2.width + gap;\n    } else {\n      maxY += size2.height + gap;\n    }\n    return { ...size2, x, y };\n  });\n}\nfunction getMaxOffset(containerSize, pageContentRects, direction, paddingProps) {\n  const lastPageRect = pageContentRects[pageContentRects.length - 1];\n  if (!lastPageRect)\n    return 0;\n  const paddingSides = paddingFromProps(paddingProps);\n  const isHorizontal = direction === \"horizontal\";\n  const paddingStart = isHorizontal ? paddingSides.left : paddingSides.top;\n  const paddingEnd = isHorizontal ? paddingSides.right : paddingSides.bottom;\n  const pageWidth = isHorizontal ? lastPageRect.width : lastPageRect.height;\n  const containerWidth = isHorizontal ? containerSize.width : containerSize.height;\n  const freeSpace = containerWidth - paddingStart - paddingEnd - pageWidth;\n  const target = isHorizontal ? lastPageRect.x : lastPageRect.y;\n  if (freeSpace <= 0)\n    return Math.max(target, 0);\n  return Math.max(target - freeSpace, 0);\n}\nfunction offsetForPage(index, pageCount, pageRectsRef, isHorizontal, maxOffsetRef) {\n  const pageIndex = Math.max(0, Math.min(pageCount - 1, index));\n  const currentPageRect = pageRectsRef.current[pageIndex];\n  if (!currentPageRect) {\n    return 0;\n  }\n  if (isHorizontal) {\n    return -Math.min(currentPageRect.x, maxOffsetRef.current);\n  } else {\n    return -Math.min(currentPageRect.y, maxOffsetRef.current);\n  }\n}\nfunction useSnapToPage(currentContentPageRef, contentOffsetRef, isHorizontal) {\n  return (pageIndex, offset, options) => {\n    currentContentPageRef.current = pageIndex;\n    const contentOffset = isHorizontal ? contentOffsetRef.current.x : contentOffsetRef.current.y;\n    if (!options || !options.animated) {\n      contentOffset.set(offset);\n      return;\n    }\n    const axis = isHorizontal ? \"x\" : \"y\";\n    const value = contentOffsetRef.current[axis];\n    value.set(contentOffset.get());\n    animate(value, offset, {\n      type: \"spring\",\n      velocity: contentOffset.getVelocity(),\n      stiffness: 500,\n      damping: 50\n    });\n  };\n}\nfunction getBoundedCurrentPage(pageIndex, pageCount) {\n  return pageIndex >= 0 ? Math.min(pageIndex, pageCount - 1) : (pageIndex % pageCount + pageCount) % pageCount;\n}\nfunction effectValues(index, latestPropsRef, pageRectsRef, contentOffsetRef, maxOffsetRef) {\n  const {\n    direction: latestDirection = \"horizontal\",\n    defaultEffect: latestDefaultEffect,\n    effect: latestEffect,\n    gap: latestGap = 10\n  } = latestPropsRef.current;\n  const latestIsHorizontal = latestDirection === \"horizontal\";\n  const pageRect = pageRectsRef.current[index] || {\n    x: latestIsHorizontal ? index * 200 + latestGap : 0,\n    y: latestIsHorizontal ? 0 : index * 200 + latestGap,\n    width: 200,\n    height: 200\n  };\n  const effectFunction = latestEffect || getDefaultEffect(latestDefaultEffect);\n  if (!effectFunction)\n    return null;\n  let offset;\n  let normalizedOffset;\n  const contentOffset = contentOffsetRef.current;\n  const maxScrollOffset = maxOffsetRef.current;\n  if (latestIsHorizontal) {\n    offset = Math.min(pageRect.x, maxScrollOffset) + (contentOffset ? contentOffset.x.get() : 0);\n    normalizedOffset = offset / (pageRect.width + latestGap);\n  } else {\n    offset = Math.min(pageRect.y, maxScrollOffset) + (contentOffset ? contentOffset.y.get() : 0);\n    normalizedOffset = offset / (pageRect.height + latestGap);\n  }\n  const size2 = { width: pageRect.width, height: pageRect.height };\n  return effectFunction({\n    offset,\n    normalizedOffset,\n    size: size2,\n    index,\n    direction: latestDirection,\n    gap: latestGap,\n    pageCount: pageRectsRef.current.length\n  });\n}\nfunction hasEffect(props) {\n  return !!props.effect || !!getDefaultEffect(props.defaultEffect);\n}\nfunction updateCurrentPage(newPageIndex, currentContentPageRef, onChangePage) {\n  if (currentContentPageRef.current === newPageIndex)\n    return;\n  if (onChangePage)\n    onChangePage(newPageIndex, currentContentPageRef.current);\n  currentContentPageRef.current = newPageIndex;\n}\n\n// ../../library/src/components/Page/Page.tsx\nvar Page3 = /* @__PURE__ */ (() => {\n  const ContentDimension = {\n    Auto: \"auto\",\n    Stretch: \"stretch\"\n  };\n  const pageContentDimensionOptions = [ContentDimension.Auto, ContentDimension.Stretch];\n  const pageContentDimensionTitles = /* @__PURE__ */ pageContentDimensionOptions.map((option) => {\n    switch (option) {\n      case ContentDimension.Auto:\n        return \"Auto\";\n      case ContentDimension.Stretch:\n        return \"Stretch\";\n    }\n  });\n  const pageEffectOptions = [\"none\", \"cube\", \"coverflow\", \"wheel\", \"pile\"];\n  const pageEffectTitles = /* @__PURE__ */ pageEffectOptions.map((option) => {\n    switch (option) {\n      case \"none\":\n        return \"None\";\n      case \"cube\":\n        return \"Cube\";\n      case \"coverflow\":\n        return \"Cover Flow\";\n      case \"wheel\":\n        return \"Wheel\";\n      case \"pile\":\n        return \"Pile\";\n    }\n  });\n  const pageAlignmentOptions = [\"start\", \"center\", \"end\"];\n  const genericAlignmentTitles = /* @__PURE__ */ pageAlignmentOptions.map((option) => {\n    switch (option) {\n      case \"start\":\n        return \"Start\";\n      case \"center\":\n        return \"Center\";\n      case \"end\":\n        return \"End\";\n    }\n  });\n  Page.defaultProps = {\n    gap: 10,\n    directionLock: false\n  };\n  addPropertyControls(Page, {\n    direction: {\n      type: \"enum\" /* Enum */,\n      options: [\"horizontal\", \"vertical\"],\n      title: \"Direction\",\n      defaultValue: \"horizontal\",\n      displaySegmentedControl: true,\n      optionIcons: [\"direction-horizontal\", \"direction-vertical\"]\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    contentWidth: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Width\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    contentHeight: {\n      type: \"enum\" /* Enum */,\n      options: pageContentDimensionOptions,\n      optionTitles: pageContentDimensionTitles,\n      title: \"Height\",\n      defaultValue: ContentDimension.Stretch,\n      displaySegmentedControl: true\n    },\n    alignment: {\n      type: \"enum\" /* Enum */,\n      options: pageAlignmentOptions,\n      optionTitles: genericAlignmentTitles,\n      title: \"Align\",\n      hidden(props) {\n        const { direction, contentWidth, contentHeight } = props;\n        const isHorizontalDirection = direction === \"horizontal\";\n        const crossDimension = isHorizontalDirection ? contentHeight : contentWidth;\n        return crossDimension === ContentDimension.Stretch;\n      },\n      defaultValue: \"start\",\n      displaySegmentedControl: true,\n      optionIcons: {\n        direction: {\n          horizontal: [\"align-top\", \"align-middle\", \"align-bottom\"],\n          vertical: [\"align-left\", \"align-center\", \"align-right\"]\n        }\n      }\n    },\n    gap: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Gap\",\n      defaultValue: 0\n    },\n    padding: {\n      type: \"fusednumber\" /* FusedNumber */,\n      toggleKey: \"paddingPerSide\",\n      toggleTitles: [\"Padding\", \"Padding per side\"],\n      valueKeys: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n      valueLabels: [\"T\", \"R\", \"B\", \"L\"],\n      min: 0,\n      title: \"Padding\",\n      defaultValue: 0\n    },\n    overflow: {\n      type: \"enum\" /* Enum */,\n      title: \"Overflow\",\n      defaultValue: \"hidden\",\n      options: [\"visible\", \"hidden\"],\n      optionTitles: [\"Visible\", \"Hidden\"],\n      displaySegmentedControl: true\n    },\n    currentPage: {\n      type: \"number\" /* Number */,\n      min: 0,\n      title: \"Current\",\n      displayStepper: true,\n      defaultValue: 0\n    },\n    momentum: {\n      type: \"boolean\" /* Boolean */,\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      title: \"Momentum\",\n      defaultValue: false\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: false\n    },\n    defaultEffect: {\n      type: \"enum\" /* Enum */,\n      options: pageEffectOptions,\n      optionTitles: pageEffectTitles,\n      title: \"Effect\",\n      defaultValue: \"none\"\n    },\n    children: {\n      type: \"array\" /* Array */,\n      title: \"Content\",\n      control: { type: \"componentinstance\" /* ComponentInstance */, title: \"Page\" }\n    }\n  });\n  Page.supportsConstraints = true;\n  return Page;\n})();\n\n// ../../library/src/components/Screen.tsx\nimport React51, { Component as Component9 } from \"react\";\n\n// ../../library/src/events/recognizer/GestureRecognizer.ts\nfunction stateName(state) {\n  switch (state) {\n    case 2 /* Possible */:\n      return \"Possible\";\n    case 4 /* Began */:\n      return \"Began\";\n    case 8 /* Changed */:\n      return \"Changed\";\n    case 16 /* Ended */:\n      return \"Ended\";\n    case 32 /* Failed */:\n      return \"Failed\";\n    case 64 /* Cancelled */:\n      return \"Cancelled\";\n    case 128 /* Recognized */:\n      return \"Recognized\";\n    default:\n      return \"Unknown\";\n  }\n}\nfunction containsBitmask(value, bitmask) {\n  return (value & bitmask) !== 0;\n}\nvar GestureRecognizer = class {\n  constructor() {\n    this._state = 2 /* Possible */;\n    this.preventers = [];\n  }\n  get state() {\n    return this._state;\n  }\n  setState(state) {\n    this._state = state;\n  }\n  get isPrevented() {\n    let prevented = false;\n    for (const recognizer of this.preventers) {\n      if (recognizer.state & (4 /* Began */ | 8 /* Changed */ | 16 /* Ended */)) {\n        prevented = true;\n        break;\n      }\n    }\n    return prevented;\n  }\n  canBePreventedBy(recognizer) {\n    this.preventers.push(recognizer);\n  }\n  hasState(bitmask) {\n    return containsBitmask(this.state, bitmask);\n  }\n  stateSwitch(newState) {\n    let allowedStates;\n    switch (this.state) {\n      case 2 /* Possible */:\n        allowedStates = 4 /* Began */ | 128 /* Recognized */ | 32 /* Failed */;\n        break;\n      case 4 /* Began */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 8 /* Changed */:\n        allowedStates = 8 /* Changed */ | 64 /* Cancelled */ | 16 /* Ended */;\n        break;\n      case 128 /* Recognized */:\n      case 16 /* Ended */:\n      case 64 /* Cancelled */:\n      case 32 /* Failed */:\n        allowedStates = 2 /* Possible */;\n        break;\n      default:\n        allowedStates = 0;\n    }\n    if (!containsBitmask(newState, allowedStates)) {\n      console.warn(`Unallowed state change from ${stateName(this.state)} to ${stateName(newState)}`);\n      return;\n    }\n    this.setState(newState);\n  }\n  cancel() {\n    if (this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      this.setState(64 /* Cancelled */);\n    }\n    this.reset();\n  }\n  reset() {\n    if (!this.hasState(2 /* Possible */)) {\n      this.stateSwitch(2 /* Possible */);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/MouseWheelGestureRecognizer.ts\nvar MouseWheelGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    this.eventType = \"mousewheel\";\n    this.onMouseWheelEnd = debounce((event) => {\n      if (this.handler && this.startEvent) {\n        this.stateSwitch(16 /* Ended */);\n        this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n        this.startEvent = null;\n        this.reset();\n      }\n    }, 300);\n  }\n  pointerSessionBegan(session, event) {\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n  }\n  mouseWheel(session, event) {\n    if (!this.handler)\n      return;\n    if (this.hasState(2 /* Possible */)) {\n      this.startEvent = event;\n      this.stateSwitch(4 /* Began */);\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n      return;\n    }\n    if (this.hasState(4 /* Began */ | 8 /* Changed */) && this.startEvent) {\n      this.stateSwitch(8 /* Changed */);\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n    this.onMouseWheelEnd(event);\n  }\n};\n\n// ../../library/src/events/recognizer/PanGestureRecognizer.ts\nvar PanGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    this.eventType = \"pan\";\n  }\n  pointerSessionBegan(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionMoved(session, event) {\n    this.recognize(session, event);\n  }\n  pointerSessionEnded(session, event) {\n    this.panend(event);\n  }\n  recognize(session, event) {\n    if (Math.abs(event.delta.x) > 0 || Math.abs(event.delta.y) > 0) {\n      if (this.startEvent) {\n        this.pan(event);\n      } else {\n        this.panstart(event);\n      }\n    }\n  }\n  reset() {\n    this.startEvent = null;\n    super.reset();\n  }\n  panstart(event) {\n    if (!this.hasState(2 /* Possible */) || event.isLeftMouseClick !== void 0 && !event.isLeftMouseClick) {\n      return;\n    }\n    this.stateSwitch(4 /* Began */);\n    this.startEvent = event;\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureBegan(this.eventType, event, this.startEvent.target);\n    }\n  }\n  pan(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(8 /* Changed */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureChanged(this.eventType, event, this.startEvent.target);\n    }\n  }\n  panend(event) {\n    if (!this.hasState(4 /* Began */ | 8 /* Changed */)) {\n      return;\n    }\n    if (!this.startEvent) {\n      return;\n    }\n    this.stateSwitch(16 /* Ended */);\n    if (this.handler && this.startEvent.target) {\n      this.handler.gestureEnded(this.eventType, event, this.startEvent.target);\n    }\n  }\n};\n\n// ../../library/src/events/recognizer/TapGestureRecognizer.ts\nvar TapGestureRecognizer = class extends GestureRecognizer {\n  constructor() {\n    super(...arguments);\n    this.eventType = \"tap\";\n  }\n  pointerSessionBegan(session, event) {\n    if (this.handler && (event.isLeftMouseClick === void 0 || event.isLeftMouseClick)) {\n      this.handler.gestureBegan(this.eventType, event, null);\n    }\n  }\n  pointerSessionMoved(session, event) {\n  }\n  pointerSessionEnded(session, event) {\n    if (this.isPrevented) {\n      this.stateSwitch(32 /* Failed */);\n    } else if (!session.startEvent || session.startEvent.target === event.target) {\n      this.stateSwitch(128 /* Recognized */);\n      if (this.handler) {\n        this.handler.gestureChanged(this.eventType, event, null);\n      }\n    } else {\n      this.stateSwitch(32 /* Failed */);\n    }\n    if (this.handler) {\n      this.handler.gestureEnded(this.eventType, event, null);\n    }\n  }\n};\n\n// ../../library/src/events/FramerEventSession.ts\nvar FramerEventSession = class {\n  constructor(dispatcher, customOrigin) {\n    this.events = [];\n    this.recognizers = [];\n    this.mouseWheelRecognizer = new MouseWheelGestureRecognizer();\n    this.dispatcher = dispatcher;\n    if (customOrigin) {\n      this.originElement = customOrigin;\n    } else {\n      this.originElement = document.body;\n    }\n    const pan = new PanGestureRecognizer();\n    const tap = new TapGestureRecognizer();\n    pan.handler = this;\n    tap.handler = this;\n    this.mouseWheelRecognizer.handler = this;\n    this.recognizers = [tap, pan];\n  }\n  get isStarted() {\n    return this.events.length !== 0;\n  }\n  get startEvent() {\n    return this.isStarted ? this.events[0] : void 0;\n  }\n  get lastEvent() {\n    return this.events[this.events.length - 1];\n  }\n  // Event handling\n  processEvent(event) {\n    this.events.push(event);\n    return event;\n  }\n  pointerDown(event) {\n    if (this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.cancel();\n      r.pointerSessionBegan(this, event);\n    });\n  }\n  pointerMove(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionMoved(this, event);\n    });\n  }\n  pointerUp(event) {\n    if (!this.isStarted) {\n      return;\n    }\n    this.processEvent(event);\n    this.recognizers.map((r) => {\n      r.pointerSessionEnded(this, event);\n    });\n    this.clearEvents();\n    this.recognizers.map((r) => {\n      r.reset();\n    });\n  }\n  mouseWheel(event) {\n    this.processEvent(event);\n    this.mouseWheelRecognizer.mouseWheel(this, event);\n    this.clearEvents();\n  }\n  clearEvents() {\n    this.events = [];\n  }\n  dispatch(type, event, target = null) {\n    const dispatchTarget = target || this.startEvent && this.startEvent.target || event.target;\n    if (dispatchTarget) {\n      this.dispatcher(type, event, dispatchTarget);\n    }\n  }\n  // Gesture Handler\n  gestureBegan(type, event, target) {\n    this.dispatch(`${type}start`, event, target);\n  }\n  gestureChanged(type, event, target) {\n    this.dispatch(type, event, target);\n  }\n  gestureEnded(type, event, target) {\n    this.dispatch(`${type}end`, event, target);\n  }\n  // Calculatinos\n  /**\n   * Average velocity over last n seconds in pixels per second.\n   * @param n - number of events to use for calculation\n   */\n  velocity(t = Loop.TimeStep * 2) {\n    var _a;\n    if (!this.isStarted || this.events.length < 2) {\n      return { x: 0, y: 0 };\n    }\n    const events2 = this.events;\n    let i = events2.length - 1;\n    let event = null;\n    while (i >= 0) {\n      event = (_a = events2[i]) != null ? _a : null;\n      if (!event || MainLoop.time - event.loopTime > t) {\n        break;\n      }\n      i--;\n    }\n    if (!event) {\n      return { x: 0, y: 0 };\n    }\n    const current = events2[events2.length - 1];\n    if (!current) {\n      return { x: 0, y: 0 };\n    }\n    const time2 = (MainLoop.time - event.loopTime) * 1e3;\n    if (time2 === 0) {\n      return { x: 0, y: 0 };\n    }\n    const velocity = {\n      x: (current.devicePoint.x - event.devicePoint.x) / time2,\n      y: (current.devicePoint.y - event.devicePoint.y) / time2\n    };\n    if (velocity.x === Infinity) {\n      velocity.x = 0;\n    }\n    if (velocity.y === Infinity) {\n      velocity.y = 0;\n    }\n    return velocity;\n  }\n  offset(event) {\n    if (!this.startEvent) {\n      return { x: 0, y: 0 };\n    }\n    const subtract = (pointA, pointB) => {\n      return {\n        x: pointA.x - pointB.x,\n        y: pointA.y - pointB.y\n      };\n    };\n    return subtract(event.devicePoint, this.startEvent.devicePoint);\n  }\n};\n\n// ../../library/src/events/recognizer/MouseEventListener.ts\nimport { Component as Component7 } from \"react\";\nvar MouseEventListener = class extends Component7 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    this.domMouseDown = (originalEvent) => {\n      safeWindow.addEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.addEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    };\n    /**\n     * @internal\n     */\n    this.domMouseMove = (originalEvent) => {\n      const leftMouseButtonOnlyDown = originalEvent.buttons === void 0 ? originalEvent.which === 1 : originalEvent.buttons === 1;\n      if (!leftMouseButtonOnlyDown) {\n        this.domMouseUp(originalEvent);\n        return;\n      }\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    };\n    /**\n     * @internal\n     */\n    this.domMouseUp = (originalEvent) => {\n      safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    };\n    /**\n     * @internal\n     */\n    this.domMouseWheel = (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.mouseWheel(event);\n    };\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.addEventListener(\"wheel\", this.domMouseWheel);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"mousemove\", this.domMouseMove);\n    safeWindow.removeEventListener(\"mousedown\", this.domMouseDown);\n    safeWindow.removeEventListener(\"mouseup\", this.domMouseUp);\n    safeWindow.removeEventListener(\"wheel\", this.domMouseWheel);\n  }\n};\n\n// ../../library/src/events/recognizer/TouchEventListener.ts\nimport { Component as Component8 } from \"react\";\nvar TouchEventListener = class extends Component8 {\n  constructor() {\n    super(...arguments);\n    /**\n     * @internal\n     */\n    this.domTouchStart = (originalEvent) => {\n      safeWindow.addEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.addEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerDown(event);\n    };\n    /**\n     * @internal\n     */\n    this.domTouchMove = (originalEvent) => {\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerMove(event);\n    };\n    /**\n     * @internal\n     */\n    this.domTouchEnd = (originalEvent) => {\n      safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n      safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n      const event = new FramerEvent(originalEvent, this.props.session);\n      this.props.session.pointerUp(event);\n    };\n  }\n  /**\n   * @internal\n   */\n  render() {\n    return this.props.children;\n  }\n  /**\n   * @internal\n   */\n  componentDidMount() {\n    safeWindow.addEventListener(\"touchstart\", this.domTouchStart);\n  }\n  /**\n   * @internal\n   */\n  componentWillUnmount() {\n    safeWindow.removeEventListener(\"touchstart\", this.domTouchStart);\n    safeWindow.removeEventListener(\"touchmove\", this.domTouchMove);\n    safeWindow.removeEventListener(\"touchend\", this.domTouchEnd);\n  }\n};\n\n// ../../library/src/events/FramerEventListener.ts\nvar FramerEventListener = /* @__PURE__ */ environment.isTouch() ? TouchEventListener : MouseEventListener;\n\n// ../../library/src/components/Scroll/Scroll.tsx\nimport React55 from \"react\";\n\n// ../../library/src/components/Scroll/EmulatedScroll.tsx\nimport React52, { useCallback as useCallback4, useMemo as useMemo3, useRef as useRef8 } from \"react\";\nvar directionMap = {\n  horizontal: \"x\",\n  vertical: \"y\",\n  both: true\n};\nfunction convertScrollDirectionToDrag(scrollDirection) {\n  return scrollDirection ? directionMap[scrollDirection] : scrollDirection;\n}\nvar useUpdateChildSize = ({\n  dragDirection,\n  children,\n  fromCanvasComponent\n}) => {\n  return useMemo3(() => {\n    return React52.Children.map(children, (child) => {\n      if (child === null || typeof child !== \"object\" || typeof child.type === \"string\") {\n        return child;\n      }\n      const updatedSize = {};\n      switch (dragDirection) {\n        case \"vertical\":\n          updatedSize.width = \"100%\";\n          break;\n        case \"horizontal\":\n          updatedSize.height = \"100%\";\n          break;\n        default:\n          return child;\n      }\n      const update = fromCanvasComponent ? { style: Object.assign({}, child.props.style, updatedSize) } : updatedSize;\n      return React52.cloneElement(child, update);\n    });\n  }, [dragDirection, children]);\n};\nvar numberFromOptionalMotionValue = (value) => {\n  return typeof value === \"number\" ? value : value.get();\n};\nvar EmulatedScroll = /* @__PURE__ */ React52.forwardRef(\n  function EmulatedScroll2(props, forwardedRef) {\n    const {\n      direction = \"vertical\",\n      directionLock = false,\n      dragEnabled = true,\n      dragElastic,\n      dragMomentum,\n      dragTransition,\n      wheelEnabled = true,\n      contentOffsetX = 0,\n      contentOffsetY = 0,\n      contentWidth,\n      contentHeight,\n      onScrollStart,\n      onScroll,\n      onScrollEnd,\n      onDragStart,\n      onDrag,\n      onDragEnd,\n      onUpdate,\n      onDirectionLock,\n      style,\n      children,\n      scrollAnimate,\n      resetOffset,\n      overdragEnabled = true,\n      layoutId: specificLayoutId,\n      native,\n      ...containerProps\n    } = props;\n    const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n    const defaultX = useMotionValue(typeof contentOffsetX === \"number\" ? contentOffsetX : 0);\n    const defaultY = useMotionValue(typeof contentOffsetY === \"number\" ? contentOffsetY : 0);\n    const x = isMotionValue2(contentOffsetX) ? contentOffsetX : defaultX;\n    const y = isMotionValue2(contentOffsetY) ? contentOffsetY : defaultY;\n    const measuredConstraints = useRef8(null);\n    const dragControls = useDragControls();\n    const isInTarget = useIsInCurrentNavigationTarget();\n    const wasInTargetRef = useRef8(true);\n    injectComponentCSSRules();\n    function setMeasureDragConstraints(constraints) {\n      constraints = offsetToZero(constraints);\n      if (contentWidth !== void 0)\n        constraints.left = -contentWidth;\n      if (contentHeight !== void 0)\n        constraints.top = -contentHeight;\n      return measuredConstraints.current = constraints;\n    }\n    const { initial, prev } = useRef8({\n      initial: { x: 0, y: 0 },\n      prev: { x: 0, y: 0 }\n    }).current;\n    const isPreview = RenderTarget.current() === \"PREVIEW\" /* preview */;\n    const containerFallbackRef = useRef8(null);\n    const containerRef = forwardedRef || containerFallbackRef;\n    const contentRef = useRef8(null);\n    const lastOffsetRef = useRef8(null);\n    function shouldResetScroll(inTarget) {\n      const hasEnteredTarget = inTarget && wasInTargetRef.current === false;\n      return resetOffset && hasEnteredTarget;\n    }\n    function measureAndUpdateScrollOffset() {\n      if (!contentRef.current || !containerRef.current)\n        return;\n      const mustReset = shouldResetScroll(isInTarget);\n      wasInTargetRef.current = isInTarget;\n      const previous = lastOffsetRef.current;\n      if (previous === null && contentOffsetX === void 0 && contentOffsetY === void 0)\n        return;\n      const shouldUpdateOffset = previous === null || !isMotionValue2(contentOffsetX) && contentOffsetX !== previous.offsetX || !isMotionValue2(contentOffsetY) && contentOffsetY !== previous.offsetY;\n      const currentMaxXOffset = contentRef.current.offsetWidth - containerRef.current.offsetWidth;\n      const currentMaxYOffset = contentRef.current.offsetHeight - containerRef.current.offsetHeight;\n      const hasSizeChanged = currentMaxXOffset !== (previous == null ? void 0 : previous.maxXOffset) || currentMaxYOffset !== (previous == null ? void 0 : previous.maxYOffset);\n      const hasScrollOffsetChanged = (previous == null ? void 0 : previous.x) !== x.get() || (previous == null ? void 0 : previous.y) !== y.get();\n      const shouldStayPinned = hasSizeChanged && !hasScrollOffsetChanged;\n      if (mustReset || shouldUpdateOffset || shouldStayPinned) {\n        const currentOffsetX = direction !== \"vertical\" ? numberFromOptionalMotionValue(contentOffsetX) : 0;\n        const currentOffsetY = direction !== \"horizontal\" ? numberFromOptionalMotionValue(contentOffsetY) : 0;\n        const nextXOffset = -Math.min(currentOffsetX, currentMaxXOffset);\n        const nextYOffset = -Math.min(currentOffsetY, currentMaxYOffset);\n        x.set(nextXOffset);\n        y.set(nextYOffset);\n        lastOffsetRef.current = {\n          maxXOffset: currentMaxXOffset,\n          maxYOffset: currentMaxYOffset,\n          offsetX: currentOffsetX,\n          offsetY: currentOffsetY,\n          x: nextXOffset,\n          y: nextYOffset\n        };\n      }\n    }\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() !== \"CANVAS\" /* canvas */)\n        return;\n      measureAndUpdateScrollOffset();\n    });\n    useIsomorphicLayoutEffect2(() => {\n      if (RenderTarget.current() === \"CANVAS\" /* canvas */)\n        return;\n      measureAndUpdateScrollOffset();\n    }, []);\n    React52.useEffect(() => {\n      if (shouldResetScroll(isInTarget))\n        measureAndUpdateScrollOffset();\n      if (isInTarget === false)\n        wasInTargetRef.current = false;\n    }, [isInTarget]);\n    const getLatestPoint = () => ({ x: x.get(), y: y.get() });\n    const resetInitialPoint = useCallback4(() => {\n      const point = getLatestPoint();\n      initial.x = point.x;\n      initial.y = point.y;\n      prev.x = point.x;\n      prev.y = point.y;\n    }, []);\n    const getPointData = useCallback4(() => {\n      const point = getLatestPoint();\n      const data2 = {\n        point,\n        velocity: { x: x.getVelocity(), y: y.getVelocity() },\n        offset: { x: point.x - initial.x, y: point.y - initial.y },\n        delta: { x: point.x - prev.x, y: point.y - prev.y }\n      };\n      prev.x = point.x;\n      prev.y = point.y;\n      return data2;\n    }, [x, y]);\n    const updateScrollListeners = useCallback4(() => {\n      onUpdate && onUpdate({ x: x.get(), y: y.get() });\n      onScroll && onScroll(getPointData());\n    }, [onScroll, onUpdate, getPointData, x, y]);\n    const scheduleUpdateScrollListeners = useCallback4(() => {\n      frame.update(updateScrollListeners, false, true);\n    }, [updateScrollListeners]);\n    const onMotionDragStart = (event, info) => {\n      resetInitialPoint();\n      onDragStart && onDragStart(event, info);\n      onScrollStart && onScrollStart(info);\n    };\n    const onMotionDragTransitionEnd = () => onScrollEnd && onScrollEnd(getPointData());\n    const onWheelScrollStart = (info) => {\n      onScrollStart == null ? void 0 : onScrollStart(info);\n    };\n    useWheelScroll(containerRef, {\n      enabled: wheelEnabled,\n      initial,\n      prev,\n      direction,\n      offsetX: x,\n      offsetY: y,\n      onScrollStart: onWheelScrollStart,\n      onScroll,\n      onScrollEnd,\n      constraints: measuredConstraints\n    });\n    const overdragX = useMotionValue(0);\n    const overdragY = useMotionValue(0);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollX = (xValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollLeft = -xValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragXValue = 0;\n          if (xValue > constraints.right)\n            overdragXValue = xValue;\n          if (xValue < constraints.left)\n            overdragXValue = xValue - constraints.left;\n          overdragX.set(overdragXValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentX = x.get();\n      if (currentX !== 0)\n        setScrollX(currentX);\n      return x.on(\"change\", setScrollX);\n    }, [x, overdragX, scheduleUpdateScrollListeners, overdragEnabled]);\n    useIsomorphicLayoutEffect2(() => {\n      const setScrollY = (yValue) => {\n        const element = containerRef.current;\n        if (!(element instanceof HTMLDivElement))\n          return;\n        element.scrollTop = -yValue;\n        const constraints = measuredConstraints.current;\n        if (constraints && overdragEnabled) {\n          let overdragYValue = 0;\n          if (yValue > constraints.bottom)\n            overdragYValue = yValue;\n          if (yValue < constraints.top)\n            overdragYValue = yValue - constraints.top;\n          overdragY.set(overdragYValue);\n        }\n        scheduleUpdateScrollListeners();\n      };\n      const currentY = y.get();\n      if (currentY !== 0)\n        setScrollY(currentY);\n      return y.on(\"change\", setScrollY);\n    }, [y, overdragY, scheduleUpdateScrollListeners, overdragEnabled]);\n    const nativeOnScroll = React52.useCallback(() => {\n      const element = containerRef.current;\n      if (!(element instanceof HTMLDivElement))\n        return;\n      const xDelta = Math.abs(x.get() + element.scrollLeft);\n      const yDelta = Math.abs(y.get() + element.scrollTop);\n      if (xDelta > 1)\n        x.set(-element.scrollLeft);\n      if (yDelta > 1)\n        y.set(-element.scrollTop);\n    }, [x, y]);\n    const isEmpty2 = React52.Children.count(children) === 0;\n    const width = direction !== \"vertical\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const height = direction !== \"horizontal\" && !isEmpty2 ? \"auto\" : \"100%\";\n    const size2 = !containerProps.__fromCanvasComponent ? {\n      width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n      height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n    } : {};\n    return /* @__PURE__ */ React52.createElement(\n      FrameWithMotion,\n      {\n        \"data-framer-component-type\": \"Scroll\",\n        background: \"none\",\n        ...containerProps,\n        ...size2,\n        style: {\n          ...style,\n          willChange: isPreview ? \"transform\" : void 0,\n          // allows the scroll content to be hardware accelerated\n          overflow: \"hidden\"\n        },\n        onScroll: nativeOnScroll,\n        preserve3d: containerProps.preserve3d,\n        ref: containerRef,\n        layoutId,\n        layoutScroll: true,\n        onBeforeLayoutMeasure: measureAndUpdateScrollOffset\n      },\n      /* @__PURE__ */ React52.createElement(\n        FrameWithMotion,\n        {\n          \"data-framer-component-type\": \"ScrollContentWrapper\",\n          animate: scrollAnimate,\n          drag: dragEnabled && convertScrollDirectionToDrag(direction),\n          dragDirectionLock: directionLock,\n          dragElastic,\n          dragMomentum,\n          dragTransition,\n          dragConstraints: containerRef,\n          dragControls,\n          onDragStart: onMotionDragStart,\n          onDrag,\n          onDragEnd,\n          onDragTransitionEnd: onMotionDragTransitionEnd,\n          onDirectionLock,\n          onMeasureDragConstraints: setMeasureDragConstraints,\n          width,\n          height,\n          _dragX: x,\n          _dragY: y,\n          position: \"relative\",\n          x: overdragEnabled ? overdragX : void 0,\n          y: overdragEnabled ? overdragY : void 0,\n          ref: contentRef,\n          style: {\n            display: isEmpty2 ? \"block\" : \"inline-block\",\n            willChange: isPreview ? \"transform\" : void 0,\n            // makes the scroll content hardware accelerated\n            backgroundColor: \"transparent\",\n            overflow: \"visible\",\n            minWidth: \"100%\",\n            minHeight: \"100%\"\n          },\n          preserve3d: containerProps.preserve3d\n        },\n        /* @__PURE__ */ React52.createElement(\n          EmptyState,\n          {\n            children,\n            size: {\n              width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n              height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n            },\n            insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n            title: \"Scroll\",\n            description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n          }\n        ),\n        useUpdateChildSize({\n          dragDirection: direction,\n          children,\n          fromCanvasComponent: containerProps.__fromCanvasComponent\n        })\n      )\n    );\n  }\n);\nfunction offsetToZero({ top, left, right, bottom }) {\n  const width = right - left;\n  const height = bottom - top;\n  return {\n    top: -height,\n    left: -width,\n    right: 0,\n    bottom: 0\n  };\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nimport React54 from \"react\";\n\n// ../../library/src/modules/cx.ts\nfunction cx(...classNames) {\n  return classNames.filter(Boolean).join(\" \");\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nimport React53, { useEffect as useEffect6 } from \"react\";\n\n// ../../library/src/components/utils/animatePointWithInertia.ts\nfunction isRunningAnimation(...phases) {\n  let runningAny = false;\n  let cancelledAny = false;\n  phases.forEach((phase) => {\n    runningAny = runningAny || phase === 1 /* Running */;\n    cancelledAny = cancelledAny || phase === 3 /* Cancelled */;\n  });\n  return runningAny && !cancelledAny;\n}\nfunction didFinishAnimations(...phases) {\n  return phases.every((phase) => phase === 0 /* None */ || phase === 2 /* Completed */);\n}\nvar timeConstant = 400;\nfunction animatePointWithInertia({\n  from,\n  velocity,\n  onUpdate,\n  onComplete,\n  onStop\n}) {\n  const latest = from;\n  let animationPhaseX = 0 /* None */;\n  let animationPhaseY = 0 /* None */;\n  const animations2 = [];\n  const updateHandler = () => {\n    if (isRunningAnimation(animationPhaseX, animationPhaseY)) {\n      onUpdate(latest);\n    }\n  };\n  const completionHandler = () => {\n    if (didFinishAnimations(animationPhaseX, animationPhaseY)) {\n      onComplete();\n    }\n  };\n  if (velocity.x) {\n    animationPhaseX = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.x],\n        velocity: -velocity.x,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.x = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseX !== 1 /* Running */) {\n            throw Error(\"animation x should be running when completing\");\n          }\n          animationPhaseX = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (velocity.y) {\n    animationPhaseY = 1 /* Running */;\n    animations2.push(\n      animateValue({\n        keyframes: [from.y],\n        velocity: -velocity.y,\n        timeConstant,\n        onUpdate: (value) => {\n          latest.y = value;\n          frame.update(updateHandler, false, true);\n        },\n        onComplete: () => {\n          if (animationPhaseY !== 1 /* Running */) {\n            throw Error(\"animation y should be running when completing\");\n          }\n          animationPhaseY = 2 /* Completed */;\n          completionHandler();\n        }\n      })\n    );\n  }\n  if (!isRunningAnimation(animationPhaseX, animationPhaseY)) {\n    completionHandler();\n  }\n  return {\n    stop: () => {\n      if (!isRunningAnimation(animationPhaseX, animationPhaseY))\n        return;\n      animations2.forEach((animation) => animation.stop());\n      animationPhaseX = animationPhaseX === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseX;\n      animationPhaseY = animationPhaseY === 1 /* Running */ ? 3 /* Cancelled */ : animationPhaseY;\n      onStop();\n    }\n  };\n}\n\n// ../../library/src/components/utils/useEmulatedTouchScroll.ts\nvar scrollThreshold = 3;\nvar isTouchDevice = /* @__PURE__ */ isTouch();\nvar isSafariBrowser = /* @__PURE__ */ isSafari();\nfunction getTouchAction(element) {\n  if (!(element instanceof HTMLElement))\n    return null;\n  return element.style.touchAction;\n}\nfunction canPanInDirection(element, direction) {\n  switch (direction) {\n    case \"horizontal\":\n      return getTouchAction(element) === \"pan-x\";\n    case \"vertical\":\n      return getTouchAction(element) === \"pan-y\";\n    default:\n      return false;\n  }\n}\nfunction isInteractiveElement(element) {\n  const tag = element.tagName.toLowerCase();\n  if (tag === \"input\")\n    return true;\n  if (tag === \"text\")\n    return true;\n  if (tag === \"textarea\")\n    return true;\n  return false;\n}\nfunction canStartScrollFromElement(element, direction) {\n  if (!(element instanceof Element))\n    return false;\n  if (isInteractiveElement(element))\n    return false;\n  if (element.hasAttribute(\"draggable\")) {\n    if (!canPanInDirection(element, direction)) {\n      return false;\n    }\n  }\n  return true;\n}\nfunction getEventPoint(event) {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n}\nfunction setStyle(element, property, value) {\n  if (element == null ? void 0 : element.style) {\n    element.style[property] = value;\n  }\n}\nfunction getStyle(element, property) {\n  var _a;\n  return (_a = element == null ? void 0 : element.style) == null ? void 0 : _a[property];\n}\nvar emptyObject = {};\nObject.freeze(emptyObject);\nfunction useEmulateTouchScroll(ref, direction, enabled) {\n  if (isTouchDevice)\n    return emptyObject;\n  if (RenderTarget.current() !== \"PREVIEW\" /* preview */)\n    return emptyObject;\n  const scrollAnimationControlsRef = React53.useRef(null);\n  useEffect6(() => {\n    if (!ref.current)\n      return;\n    const element = ref.current;\n    let phase = 0 /* Idle */;\n    let targets = null;\n    let downPoint = null;\n    let scrollOffsetStart = null;\n    let mouseMoveEvents = [];\n    function onMouseMove(event) {\n      var _a;\n      switch (phase) {\n        case 0 /* Idle */:\n        case 4 /* DragAnimation */:\n        case 3 /* DragLocked */:\n          return;\n      }\n      if (event.metaKey)\n        return;\n      const point = getEventPoint(event);\n      if (!downPoint)\n        return;\n      const offset = Point.subtract(point, downPoint);\n      if (phase === 1 /* TouchDown */ || phase === 5 /* Interrupted */) {\n        const deltaX = Math.abs(offset.x);\n        const deltaY = Math.abs(offset.y);\n        if ((deltaX > scrollThreshold || deltaY > scrollThreshold) && deltaX !== deltaY) {\n          const scrollDirection = deltaX > deltaY ? \"horizontal\" : \"vertical\";\n          const shouldIgnoreBecauseOfDirectionLock = direction === \"horizontal\" && scrollDirection === \"vertical\" || direction === \"vertical\" && scrollDirection === \"horizontal\";\n          if (shouldIgnoreBecauseOfDirectionLock) {\n            phase = 3 /* DragLocked */;\n            return;\n          }\n          phase = 2 /* Drag */;\n          targets == null ? void 0 : targets.forEach(([target]) => setStyle(target, \"pointerEvents\", \"none\"));\n        }\n      }\n      if (isSafariBrowser)\n        event.preventDefault();\n      if (phase !== 2 /* Drag */)\n        return;\n      (_a = safeWindow.getSelection()) == null ? void 0 : _a.empty();\n      mouseMoveEvents = getRecentEvents([...mouseMoveEvents, event]);\n      if (scrollOffsetStart) {\n        if (direction !== \"vertical\")\n          element.scrollLeft = scrollOffsetStart.x - offset.x;\n        if (direction !== \"horizontal\")\n          element.scrollTop = scrollOffsetStart.y - offset.y;\n      }\n    }\n    function onMouseUp(event) {\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove, false);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      if (phase === 2 /* Drag */ && targets) {\n        targets.forEach(\n          ([target, originalPointerEventsValue]) => setStyle(target, \"pointerEvents\", originalPointerEventsValue || \"auto\")\n        );\n      }\n      targets = null;\n      const velocity = calculateVelocity({ mouseMoveEvents, mouseUpEvent: event });\n      downPoint = null;\n      if (phase === 2 /* Drag */) {\n        const shouldAnimateY = direction !== \"horizontal\" && velocity.y !== 0;\n        const shouldAnimateX = direction !== \"vertical\" && velocity.x !== 0;\n        if (!shouldAnimateY && !shouldAnimateX) {\n          phase = 0 /* Idle */;\n          return;\n        }\n        phase = 4 /* DragAnimation */;\n        scrollAnimationControlsRef.current = animatePointWithInertia({\n          from: { x: element.scrollLeft, y: element.scrollTop },\n          velocity: {\n            x: shouldAnimateX ? velocity.x : 0,\n            y: shouldAnimateY ? velocity.y : 0\n          },\n          onUpdate: (position) => {\n            if (shouldAnimateX)\n              element.scrollLeft = position.x;\n            if (shouldAnimateY)\n              element.scrollTop = position.y;\n          },\n          onStop: () => {\n            if (phase !== 5 /* Interrupted */) {\n              phase = 0 /* Idle */;\n            }\n            scrollAnimationControlsRef.current = null;\n          },\n          onComplete: () => {\n            if (phase !== 4 /* DragAnimation */) {\n              throw Error(\"On animation completion we should still be in the animation phase\");\n            }\n            phase = 0 /* Idle */;\n            scrollAnimationControlsRef.current = null;\n          }\n        });\n      } else {\n        phase = 0 /* Idle */;\n      }\n    }\n    function onMouseWheel() {\n      var _a;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    }\n    function onMouseDown(event) {\n      var _a;\n      if (!enabled)\n        return;\n      if (event.metaKey)\n        return;\n      if (!canStartScrollFromElement(event.target, direction)) {\n        if (phase === 4 /* DragAnimation */) {\n          phase = 0 /* Idle */;\n          (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n        }\n        return;\n      }\n      const previousPhase = phase;\n      phase = previousPhase === 4 /* DragAnimation */ ? 5 /* Interrupted */ : 1 /* TouchDown */;\n      downPoint = getEventPoint(event);\n      targets = document.elementsFromPoint(downPoint.x, downPoint.y).filter(\n        (targetEl) => targetEl instanceof HTMLElement || targetEl instanceof SVGElement\n      ).map((targetEl) => [targetEl, getStyle(targetEl, \"pointerEvents\")]);\n      scrollOffsetStart = { x: element.scrollLeft, y: element.scrollTop };\n      mouseMoveEvents = [];\n      if (scrollAnimationControlsRef.current) {\n        if (previousPhase !== 4 /* DragAnimation */) {\n          throw Error(\"When stopping a drag animation we need to be animating\");\n        }\n        scrollAnimationControlsRef.current.stop();\n      }\n      safeWindow.addEventListener(\"mousemove\", onMouseMove);\n      safeWindow.addEventListener(\"mouseup\", onMouseUp);\n      element.addEventListener(\"mousewheel\", onMouseWheel);\n    }\n    element.addEventListener(\"mousedown\", onMouseDown);\n    return () => {\n      var _a;\n      element.removeEventListener(\"mousedown\", onMouseDown);\n      element.removeEventListener(\"mousewheel\", onMouseWheel);\n      safeWindow.removeEventListener(\"mousemove\", onMouseMove);\n      safeWindow.removeEventListener(\"mouseup\", onMouseUp);\n      phase = 5 /* Interrupted */;\n      (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n    };\n  }, [ref, direction, enabled]);\n  return React53.useMemo(() => {\n    return {\n      cancelEmulatedTouchScrollAnimation: () => {\n        var _a;\n        (_a = scrollAnimationControlsRef.current) == null ? void 0 : _a.stop();\n      }\n    };\n  }, []);\n}\nvar timeDelta = 4 / 60 * 1e3;\nfunction getRecentEvents(events2) {\n  const currentTime = new CustomEvent(\"getTime\").timeStamp;\n  const maxAge = currentTime - timeDelta;\n  return events2.filter((event) => event.timeStamp > maxAge);\n}\nvar zeroPoint = { x: 0, y: 0 };\nfunction calculateVelocity({\n  mouseMoveEvents,\n  mouseUpEvent\n}) {\n  const recentMouseMoveEvents = getRecentEvents(mouseMoveEvents);\n  const oldestMouseMoveEvent = recentMouseMoveEvents[0];\n  if (!oldestMouseMoveEvent)\n    return zeroPoint;\n  const deltaX = mouseUpEvent.clientX - oldestMouseMoveEvent.clientX;\n  const deltaY = mouseUpEvent.clientY - oldestMouseMoveEvent.clientY;\n  const time2 = mouseUpEvent.timeStamp - oldestMouseMoveEvent.timeStamp;\n  if (time2 === 0)\n    return zeroPoint;\n  return {\n    x: deltaX / time2 * 1e3,\n    y: deltaY / time2 * 1e3\n  };\n}\n\n// ../../library/src/components/utils/useUpdateScrollOffset.ts\nfunction useUpdateScrollOffset(ref, side, offset, cancelEmulatedTouchScrollAnimation) {\n  useIsomorphicLayoutEffect2(\n    () => {\n      if (isMotionValue2(offset)) {\n        const updateScrollLeft = () => {\n          cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n          const element = ref.current;\n          if (element)\n            element[side] = Math.abs(offset.get());\n        };\n        updateScrollLeft();\n        return offset.on(\"change\", updateScrollLeft);\n      } else if (isFiniteNumber(offset)) {\n        const element = ref.current;\n        if (!element)\n          return;\n        cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n        element[side] = Math.abs(offset);\n      }\n    },\n    // We only want to update on contentOffset changes\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [offset]\n  );\n}\n\n// ../../library/src/components/Scroll/NativeScroll.tsx\nvar NativeScroll = /* @__PURE__ */ React54.forwardRef(function NativeScroll2(props, forwardedRef) {\n  const {\n    direction = \"vertical\",\n    scrollBarVisible = false,\n    dragEnabled = true,\n    contentOffsetX = 0,\n    contentOffsetY = 0,\n    contentWidth,\n    contentHeight,\n    children,\n    resetOffset,\n    onScroll,\n    className,\n    // Not (yet) supported\n    directionLock = false,\n    wheelEnabled = true,\n    scrollAnimate,\n    dragTransition,\n    dragMomentum,\n    dragElastic,\n    overdragEnabled = true,\n    onScrollStart,\n    onScrollEnd,\n    onDragStart,\n    onDrag,\n    onDragEnd,\n    onUpdate,\n    onDirectionLock,\n    layoutId: specificLayoutId,\n    native,\n    // Rest\n    ...containerProps\n  } = props;\n  const layoutId = useLayoutId(props, { specificLayoutId, postfix: \"scroll\" });\n  const fallbackRef = React54.useRef(null);\n  const ref = forwardedRef || fallbackRef;\n  const { cancelEmulatedTouchScrollAnimation } = useEmulateTouchScroll(ref, direction, dragEnabled);\n  injectComponentCSSRules();\n  const isInTarget = useIsInCurrentNavigationTarget();\n  const previousIsInTargetRef = React54.useRef(isInTarget);\n  const updateScrollOffsetHandler = () => {\n    if (!resetOffset)\n      return;\n    const previousIsTarget = previousIsInTargetRef.current;\n    previousIsInTargetRef.current = isInTarget;\n    const shouldResetOffset = isInTarget && !previousIsTarget;\n    if (!shouldResetOffset)\n      return;\n    const element = ref.current;\n    if (!element)\n      return;\n    if (direction !== \"vertical\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollLeft = Math.abs(isMotionValue2(contentOffsetX) ? contentOffsetX.get() : contentOffsetX);\n    }\n    if (direction !== \"horizontal\") {\n      cancelEmulatedTouchScrollAnimation == null ? void 0 : cancelEmulatedTouchScrollAnimation();\n      element.scrollTop = Math.abs(isMotionValue2(contentOffsetY) ? contentOffsetY.get() : contentOffsetY);\n    }\n  };\n  useIsomorphicLayoutEffect2(updateScrollOffsetHandler, [isInTarget]);\n  useUpdateScrollOffset(ref, \"scrollLeft\", contentOffsetX, cancelEmulatedTouchScrollAnimation);\n  useUpdateScrollOffset(ref, \"scrollTop\", contentOffsetY, cancelEmulatedTouchScrollAnimation);\n  const size2 = !containerProps.__fromCanvasComponent ? {\n    width: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.width,\n    height: containerProps.__fromCodeComponentNode ? \"100%\" : containerProps.height\n  } : {};\n  return /* @__PURE__ */ React54.createElement(\n    FrameWithMotion,\n    {\n      ref,\n      \"data-framer-component-type\": \"NativeScroll\",\n      background: \"none\",\n      ...containerProps,\n      ...size2,\n      onScroll,\n      layoutId,\n      onBeforeLayoutMeasure: updateScrollOffsetHandler,\n      layoutScroll: true,\n      className: cx(className, `direction-${direction}`, !scrollBarVisible && \"scrollbar-hidden\")\n    },\n    /* @__PURE__ */ React54.createElement(\n      EmptyState,\n      {\n        children,\n        size: {\n          width: isFiniteNumber(containerProps.width) ? containerProps.width : \"100%\",\n          height: isFiniteNumber(containerProps.height) ? containerProps.height : \"100%\"\n        },\n        insideUserCodeComponent: !containerProps.__fromCodeComponentNode,\n        title: \"Scroll\",\n        description: \"Click and drag the connector to any frame on the canvas \\u2192\"\n      }\n    ),\n    children\n  );\n});\n\n// ../../library/src/components/Scroll/Scroll.tsx\nvar Scroll = /* @__PURE__ */ (() => {\n  const ScrollInner = React55.forwardRef(function ScrollInner2(props, forwardedRef) {\n    if (props.native) {\n      return /* @__PURE__ */ React55.createElement(NativeScroll, { ref: forwardedRef, ...props });\n    } else {\n      return /* @__PURE__ */ React55.createElement(EmulatedScroll, { ref: forwardedRef, ...props });\n    }\n  });\n  ScrollInner.defaultProps = {\n    directionLock: false\n  };\n  addPropertyControls(ScrollInner, {\n    native: {\n      type: \"boolean\" /* Boolean */,\n      defaultValue: false\n    },\n    direction: {\n      type: \"segmentedenum\" /* SegmentedEnum */,\n      title: \"Direction\",\n      options: [\"vertical\", \"horizontal\", \"both\"],\n      defaultValue: \"vertical\"\n    },\n    contentOffsetX: {\n      type: \"number\" /* Number */,\n      title: \"Offset X\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"vertical\"\n    },\n    contentOffsetY: {\n      type: \"number\" /* Number */,\n      title: \"Offset Y\",\n      defaultValue: 0,\n      min: 0,\n      step: 10,\n      displayStepper: true,\n      hidden: ({ direction }) => direction === \"horizontal\"\n    },\n    directionLock: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Lock\",\n      enabledTitle: \"1 Axis\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    dragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Drag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true\n    },\n    overdragEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Overdrag\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    wheelEnabled: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Wheel\",\n      enabledTitle: \"On\",\n      disabledTitle: \"Off\",\n      defaultValue: true,\n      hidden: ({ native }) => native === true\n    },\n    scrollBarVisible: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Scroll Bar\",\n      enabledTitle: \"Visible\",\n      disabledTitle: \"Hidden\",\n      defaultValue: false,\n      hidden: ({ native }) => native === false\n    },\n    resetOffset: {\n      type: \"boolean\" /* Boolean */,\n      title: \"Reset\",\n      defaultValue: false\n    }\n  });\n  ScrollInner.supportsConstraints = true;\n  return ScrollInner;\n})();\n\n// ../../library/src/components/useNavigation.ts\nimport { useContext as useContext9 } from \"react\";\nfunction useNavigation() {\n  return useContext9(NavigationContext);\n}\n\n// ../../library/src/data/Data.ts\nvar data = /* @__PURE__ */ (() => {\n  function Data2(initial = {}) {\n    const _data = ObservableObject(initial, false, false);\n    Data2.addData(_data);\n    return _data;\n  }\n  Data2._stores = [];\n  Data2.addData = (_data) => {\n    Data2._stores.push(_data);\n  };\n  Data2.reset = () => {\n    Data2._stores.forEach((target) => ObservableObject.resetObject(target));\n  };\n  Data2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return Data2;\n})();\nvar Data = data;\n\n// ../../library/src/data/PropertyStore.ts\nvar PropertyStore = /* @__PURE__ */ (() => {\n  function PropertyStore2(initial = {}, makeAnimatables = false) {\n    deprecationWarning(\"PropertyStore\", \"1.0.0\", \"Data() or ObservableObject()\");\n    return ObservableObject(initial, makeAnimatables);\n  }\n  PropertyStore2.addObserver = (target, observer) => {\n    return ObservableObject.addObserver(target, observer);\n  };\n  return PropertyStore2;\n})();\n\n// ../../library/src/data/useData/index.ts\nimport { createContext as createContext3, useContext as useContext10, useEffect as useEffect7, useMemo as useMemo4, useState } from \"react\";\n\n// ../../library/src/data/useData/store.ts\nfunction bindActionsToStore(get, set, actions) {\n  const boundActions = {};\n  for (const key7 in actions) {\n    const action = actions[key7];\n    if (!action)\n      continue;\n    boundActions[key7] = (data2) => set(action(get(), data2));\n  }\n  return boundActions;\n}\nfunction createStore(initialState2, unboundActions) {\n  let state = initialState2;\n  let version2 = 0;\n  const subscribers = /* @__PURE__ */ new Set();\n  const notifySubscriber = (sub) => sub(version2);\n  const get = () => state;\n  const set = (latestState) => {\n    version2++;\n    state = latestState;\n    subscribers.forEach(notifySubscriber);\n  };\n  const actions = unboundActions ? bindActionsToStore(get, set, unboundActions) : set;\n  return {\n    get,\n    set,\n    getVersion: () => version2,\n    getActions: () => actions,\n    subscribe: (sub) => {\n      subscribers.add(sub);\n      return () => subscribers.delete(sub);\n    }\n  };\n}\n\n// ../../library/src/data/useData/index.ts\nvar defaultId = /* @__PURE__ */ Symbol(\"default\");\nvar DataContext = /* @__PURE__ */ createContext3(defaultId);\nfunction createData(defaultState2, actions) {\n  const stores = /* @__PURE__ */ new Map();\n  const useData2 = (id, initialState2) => {\n    const contextId = useContext10(DataContext);\n    id = id || contextId;\n    const store = useMemo4(() => {\n      if (!stores.has(id)) {\n        stores.set(id, createStore(initialState2 || defaultState2, actions));\n      }\n      return stores.get(id);\n    }, [id]);\n    const [, notifyUpdates] = useState(store.getVersion());\n    const storeValueAtHookCallTime = useMemo4(() => store.get(), [store]);\n    useEffect7(() => {\n      const unsubscribe = store.subscribe(notifyUpdates);\n      if (storeValueAtHookCallTime !== store.get())\n        notifyUpdates(store.getVersion());\n      return unsubscribe;\n    }, [store, storeValueAtHookCallTime]);\n    return [store.get(), store.getActions()];\n  };\n  return useData2;\n}\n\n// ../../library/src/deprecated/DataObserver.tsx\nimport React56, { Component as Component10 } from \"react\";\nvar initialState = { update: 0 };\nvar DataObserverContext = /* @__PURE__ */ React56.createContext({ update: NaN });\nfunction useObserveData() {\n  const context = React56.useContext(DataObserverContext);\n  return !isNaN(context.update);\n}\nvar DataObserver = class extends Component10 {\n  constructor() {\n    super(...arguments);\n    this.observers = [];\n    this.state = initialState;\n    this.taskAdded = false;\n    this.frameTask = () => {\n      this.setState({ update: this.state.update + 1 });\n      this.taskAdded = false;\n    };\n    this.observer = () => {\n      if (this.taskAdded)\n        return;\n      this.taskAdded = true;\n      MainLoop.addFrameTask(this.frameTask);\n    };\n  }\n  componentWillUnmount() {\n    this.observers.map((cancel) => cancel());\n    Data.reset();\n  }\n  render() {\n    const { children } = this.props;\n    this.observers.map((cancel) => cancel());\n    this.observers = [];\n    Data._stores.forEach((d) => {\n      const observer = Data.addObserver(d, this.observer);\n      this.observers.push(observer);\n    });\n    return /* @__PURE__ */ React56.createElement(DataObserverContext.Provider, { value: { ...this.state } }, children);\n  }\n};\n\n// ../../library/src/modules/withFX.tsx\nimport React63 from \"react\";\n\n// ../../library/src/modules/hocOptions.ts\nvar prefix = \"__framer__\";\nvar prefixLength = prefix.length;\nfunction extractPrefixedProps(props, keys3) {\n  const result = {};\n  const rest = {};\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey && keys3.has(strippedKey)) {\n      result[strippedKey] = props[key7];\n      continue;\n    }\n    rest[key7] = props[key7];\n  }\n  return [result, rest];\n}\nfunction stripPrefixFromPrefixedKey(key7) {\n  if (key7.startsWith(prefix)) {\n    return key7.substr(prefixLength);\n  }\n  return void 0;\n}\n\n// ../../library/src/modules/useFXValues.ts\nimport React57 from \"react\";\nvar effectValuesKeys = [\n  \"opacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"transformPerspective\"\n];\nvar makeFXValues = (defaults) => {\n  var _a, _b, _c, _d, _e, _f, _g, _h;\n  return {\n    x: motionValue((_a = defaults == null ? void 0 : defaults.x) != null ? _a : 0),\n    y: motionValue((_b = defaults == null ? void 0 : defaults.y) != null ? _b : 0),\n    opacity: motionValue((_c = defaults == null ? void 0 : defaults.opacity) != null ? _c : 1),\n    scale: motionValue((_d = defaults == null ? void 0 : defaults.scale) != null ? _d : 1),\n    rotate: motionValue((_e = defaults == null ? void 0 : defaults.rotate) != null ? _e : 0),\n    rotateX: motionValue((_f = defaults == null ? void 0 : defaults.rotateX) != null ? _f : 0),\n    rotateY: motionValue((_g = defaults == null ? void 0 : defaults.rotateY) != null ? _g : 0),\n    transformPerspective: motionValue((_h = defaults == null ? void 0 : defaults.transformPerspective) != null ? _h : 0)\n  };\n};\nvar defaultFXValues = {\n  x: 0,\n  y: 0,\n  scale: 1,\n  opacity: 1,\n  transformPerspective: 0,\n  rotate: 0,\n  rotateX: 0,\n  rotateY: 0\n};\nfunction useFXValues(values, enabled) {\n  const effect = useConstant(() => ({ values: makeFXValues(values) }));\n  React57.useEffect(() => {\n    if (enabled)\n      return;\n    for (const key7 of effectValuesKeys) {\n      const value = defaultFXValues[key7];\n      if (isUndefined(value))\n        continue;\n      effect.values[key7].set(value);\n    }\n  }, [effect, enabled]);\n  return effect;\n}\n\n// ../../library/src/modules/useLoopEffect.ts\nimport React58, { useCallback as useCallback5, useEffect as useEffect8, useRef as useRef9 } from \"react\";\nvar loopOptionsKeys = /* @__PURE__ */ new Set([\n  \"loopEffectEnabled\",\n  \"loopTransition\",\n  \"loop\",\n  \"loopRepeatType\",\n  \"loopRepeatDelay\"\n]);\nvar useDelay = () => {\n  const timeoutRef = useRef9();\n  useEffect8(() => {\n    return () => {\n      clearTimeout(timeoutRef.current);\n    };\n  }, []);\n  return async (d) => new Promise((resolve) => {\n    timeoutRef.current = setTimeout(() => {\n      resolve(true);\n    }, d * 1e3);\n  });\n};\nfunction useLoop({\n  loopEffectEnabled,\n  loopRepeatDelay,\n  loopTransition,\n  loopRepeatType,\n  loop\n}) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const effect = useConstant(() => ({ values: makeFXValues() }));\n  const mirrorStateRef = React58.useRef(false);\n  const delay2 = useDelay();\n  const animateValues = async () => {\n    if (!loop)\n      return;\n    const transition = loopTransition || void 0;\n    const mirror = mirrorStateRef.current && loopRepeatType === \"mirror\";\n    const to = mirror ? defaultFXValues : loop;\n    const from = mirror ? loop : defaultFXValues;\n    mirrorStateRef.current = !mirrorStateRef.current;\n    return Promise.all(\n      effectValuesKeys.map((key7) => {\n        var _a;\n        if (shouldReduceMotion && key7 !== \"opacity\")\n          return;\n        effect.values[key7].set((_a = from[key7]) != null ? _a : defaultFXValues[key7]);\n        return new Promise((resolve) => {\n          var _a2;\n          animate(effect.values[key7], (_a2 = to[key7]) != null ? _a2 : from[key7], {\n            ...transition,\n            onComplete: () => resolve()\n          });\n        });\n      })\n    );\n  };\n  const start = async () => {\n    if (!loopEffectEnabled)\n      return;\n    await animateValues();\n    await delay2(loopRepeatDelay != null ? loopRepeatDelay : 0);\n    await start();\n  };\n  const stop = useCallback5(() => {\n    effectValuesKeys.forEach((key7) => {\n      effect.values[key7].stop();\n    });\n    effectValuesKeys.forEach((key7) => {\n      effect.values[key7].set(defaultFXValues[key7]);\n    });\n    mirrorStateRef.current = false;\n  }, [effect]);\n  React58.useEffect(() => {\n    if (loopEffectEnabled && loop) {\n      start();\n    } else {\n      stop();\n    }\n    return () => stop();\n  }, [loopEffectEnabled]);\n  return effect;\n}\n\n// ../../library/src/modules/useParallax.ts\nimport React59 from \"react\";\n\n// ../../library/src/modules/parallaxTransform.ts\nfunction parallaxTransform(scrollY, originalPosition, speed, offset, adjustPosition) {\n  const speedFactor = speed / 100 - 1;\n  const initialPosition = adjustPosition ? (originalPosition - offset) * speedFactor : 0;\n  const scrollOffset = -scrollY * speedFactor;\n  return initialPosition + scrollOffset;\n}\n\n// ../../library/src/modules/useParallax.ts\nvar parallaxOptionsKeys = /* @__PURE__ */ new Set([\n  \"speed\",\n  \"adjustPosition\",\n  \"offset\",\n  \"parallaxTransformEnabled\"\n]);\nfunction useParallax(options, ref, visibilityStyle) {\n  const { speed = 100, offset = 0, adjustPosition = false, parallaxTransformEnabled } = options;\n  const originalPosition = React59.useRef(null);\n  const shouldReduceMotion = useReducedMotionConfig();\n  const transform2 = React59.useCallback(\n    (yValue) => {\n      if (originalPosition.current === null)\n        return 0;\n      if (speed === 100)\n        return 0;\n      return parallaxTransform(yValue, originalPosition.current, speed, offset, adjustPosition);\n    },\n    [originalPosition, speed, offset, adjustPosition]\n  );\n  React59.useLayoutEffect(() => {\n    frame.read(() => {\n      var _a, _b, _c;\n      originalPosition.current = (_c = (_b = (_a = ref.current) == null ? void 0 : _a.getBoundingClientRect()) == null ? void 0 : _b.top) != null ? _c : 0;\n    });\n    frame.update(() => {\n      parallaxY.set(transform2(scrollY.get()));\n      if (adjustPosition) {\n        visibility.set(visibilityStyle != null ? visibilityStyle : \"initial\");\n      }\n    });\n  }, [ref, originalPosition, adjustPosition]);\n  const { scrollY } = useScroll();\n  const parallaxY = useTransform(scrollY, transform2);\n  const visibility = useMotionValue(adjustPosition && originalPosition.current === null ? \"hidden\" : visibilityStyle);\n  const defaultValue = useMotionValue(0);\n  return {\n    values: {\n      y: shouldReduceMotion || !parallaxTransformEnabled ? defaultValue : parallaxY\n    },\n    style: {\n      visibility\n    }\n  };\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nimport React61 from \"react\";\n\n// ../../library/src/modules/calculateOffsetTop.ts\nfunction calcOffsetTop(element, container) {\n  let top = 0;\n  let current = element;\n  while (current && current !== container) {\n    if (!(current instanceof HTMLElement))\n      break;\n    top += current.offsetTop;\n    current = current.offsetParent;\n  }\n  return top;\n}\n\n// ../../library/src/modules/createTransformInputRange.ts\nvar scrollObserverOffset = 1;\nfunction createTransformInputRange(transformTargets, threshold = 0, callback) {\n  var _a, _b, _c;\n  const starts = [];\n  const inputRange = [];\n  for (let index = transformTargets.length; index >= 0; index--) {\n    const { ref: targetRef, offset } = (_a = transformTargets[index]) != null ? _a : {};\n    if (!targetRef || !targetRef.current)\n      continue;\n    const offsetTop = calcOffsetTop(targetRef.current, document.documentElement);\n    const top = offsetTop - scrollObserverOffset - (offset != null ? offset : 0) - threshold;\n    const height = (_c = (_b = targetRef.current) == null ? void 0 : _b.clientHeight) != null ? _c : 0;\n    const previousTop = starts[starts.length - 1];\n    const end = Math.max(top + height, 0);\n    starts.push(top);\n    inputRange.unshift(\n      Math.max(top, 0),\n      previousTop === void 0 ? end : Math.min(end, Math.max(previousTop - 1, 0))\n    );\n    callback == null ? void 0 : callback(index);\n  }\n  return inputRange;\n}\n\n// ../../library/src/modules/useScrollDirectionChange.ts\nimport React60 from \"react\";\nfunction currentScrollDirection(offset, lastOffset = 0) {\n  if (offset < lastOffset)\n    return \"up\";\n  return \"down\";\n}\nvar scrollDirectionThreshold = 4;\nfunction useScrollDirectionChange(scrollDirection, cb, options = {}) {\n  const { direction, target } = scrollDirection != null ? scrollDirection : {};\n  const { repeat = true, enabled = true } = options;\n  React60.useEffect(() => {\n    if (!direction || !enabled)\n      return;\n    let lastOffset = void 0;\n    let directionChangeOffset = 0;\n    let lastDirection = void 0;\n    let currentTarget = void 0;\n    return scrollInfo(({ y: scrollY }) => {\n      if (!repeat && currentTarget === target)\n        return;\n      if (scrollY.current > scrollY.scrollLength)\n        return;\n      if (scrollY.current < 0)\n        return;\n      const d = currentScrollDirection(scrollY.current, lastOffset);\n      lastOffset = scrollY.current;\n      const hasDirectionChanged = d !== lastDirection;\n      lastDirection = d;\n      if (hasDirectionChanged) {\n        directionChangeOffset = scrollY.current;\n      } else {\n        const delta = Math.abs(scrollY.current - directionChangeOffset);\n        if (delta < scrollDirectionThreshold)\n          return;\n        const nextTarget = d === direction ? target : void 0;\n        if (nextTarget !== currentTarget)\n          cb(nextTarget);\n        currentTarget = nextTarget;\n      }\n    });\n  }, [direction, repeat, target, enabled, cb]);\n}\n\n// ../../library/src/modules/useStyleAppearEffect.ts\nvar styleAppearOptionsKeys = /* @__PURE__ */ new Set([\n  \"threshold\",\n  \"animateOnce\",\n  \"opacity\",\n  \"targetOpacity\",\n  \"x\",\n  \"y\",\n  \"scale\",\n  \"transition\",\n  \"rotate\",\n  \"rotateX\",\n  \"rotateY\",\n  \"perspective\",\n  \"enter\",\n  \"exit\",\n  \"animate\",\n  \"styleAppearEffectEnabled\",\n  \"targets\",\n  \"scrollDirection\"\n]);\nvar defaultOutputRange = [\"animate\", \"animate\"];\nfunction createInputOutputRange(targets, threshold, hasExit) {\n  const inputRange = createTransformInputRange(targets, threshold);\n  const outputRange = [...defaultOutputRange];\n  const firstRange = inputRange[0];\n  assert(typeof firstRange === \"number\", `Invalid inputRange: ${inputRange}`);\n  if (firstRange > 1) {\n    inputRange.unshift(0, firstRange - 1);\n    outputRange.unshift(\"initial\", \"initial\");\n  }\n  if (hasExit) {\n    const idx = inputRange.length - 1;\n    const last = inputRange[idx];\n    assert(typeof last === \"number\", `Invalid inputRange: ${inputRange}`);\n    inputRange.push(last + 1);\n    outputRange.push(\"exit\");\n  }\n  return {\n    inputRange,\n    outputRange\n  };\n}\nfunction makeStyle(defaults) {\n  var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n  return {\n    x: (_a = defaults == null ? void 0 : defaults.x) != null ? _a : defaultFXValues.x,\n    y: (_b = defaults == null ? void 0 : defaults.y) != null ? _b : defaultFXValues.y,\n    scale: (_c = defaults == null ? void 0 : defaults.scale) != null ? _c : defaultFXValues.scale,\n    opacity: (_d = defaults == null ? void 0 : defaults.opacity) != null ? _d : defaultFXValues.opacity,\n    transformPerspective: (_e = defaults == null ? void 0 : defaults.transformPerspective) != null ? _e : defaultFXValues.transformPerspective,\n    rotate: (_f = defaults == null ? void 0 : defaults.rotate) != null ? _f : defaultFXValues.rotate,\n    rotateX: (_g = defaults == null ? void 0 : defaults.rotateX) != null ? _g : defaultFXValues.rotateX,\n    rotateY: (_h = defaults == null ? void 0 : defaults.rotateY) != null ? _h : defaultFXValues.rotateY,\n    transition: (_i = defaults == null ? void 0 : defaults.transition) != null ? _i : void 0\n  };\n}\nfunction useAnimationVariants({\n  opacity,\n  targetOpacity,\n  perspective: transformPerspective,\n  enter,\n  exit,\n  animate: animateVariant,\n  ...defaultStyles\n}) {\n  return React61.useMemo(\n    () => {\n      var _a;\n      return {\n        initial: enter != null ? enter : makeStyle({\n          ...defaultStyles,\n          opacity: (_a = opacity != null ? opacity : targetOpacity) != null ? _a : 1,\n          transformPerspective\n        }),\n        animate: animateVariant != null ? animateVariant : makeStyle({\n          opacity: targetOpacity\n        }),\n        exit: exit != null ? exit : makeStyle()\n      };\n    },\n    [animateVariant, defaultStyles, enter, exit, opacity, targetOpacity, transformPerspective]\n  );\n}\nfunction useStyleAppearEffect(options, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const variants = useAnimationVariants(options);\n  const enabled = options.styleAppearEffectEnabled;\n  const effect = useFXValues(enabled ? variants.initial : variants.animate, enabled);\n  const playState = React61.useRef({\n    isPlaying: false,\n    scheduledAppearState: void 0,\n    lastAppearState: !options.styleAppearEffectEnabled\n  });\n  const animation = React61.useRef();\n  const runAnimation = React61.useCallback(\n    async ({ transition, ...target }, fromInitial) => {\n      var _a;\n      const transitionWithFallback = (_a = transition != null ? transition : variants.animate.transition) != null ? _a : options.transition;\n      await animation.current;\n      animation.current = Promise.all(\n        effectValuesKeys.map((key7) => {\n          var _a2, _b;\n          if (fromInitial)\n            effect.values[key7].set((_a2 = variants.initial[key7]) != null ? _a2 : defaultFXValues[key7]);\n          const toValue = (_b = target[key7]) != null ? _b : defaultFXValues[key7];\n          const visualElement = visualElementStore.get(ref.current);\n          if (visualElement && typeof toValue !== \"object\") {\n            visualElement.setBaseTarget(key7, toValue);\n          }\n          return new Promise((resolve) => {\n            if (shouldReduceMotion && key7 !== \"opacity\") {\n              resolve();\n            } else {\n              animate(effect.values[key7], toValue, {\n                restDelta: key7 === \"scale\" ? 1e-3 : void 0,\n                ...transitionWithFallback,\n                onComplete: () => resolve()\n              });\n            }\n          });\n        })\n      );\n    },\n    // All dependencies are object values or stable.\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    []\n  );\n  const hasAnimatedOnce = options.animateOnce && playState.current.lastAppearState === true;\n  const animateWithIntersectionObserver = !options.targets && options.styleAppearEffectEnabled && !options.scrollDirection && !hasAnimatedOnce;\n  useAppearEffect(\n    ref,\n    (appears) => {\n      const { isPlaying, lastAppearState } = playState.current;\n      if (isPlaying) {\n        playState.current.scheduledAppearState = appears;\n        return;\n      }\n      playState.current.scheduledAppearState = void 0;\n      playState.current.lastAppearState = appears;\n      if (lastAppearState === appears)\n        return;\n      runAnimation(appears ? variants.animate : variants.exit, appears);\n    },\n    {\n      enabled: animateWithIntersectionObserver,\n      animateOnce: !!options.animateOnce,\n      threshold: {\n        y: options.threshold\n      }\n    }\n  );\n  const animateWithScrollInfo = options.targets && enabled && !options.scrollDirection;\n  React61.useEffect(() => {\n    if (!animateWithScrollInfo)\n      return;\n    const playedState = { initial: true };\n    let lastVariant = \"initial\";\n    return scrollInfo(({ y: scrollY }) => {\n      var _a;\n      const { targets } = options;\n      if (!targets)\n        return;\n      if (!targets[0] || targets[0].ref && !targets[0].ref.current)\n        return;\n      const { inputRange, outputRange } = createInputOutputRange(\n        targets,\n        ((_a = options.threshold) != null ? _a : 0) * scrollY.containerLength,\n        !!options.exit\n      );\n      if (inputRange.length === 0)\n        return;\n      assert(\n        inputRange.length === outputRange.length,\n        `Style ranges must have the same number of entries. Input: ${inputRange}, Output: ${outputRange}`\n      );\n      const variant = transform(scrollY.current, inputRange, outputRange);\n      if (options.animateOnce && playedState[variant])\n        return;\n      playedState[variant] = true;\n      if (lastVariant === variant)\n        return;\n      lastVariant = variant;\n      runAnimation(variants[variant]);\n    });\n  }, [animateWithScrollInfo]);\n  useScrollDirectionChange(options.scrollDirection, (target) => runAnimation(target != null ? target : variants.animate), {\n    enabled,\n    repeat: !options.animateOnce\n  });\n  return effect;\n}\n\n// ../../library/src/modules/useStyleTransformEffect.tsx\nimport React62 from \"react\";\nvar styleTransformOptionsKeys = /* @__PURE__ */ new Set([\n  \"transformViewportThreshold\",\n  \"styleTransformEffectEnabled\",\n  \"transformTargets\",\n  \"spring\",\n  \"transformTrigger\"\n]);\nvar defaultValues = (transformTargets, shouldReduceMotion) => {\n  var _a, _b;\n  const initial = (_a = transformTargets == null ? void 0 : transformTargets[0]) == null ? void 0 : _a.target;\n  return shouldReduceMotion ? { opacity: (_b = initial == null ? void 0 : initial.opacity) != null ? _b : 1 } : initial;\n};\nvar defaultRanges = () => ({\n  opacity: [],\n  x: [],\n  y: [],\n  scale: [],\n  rotate: [],\n  rotateX: [],\n  rotateY: [],\n  transformPerspective: []\n});\nfunction useAttachOptionalSpring(values, spring2) {\n  const springs = React62.useRef({});\n  React62.useEffect(() => {\n    if (spring2 === void 0)\n      return;\n    for (const key7 in values) {\n      const m2 = values[key7];\n      m2.attach((v, set) => {\n        const active = springs.current[key7];\n        if (active)\n          active.stop();\n        springs.current[key7] = animateValue({\n          keyframes: [m2.get(), v],\n          velocity: m2.getVelocity(),\n          ...spring2,\n          restDelta: 1e-3,\n          onUpdate: set\n        });\n        if (!frameData.isProcessing) {\n          const delta = performance.now() - frameData.timestamp;\n          if (delta < 40) {\n            springs.current[key7].time = delta / 1e3;\n          }\n        }\n        return m2.get();\n      });\n    }\n  }, [JSON.stringify(spring2)]);\n}\nfunction createInputOutputRanges(transformTargets, threshold) {\n  const effectKeyOutputRange = defaultRanges();\n  const inputRange = createTransformInputRange(transformTargets, threshold, (index) => {\n    var _a, _b, _c, _d, _e;\n    const previousTarget = (_a = transformTargets[index - 1]) == null ? void 0 : _a.target;\n    const currentTarget = (_b = transformTargets[index]) == null ? void 0 : _b.target;\n    for (const key7 of effectValuesKeys)\n      (_e = effectKeyOutputRange[key7]) == null ? void 0 : _e.unshift((_c = previousTarget == null ? void 0 : previousTarget[key7]) != null ? _c : 0, (_d = currentTarget == null ? void 0 : currentTarget[key7]) != null ? _d : 0);\n  });\n  return { inputRange, effectKeyOutputRange };\n}\nfunction createPageOutputRange(transformTargets) {\n  var _a;\n  const keyOutputRange = defaultRanges();\n  for (const { target } of transformTargets) {\n    for (const key7 of effectValuesKeys)\n      (_a = keyOutputRange[key7]) == null ? void 0 : _a.push(target[key7]);\n  }\n  return keyOutputRange;\n}\nvar pageInputRange = [0, 1];\nfunction useStyleTransform({\n  transformTrigger,\n  styleTransformEffectEnabled,\n  transformTargets,\n  spring: spring2,\n  transformViewportThreshold = 0\n}, ref) {\n  const shouldReduceMotion = useReducedMotionConfig();\n  const effect = useFXValues(defaultValues(transformTargets, shouldReduceMotion), styleTransformEffectEnabled);\n  React62.useLayoutEffect(() => {\n    var _a;\n    if (!styleTransformEffectEnabled || !transformTargets)\n      return;\n    if (transformTrigger !== \"onScrollTarget\") {\n      const outputRange = createPageOutputRange(transformTargets);\n      return scrollInfo(\n        ({ y: scrollY }) => {\n          for (const key7 of effectValuesKeys) {\n            if (shouldReduceMotion && key7 !== \"opacity\")\n              continue;\n            assert(\n              pageInputRange.length === outputRange[key7].length,\n              `Transform ranges must have the same number of entries. Input: ${pageInputRange}, Output: ${outputRange[key7]}`\n            );\n            effect.values[key7].set(transform(scrollY.progress, pageInputRange, outputRange[key7]));\n          }\n        },\n        transformTrigger === \"onInView\" ? {\n          target: (_a = ref.current) != null ? _a : void 0,\n          offset: [`start end`, `end end`]\n        } : void 0\n      );\n    } else {\n      return scrollInfo(({ y: scrollY }) => {\n        if (!transformTargets[0] || transformTargets[0].ref && !transformTargets[0].ref.current)\n          return;\n        const { inputRange: scrollYInputRange, effectKeyOutputRange } = createInputOutputRanges(\n          transformTargets,\n          transformViewportThreshold * scrollY.containerLength\n        );\n        if (scrollYInputRange.length === 0)\n          return;\n        for (const key7 of effectValuesKeys) {\n          if (shouldReduceMotion && key7 !== \"opacity\")\n            continue;\n          assert(\n            scrollYInputRange.length === effectKeyOutputRange[key7].length,\n            `Transform ranges must have the same number of entries. Input: ${scrollYInputRange}, Output: ${effectKeyOutputRange[key7]}`\n          );\n          effect.values[key7].set(transform(scrollY.current, scrollYInputRange, effectKeyOutputRange[key7]));\n        }\n      });\n    }\n  }, [\n    shouldReduceMotion,\n    transformTrigger,\n    ref,\n    transformViewportThreshold,\n    styleTransformEffectEnabled,\n    effect,\n    transformTargets\n  ]);\n  useAttachOptionalSpring(effect.values, spring2);\n  return effect;\n}\n\n// ../../library/src/modules/withFX.tsx\nvar groups = {\n  parallax: parallaxOptionsKeys,\n  styleAppear: styleAppearOptionsKeys,\n  styleTransform: styleTransformOptionsKeys,\n  loop: loopOptionsKeys\n};\nvar groupValues = /* @__PURE__ */ Object.keys(groups);\nfunction backwardsCompatibleEnabledCheck(key7, secondaryKey, object) {\n  return !(key7 in object) && secondaryKey in object || object[key7] === true;\n}\nfunction extractFXOptions(props) {\n  const result = {\n    parallax: {},\n    styleAppear: {},\n    styleTransform: {},\n    loop: {},\n    forwardedProps: {}\n  };\n  for (const key7 in props) {\n    const strippedKey = stripPrefixFromPrefixedKey(key7);\n    if (strippedKey) {\n      for (const group of groupValues) {\n        const keys3 = groups[group];\n        if (keys3.has(strippedKey)) {\n          result[group][strippedKey] = props[key7];\n          break;\n        }\n      }\n    } else {\n      result.forwardedProps[key7] = props[key7];\n    }\n  }\n  result.parallax.parallaxTransformEnabled = backwardsCompatibleEnabledCheck(\n    \"parallaxTransformEnabled\",\n    \"speed\",\n    result.parallax\n  );\n  result.styleAppear.styleAppearEffectEnabled = backwardsCompatibleEnabledCheck(\n    \"styleAppearEffectEnabled\",\n    \"animateOnce\",\n    result.styleAppear\n  );\n  return result;\n}\nvar add2 = (values) => values.reduce((sum, value) => sum += value, 0);\nvar multiply = (values) => values.reduce((sum, value) => sum = sum * value, 1);\nvar reactRefObjectKey = \"current\";\nfunction isReactRefObject(value) {\n  return isObject2(value) && reactRefObjectKey in value;\n}\nvar withFX = (Component15) => React63.forwardRef((props, forwardedRef) => {\n  var _a;\n  if (props.__withFX)\n    return /* @__PURE__ */ React63.createElement(Component15, { ...props, ref: forwardedRef });\n  const fallbackRef = React63.useRef(null);\n  const ref = forwardedRef != null ? forwardedRef : fallbackRef;\n  const {\n    parallax = {},\n    styleAppear = {},\n    styleTransform = {},\n    loop = {},\n    forwardedProps\n  } = extractFXOptions(props);\n  const values = useConstant(() => {\n    var _a2;\n    const defaults = {};\n    if (!isObject2(forwardedProps.initial))\n      return makeFXValues();\n    for (const key7 in forwardedProps.initial) {\n      let value = (_a2 = forwardedProps.initial) == null ? void 0 : _a2[key7];\n      if (isMotionValue(value))\n        value = value.get();\n      if (!isNumber(value))\n        continue;\n      defaults[key7] = value;\n    }\n    return makeFXValues(defaults);\n  });\n  const targetOpacityValue = (_a = props.__targetOpacity) != null ? _a : 1;\n  const targetOpacity = useMotionValue(targetOpacityValue);\n  const { values: parallaxValues, style: parallaxStyle } = useParallax(parallax, ref);\n  const { values: transformValues3 } = useStyleTransform(styleTransform, ref);\n  const { values: appearEffectValues } = useStyleAppearEffect(styleAppear, ref);\n  const { values: loopValues } = useLoop(loop);\n  const fxValues = React63.useMemo(() => {\n    return {\n      scale: [values.scale, transformValues3.scale, appearEffectValues.scale, loopValues.scale],\n      opacity: [\n        values.opacity,\n        // Ensure that the layers opacity is always represented.\n        targetOpacity,\n        transformValues3.opacity,\n        appearEffectValues.opacity,\n        loopValues.opacity\n      ],\n      x: [values.x, transformValues3.x, appearEffectValues.x, loopValues.x],\n      y: [values.y, transformValues3.y, appearEffectValues.y, loopValues.y, parallaxValues.y],\n      rotate: [values.rotate, transformValues3.rotate, appearEffectValues.rotate, loopValues.rotate],\n      rotateX: [values.rotateX, transformValues3.rotateX, appearEffectValues.rotateX, loopValues.rotateX],\n      rotateY: [values.rotateY, transformValues3.rotateY, appearEffectValues.rotateY, loopValues.rotateY],\n      transformPerspective: [\n        values.transformPerspective,\n        transformValues3.transformPerspective,\n        appearEffectValues.transformPerspective\n        // We stopped animating transformPerspective with `withFX`\n        // before introducing `useLoop`, so it does not have a value\n        // here on purpose.\n      ]\n    };\n  }, [targetOpacity, values, transformValues3, parallaxValues, appearEffectValues, loopValues]);\n  const scale = useTransform(fxValues.scale, multiply);\n  const opacity = useTransform(fxValues.opacity, multiply);\n  const x = useTransform(fxValues.x, add2);\n  const y = useTransform(fxValues.y, add2);\n  const rotate = useTransform(fxValues.rotate, add2);\n  const rotateX = useTransform(fxValues.rotateX, add2);\n  const rotateY = useTransform(fxValues.rotateY, add2);\n  const transformPerspective = useTransform(fxValues.transformPerspective, add2);\n  const { drag, dragConstraints } = forwardedProps;\n  useRerenderOnResize(drag && isReactRefObject(dragConstraints) ? dragConstraints : void 0);\n  const motionValueStyle = {\n    opacity,\n    scale,\n    x,\n    y,\n    rotate,\n    rotateX,\n    rotateY\n  };\n  if (isUndefined(props.__perspectiveFX)) {\n    motionValueStyle.transformPerspective = transformPerspective;\n  }\n  return /* @__PURE__ */ React63.createElement(\n    Component15,\n    {\n      ...forwardedProps,\n      __withFX: true,\n      style: {\n        ...props.style,\n        ...parallaxStyle,\n        ...motionValueStyle\n      },\n      values,\n      ref\n    }\n  );\n});\n\n// ../../library/src/deprecated/deprecatedEffects.ts\nvar withParallaxTransform = withFX;\nvar withStyleAppearEffect = withFX;\n\n// ../../library/src/deprecated/WithOverride.tsx\nvar import_hoist_non_react_statics4 = __toESM(require_hoist_non_react_statics_cjs(), 1);\nimport React64, { useContext as useContext11 } from \"react\";\n\n// ../../library/src/deprecated/convertColorProps.ts\nfunction convertColorObject(prop) {\n  if (typeof prop === \"string\" || isMotionValue2(prop)) {\n    return prop;\n  } else if (LinearGradient.isLinearGradient(prop)) {\n    return LinearGradient.toCSS(prop);\n  } else if (RadialGradient.isRadialGradient(prop)) {\n    return RadialGradient.toCSS(prop);\n  } else if (Color.isColorObject(prop)) {\n    return Color.toRgbString(prop);\n  }\n  return prop;\n}\nfunction convertColorProps(props) {\n  if (props.background || props.color) {\n    const converted = Object.assign({}, props);\n    if (props.background) {\n      converted.background = convertColorObject(props.background);\n    }\n    if (props.color) {\n      converted.color = convertColorObject(props.color);\n    }\n    return converted;\n  }\n  return props;\n}\n\n// ../../library/src/deprecated/WithOverride.tsx\nfunction WithOverride(Component15, override) {\n  const useOverride = typeof override === \"function\" ? (props) => override(convertColorProps(props)) : () => convertColorProps(override);\n  const ComponentWithOverride = function(props) {\n    useContext11(DataObserverContext);\n    const overrideProps = useOverride(props);\n    const { style, ...rest } = props;\n    return /* @__PURE__ */ React64.createElement(Component15, { ...rest, ...overrideProps, _initialStyle: style });\n  };\n  (0, import_hoist_non_react_statics4.default)(ComponentWithOverride, Component15);\n  ComponentWithOverride[\"displayName\"] = `WithOverride(${Component15.displayName || Component15.name})`;\n  return ComponentWithOverride;\n}\n\n// ../../library/src/modules/callEach.ts\nvar callEach = (...fns) => fns.forEach((fn) => fn && fn());\n\n// ../../library/src/modules/ComponentPresetsContext.tsx\nimport React65, { createContext as createContext4, useContext as useContext12, useRef as useRef10 } from \"react\";\nvar Context = /* @__PURE__ */ createContext4({});\nfunction ComponentPresetsProvider({ presets, children }) {\n  const lastPresets = useRef10(presets);\n  if (!isEqual(presets, lastPresets.current, false)) {\n    lastPresets.current = presets;\n  }\n  return /* @__PURE__ */ React65.createElement(Context.Provider, { value: lastPresets.current }, children);\n}\nfunction ComponentPresetsConsumer({ componentIdentifier, children }) {\n  var _a;\n  const componentPresets = useContext12(Context);\n  const presetProps = (_a = componentPresets[componentIdentifier]) != null ? _a : {};\n  return children(presetProps);\n}\n\n// ../../library/src/modules/Container.tsx\nimport React67 from \"react\";\n\n// ../../library/src/render/utils/withGeneratedLayoutId.tsx\nimport React66 from \"react\";\nvar withGeneratedLayoutId = (Component15) => React66.forwardRef((props, ref) => {\n  const layoutId = useLayoutId(props);\n  return /* @__PURE__ */ React66.createElement(Component15, { layoutId, ...props, layoutIdKey: void 0, duplicatedFrom: void 0, ref });\n});\n\n// ../../library/src/modules/Container.tsx\nvar Providers = /* @__PURE__ */ React67.forwardRef(\n  ({ children, layoutId, ...props }, ref) => {\n    const outerLayoutId = useConstant(() => layoutId ? `${layoutId}-container` : void 0);\n    return /* @__PURE__ */ React67.createElement(motion.div, { layoutId: outerLayoutId, ...props, ref }, /* @__PURE__ */ React67.createElement(ComponentContainerContext.Provider, { value: true }, /* @__PURE__ */ React67.createElement(AutomaticLayoutIds, { enabled: false }, /* @__PURE__ */ React67.createElement(LayoutGroup, { id: layoutId != null ? layoutId : \"\", inherit: \"id\" }, React67.Children.map(children, (child) => {\n      return React67.isValidElement(child) ? React67.cloneElement(child, { layoutId }) : child;\n    })))));\n  }\n);\nvar Container = /* @__PURE__ */ withGeneratedLayoutId(Providers);\n\n// ../../library/src/modules/framerPageLink.ts\nvar elementKey = \"element\";\nvar collectionKey = \"collection\";\nvar collectionItemIdKey = \"collectionItemId\";\nvar pathVariablesKey = \"pathVariables\";\nvar mediaType = \"framer/page-link,\";\nfunction isFramerPageLink(value) {\n  return isString2(value) && value.startsWith(`data:${mediaType}`);\n}\nfunction createFramerPageLink(targetId = null, options = {}) {\n  const target = targetId ? targetId : \"none\";\n  const link = new URL(`data:${mediaType}${target}`);\n  if (options.element) {\n    link.searchParams.append(elementKey, options.element);\n  }\n  if (options.collectionItem) {\n    link.searchParams.append(collectionKey, options.collectionItem.collection);\n    link.searchParams.append(collectionItemIdKey, options.collectionItem.collectionItemId);\n    link.searchParams.append(pathVariablesKey, new URLSearchParams(options.collectionItem.pathVariables).toString());\n  }\n  return link.href;\n}\nfunction parseFramerPageLink(link) {\n  if (!isFramerPageLink(link))\n    return;\n  try {\n    const url = new URL(link);\n    const target = url.pathname.substring(mediaType.length);\n    const searchParams = url.searchParams;\n    const element = searchParams.has(elementKey) ? searchParams.get(elementKey) : void 0;\n    let collectionItem;\n    const collection = searchParams.get(collectionKey);\n    const collectionItemId = searchParams.get(collectionItemIdKey);\n    const pathVariablesValue = searchParams.get(pathVariablesKey);\n    if (collection && collectionItemId && pathVariablesValue) {\n      const pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesValue).entries());\n      collectionItem = {\n        collection,\n        collectionItemId,\n        pathVariables\n      };\n    }\n    return {\n      target: target === \"none\" ? null : target,\n      /**\n       * For historical reason we used to set \"element=none\" into the\n       * datalink, we no longer do that today, but we still keep this code\n       * so we could parse legacy links correctly.\n       */\n      element: element === \"none\" ? void 0 : element,\n      collectionItem\n    };\n  } catch {\n    return;\n  }\n}\nfunction shouldOpenLinkInNewTab(link) {\n  return !isFramerPageLink(link);\n}\nfunction navigateFromAttributes(navigate, element, implicitPathVariables) {\n  var _a, _b, _c;\n  let routeId = element.getAttribute(\"data-framer-page-link-target\" /* Page */);\n  let elementId;\n  let pathVariables;\n  if (routeId) {\n    elementId = (_a = element.getAttribute(\"data-framer-page-link-element\" /* Element */)) != null ? _a : void 0;\n    const pathVariablesRaw = element.getAttribute(\"data-framer-page-link-path-variables\" /* PathVariables */);\n    if (pathVariablesRaw) {\n      pathVariables = Object.fromEntries(new URLSearchParams(pathVariablesRaw).entries());\n    }\n  } else {\n    const href = element.getAttribute(\"href\");\n    if (!href)\n      return false;\n    const link = parseFramerPageLink(href);\n    if (!link || !link.target)\n      return false;\n    routeId = link.target;\n    elementId = (_b = link.element) != null ? _b : void 0;\n    pathVariables = (_c = link.collectionItem) == null ? void 0 : _c.pathVariables;\n  }\n  const smoothScroll = elementId ? element.dataset.framerSmoothScroll !== void 0 : void 0;\n  navigate(routeId, elementId, Object.assign({}, implicitPathVariables, pathVariables), smoothScroll);\n  return true;\n}\n\n// ../../library/src/modules/GeneratedComponentContext.ts\nimport React68 from \"react\";\nvar GeneratedComponentContext = /* @__PURE__ */ React68.createContext(\n  void 0\n);\n\n// ../../library/src/modules/LazyValue.ts\nvar LazyValue = class {\n  constructor(resolver) {\n    this.resolver = resolver;\n  }\n  static is(value) {\n    return value instanceof LazyValue;\n  }\n  /** Preload the value so it can be read() later. */\n  preload() {\n    if (this.status) {\n      const status = this.status;\n      if (status.type !== \"pending\")\n        return;\n      return status.promise;\n    }\n    const promise = this.resolver().then(\n      (value) => {\n        this.status = {\n          type: \"fulfilled\",\n          value\n        };\n      },\n      (error) => {\n        this.status = {\n          type: \"rejected\",\n          error\n        };\n      }\n    );\n    this.status = {\n      type: \"pending\",\n      promise\n    };\n    return promise;\n  }\n  /** Synchronously read the value after calling preload() before. */\n  read() {\n    const status = this.status;\n    if (!status) {\n      throw new Error(\"Need to call preload() before read()\");\n    }\n    switch (status.type) {\n      case \"pending\":\n        throw new Error(\"Need to wait for preload() to resolve\");\n      case \"fulfilled\":\n        return status.value;\n      case \"rejected\":\n        throw status.error;\n      default:\n        assertNever(status);\n    }\n  }\n};\n\n// ../../library/src/modules/Link.tsx\nimport React69 from \"react\";\n\n// ../../library/src/render/utils/findAnchorElement.ts\nfunction findAnchorElement(target, withinElement) {\n  if (target instanceof HTMLAnchorElement) {\n    return target;\n  }\n  if (target instanceof Element) {\n    if (target === withinElement) {\n      return null;\n    }\n    return findAnchorElement(target.parentElement, withinElement);\n  }\n  return null;\n}\n\n// ../../library/src/modules/Link.tsx\nvar linkKey = \"webPageId\";\nfunction isLinkToWebPage(link) {\n  return Boolean(link && typeof link === \"object\" && linkKey in link);\n}\nfunction createVariablesFromPageLinkCollectionItem(collectionItem) {\n  if (!collectionItem)\n    return void 0;\n  const variables = {};\n  for (const pathVariablesKey2 in collectionItem.pathVariables) {\n    const value = collectionItem.pathVariables[pathVariablesKey2];\n    if (value)\n      variables[pathVariablesKey2] = value;\n  }\n  return variables;\n}\nfunction linkFromFramerPageLink(link) {\n  if (!isFramerPageLink(link))\n    return link;\n  const parsed = parseFramerPageLink(link);\n  if (!parsed)\n    return void 0;\n  const { target, element, collectionItem } = parsed;\n  if (!target)\n    return void 0;\n  return {\n    webPageId: target,\n    hash: element != null ? element : void 0,\n    pathVariables: createVariablesFromPageLinkCollectionItem(collectionItem)\n  };\n}\nvar pathVariablesRegExp2 = /:([a-zA-Z][a-zA-Z0-9_]*)/g;\nvar PathVariablesContext = React69.createContext(void 0);\nfunction useImplicitPathVariables() {\n  var _a;\n  const contextPathVariables = React69.useContext(PathVariablesContext);\n  const currentPathVariables = (_a = useCurrentRoute()) == null ? void 0 : _a.pathVariables;\n  const pathVariables = contextPathVariables || currentPathVariables;\n  return pathVariables;\n}\nfunction linkMatchesRoute(route, { webPageId, hash: hash2, pathVariables }, implicitPathVariables) {\n  if (webPageId !== route.id)\n    return false;\n  if (hash2)\n    return false;\n  if (route.path && route.pathVariables) {\n    const combinedPathVariable = Object.assign({}, implicitPathVariables, pathVariables);\n    for (const [, key7] of route.path.matchAll(pathVariablesRegExp2)) {\n      if (!key7)\n        return false;\n      if (route.pathVariables[key7] !== combinedPathVariable[key7]) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\nfunction useLinkMatchesRoute(link) {\n  const route = useCurrentRoute();\n  const contextPathVariables = React69.useContext(PathVariablesContext);\n  if (!route)\n    return false;\n  const pageLink = isString2(link) ? linkFromFramerPageLink(link) : link;\n  return isLinkToWebPage(pageLink) ? linkMatchesRoute(route, pageLink, contextPathVariables) : false;\n}\nfunction isInternalURL(href) {\n  if (href === void 0)\n    return false;\n  if (href.startsWith(\"#\") || href.startsWith(\"/\") || href.startsWith(\".\"))\n    return true;\n  return false;\n}\nfunction isValidURL(href, isInternal) {\n  try {\n    const url = new URL(href);\n    return Boolean(url.protocol);\n  } catch {\n  }\n  return isInternal;\n}\nvar AnchorLinkTarget = /* @__PURE__ */ ((AnchorLinkTarget2) => {\n  AnchorLinkTarget2[\"_blank\"] = \"_blank\";\n  AnchorLinkTarget2[\"_self\"] = \"_self\";\n  return AnchorLinkTarget2;\n})(AnchorLinkTarget || {});\nfunction getTargetAttrValue(openInNewTab, isInternal) {\n  if (openInNewTab !== void 0) {\n    return openInNewTab ? \"_blank\" /* _blank */ : void 0;\n  }\n  return isInternal ? void 0 : \"_blank\" /* _blank */;\n}\nfunction propsForLink(href, openInNewTab = void 0) {\n  const isInternal = isInternalURL(href);\n  const anchorTarget = getTargetAttrValue(openInNewTab, isInternal);\n  return {\n    href: isValidURL(href, isInternal) ? href : `https://${href}`,\n    target: anchorTarget,\n    rel: !isInternal ? \"noopener\" : void 0\n  };\n}\nfunction createOnClickLinkHandler(router, routeId, elementId, combinedPathVariables, smoothScroll) {\n  return (event) => {\n    var _a;\n    if (event.metaKey)\n      return;\n    const anchorElement = findAnchorElement(event.target);\n    if (!anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n      return;\n    event.preventDefault();\n    (_a = router.navigate) == null ? void 0 : _a.call(router, routeId, elementId, combinedPathVariables, smoothScroll);\n  };\n}\nfunction propsForRoutePath(href, openInNewTab, router, currentRoute, implicitPathVariables, smoothScroll) {\n  const isInternal = isInternalURL(href);\n  if (!router.routes || !router.getRoute || !currentRoute || !isInternal) {\n    return propsForLink(href, openInNewTab);\n  }\n  try {\n    const [pathname, hash2] = href.split(\"#\", 2);\n    assert(pathname !== void 0, \"A href must have a defined pathname.\");\n    const { routeId, pathVariables } = inferInitialRouteFromPath(router.routes, pathname);\n    const route = router.getRoute(routeId);\n    if (route) {\n      preloadComponent(route.page);\n      const combinedPathVariables = Object.assign({}, implicitPathVariables, pathVariables);\n      const path = getPathForRoute(route, {\n        currentRoutePath: currentRoute.path,\n        // The hash value is already fully resolved so we don't need to\n        // provide any hashVariables.\n        hash: hash2 || void 0,\n        pathVariables: combinedPathVariables\n      });\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      return {\n        href: path,\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(\n          router,\n          routeId,\n          hash2 || void 0,\n          combinedPathVariables,\n          smoothScroll\n        )\n      };\n    }\n  } catch {\n  }\n  return propsForLink(href, openInNewTab);\n}\nvar Link = /* @__PURE__ */ React69.forwardRef(\n  ({ children, href, openInNewTab, smoothScroll, ...restProps }, forwardedRef) => {\n    const router = useRouter();\n    const currentRoute = useCurrentRoute();\n    const implicitPathVariables = useImplicitPathVariables();\n    const props = React69.useMemo(() => {\n      var _a;\n      if (!href)\n        return {};\n      const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n      if (!pageLink)\n        return {};\n      if (isString2(pageLink)) {\n        return propsForRoutePath(\n          pageLink,\n          openInNewTab,\n          router,\n          currentRoute,\n          implicitPathVariables,\n          smoothScroll\n        );\n      }\n      const { webPageId, hash: hash2, pathVariables, hashVariables } = pageLink;\n      const route = (_a = router.getRoute) == null ? void 0 : _a.call(router, webPageId);\n      if (route)\n        preloadComponent(route.page);\n      const combinedPathVariable = Object.assign({}, implicitPathVariables, pathVariables);\n      const combinedHashVariable = Object.assign({}, implicitPathVariables, hashVariables);\n      const anchorTarget = getTargetAttrValue(openInNewTab, true);\n      const resolvedHref = getPathForRoute(route, {\n        currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n        hash: hash2,\n        pathVariables: combinedPathVariable,\n        hashVariables: combinedHashVariable\n      });\n      const resolvedHash = resolvedHref.split(\"#\", 2)[1];\n      return {\n        href: resolvedHref,\n        target: anchorTarget,\n        onClick: createOnClickLinkHandler(router, webPageId, resolvedHash, combinedPathVariable, smoothScroll),\n        \"data-framer-page-link-current\": currentRoute && linkMatchesRoute(currentRoute, pageLink, implicitPathVariables) || void 0\n      };\n    }, [currentRoute, href, openInNewTab, implicitPathVariables, router, smoothScroll]);\n    if (!children)\n      return null;\n    const child = React69.Children.only(children);\n    if (!React69.isValidElement(child))\n      return null;\n    return React69.cloneElement(child, { ...restProps, ...props, ref: forwardedRef != null ? forwardedRef : restProps.ref });\n  }\n);\nfunction resolveLink(href, router, implicitPathVariables) {\n  const pageLink = isLinkToWebPage(href) ? href : linkFromFramerPageLink(href);\n  if (!isLinkToWebPage(pageLink))\n    return isString2(href) ? propsForLink(href).href : void 0;\n  if (!router.getRoute || !router.currentRouteId)\n    return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId, hash: hash2, pathVariables, hashVariables } = pageLink;\n  const route = router.getRoute(webPageId);\n  const combinedPathVariables = Object.assign({}, router.currentPathVariables, implicitPathVariables, pathVariables);\n  const combinedHashVariables = Object.assign({}, router.currentPathVariables, implicitPathVariables, hashVariables);\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    hash: hash2,\n    pathVariables: combinedPathVariables,\n    hashVariables: combinedHashVariables,\n    relative: false\n  });\n}\nfunction resolvePageScope(pageLink, router) {\n  if (!router.getRoute || !router.currentRouteId)\n    return void 0;\n  const currentRoute = router.getRoute(router.currentRouteId);\n  const { webPageId } = pageLink;\n  const route = router.getRoute(webPageId);\n  return getPathForRoute(route, {\n    currentRoutePath: currentRoute == null ? void 0 : currentRoute.path,\n    relative: false\n  });\n}\n\n// ../../library/src/modules/optimizeAppear.ts\nvar AnimationCollector = class {\n  constructor() {\n    this.entries = /* @__PURE__ */ new Map();\n  }\n  set(nodeId, prop, value, variantHash) {\n    const nodeEntry = this.entries.get(nodeId);\n    switch (prop) {\n      case \"transformTemplate\": {\n        assert(typeof value === \"string\", `transformTemplate must be a string, received: ${value}`);\n        if (nodeEntry) {\n          nodeEntry.transformTemplate = value;\n        } else {\n          this.entries.set(nodeId, { transformTemplate: value });\n        }\n        break;\n      }\n      case \"initial\":\n      case \"animate\": {\n        assert(typeof value === \"object\", `${prop} must be a valid object, received: ${value}`);\n        if (nodeEntry) {\n          nodeEntry[prop] = value;\n          if (!nodeEntry.variantHash) {\n            nodeEntry.variantHash = variantHash;\n          }\n        } else {\n          this.entries.set(nodeId, { [prop]: value, variantHash });\n        }\n        break;\n      }\n      default:\n        break;\n    }\n  }\n  clear() {\n    this.entries.clear();\n  }\n  toObject() {\n    return Object.fromEntries(this.entries);\n  }\n};\nvar framerAppearEffects = /* @__PURE__ */ new AnimationCollector();\nvar optimizeAppear = (prop, id, animateTargetAndTransition, variantHash) => {\n  if (!isBrowser2()) {\n    framerAppearEffects.set(id, prop, animateTargetAndTransition, variantHash);\n  }\n  return animateTargetAndTransition;\n};\nvar framerAppearTransformTemplateToken = \"__Appear_Animation_Transform__\";\nvar optimizeAppearTransformTemplate = (id, fn) => {\n  if (!isBrowser2()) {\n    const template = fn == null ? void 0 : fn({}, framerAppearTransformTemplateToken);\n    if (template === void 0)\n      return fn;\n    framerAppearEffects.set(id, \"transformTemplate\", template);\n  }\n  return fn;\n};\nvar framerAppearIdKey = \"data-framer-appear-id\";\nvar framerAppearAnimationScriptKey = \"data-framer-appear-animation\";\n\n// ../../library/src/modules/PageRoot.tsx\nimport React70 from \"react\";\nfunction PageRoot({\n  RootComponent,\n  isWebsite,\n  routeId,\n  pathVariables,\n  routes,\n  notFoundPage,\n  isReducedMotion = false,\n  includeDataObserver = false,\n  localeId,\n  locales\n}) {\n  React70.useEffect(() => {\n    if (isWebsite)\n      return;\n    MainLoop.start();\n  }, []);\n  if (isWebsite) {\n    return /* @__PURE__ */ React70.createElement(MotionConfig, { reducedMotion: isReducedMotion ? \"user\" : \"never\" }, /* @__PURE__ */ React70.createElement(\n      Router,\n      {\n        initialRoute: routeId,\n        initialPathVariables: pathVariables,\n        initialLocaleId: localeId,\n        routes,\n        notFoundPage,\n        locales,\n        defaultPageStyle: { minHeight: \"100%\", width: \"auto\" }\n      }\n    ));\n  } else {\n    const Wrapper = includeDataObserver ? DataObserver : React70.Fragment;\n    return /* @__PURE__ */ React70.createElement(Wrapper, null, /* @__PURE__ */ React70.createElement(RoutesProvider, { routes }, /* @__PURE__ */ React70.createElement(NavigationWrapper, null, /* @__PURE__ */ React70.createElement(RootComponent, { key: routeId }))));\n  }\n}\n\n// ../../library/src/modules/PropertyOverrides.tsx\nimport React73 from \"react\";\n\n// ../../library/src/modules/withCSS.tsx\nimport React72 from \"react\";\n\n// ../../library/src/render/StyleSheetContext.ts\nimport React71 from \"react\";\nvar StyleSheetContext = /* @__PURE__ */ React71.createContext(void 0);\n\n// ../../library/src/modules/withCSS.tsx\nif (isBrowser2()) {\n  for (const node of document.querySelectorAll(\"style[data-framer-css-ssr]\")) {\n    document.head.appendChild(node);\n  }\n}\nvar componentsWithServerRenderedStyles = /* @__PURE__ */ (() => {\n  var _a;\n  if (!isBrowser2())\n    return /* @__PURE__ */ new Set();\n  const componentsWithSSRStylesAttr = (_a = document.querySelector(\"style[data-framer-css-ssr-minified]\")) == null ? void 0 : _a.getAttribute(\"data-framer-components\");\n  if (!componentsWithSSRStylesAttr)\n    return /* @__PURE__ */ new Set();\n  return new Set(componentsWithSSRStylesAttr.split(\" \"));\n})();\nvar styleTagSSRMarker = { \"data-framer-css-ssr\": true };\nvar withCSS = (Component15, escapedCSS, componentSerializationId) => React72.forwardRef((props, ref) => {\n  var _a;\n  const { sheet, cache: cache3 } = (_a = React72.useContext(StyleSheetContext)) != null ? _a : {};\n  if (!isBrowser2()) {\n    const concatenatedCSS = Array.isArray(escapedCSS) ? escapedCSS.join(\"\\n\") : escapedCSS;\n    return /* @__PURE__ */ React72.createElement(React72.Fragment, null, /* @__PURE__ */ React72.createElement(\n      \"style\",\n      {\n        ...styleTagSSRMarker,\n        \"data-framer-component\": componentSerializationId,\n        dangerouslySetInnerHTML: { __html: concatenatedCSS }\n      }\n    ), /* @__PURE__ */ React72.createElement(Component15, { ...props, ref }));\n  }\n  React72.useInsertionEffect(() => {\n    if (componentSerializationId && componentsWithServerRenderedStyles.has(componentSerializationId))\n      return;\n    const css = Array.isArray(escapedCSS) ? escapedCSS : escapedCSS.split(\"\\n\");\n    css.forEach((rule) => rule && injectCSSRule(rule, sheet, cache3));\n  }, []);\n  return /* @__PURE__ */ React72.createElement(Component15, { ...props, ref });\n});\n\n// ../../library/src/modules/PropertyOverrides.tsx\nvar SSRParentVariantsContext = /* @__PURE__ */ React73.createContext(void 0);\nvar SSRVariantClassName = \"ssr-variant\";\nfunction propsForClonedChild(child, props, ref) {\n  var _a;\n  if (\"ref\" in child)\n    return { ...props, ref: (_a = child.ref) != null ? _a : ref };\n  return { ...props, ref };\n}\nfunction childrenWithForwardedProps(children, props, ref) {\n  return /* @__PURE__ */ React73.createElement(React73.Fragment, null, React73.Children.map(children, (child) => {\n    if (!child || !isReactChild(child) || !isReactElement(child))\n      return null;\n    return React73.cloneElement(child, propsForClonedChild(child, props, ref));\n  }));\n}\nfunction renderBranchedChildrenFromPropertyOverrides(overrides, children, props, ref, variantClassNames, primaryVariantId, parentVariants, type) {\n  const childrenArray = React73.Children.toArray(children);\n  const child = childrenArray[0];\n  if (childrenArray.length !== 1 || !React73.isValidElement(child)) {\n    console.warn(type + \": expected exactly one React element for a child\", children);\n    return childrenWithForwardedProps(children, props, ref);\n  }\n  const branches = [];\n  const nonOverriddenVariants = [];\n  for (const [variantId] of Object.entries(variantClassNames)) {\n    if (variantId === primaryVariantId)\n      continue;\n    const propOverrides = overrides[variantId];\n    if (!propOverrides || !arePropOverridesEffectivelyDifferent(child.props, propOverrides)) {\n      nonOverriddenVariants.push(variantId);\n      continue;\n    }\n    const effectiveVariants = intersection([variantId], parentVariants);\n    if (effectiveVariants.length)\n      branches.push({ variants: effectiveVariants, propOverrides });\n  }\n  if (branches.length === 0)\n    return React73.cloneElement(child, { ...props, ref });\n  const remainingVariants = [primaryVariantId, ...nonOverriddenVariants];\n  const effectiveRemainingVariants = intersection(remainingVariants, parentVariants);\n  if (effectiveRemainingVariants.length)\n    branches.unshift({ variants: effectiveRemainingVariants });\n  return /* @__PURE__ */ React73.createElement(React73.Fragment, null, !parentVariants && /* @__PURE__ */ React73.createElement(\"style\", { ...styleTagSSRMarker }, `.${SSRVariantClassName} { display: contents }`), branches.map(({ variants, propOverrides }) => {\n    const key7 = variants.join(\"+\");\n    let element = (\n      // We could omit the SSRParentVariantsContext if variants is\n      // the same as parentVariants, but that'd require comparing\n      // arrays, so it might not really be an optimization. And\n      // since it's just a context, it doesn't affect the size of\n      // the generated HTML.\n      /* @__PURE__ */ React73.createElement(SSRParentVariantsContext.Provider, { key: key7, value: new Set(variants) }, React73.cloneElement(child, { ...props, ...propOverrides, ref }))\n    );\n    const hiddenClassNames = generateHiddenClassNames(variants, parentVariants, variantClassNames);\n    if (hiddenClassNames.length) {\n      assert(branches.length > 1, \"Must branch out when there are hiddenClassNames\");\n      element = /* @__PURE__ */ React73.createElement(\"div\", { key: key7, className: `${SSRVariantClassName} ${hiddenClassNames.join(\" \")}` }, element);\n    } else {\n      assert(branches.length === 1, \"Cannot branch out when hiddenClassNames is empty\");\n    }\n    return element;\n  }));\n}\nvar SSRVariants = /* @__PURE__ */ React73.forwardRef(\n  function SSRVariants2({ id: nodeId, children, ...props }, ref) {\n    if (isBrowser2()) {\n      return childrenWithForwardedProps(children, props, ref);\n    }\n    const generatedComponentContext = React73.useContext(GeneratedComponentContext);\n    if (!generatedComponentContext || !generatedComponentContext.variantProps) {\n      console.warn(\"SSRVariants is missing GeneratedComponentContext\");\n      return childrenWithForwardedProps(children, props, ref);\n    }\n    const parentVariants = React73.useContext(SSRParentVariantsContext);\n    const { primaryVariantId, variantClassNames, variantProps } = generatedComponentContext;\n    const overrides = React73.useMemo(() => {\n      const nextOverrides = {};\n      for (const [variant, values] of Object.entries(variantProps)) {\n        nextOverrides[variant] = values[nodeId];\n      }\n      return nextOverrides;\n    }, [nodeId, variantProps]);\n    return renderBranchedChildrenFromPropertyOverrides(\n      overrides,\n      children,\n      props,\n      ref,\n      variantClassNames,\n      primaryVariantId,\n      parentVariants,\n      \"SSRVariants\"\n    );\n  }\n);\nfunction generateHiddenClassNames(showOnlyInVariantIds, parentVariants, variantClassNames) {\n  const classNames = [];\n  for (const [variantId, variantClassName] of Object.entries(variantClassNames)) {\n    const alreadyHiddenInParent = parentVariants && !parentVariants.has(variantId);\n    if (showOnlyInVariantIds.includes(variantId) || alreadyHiddenInParent)\n      continue;\n    const variantHash = variantClassName.split(\"-\")[2];\n    classNames.push(`hidden-${variantHash}`);\n  }\n  return classNames;\n}\nfunction intersection(variants, parentVariants) {\n  if (!parentVariants)\n    return variants;\n  return variants.filter((variant) => parentVariants.has(variant));\n}\nfunction propertyKeyDifferenceShouldBeIgnored(key7) {\n  switch (key7) {\n    case \"transformTemplate\":\n      return false;\n    default:\n      return false;\n  }\n}\nfunction arePropOverridesEffectivelyDifferent(props, propOverrides) {\n  for (const key7 of Object.keys(propOverrides)) {\n    if (propertyKeyDifferenceShouldBeIgnored(key7))\n      continue;\n    if (!isEqual(props[key7], propOverrides[key7], true)) {\n      return true;\n    }\n  }\n  return false;\n}\nfunction propsForBreakpoint(variant, props, overrides) {\n  if (!overrides || !variant)\n    return props;\n  return { ...props, ...overrides[variant] };\n}\nvar PropertyOverrides = /* @__PURE__ */ React73.forwardRef(\n  function PropertyOverrides2({ breakpoint, overrides, children, ...props }, ref) {\n    if (isBrowser2()) {\n      return childrenWithForwardedProps(children, propsForBreakpoint(breakpoint, props, overrides), ref);\n    }\n    const generatedComponentContext = React73.useContext(GeneratedComponentContext);\n    if (!generatedComponentContext) {\n      console.warn(\"PropertyOverrides is missing GeneratedComponentContext\");\n      return childrenWithForwardedProps(children, props, ref);\n    }\n    const { primaryVariantId, variantClassNames } = generatedComponentContext;\n    const parentVariants = React73.useContext(SSRParentVariantsContext);\n    return renderBranchedChildrenFromPropertyOverrides(\n      overrides,\n      children,\n      props,\n      ref,\n      variantClassNames,\n      primaryVariantId,\n      parentVariants,\n      \"PropertyOverrides\"\n    );\n  }\n);\n\n// ../../library/src/modules/useActiveVariantCallback.ts\nimport React74 from \"react\";\nfunction rejectPending(pendingTimers, pendingPromises) {\n  pendingTimers.forEach((t) => clearTimeout(t));\n  pendingTimers.clear();\n  pendingPromises.forEach((reject) => reject && reject(\"Callback cancelled by variant change\"));\n  pendingPromises.clear();\n}\nfunction createSet() {\n  return /* @__PURE__ */ new Set();\n}\nfunction useActiveVariantCallback(baseVariant) {\n  const pendingPromises = useConstant(createSet);\n  const pendingTimers = useConstant(createSet);\n  useOnCurrentTargetChange(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  });\n  React74.useEffect(() => {\n    return () => rejectPending(pendingTimers, pendingPromises);\n  }, [pendingPromises, pendingTimers]);\n  React74.useEffect(() => {\n    rejectPending(pendingTimers, pendingPromises);\n  }, [baseVariant, pendingPromises, pendingTimers]);\n  return React74.useRef({\n    /**\n     * Create a callback that can be cancelled if the base variant changes.\n     */\n    activeVariantCallback: (callback) => (...args) => {\n      return new Promise((resolve, reject) => {\n        pendingPromises.add(reject);\n        return callback(...args).then(resolve);\n      }).catch(() => {\n      });\n    },\n    /**\n     * Execute a callback after a defined period of time. The callback will not\n     * be called if pending events are cancelled because the timeout will be\n     * cancelled.\n     */\n    delay: async (callback, msDelay) => {\n      await new Promise((resolve) => pendingTimers.add(globalThis.setTimeout(() => resolve(true), msDelay)));\n      callback();\n    }\n  }).current;\n}\nfunction useActiveTargetCallback() {\n  const value = useActiveVariantCallback(void 0);\n  return React74.useRef({\n    activeTargetCallback: value.activeVariantCallback,\n    delay: value.delay\n  }).current;\n}\n\n// ../../library/src/modules/useAddVariantProps.ts\nimport React75 from \"react\";\nfunction useAddVariantProps(baseVariant, gestureVariant, variantProps) {\n  return React75.useCallback(\n    (id) => {\n      var _a, _b, _c;\n      if (!variantProps)\n        return {};\n      if (!baseVariant)\n        return {};\n      if (gestureVariant) {\n        return Object.assign({}, (_a = variantProps[baseVariant]) == null ? void 0 : _a[id], (_b = variantProps[gestureVariant]) == null ? void 0 : _b[id]);\n      }\n      return ((_c = variantProps[baseVariant]) == null ? void 0 : _c[id]) || {};\n    },\n    [baseVariant, gestureVariant, variantProps]\n  );\n}\n\n// ../../library/src/modules/useBreakpointVariants.ts\nimport { startTransition as startTransition2, useCallback as useCallback6, useContext as useContext13, useEffect as useEffect9, useRef as useRef11 } from \"react\";\nfunction createMediaQueriesFromBreakpoints(breakpoints) {\n  const mediaQueries = {};\n  for (const [variant, query] of Object.entries(breakpoints)) {\n    const { min = 0, max } = query;\n    const mediaQuery = [];\n    if (min)\n      mediaQuery.push(`(min-width: ${min}px)`);\n    if (max)\n      mediaQuery.push(`(max-width: ${max}px)`);\n    if (mediaQuery.length)\n      mediaQueries[variant] = mediaQuery.join(\" and \");\n  }\n  return mediaQueries;\n}\nfunction activeMediaQueryFromWindow(mediaQueries) {\n  for (const [variant, query] of Object.entries(mediaQueries)) {\n    const mql = safeWindow.matchMedia(query);\n    if (mql.matches)\n      return variant;\n  }\n}\nfunction useHydratedBreakpointVariants(initial, mediaQueries, hydratedWithInitial = true) {\n  var _a;\n  const isInitialNavigation = useContext13(IsInitialNavigationContext);\n  const baseVariant = useRef11(isBrowser2() ? (_a = activeMediaQueryFromWindow(mediaQueries)) != null ? _a : initial : initial);\n  const basePropsVariant = useRef11(hydratedWithInitial && isInitialNavigation ? initial : baseVariant.current);\n  const forceUpdate = useForceUpdate3();\n  const instantTransition = useInstantTransition();\n  const setActiveVariantInstant = useCallback6(\n    (variant) => {\n      if (variant !== baseVariant.current || variant !== basePropsVariant.current)\n        instantTransition(() => {\n          baseVariant.current = basePropsVariant.current = variant;\n          startTransition2(() => {\n            forceUpdate();\n          });\n        });\n    },\n    [instantTransition, forceUpdate]\n  );\n  useIsomorphicLayoutEffect2(() => {\n    if (!hydratedWithInitial || isInitialNavigation !== true)\n      return;\n    setActiveVariantInstant(baseVariant.current);\n  }, []);\n  useEffect9(() => {\n    const callbacks2 = [];\n    for (const [variant, query] of Object.entries(mediaQueries)) {\n      const mql = safeWindow.matchMedia(query);\n      const callback = (event) => {\n        if (event.matches)\n          setActiveVariantInstant(variant);\n      };\n      addMQLCallback(mql, callback);\n      callbacks2.push([mql, callback]);\n    }\n    return () => callbacks2.forEach(([mql, callback]) => removeMQLCallback(mql, callback));\n  }, [mediaQueries, setActiveVariantInstant]);\n  return [baseVariant.current, basePropsVariant.current];\n}\nfunction addMQLCallback(mql, callback) {\n  if (mql.addEventListener) {\n    mql.addEventListener(\"change\", callback);\n  } else {\n    mql.addListener(callback);\n  }\n}\nfunction removeMQLCallback(mql, callback) {\n  if (mql.removeEventListener) {\n    mql.removeEventListener(\"change\", callback);\n  } else {\n    mql.removeListener(callback);\n  }\n}\nfunction useBreakpointVariants(initial, _width, breakpoints) {\n  const mediaQueries = useConstant(() => createMediaQueriesFromBreakpoints(breakpoints));\n  const [initialVariant] = useHydratedBreakpointVariants(initial, mediaQueries, true);\n  return initialVariant;\n}\nfunction removeHiddenBreakpointLayers(initial, mediaQueries, variantClassNames) {\n  var _a, _b, _c, _d, _e;\n  const activeVariant = (_a = activeMediaQueryFromWindow(mediaQueries)) != null ? _a : initial;\n  const activeVariantHash = (_b = variantClassNames[activeVariant]) == null ? void 0 : _b.split(\"-\")[2];\n  if (activeVariantHash) {\n    for (const hiddenLayer of document.querySelectorAll(`.hidden-${activeVariantHash}`)) {\n      (_c = hiddenLayer.parentNode) == null ? void 0 : _c.removeChild(hiddenLayer);\n    }\n  }\n  for (const ssrVariant of document.querySelectorAll(`.${SSRVariantClassName}`)) {\n    if (ssrVariant.childElementCount > 1) {\n      console.warn(\"SSR variant was expected to have at most one child at this point\", ssrVariant);\n      continue;\n    } else if (ssrVariant.childElementCount === 1) {\n      (_d = ssrVariant.parentNode) == null ? void 0 : _d.replaceChild(ssrVariant.firstChild, ssrVariant);\n    } else {\n      (_e = ssrVariant.parentNode) == null ? void 0 : _e.removeChild(ssrVariant);\n    }\n  }\n  for (const image of document.querySelectorAll(\"[data-framer-original-sizes]\")) {\n    const originalSizes = image.getAttribute(\"data-framer-original-sizes\");\n    if (originalSizes === \"\") {\n      image.removeAttribute(\"sizes\");\n    } else {\n      image.setAttribute(\"sizes\", originalSizes);\n    }\n    image.removeAttribute(\"data-framer-original-sizes\");\n  }\n}\n\n// ../../library/src/modules/useDataRecord.ts\nimport { useMemo as useMemo5 } from \"react\";\nfunction useDataRecord(collection, variables) {\n  return useMemo5(() => {\n    if (!Array.isArray(collection)) {\n      return null;\n    }\n    if (!variables) {\n      return null;\n    }\n    const pageRecord = collection.find((record) => {\n      return Object.entries(variables).every(([key7, value]) => {\n        const recordValue = record[key7];\n        if (value === void 0 || recordValue === void 0 || isObject2(value) || isObject2(recordValue)) {\n          return false;\n        }\n        return String(value) === String(recordValue);\n      });\n    });\n    return pageRecord != null ? pageRecord : null;\n  }, [collection, variables]);\n}\n\n// ../../library/src/modules/useDynamicRefs.ts\nimport React76, { createRef } from \"react\";\nfunction useDynamicRefs() {\n  const map = useConstant(() => /* @__PURE__ */ new Map());\n  return React76.useCallback(\n    (key7) => {\n      const existing = map.get(key7);\n      if (existing)\n        return existing;\n      const ref = createRef();\n      map.set(key7, ref);\n      return ref;\n    },\n    [map]\n  );\n}\n\n// ../../library/src/modules/useGamepad.ts\nimport React77 from \"react\";\nfunction isFramerGamepadKeydownData(value) {\n  return isObject2(value) && value.mapping !== void 0;\n}\nfunction gamepadInputsHaveChanged(previous, current) {\n  if (previous.length !== current.length)\n    return true;\n  if (!previous.every((item, i) => current[i] === item))\n    return true;\n  return false;\n}\nfunction createGamepadPoller() {\n  const handlers = /* @__PURE__ */ new Set();\n  let isConnected = false;\n  let isPolling = null;\n  let lastKeys = [];\n  const startPolling = () => {\n    const input = getGamepadInputs();\n    if (!input)\n      return;\n    const { gamepad, inputs } = input;\n    const { mapping, id } = gamepad;\n    if (gamepadInputsHaveChanged(lastKeys, inputs))\n      handlers.forEach((handler) => handler({ inputs, mapping, id }));\n    lastKeys = inputs;\n    isPolling = safeWindow.requestAnimationFrame(startPolling);\n  };\n  const handleConnection = () => {\n    if (isConnected || isPolling)\n      return;\n    startPolling();\n    isConnected = true;\n  };\n  const stopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.cancelAnimationFrame(isPolling);\n    isPolling = null;\n  };\n  const handleDisconnection = () => {\n    if (!isConnected)\n      return;\n    stopPolling();\n    isConnected = false;\n  };\n  const setupAndStartPolling = () => {\n    if (isPolling)\n      return;\n    const gamepad = getGamepadInputs();\n    if (!gamepad) {\n      safeWindow.addEventListener(\"gamepadconnected\", handleConnection);\n      return;\n    }\n    safeWindow.addEventListener(\"gamepaddisconnected\", handleDisconnection);\n    isConnected = true;\n    startPolling();\n  };\n  const cleanupAndStopPolling = () => {\n    if (!isPolling)\n      return;\n    safeWindow.removeEventListener(\"gamepadconnected\", handleConnection);\n    safeWindow.removeEventListener(\"gamepaddisconnected\", handleDisconnection);\n    stopPolling();\n  };\n  return {\n    register(callback) {\n      if (handlers.size === 0)\n        setupAndStartPolling();\n      handlers.add(callback);\n    },\n    unregister(callback) {\n      handlers.delete(callback);\n      if (handlers.size === 0)\n        cleanupAndStopPolling();\n    }\n  };\n}\nvar gamepadPoller = /* @__PURE__ */ createGamepadPoller();\nvar GamepadContext = /* @__PURE__ */ React77.createContext(gamepadPoller);\nfunction getGamepadInputs() {\n  let firstConnectedGamepad = null;\n  const gamepads = navigator.getGamepads();\n  for (const gamepad of gamepads) {\n    if (!gamepad)\n      continue;\n    if (!firstConnectedGamepad)\n      firstConnectedGamepad = gamepad;\n    const inputs = [...scanPressedAxis(gamepad), ...scanPressedButtons(gamepad)];\n    if (inputs.length > 0)\n      return { gamepad, inputs };\n  }\n  if (firstConnectedGamepad)\n    return { gamepad: firstConnectedGamepad, inputs: [] };\n  return null;\n}\nfunction scanPressedAxis(gamepad) {\n  const axes = [];\n  for (const [idx, axis] of gamepad.axes.entries()) {\n    if (idx > 3)\n      continue;\n    if (axis <= -0.5)\n      axes.push(`Axis ${idx}-`);\n    if (axis > 0.5)\n      axes.push(`Axis ${idx}+`);\n  }\n  return axes;\n}\nfunction scanPressedButtons(gamepad) {\n  const buttons = [];\n  for (const [idx, button] of gamepad.buttons.entries()) {\n    if (isButtonPressed(button))\n      buttons.push(`Button ${idx}`);\n  }\n  return buttons;\n}\nfunction isButtonPressed(button) {\n  return button.pressed === true || button.value > 0;\n}\nfunction useGamepad(input, callback, { mapping, on } = {}) {\n  const context = React77.useContext(GamepadContext);\n  const settings = useConstant(() => ({\n    mapping: mapping != null ? mapping : \"standard\",\n    on: on != null ? on : \"keydown\"\n  }));\n  const stateRef = React77.useRef({\n    pressed: false,\n    handler: callback\n  });\n  const cb = React77.useCallback(\n    (gamepad) => {\n      const { pressed, handler } = stateRef.current;\n      if (gamepad.inputs.includes(input) && settings.mapping === gamepad.mapping) {\n        settings.on === \"keydown\" && handler();\n        stateRef.current.pressed = true;\n      } else if (pressed) {\n        settings.on === \"keyup\" && handler();\n        stateRef.current.pressed = false;\n      }\n    },\n    [input, settings]\n  );\n  useOnCurrentTargetChange((isInTarget, isOverlayed) => {\n    const isActive = isInTarget && !isOverlayed;\n    if (isActive) {\n      context.register(cb);\n    } else {\n      context.unregister(cb);\n    }\n    return () => context.unregister(cb);\n  }, []);\n  React77.useEffect(() => {\n    return () => context.unregister(cb);\n  }, [cb, context]);\n  React77.useEffect(() => {\n    stateRef.current.handler = callback;\n  }, [callback]);\n}\n\n// ../../library/src/modules/useHotkey.ts\nimport React78 from \"react\";\nvar modifierDefaults = {\n  altKey: false,\n  ctrlKey: false,\n  metaKey: false,\n  shiftKey: false\n};\nfunction createShortcutDefinition(shortcut) {\n  const keys3 = shortcut.split(\"+\");\n  const key7 = keys3.pop();\n  if (!key7)\n    return void 0;\n  const modifiers = {};\n  for (const modifier of keys3) {\n    modifiers[`${modifier}Key`] = true;\n  }\n  return {\n    ...modifierDefaults,\n    ...modifiers,\n    key: key7\n  };\n}\nfunction useHotkey(shortcut, callback) {\n  const inTarget = React78.useRef(true);\n  const shortcutDefinition = useConstant(() => createShortcutDefinition(shortcut));\n  useOnCurrentTargetChange((isCurrentTarget, isOverlayed) => {\n    inTarget.current = isCurrentTarget && !isOverlayed;\n    return () => inTarget.current = false;\n  });\n  const eventHandler = React78.useCallback(\n    (event) => {\n      if (!shortcutDefinition)\n        return;\n      if (!inTarget.current)\n        return;\n      if (!Object.keys(shortcutDefinition).every((key7) => shortcutDefinition[key7] === event[key7]))\n        return;\n      event.preventDefault();\n      callback();\n    },\n    [shortcutDefinition, callback]\n  );\n  React78.useEffect(() => {\n    document.addEventListener(\"keydown\", eventHandler);\n    return () => document.removeEventListener(\"keydown\", eventHandler);\n  }, [eventHandler]);\n}\n\n// ../../library/src/modules/useIsOnFramerCanvas.ts\nfunction useIsOnFramerCanvas() {\n  return RenderTarget.current() === \"CANVAS\" /* canvas */;\n}\n\n// ../../library/src/modules/useNavigate.tsx\nfunction useNavigate() {\n  const { navigate } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  if (!navigate)\n    return () => {\n    };\n  return (target) => {\n    if (onCanvas)\n      return;\n    navigate(target);\n    return false;\n  };\n}\n\n// ../../library/src/modules/useOnVariantChange.ts\nimport React79 from \"react\";\nfunction callbackForVariant(map, variant) {\n  if (map[variant])\n    return map[variant];\n  if (variant in map)\n    return void 0;\n  return map.default;\n}\nfunction useOnVariantChange(variant, callbackMap) {\n  const isOnFramerCanvas = useIsOnFramerCanvas();\n  if (isOnFramerCanvas)\n    return;\n  const isActiveScreenRef = React79.useRef(true);\n  const callbackMapRef = React79.useRef(callbackMap);\n  useOnCurrentTargetChange((isCurrent, isOverlayed) => {\n    const isActiveScreen = isCurrent && !isOverlayed;\n    if (!isActiveScreenRef.current && isActiveScreen) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n    isActiveScreenRef.current = isActiveScreen;\n  }, []);\n  React79.useEffect(() => {\n    if (isActiveScreenRef.current) {\n      const callback = callbackForVariant(callbackMapRef.current, variant);\n      if (callback)\n        callback();\n    }\n  }, [variant]);\n}\nfunction useOnAppear(callback) {\n  useOnVariantChange(\"default\", { default: callback });\n}\n\n// ../../library/src/modules/useOverlayState.tsx\nimport React80 from \"react\";\nfunction useOverlayState({ blockDocumentScrolling = true } = {}) {\n  const [showOverlay, setShowOverlay] = React80.useState(false);\n  const callback = React80.useCallback(\n    (show) => {\n      setShowOverlay(show);\n      if (blockDocumentScrolling === false)\n        return;\n      if (show) {\n        document.documentElement.style.setProperty(\"overflow\", \"hidden\");\n      } else {\n        document.documentElement.style.removeProperty(\"overflow\");\n      }\n    },\n    [blockDocumentScrolling]\n  );\n  React80.useEffect(\n    () => () => {\n      if (blockDocumentScrolling === false)\n        return;\n      document.documentElement.style.removeProperty(\"overflow\");\n    },\n    [blockDocumentScrolling]\n  );\n  return [showOverlay, callback];\n}\n\n// ../../library/src/modules/usePrototypeNavigate.tsx\nimport React81 from \"react\";\nasync function componentForRoute(route) {\n  if (!isRoute(route))\n    return;\n  const { page: routeComponent } = route;\n  if (!routeComponent)\n    return;\n  if (React81.isValidElement(routeComponent))\n    return routeComponent;\n  if (withPreload(routeComponent))\n    await routeComponent.preload();\n  return React81.createElement(routeComponent, { key: route.path });\n}\nvar preloadKey2 = \"preload\";\nfunction withPreload(component) {\n  return !!component && isObject2(component) && preloadKey2 in component;\n}\nfunction usePrototypeNavigate({ preload } = {}) {\n  const navigation = useNavigation();\n  const { getRoute } = useRouter();\n  const onCanvas = useIsOnFramerCanvas();\n  React81.useEffect(() => {\n    if (!navigation || onCanvas)\n      return;\n    preload == null ? void 0 : preload.forEach((componentOrRoute) => {\n      let component;\n      if (isString2(componentOrRoute)) {\n        const route = getRoute == null ? void 0 : getRoute(componentOrRoute);\n        if (isRoute(route)) {\n          component = route.page;\n        }\n      } else {\n        component = componentOrRoute;\n      }\n      if (component && withPreload(component))\n        component.preload();\n    });\n  }, []);\n  if (!navigation)\n    return () => {\n    };\n  return async (target, options = {}) => {\n    if (onCanvas)\n      return;\n    if (target === \"previous\") {\n      navigation.goBack();\n      return false;\n    }\n    const Component15 = React81.isValidElement(target) ? target : await componentForRoute(getRoute == null ? void 0 : getRoute(target)).catch(() => {\n    });\n    if (!Component15)\n      return;\n    const { appearsFrom, backdropColor, animation } = options;\n    const transitionType = options.transition || \"instant\";\n    switch (transitionType) {\n      case \"instant\":\n        navigation.instant(Component15);\n        break;\n      case \"fade\":\n        navigation.fade(Component15, { animation });\n        break;\n      case \"push\":\n        navigation.push(Component15, { appearsFrom, animation });\n        break;\n      case \"flip\":\n        navigation.flip(Component15, { appearsFrom, animation });\n        break;\n      case \"magicMotion\":\n        navigation.magicMotion(Component15, { animation });\n        break;\n      case \"modal\":\n        navigation.modal(Component15, { backdropColor, animation });\n        break;\n      case \"overlay\":\n        navigation.overlay(Component15, { appearsFrom, backdropColor, animation });\n        break;\n    }\n    return false;\n  };\n}\n\n// ../../library/src/modules/useQueryData.ts\nimport { useRef as useRef12 } from \"react\";\nvar DeepWeakMap = class {\n  constructor() {\n    this.map1 = /* @__PURE__ */ new WeakMap();\n  }\n  get(key1, key22) {\n    const map2 = this.map1.get(key1);\n    return map2 == null ? void 0 : map2.get(key22);\n  }\n  set(key1, key22, value) {\n    var _a;\n    const map2 = (_a = this.map1.get(key1)) != null ? _a : /* @__PURE__ */ new WeakMap();\n    this.map1.set(key1, map2);\n    return map2.set(key22, value);\n  }\n};\nfunction useData(from) {\n  var _a, _b, _c;\n  if (isArray(from.data))\n    return from.data;\n  const localeId = (_b = (_a = from.locale) == null ? void 0 : _a.id) != null ? _b : \"default\";\n  const collections = from.data.collections;\n  const collection = (_c = collections[localeId]) != null ? _c : collections.default;\n  const promise = collection.preload();\n  if (promise)\n    throw promise;\n  return collection.read();\n}\nvar indexCache = /* @__PURE__ */ new WeakMap();\nfunction useInsertIndex(data2) {\n  const cached = indexCache.get(data2);\n  if (cached)\n    return cached;\n  const result = data2.map((item, index) => {\n    return { ...item, index };\n  });\n  indexCache.set(data2, result);\n  return result;\n}\nvar whereCache = /* @__PURE__ */ new DeepWeakMap();\nfunction useExecuteWhere(data2, where) {\n  if (!where)\n    return data2;\n  const cached = whereCache.get(data2, where);\n  if (cached)\n    return cached;\n  const result = data2.filter((item) => {\n    return evaluateExpression(where, {\n      resolveIdentifier(identifier) {\n        return item[identifier];\n      }\n    });\n  });\n  whereCache.set(data2, where, result);\n  return result;\n}\nvar orderByCache = /* @__PURE__ */ new DeepWeakMap();\nfunction useExecuteOrderBy(data2, orderBy) {\n  if (!orderBy)\n    return data2;\n  const cached = orderByCache.get(data2, orderBy);\n  if (cached)\n    return cached;\n  const result = [...data2].sort((leftItem, rightItem) => {\n    let order = 0;\n    for (const expression of orderBy) {\n      const leftValue = evaluateExpression(expression, {\n        resolveIdentifier(identifier) {\n          return leftItem[identifier];\n        }\n      });\n      const rightValue = evaluateExpression(expression, {\n        resolveIdentifier(identifier) {\n          return rightItem[identifier];\n        }\n      });\n      if (isNumber(leftValue) && isNumber(rightValue)) {\n        order = leftValue - rightValue;\n      }\n      if (isString2(leftValue) && isString2(rightValue)) {\n        order = leftValue.localeCompare(rightValue, \"en\");\n      }\n      if (order !== 0) {\n        return expression.direction === \"desc\" /* Descending */ ? -order : order;\n      }\n    }\n    if (isNumber(leftItem.index) && isNumber(rightItem.index)) {\n      return leftItem.index - rightItem.index;\n    }\n    return 0;\n  });\n  orderByCache.set(data2, orderBy, result);\n  return result;\n}\nvar offsetCache = /* @__PURE__ */ new DeepWeakMap();\nfunction useExecuteOffset(data2, offset) {\n  if (!offset)\n    return data2;\n  const cached = offsetCache.get(data2, offset);\n  if (cached)\n    return cached;\n  const offsetValue = evaluateExpression(offset, {\n    resolveIdentifier() {\n      throw new Error(\"Can't resolve identifier\");\n    }\n  });\n  const result = isNumber(offsetValue) ? data2.slice(offsetValue) : data2;\n  offsetCache.set(data2, offset, result);\n  return result;\n}\nvar limitCache = /* @__PURE__ */ new DeepWeakMap();\nfunction useExecuteLimit(data2, limit) {\n  if (!limit)\n    return data2;\n  const cached = limitCache.get(data2, limit);\n  if (cached)\n    return cached;\n  const limitValue = evaluateExpression(limit, {\n    resolveIdentifier() {\n      throw new Error(\"Can't resolve identifier\");\n    }\n  });\n  const result = isNumber(limitValue) ? data2.slice(0, limitValue) : data2;\n  limitCache.set(data2, limit, result);\n  return result;\n}\nvar selectCache = /* @__PURE__ */ new DeepWeakMap();\nfunction useExecuteSelect(data2, select) {\n  const cached = selectCache.get(data2, select);\n  if (cached)\n    return cached;\n  const preloadPromise = preloadExpressions(select, data2);\n  if (preloadPromise)\n    throw preloadPromise;\n  const result = data2.map((item) => {\n    var _a;\n    const selected = {};\n    for (const expression of select) {\n      const name = (_a = expression.alias) != null ? _a : stringifyExpression(expression);\n      selected[name] = evaluateExpression(expression, {\n        resolveIdentifier(identifier) {\n          const value = item[identifier];\n          if (LazyValue.is(value)) {\n            return value.read();\n          }\n          return value;\n        }\n      });\n    }\n    return selected;\n  });\n  selectCache.set(data2, select, result);\n  return result;\n}\nfunction preloadExpressions(expressions, data2) {\n  const identifiers = [];\n  for (const expression of expressions) {\n    extractIdentifiers(identifiers, expression);\n  }\n  if (identifiers.length === 0)\n    return;\n  const preloadPromises = [];\n  for (const item of data2) {\n    for (const identifier of identifiers) {\n      const value = item[identifier];\n      if (!LazyValue.is(value))\n        continue;\n      const promise = value.preload();\n      if (!promise)\n        continue;\n      preloadPromises.push(promise);\n    }\n  }\n  if (preloadPromises.length === 0)\n    return;\n  return Promise.all(preloadPromises);\n}\nfunction extractIdentifiers(identifiers, expression) {\n  if (expression.type === \"Identifier\") {\n    identifiers.push(expression.name);\n  }\n  if (expression.type === \"FunctionCall\") {\n    for (const argument of expression.arguments) {\n      extractIdentifiers(identifiers, argument);\n    }\n  }\n  if (expression.type === \"Case\") {\n    if (expression.value) {\n      extractIdentifiers(identifiers, expression.value);\n    }\n    for (const condition of expression.conditions) {\n      extractIdentifiers(identifiers, condition.when);\n      extractIdentifiers(identifiers, condition.then);\n    }\n    if (expression.else) {\n      extractIdentifiers(identifiers, expression.else);\n    }\n  }\n  if (expression.type === \"UnaryOperation\") {\n    extractIdentifiers(identifiers, expression.value);\n  }\n  if (expression.type === \"BinaryOperation\") {\n    extractIdentifiers(identifiers, expression.left);\n    extractIdentifiers(identifiers, expression.right);\n  }\n  if (expression.type === \"TypeCast\") {\n    extractIdentifiers(identifiers, expression.value);\n  }\n}\nfunction useQueryData(query) {\n  const queryRef = useRef12();\n  if (queryRef.current && isEqual(queryRef.current, query)) {\n    query = queryRef.current;\n  } else {\n    queryRef.current = query;\n  }\n  let result = useData(query.from);\n  result = useInsertIndex(result);\n  result = useExecuteWhere(result, query.where);\n  result = useExecuteOrderBy(result, query.orderBy);\n  result = useExecuteOffset(result, query.offset);\n  result = useExecuteLimit(result, query.limit);\n  result = useExecuteSelect(result, query.select);\n  return result;\n}\nfunction evaluateExpression(expression, context) {\n  switch (expression.type) {\n    case \"Identifier\":\n      return context.resolveIdentifier(expression.name);\n    case \"LiteralValue\":\n      return expression.value;\n    case \"FunctionCall\":\n      return evaluateFunctionCall(expression, context);\n    case \"Case\":\n      return evaluateCase(expression, context);\n    case \"UnaryOperation\":\n      return evaluateUnaryOperation(expression, context);\n    case \"BinaryOperation\":\n      return evaluateBinaryOperation(expression, context);\n    case \"TypeCast\":\n      return evaluateTypeCast(expression, context);\n    default:\n      throw new Error(`Unsupported expression: ${JSON.stringify(expression)}`);\n  }\n}\nfunction evaluateFunctionCall(expression, context) {\n  function getArgument(index) {\n    const argument = expression.arguments[index];\n    if (argument) {\n      return evaluateExpression(argument, context);\n    }\n  }\n  switch (expression.functionName) {\n    case \"CONTAINS\": {\n      const value = getArgument(0);\n      const search = getArgument(1);\n      if (isString2(value) && isString2(search)) {\n        return value.toLowerCase().includes(search.toLowerCase());\n      }\n      return false;\n    }\n    case \"STARTS_WITH\": {\n      const value = getArgument(0);\n      const search = getArgument(1);\n      if (isString2(value) && isString2(search)) {\n        return value.toLowerCase().startsWith(search.toLowerCase());\n      }\n      return false;\n    }\n    case \"ENDS_WITH\": {\n      const value = getArgument(0);\n      const search = getArgument(1);\n      if (isString2(value) && isString2(search)) {\n        return value.toLowerCase().endsWith(search.toLowerCase());\n      }\n      return false;\n    }\n    default: {\n      throw new Error(`Unsupported function: ${expression.functionName}`);\n    }\n  }\n}\nfunction evaluateCase(expression, context) {\n  const value = expression.value && evaluateExpression(expression.value, context);\n  for (const condition of expression.conditions) {\n    const when = evaluateExpression(condition.when, context);\n    if (expression.value ? isLooseEqual(when, value) : when) {\n      return evaluateExpression(condition.then, context);\n    }\n  }\n  if (expression.else) {\n    return evaluateExpression(expression.else, context);\n  }\n}\nfunction evaluateUnaryOperation(expression, context) {\n  const value = evaluateExpression(expression.value, context);\n  switch (expression.operator) {\n    case \"not\" /* Not */: {\n      return !value;\n    }\n    default: {\n      throw new Error(`Unsupported unary operation: ${expression.operator}`);\n    }\n  }\n}\nfunction evaluateBinaryOperation(expression, context) {\n  const left = evaluateExpression(expression.left, context);\n  const right = evaluateExpression(expression.right, context);\n  switch (expression.operator) {\n    case \"and\" /* And */: {\n      return Boolean(left && right);\n    }\n    case \"or\" /* Or */: {\n      return Boolean(left || right);\n    }\n    case \"==\" /* Equals */: {\n      return isLooseEqual(left, right);\n    }\n    case \"!=\" /* NotEquals */: {\n      return !isLooseEqual(left, right);\n    }\n    case \"<\" /* LessThan */: {\n      if (isNumber(left) && isNumber(right)) {\n        return left < right;\n      }\n      if (isValidDate(left) && isValidDate(right)) {\n        return left < right;\n      }\n      return false;\n    }\n    case \"<=\" /* LessThanOrEqual */: {\n      if (isNumber(left) && isNumber(right)) {\n        return left <= right;\n      }\n      if (isValidDate(left) && isValidDate(right)) {\n        return left <= right;\n      }\n      return false;\n    }\n    case \">\" /* GreaterThan */: {\n      if (isNumber(left) && isNumber(right)) {\n        return left > right;\n      }\n      if (isValidDate(left) && isValidDate(right)) {\n        return left > right;\n      }\n      return false;\n    }\n    case \">=\" /* GreaterThanOrEqual */: {\n      if (isNumber(left) && isNumber(right)) {\n        return left >= right;\n      }\n      if (isValidDate(left) && isValidDate(right)) {\n        return left >= right;\n      }\n      return false;\n    }\n    default: {\n      throw new Error(`Unsupported binary operation: ${expression.operator}`);\n    }\n  }\n}\nfunction evaluateTypeCast(expression, context) {\n  const value = evaluateExpression(expression.value, context);\n  switch (expression.dataType) {\n    case \"BOOLEAN\": {\n      return Boolean(value);\n    }\n    case \"NUMBER\": {\n      if (isNumber(value) && isFinite(value)) {\n        return value;\n      }\n      if (isString2(value)) {\n        const parsed = parseFloat(value);\n        if (isFinite(parsed)) {\n          return parsed;\n        }\n      }\n      return 0;\n    }\n    case \"DATE\": {\n      if (value instanceof Date)\n        return value;\n      if (!isString2(value) && !isNumber(value)) {\n        return void 0;\n      }\n      return new Date(value);\n    }\n    case \"STRING\": {\n      return String(value);\n    }\n    default: {\n      throw new Error(`Unsupported type cast: ${expression.dataType}`);\n    }\n  }\n}\nfunction stringifyExpression(expression) {\n  switch (expression.type) {\n    case \"Identifier\": {\n      return expression.name;\n    }\n    default: {\n      throw new Error(`Can't stringify expression: ${JSON.stringify(expression)}`);\n    }\n  }\n}\nfunction isLooseEqual(left, right) {\n  if (left == null && right == null) {\n    return true;\n  }\n  if (isString2(left) && isString2(right)) {\n    return left.toLowerCase() === right.toLowerCase();\n  }\n  if (isValidDate(left) && isValidDate(right)) {\n    return left.getTime() === right.getTime();\n  }\n  return left === right;\n}\nfunction getWhereExpressionFromPathVariables(pathVariables) {\n  const entries = Object.entries(pathVariables).filter(([, value]) => {\n    if (isUndefined(value))\n      return false;\n    if (isObject2(value))\n      return false;\n    return true;\n  });\n  const expressions = entries.map(\n    ([name, value]) => ({\n      type: \"BinaryOperation\",\n      operator: \"==\" /* Equals */,\n      left: {\n        type: \"TypeCast\",\n        value: {\n          type: \"Identifier\",\n          name\n        },\n        dataType: \"STRING\"\n      },\n      right: {\n        type: \"LiteralValue\",\n        value: String(value)\n      }\n    })\n  );\n  if (expressions.length === 0) {\n    return {\n      type: \"LiteralValue\",\n      value: false\n    };\n  }\n  return expressions.reduce(\n    (result, expression) => ({\n      type: \"BinaryOperation\",\n      operator: \"and\" /* And */,\n      left: result,\n      right: expression\n    })\n  );\n}\n\n// ../../library/src/modules/useVariantState.ts\nimport React82 from \"react\";\nfunction createGestureVariant(variant, type) {\n  return `${variant}-${type}`;\n}\nfunction nextVariant(allVariants, currentVariant) {\n  const index = allVariants.indexOf(currentVariant);\n  let nextIndex = index + 1;\n  if (nextIndex >= allVariants.length) {\n    nextIndex = 0;\n  }\n  const nextVariant2 = allVariants[nextIndex];\n  assert(nextVariant2 !== void 0, \"nextVariant should be defined\");\n  return nextVariant2;\n}\nfunction activeTransition(transitions, variant) {\n  if (!transitions)\n    return void 0;\n  if (variant) {\n    const variantTransition = transitions[variant];\n    if (variantTransition)\n      return variantTransition;\n  }\n  return transitions.default;\n}\nvar VariantSelector = /* @__PURE__ */ ((VariantSelector2) => {\n  VariantSelector2[\"Variant\"] = \"v\";\n  return VariantSelector2;\n})(VariantSelector || {});\nfunction getGesture(enabledGestures, isHovered, isPressed) {\n  const { hover, pressed } = enabledGestures || {};\n  if (pressed && isPressed)\n    return \"pressed\";\n  if (hover && isHovered)\n    return \"hover\";\n}\nfunction createVariantClassName(baseVariant, variantClassNames) {\n  const mappedClassName = variantClassNames[baseVariant];\n  if (mappedClassName)\n    return mappedClassName;\n  return `framer-${\"v\" /* Variant */}-${baseVariant}`;\n}\nfunction safeBaseVariant(targetVariant, fallbackVariant, validBaseVariants) {\n  if (!targetVariant)\n    return fallbackVariant;\n  if (validBaseVariants.has(targetVariant))\n    return targetVariant;\n  return fallbackVariant;\n}\nvar CycleVariantState = /* @__PURE__ */ Symbol(\"cycle\");\nfunction useVariantState({\n  variant,\n  defaultVariant: externalDefaultVariant,\n  transitions: externalTransitions,\n  enabledGestures: externalEnabledGestures,\n  cycleOrder: externalCycleOrder = [],\n  variantProps = {},\n  variantClassNames = {}\n}) {\n  const forceUpdate = useForceUpdate3();\n  const validBaseVariants = useConstant(() => new Set(externalCycleOrder));\n  const internalState = React82.useRef({\n    isHovered: false,\n    isPressed: false,\n    baseVariant: safeBaseVariant(variant, externalDefaultVariant, validBaseVariants),\n    lastVariant: variant,\n    gestureVariant: void 0,\n    // When used in generated components, these are static values defined\n    // outside of the component function that also need to not result in\n    // memoized values being recalculated, so we dump them into the ref.\n    defaultVariant: externalDefaultVariant,\n    enabledGestures: externalEnabledGestures,\n    cycleOrder: externalCycleOrder,\n    transitions: externalTransitions\n  });\n  const resolveNextVariant = React82.useCallback(\n    (targetBaseVariant) => {\n      const { isHovered: isHovered2, isPressed: isPressed2, enabledGestures: enabledGestures2, defaultVariant: defaultVariant2 } = internalState.current;\n      const nextBaseVariant = safeBaseVariant(targetBaseVariant, defaultVariant2, validBaseVariants);\n      const gesture = getGesture(enabledGestures2 == null ? void 0 : enabledGestures2[nextBaseVariant], isHovered2, isPressed2);\n      const nextGestureVariant = gesture ? createGestureVariant(nextBaseVariant, gesture) : void 0;\n      return [nextBaseVariant, nextGestureVariant];\n    },\n    [validBaseVariants]\n  );\n  const setGestureState = React82.useCallback(\n    ({ isHovered: isHovered2, isPressed: isPressed2 }) => {\n      if (isHovered2 !== void 0)\n        internalState.current.isHovered = isHovered2;\n      if (isPressed2 !== void 0)\n        internalState.current.isPressed = isPressed2;\n      const { baseVariant: baseVariant2, gestureVariant: gestureVariant2, defaultVariant: defaultVariant2 } = internalState.current;\n      const [nextBase, nextGesture] = resolveNextVariant(baseVariant2);\n      if (nextBase !== baseVariant2 || nextGesture !== gestureVariant2) {\n        internalState.current.baseVariant = nextBase || defaultVariant2;\n        internalState.current.gestureVariant = nextGesture;\n        forceUpdate();\n      }\n    },\n    [resolveNextVariant, forceUpdate]\n  );\n  const setVariant = React82.useCallback(\n    (proposedVariant) => {\n      const { defaultVariant: defaultVariant2, cycleOrder, baseVariant: baseVariant2, gestureVariant: gestureVariant2 } = internalState.current;\n      const nextBaseVariant = proposedVariant === CycleVariantState ? nextVariant(cycleOrder || [], baseVariant2 || defaultVariant2) : proposedVariant;\n      const [nextBase, nextGesture] = resolveNextVariant(nextBaseVariant);\n      if (nextBase !== baseVariant2 || nextGesture !== gestureVariant2) {\n        internalState.current.baseVariant = nextBase || defaultVariant2;\n        internalState.current.gestureVariant = nextGesture;\n        forceUpdate();\n      }\n    },\n    [resolveNextVariant, forceUpdate]\n  );\n  if (variant !== internalState.current.lastVariant) {\n    const [nextBase, nextGesture] = resolveNextVariant(variant);\n    internalState.current.lastVariant = nextBase;\n    if (nextBase !== internalState.current.baseVariant || nextGesture !== internalState.current.gestureVariant) {\n      internalState.current.baseVariant = nextBase;\n      internalState.current.gestureVariant = nextGesture;\n    }\n  }\n  const { baseVariant, gestureVariant, defaultVariant, enabledGestures, isHovered, isPressed } = internalState.current;\n  const addVariantProps = useAddVariantProps(\n    internalState.current.baseVariant,\n    internalState.current.gestureVariant,\n    variantProps\n  );\n  return React82.useMemo(() => {\n    const variants = [];\n    if (baseVariant !== defaultVariant)\n      variants.push(baseVariant);\n    if (gestureVariant)\n      variants.push(gestureVariant);\n    return {\n      variants,\n      baseVariant,\n      gestureVariant,\n      transition: activeTransition(internalState.current.transitions, baseVariant),\n      setVariant,\n      setGestureState,\n      addVariantProps,\n      classNames: cx(\n        createVariantClassName(baseVariant, variantClassNames),\n        getGesture(enabledGestures == null ? void 0 : enabledGestures[baseVariant], isHovered, isPressed)\n      )\n    };\n  }, [\n    baseVariant,\n    gestureVariant,\n    isHovered,\n    isPressed,\n    addVariantProps,\n    setVariant,\n    defaultVariant,\n    enabledGestures,\n    setGestureState,\n    variantClassNames\n  ]);\n}\n\n// ../../library/src/modules/withVariantAppearEffect.tsx\nimport React83 from \"react\";\nvar keys = /* @__PURE__ */ new Set([\n  \"visibleVariantId\",\n  \"obscuredVariantId\",\n  \"threshold\",\n  \"animateOnce\",\n  \"variantAppearEffectEnabled\",\n  \"targets\",\n  \"exitTarget\",\n  \"scrollDirection\"\n]);\nfunction createInputOutputRanges2(transformTargets, threshold, exitTarget) {\n  const outputRange = [];\n  const inputRange = createTransformInputRange(\n    transformTargets,\n    threshold,\n    (index) => outputRange.unshift(index, index)\n  );\n  if (exitTarget) {\n    const lastInputRange = inputRange[inputRange.length - 1];\n    assert(typeof lastInputRange === \"number\", `Invalid outputRange: ${lastInputRange}, ${inputRange}.`);\n    inputRange.push(lastInputRange + 1);\n    outputRange.push(-1);\n  }\n  const firstItem = inputRange[0];\n  assert(typeof firstItem === \"number\", `Invalid inputRange: ${inputRange}`);\n  if (firstItem <= 1)\n    return { inputRange, outputRange };\n  return { inputRange: [0, Math.max(firstItem - 1, 0), ...inputRange], outputRange: [-1, -1, ...outputRange] };\n}\nvar withVariantAppearEffect = (Component15) => React83.forwardRef(\n  (props, forwardedRef) => {\n    const fallbackRef = React83.useRef(null);\n    const ref = forwardedRef != null ? forwardedRef : fallbackRef;\n    const [options, rest] = extractPrefixedProps(props, keys);\n    const {\n      visibleVariantId,\n      obscuredVariantId,\n      animateOnce,\n      threshold,\n      variantAppearEffectEnabled,\n      targets,\n      exitTarget,\n      scrollDirection\n    } = options;\n    const [activeVariant, setVariant] = React83.useState(obscuredVariantId);\n    const animateState = React83.useRef(false);\n    useAppearEffect(\n      ref,\n      (appears) => {\n        if (options.targets)\n          return;\n        if (options.scrollDirection)\n          return;\n        if (animateOnce && animateState.current === true)\n          return;\n        if (animateState.current === appears)\n          return;\n        animateState.current = appears;\n        if (appears) {\n          setVariant(visibleVariantId);\n        } else {\n          setVariant(obscuredVariantId);\n        }\n      },\n      {\n        enabled: variantAppearEffectEnabled,\n        animateOnce,\n        threshold: {\n          y: threshold\n        }\n      }\n    );\n    React83.useEffect(() => {\n      if (scrollDirection)\n        return;\n      if (!targets)\n        return;\n      const playedState = {};\n      let currentVariant = void 0;\n      return scrollInfo(({ y: scrollY }) => {\n        var _a, _b;\n        if (!targets[0] || targets[0].ref && !targets[0].ref.current)\n          return;\n        const { inputRange, outputRange } = createInputOutputRanges2(\n          targets,\n          (threshold != null ? threshold : 0) * scrollY.containerLength,\n          exitTarget\n        );\n        if (inputRange.length === 0)\n          return;\n        assert(\n          inputRange.length === outputRange.length,\n          `Variant ranges must have the same number of entries. Input: ${inputRange}, Output: ${outputRange}`\n        );\n        const index = Math.floor(transform(scrollY.current, inputRange, outputRange));\n        if (animateOnce && playedState[index])\n          return;\n        playedState[index] = true;\n        const variant = (_b = (_a = targets[index]) == null ? void 0 : _a.target) != null ? _b : void 0;\n        if (variant === currentVariant)\n          return;\n        currentVariant = variant;\n        setVariant(variant);\n      });\n    }, [animateOnce, threshold, targets, props.variant]);\n    useScrollDirectionChange(scrollDirection, setVariant, {\n      enabled: variantAppearEffectEnabled,\n      repeat: !animateOnce\n    });\n    if (!(\"variantAppearEffectEnabled\" in options) || variantAppearEffectEnabled === true) {\n      return /* @__PURE__ */ React83.createElement(Component15, { ...rest, variant: activeVariant != null ? activeVariant : props.variant, ref });\n    } else {\n      return /* @__PURE__ */ React83.createElement(Component15, { ...rest });\n    }\n  }\n);\n\n// ../../library/src/render/assetResolver/serverURL.ts\nfunction parseURL(url, base) {\n  try {\n    return typeof base === \"undefined\" ? new URL(url) : new URL(url, base);\n  } catch (err) {\n    return null;\n  }\n}\nfunction joinPaths(paths) {\n  let res = \"\";\n  for (const path of paths) {\n    if (!path)\n      continue;\n    if (res.length > 0 && !res.endsWith(\"/\")) {\n      res += \"/\";\n    }\n    if (Array.isArray(path)) {\n      res += joinPaths(path);\n    } else {\n      res += encodeURIComponent(path).replace(/%2F/g, \"/\");\n    }\n  }\n  return res;\n}\nfunction serverURL(...paths) {\n  const notEmptyPaths = paths.flat().filter(Boolean);\n  if (notEmptyPaths.length === 1 && notEmptyPaths[0] && parseURL(notEmptyPaths[0])) {\n    return notEmptyPaths[0];\n  }\n  const path = joinPaths(paths);\n  const resolvedAsset = runtime.assetResolver(path, {\n    isFramerResourceURL: true,\n    isExport: RenderTarget.current() === \"EXPORT\" /* export */\n  });\n  return resolvedAsset || \"\";\n}\n\n// ../../library/src/render/componentLoader/definition.ts\nfunction isDesignDefinition(d) {\n  return d.type === \"master\";\n}\nfunction isOverride(d) {\n  return d.type === \"override\";\n}\nfunction isReactDefinition(d) {\n  return d.type !== \"master\";\n}\n\n// ../../library/src/render/componentLoader/package.ts\nvar localPackageFallbackIdentifier = \"|local|\";\n\n// ../../library/src/render/DesignComponentWrapper.tsx\nimport React94, { Component as Component14 } from \"react\";\n\n// ../../library/src/render/presentation/DeprecatedComponentContainer.tsx\nvar import_process6 = __toESM(require_browser(), 1);\nimport React84 from \"react\";\nvar DeprecatedComponentContainer = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.state = {};\n      this.setElement = (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      };\n    }\n    componentDidCatch(error, info) {\n      let stack = info.componentStack.split(\"\\n\").filter((line) => line.length !== 0);\n      let currentIndex = 0;\n      for (const line of stack) {\n        if (line.startsWith(`    in ${this.constructor.name}`)) {\n          break;\n        }\n        currentIndex++;\n      }\n      stack = stack.slice(0, currentIndex);\n      this.setState({\n        lastError: {\n          children: this.props.children,\n          name: error.name,\n          message: error.message,\n          componentStack: stack\n        }\n      });\n    }\n    renderErrorPlaceholder(file, error) {\n      const { RenderPlaceholder } = runtime;\n      return /* @__PURE__ */ React84.createElement(FrameWithMotion, { ...this.props, background: null }, /* @__PURE__ */ React84.createElement(RenderPlaceholder, { error: { error, file } }));\n    }\n    render() {\n      var _a2, _b;\n      if (import_process6.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      let { children } = this.props;\n      const { componentIdentifier } = this.props;\n      const { lastError: error } = this.state;\n      const noChildren = !children || Array.isArray(children) && children.filter((c) => c).length === 0;\n      if (noChildren) {\n        const errorComponent = runtime.componentLoader.errorForIdentifier(componentIdentifier);\n        if (errorComponent) {\n          return this.renderErrorPlaceholder(errorComponent.file, errorComponent.error);\n        }\n      }\n      if (error && error.children === children) {\n        const component = runtime.componentLoader.componentForIdentifier(componentIdentifier);\n        const file = component ? component.file : \"???\";\n        return this.renderErrorPlaceholder(file, error.message);\n      }\n      (_b = (_a2 = safeWindow)[\"__checkComponentBudget__\"]) == null ? void 0 : _b.call(_a2);\n      let frameProps = this.props;\n      if (RenderTarget.current() !== \"CANVAS\" /* canvas */) {\n        const {\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          opacity,\n          visible,\n          _constraints,\n          _initialStyle,\n          name,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft,\n          // Remove the children and the componentIdentifier from the props passed into the component\n          componentIdentifier: originalComponentIdentifier,\n          children: originalChildren,\n          style,\n          duplicatedFrom,\n          widthType,\n          heightType,\n          ...childProps\n        } = frameProps;\n        children = React84.Children.map(originalChildren, (child) => {\n          if (!isReactChild(child) || !isReactElement(child)) {\n            return child;\n          }\n          if (!isPageOrScroll(originalComponentIdentifier)) {\n            return /* @__PURE__ */ React84.createElement(LayoutGroup, { inherit: false, id: this.props.__layoutId }, /* @__PURE__ */ React84.createElement(AutomaticLayoutIds, { enabled: false }, React84.cloneElement(child, childProps)));\n          }\n          return React84.cloneElement(child, childProps);\n        });\n        frameProps = {\n          style,\n          _constraints,\n          _initialStyle,\n          left,\n          right,\n          top,\n          bottom,\n          center,\n          centerX,\n          centerY,\n          aspectRatio,\n          parentSize,\n          width,\n          height,\n          rotation,\n          visible,\n          name,\n          duplicatedFrom,\n          id: frameProps.id,\n          layoutId: this.props.__layoutId,\n          widthType,\n          heightType,\n          positionSticky,\n          positionStickyTop,\n          positionStickyRight,\n          positionStickyBottom,\n          positionStickyLeft\n        };\n      }\n      return (\n        /* The background should come before the frameProps. It looks like there never should be a background in frameProps,\n         * but published design components can contain an old version of the presentation tree that expects the background\n         * that is passed to be rendered here\n         * See the stackBackgroundTest.tsx integration test for an example of such a case\n         */\n        /* @__PURE__ */ React84.createElement(ComponentContainerContext.Provider, { value: true }, /* @__PURE__ */ React84.createElement(\n          FrameWithMotion,\n          {\n            \"data-framer-component-container\": true,\n            background: null,\n            overflow: \"visible\",\n            ref: this.setElement,\n            ...frameProps\n          },\n          children\n        ))\n      );\n    }\n  }, _a.supportsConstraints = true, _a.defaultComponentContainerProps = {\n    style: {},\n    visible: true,\n    componentIdentifier: \"\"\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultComponentContainerProps\n  }, _a.contextType = ComponentContainerContext, _a;\n})();\nfunction isPageOrScroll(identifier) {\n  if (!identifier)\n    return false;\n  if (identifier === \"framer/Page\")\n    return true;\n  if (identifier === \"framer/Scroll\")\n    return true;\n  return false;\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nvar import_process7 = __toESM(require_browser(), 1);\nimport React87 from \"react\";\n\n// ../../library/src/render/types/Line.ts\nvar Line = /* @__PURE__ */ (() => {\n  function Line2(a, b) {\n    return { a, b };\n  }\n  Line2.intersection = (lineA, lineB) => {\n    const x1 = lineA.a.x;\n    const y1 = lineA.a.y;\n    const x2 = lineA.b.x;\n    const y2 = lineA.b.y;\n    const x3 = lineB.a.x;\n    const y3 = lineB.a.y;\n    const x4 = lineB.b.x;\n    const y4 = lineB.b.y;\n    const d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n    if (d === 0) {\n      return null;\n    }\n    const xi = ((x3 - x4) * (x1 * y2 - y1 * x2) - (x1 - x2) * (x3 * y4 - y3 * x4)) / d;\n    const yi = ((y3 - y4) * (x1 * y2 - y1 * x2) - (y1 - y2) * (x3 * y4 - y3 * x4)) / d;\n    return { x: xi, y: yi };\n  };\n  Line2.intersectionAngle = (lineA, lineB) => {\n    const deltaAX = lineA.b.x - lineA.a.x;\n    const deltaAY = lineA.b.y - lineA.a.y;\n    const deltaBX = lineB.b.x - lineB.a.x;\n    const deltaBY = lineB.b.y - lineB.a.y;\n    const angle = Math.atan2(deltaAX * deltaBY - deltaAY * deltaBX, deltaAX * deltaBX + deltaAY * deltaBY);\n    return angle * (180 / Math.PI);\n  };\n  Line2.isOrthogonal = (line) => {\n    return line.a.x === line.b.x || line.a.y === line.b.y;\n  };\n  Line2.perpendicular = (line, pointOnLine) => {\n    const deltaX = line.a.x - line.b.x;\n    const deltaY = line.a.y - line.b.y;\n    const pointB = Point(pointOnLine.x - deltaY, pointOnLine.y + deltaX);\n    return Line2(pointB, pointOnLine);\n  };\n  Line2.projectPoint = (line, point) => {\n    const perp = Line2.perpendicular(line, point);\n    return Line2.intersection(line, perp);\n  };\n  Line2.pointAtPercentDistance = (line, distance2) => {\n    const hypotenuse = Line2.distance(line);\n    const r = distance2 * hypotenuse / hypotenuse;\n    return {\n      x: r * line.b.x + (1 - r) * line.a.x,\n      y: r * line.b.y + (1 - r) * line.a.y\n    };\n  };\n  Line2.distance = (line) => {\n    return Point.distance(line.a, line.b);\n  };\n  return Line2;\n})();\n\n// ../../library/src/render/utils/elementPropertiesForGradient.ts\nfunction linearGradientLine(angle) {\n  var _a, _b;\n  const rad = angle * Math.PI / 180;\n  const offset = {\n    x: -Math.sin(rad) * 100,\n    y: Math.cos(rad) * 100\n  };\n  const anglePoint = Point(offset.x, offset.y);\n  const angleLine = Line(Point(0.5, 0.5), anglePoint);\n  const points = Rect.points({ x: 0, y: 0, width: 1, height: 1 });\n  const sortedPoints = points.map((point) => ({ point, distance: Point.distance(anglePoint, point) })).sort((a2, b2) => a2.distance - b2.distance);\n  const a = (_a = sortedPoints[0]) == null ? void 0 : _a.point;\n  const b = (_b = sortedPoints[1]) == null ? void 0 : _b.point;\n  assert(a && b, \"linearGradientLine: Must have 2 closest points.\");\n  const [c, d] = points.filter((point) => !Point.isEqual(point, a) && !Point.isEqual(point, b));\n  assert(c && d, \"linearGradientLine: Must have 2 opposing points.\");\n  const start = Line.intersection(angleLine, Line(a, b));\n  const end = Line.intersection(angleLine, Line(c, d));\n  assert(start && end, \"linearGradientLine: Must have a start and end point.\");\n  return Line(start, end);\n}\nfunction elementPropertiesForLinearGradient(gradient, id) {\n  var _a, _b, _c, _d;\n  const line = linearGradientLine(gradient.angle);\n  const stops = gradientColorStops(gradient);\n  const startPosition = (_b = (_a = stops[0]) == null ? void 0 : _a.position) != null ? _b : 0;\n  const endPosition = (_d = (_c = stops[stops.length - 1]) == null ? void 0 : _c.position) != null ? _d : 1;\n  const startPoint = Line.pointAtPercentDistance(line, startPosition);\n  const endPoint = Line.pointAtPercentDistance(line, endPosition);\n  const interpolator = interpolate([startPosition, endPosition], [0, 1]);\n  return {\n    id: `id${id}g${LinearGradient.hash(gradient)}`,\n    x1: startPoint.x,\n    y1: startPoint.y,\n    x2: endPoint.x,\n    y2: endPoint.y,\n    stops: stops.map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: interpolator(stop.position)\n    }))\n  };\n}\nfunction elementPropertiesForRadialGradient(gradient, id) {\n  return {\n    id: `id${id}g${RadialGradient.hash(gradient)}`,\n    widthFactor: gradient.widthFactor,\n    heightFactor: gradient.heightFactor,\n    centerAnchorX: gradient.centerAnchorX,\n    centerAnchorY: gradient.centerAnchorY,\n    stops: gradientColorStops(gradient).map((stop) => ({\n      color: stop.value,\n      alpha: ConvertColor.getAlpha(stop.value) * gradient.alpha,\n      position: stop.position\n    }))\n  };\n}\n\n// ../../library/src/render/utils/imagePatternPropsForFill.tsx\nfunction imagePatternPropsForFill(fill, frame2, id) {\n  var _a;\n  fill = Animatable.get(fill, \"#09F\");\n  if (!BackgroundImage.isImageObject(fill))\n    return void 0;\n  if (!fill.pixelWidth || !fill.pixelHeight)\n    return void 0;\n  const imageWidth = fill.pixelWidth;\n  const imageHeight = fill.pixelHeight;\n  let transform2;\n  const { fit } = fill;\n  if (fit === \"fill\" || fit === \"fit\" || !fit) {\n    let scaleX = 1;\n    let scaleY = 1;\n    let offsetX = 0;\n    let offsetY = 0;\n    const imageRatio = imageWidth / imageHeight;\n    const realWidth = frame2.height * imageRatio;\n    const realHeight = frame2.width / imageRatio;\n    const validScaleX = realWidth / frame2.width;\n    const validScaleY = realHeight / frame2.height;\n    if (fit === \"fill\" || !fit ? validScaleY > validScaleX : validScaleY < validScaleX) {\n      scaleY = validScaleY;\n      offsetY = (1 - validScaleY) / 2;\n    } else {\n      scaleX = validScaleX;\n      offsetX = (1 - validScaleX) / 2;\n    }\n    transform2 = `translate(${offsetX}, ${offsetY}) scale(${scaleX}, ${scaleY})`;\n  }\n  const imageId = `id${id}g${\"-fillImage\"}`;\n  return { id: imageId, path: (_a = fill.src) != null ? _a : \"\", transform: transform2 };\n}\n\n// ../../library/src/render/WindowContext.ts\nimport React85 from \"react\";\nvar WindowContext = /* @__PURE__ */ React85.createContext(\n  void 0\n);\nvar useProvidedWindow = () => React85.useContext(WindowContext);\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nimport React86, { Component as Component11 } from \"react\";\n\n// ../../library/src/render/utils/imageUrlForAsset.ts\nvar mediaType2 = \"framer/asset-reference,\";\nfunction isAssetReference(value) {\n  return value.startsWith(`data:${mediaType2}`);\n}\nfunction imageUrlForAsset(asset, pixelSize) {\n  var _a;\n  if (/^\\w+:/.test(asset) && !isAssetReference(asset))\n    return asset;\n  if (typeof pixelSize !== \"number\")\n    pixelSize = void 0;\n  else if (pixelSize <= 512)\n    pixelSize = 512;\n  else if (pixelSize <= 1024)\n    pixelSize = 1024;\n  else if (pixelSize <= 2048)\n    pixelSize = 2048;\n  else\n    pixelSize = 4096;\n  const isExport = RenderTarget.current() === \"EXPORT\" /* export */;\n  return (_a = runtime.assetResolver(asset, { pixelSize, isExport })) != null ? _a : \"\";\n}\n\n// ../../library/src/render/presentation/ImagePatternElement.tsx\nvar ImagePatternElement = class extends Component11 {\n  render() {\n    const { id, path, transform: transform2 } = this.props;\n    const xlinkHref = imageUrlForAsset(path);\n    return /* @__PURE__ */ React86.createElement(\"pattern\", { id, width: \"100%\", height: \"100%\", patternContentUnits: \"objectBoundingBox\" }, /* @__PURE__ */ React86.createElement(\n      \"image\",\n      {\n        key: xlinkHref,\n        width: 1,\n        height: 1,\n        xlinkHref,\n        preserveAspectRatio: \"none\",\n        transform: transform2\n      }\n    ));\n  }\n};\n\n// ../../library/src/render/presentation/SharedSVGManager.ts\nvar useDOM = isBrowser2();\nvar SharedSVGEntry = class {\n  constructor(id, svg, innerHTML, viewBox, count = 0) {\n    this.id = id;\n    this.svg = svg;\n    this.innerHTML = innerHTML;\n    this.viewBox = viewBox;\n    this.count = count;\n  }\n};\nvar SharedSVGManager = class {\n  constructor() {\n    this.entries = /* @__PURE__ */ new Map();\n  }\n  debugGetEntries() {\n    return this.entries;\n  }\n  /** Request to render a svg, this will ensure there is a global instance and will return a\n   * template referencing the image. Must be balanced with `unsubscribe()` calls using the same\n   * svg. If called multiple times while the shared SVG exists, the generateUniqueIds and\n   * contentId parameters are ignored. */\n  subscribe(svg, generateUniqueIds, contentId) {\n    if (!svg || svg === \"\")\n      return \"\";\n    let entry = this.entries.get(svg);\n    if (!entry) {\n      if (!contentId) {\n        contentId = \"svg\" + String(hash(svg)) + \"_\" + String(svg.length);\n      }\n      let uniqueSVG = svg;\n      let svgSize;\n      const svgDom = parseSVG(svg);\n      if (svgDom) {\n        if (generateUniqueIds) {\n          prefixIdsInSVG(svgDom, contentId);\n        }\n        svgDom.id = contentId;\n        svgSize = getSVGSize(svgDom);\n        uniqueSVG = svgDom.outerHTML;\n      }\n      entry = this.createDOMElementFor(uniqueSVG, contentId, svgSize);\n      this.entries.set(svg, entry);\n    }\n    entry.count += 1;\n    return entry.innerHTML;\n  }\n  /** Returns the viewBox for the svg, or undefined if there is no viewBox. */\n  getViewBox(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    return entry == null ? void 0 : entry.viewBox;\n  }\n  /** When no longer rendering an svg it must be unsubscribed from so resources can be cleaned up.\n   * Pass in the same svg as used with `subscribe()`. */\n  unsubscribe(svg) {\n    if (!svg || svg === \"\")\n      return;\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    entry.count -= 1;\n    if (entry.count > 0)\n      return;\n    setTimeout(() => this.maybeRemoveEntry(svg), 5e3);\n  }\n  maybeRemoveEntry(svg) {\n    const entry = this.entries.get(svg);\n    if (!entry)\n      return;\n    if (entry.count > 0)\n      return;\n    this.entries.delete(svg);\n    this.removeDOMElement(entry);\n  }\n  removeDOMElement(entry) {\n    const containerId = \"container_\" + entry.id;\n    if (useDOM) {\n      const container = document == null ? void 0 : document.querySelector(\"#\" + containerId);\n      container == null ? void 0 : container.remove();\n    }\n  }\n  createDOMElementFor(svg, id, size2) {\n    const containerId = \"container_\" + id;\n    if (useDOM) {\n      let svgTemplates = document.querySelector(\"#svg-templates\");\n      if (!svgTemplates) {\n        svgTemplates = document.createElement(\"div\");\n        svgTemplates.id = \"svg-templates\";\n        svgTemplates.style.position = \"absolute\";\n        svgTemplates.style.top = \"0\";\n        svgTemplates.style.left = \"0\";\n        svgTemplates.style.width = \"0\";\n        svgTemplates.style.height = \"0\";\n        svgTemplates.style.overflow = \"hidden\";\n        document.body.appendChild(svgTemplates);\n      }\n      if (!document.querySelector(\"#\" + containerId)) {\n        const container = document.createElement(\"div\");\n        container.id = containerId;\n        container.innerHTML = svg;\n        if (container.firstElementChild) {\n          container.firstElementChild.id = id;\n        }\n        svgTemplates.appendChild(container);\n      }\n    }\n    const box = size2 ? `0 0 ${size2.width} ${size2.height}` : void 0;\n    const viewBox = box ? ` viewBox=\"${box}\"` : \"\";\n    const innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" style=\"width: 100%; height: 100%\"${viewBox}><use href=\"#${id}\"></use></svg>`;\n    return new SharedSVGEntry(id, svg, innerHTML, box);\n  }\n  clear() {\n    this.entries.clear();\n  }\n  /** Returns a string containing a div#svg-templates and all the current svg templates. Can be\n   * used after running `ReactDOMServer.renderToString()` */\n  generateTemplates() {\n    const output = [];\n    const style = \"position: absolute; overflow: hidden; top: 0; left: 0; width: 0; height: 0\";\n    output.push(`<div id=\"svg-templates\" style=\"${style}\">`);\n    for (const value of this.entries.values()) {\n      const containerId = \"container_\" + value.id;\n      output.push(`  <div id=\"${containerId}\">`);\n      output.push(`    ${value.svg}`);\n      output.push(\"  </div>\");\n    }\n    output.push(\"</div>\");\n    return output.join(\"\\n\");\n  }\n};\nvar sharedSVGManager = /* @__PURE__ */ new SharedSVGManager();\nfunction parseSVG(svg) {\n  if (typeof DOMParser === \"undefined\") {\n    console.warn(\"unable to find DOMParser\");\n    return;\n  }\n  try {\n    const domParser = new DOMParser();\n    const doc = domParser.parseFromString(svg, \"text/html\");\n    const node = doc.getElementsByTagName(\"svg\")[0];\n    if (!node)\n      throw Error(\"no svg element found\");\n    return node;\n  } catch {\n    return;\n  }\n}\nfunction prefixIdsInSVG(svg, prefix2) {\n  const sanitizedPrefix = sanitizeString(prefix2);\n  recursivelyPrefixId(svg, sanitizedPrefix);\n}\nfunction sanitizeString(str) {\n  return str.replace(/[^a-z0-9\\-_:.]|^[^a-z]+/gi, \"\");\n}\nfunction recursivelyPrefixId(el, prefix2) {\n  prefixId(el, prefix2);\n  const childNodes = Array.from(el.children);\n  childNodes.forEach((node) => {\n    recursivelyPrefixId(node, prefix2);\n  });\n}\nfunction prefixId(el, prefix2) {\n  const attributes = el.getAttributeNames();\n  attributes.forEach((attr) => {\n    const value = el.getAttribute(attr);\n    if (!value)\n      return;\n    if (attr === \"id\") {\n      el.setAttribute(attr, `${prefix2}_${value}`);\n    }\n    if (attr === \"href\" || attr === \"xlink:href\") {\n      const [base, fragmentIdentifier] = value.split(\"#\");\n      if (base)\n        return;\n      el.setAttribute(attr, `#${prefix2}_${fragmentIdentifier}`);\n      return;\n    }\n    const URL_REF = \"url(#\";\n    if (value.includes(URL_REF)) {\n      const prefixedValue = value.replace(URL_REF, `${URL_REF}${prefix2}_`);\n      el.setAttribute(attr, prefixedValue);\n    }\n  });\n}\nvar unitsToPixels = {\n  cm: 96 / 2.54,\n  mm: 96 / 2.54 / 10,\n  Q: 96 / 2.54 / 40,\n  in: 96,\n  pc: 96 / 6,\n  pt: 96 / 72,\n  px: 1,\n  // A few assumptions about relative units.\n  em: 16,\n  ex: 8,\n  ch: 8,\n  rem: 16\n};\nfunction parseLength(value) {\n  var _a;\n  if (!value)\n    return;\n  const m2 = /(-?[0-9.]+)([a-z%]*)/.exec(value);\n  if ((m2 == null ? void 0 : m2[1]) === void 0 || (m2 == null ? void 0 : m2[2]) === void 0)\n    return;\n  if ((_a = m2[2]) == null ? void 0 : _a.startsWith(\"%\"))\n    return;\n  return Math.round(parseFloat(m2[1]) * (unitsToPixels[m2[2]] || 1));\n}\nfunction getSVGSize(svg) {\n  const width = parseLength(svg.getAttribute(\"width\"));\n  const height = parseLength(svg.getAttribute(\"height\"));\n  if (typeof width !== \"number\" || typeof height !== \"number\")\n    return;\n  if (width <= 0 || height <= 0)\n    return;\n  return { width, height };\n}\n\n// ../../library/src/render/presentation/SVG.tsx\nfunction SVG(props) {\n  const parentSize = useParentSize();\n  const ariaId = \"svg\" + React87.useId();\n  const layoutId = useLayoutId(props);\n  const layoutRef = React87.useRef(null);\n  const providedWindow = useProvidedWindow();\n  useMeasureLayout(props, layoutRef);\n  return /* @__PURE__ */ React87.createElement(\n    SVGComponent,\n    {\n      ...props,\n      innerRef: layoutRef,\n      parentSize,\n      ariaId,\n      layoutId,\n      providedWindow\n    }\n  );\n}\nvar MAX_BACKGROUND_SVG_TEXT_LENGTH = 5e4;\nfunction containsImageReference(svg) {\n  return svg.indexOf(\"image\") >= 0;\n}\nfunction containsCustomPropertyReference(svg) {\n  return svg.indexOf(\"var(--\") >= 0;\n}\nfunction hasBorderRadius(style) {\n  return !!(style.borderRadius || style.borderBottomLeftRadius || style.borderBottomRightRadius || style.borderTopLeftRadius || style.borderTopRightRadius);\n}\nfunction sizeSVG(container, props) {\n  var _a, _b, _c;\n  const div = container.current;\n  if (!div)\n    return;\n  const localWindow = (_a = props.providedWindow) != null ? _a : safeWindow;\n  const svg = div.firstElementChild;\n  if (!svg || !(svg instanceof localWindow.SVGSVGElement))\n    return;\n  if (!svg.getAttribute(\"viewBox\")) {\n    const viewBox = sharedSVGManager.getViewBox(props.svg);\n    if (viewBox) {\n      svg.setAttribute(\"viewBox\", viewBox);\n    }\n  }\n  const { withExternalLayout, parentSize } = props;\n  const canUseCalculatedOnCanvasSize = !withExternalLayout && constraintsEnabled(props) && parentSize !== 1 /* Disabled */ && parentSize !== 2 /* DisabledForCurrentLevel */;\n  if (canUseCalculatedOnCanvasSize)\n    return;\n  const { intrinsicWidth, intrinsicHeight, _constraints } = props;\n  if (((_b = svg.viewBox.baseVal) == null ? void 0 : _b.width) === 0 && ((_c = svg.viewBox.baseVal) == null ? void 0 : _c.height) === 0 && isFiniteNumber(intrinsicWidth) && isFiniteNumber(intrinsicHeight)) {\n    svg.setAttribute(\"viewBox\", `0 0 ${intrinsicWidth} ${intrinsicHeight}`);\n  }\n  if (_constraints && _constraints.aspectRatio) {\n    svg.setAttribute(\"preserveAspectRatio\", \"\");\n  } else {\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n  }\n  svg.setAttribute(\"width\", \"100%\");\n  svg.setAttribute(\"height\", \"100%\");\n}\nvar SVGComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.container = React87.createRef();\n      this.svgElement = null;\n      this.setSVGElement = (element) => {\n        this.svgElement = element;\n        this.setLayerElement(element);\n      };\n      this.previouslyRenderedSVG = \"\";\n    }\n    static frame(props) {\n      return calculateRect(props, props.parentSize || 0 /* Unknown */);\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */);\n    }\n    componentDidMount() {\n      if (this.props.svgContentId)\n        return;\n      sizeSVG(this.container, this.props);\n    }\n    componentWillUnmount() {\n      sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n      this.previouslyRenderedSVG = \"\";\n    }\n    componentDidUpdate(prevProps) {\n      super.componentDidUpdate(prevProps);\n      if (this.props.svgContentId)\n        return;\n      const { fill } = this.props;\n      if (BackgroundImage.isImageObject(fill) && BackgroundImage.isImageObject(prevProps.fill) && fill.src !== prevProps.fill.src) {\n        resetSetStyle(this.svgElement, \"fill\", null, false);\n      }\n      sizeSVG(this.container, this.props);\n    }\n    collectLayout(style, innerStyle) {\n      if (this.props.withExternalLayout) {\n        innerStyle.width = \"100%\";\n        innerStyle.height = \"100%\";\n        innerStyle.aspectRatio = \"inherit\";\n        return;\n      }\n      const frame2 = this.frame;\n      const { rotation, intrinsicWidth, intrinsicHeight, width, height } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      style.opacity = isFiniteNumber(this.props.opacity) ? this.props.opacity : 1;\n      if (RenderTarget.hasRestrictions() && frame2) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          width: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n        if (constraintsEnabled(this.props)) {\n          style.position = \"absolute\";\n        }\n        const xFactor = frame2.width / (intrinsicWidth || 1);\n        const yFactor = frame2.height / (intrinsicHeight || 1);\n        innerStyle.transformOrigin = \"top left\";\n        const { zoom, target } = RenderEnvironment;\n        if (target === \"EXPORT\" /* export */) {\n          const zoomFactor = zoom > 1 ? zoom : 1;\n          innerStyle.transform = `scale(${xFactor * zoomFactor}, ${yFactor * zoomFactor})`;\n          innerStyle.zoom = 1 / zoomFactor;\n        } else {\n          innerStyle.transform = `scale(${xFactor}, ${yFactor})`;\n        }\n        if (intrinsicWidth && intrinsicHeight) {\n          innerStyle.width = intrinsicWidth;\n          innerStyle.height = intrinsicHeight;\n        }\n      } else {\n        const { left, right, top, bottom } = this.props;\n        Object.assign(style, {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          rotate\n        });\n        Object.assign(innerStyle, {\n          left: 0,\n          top: 0,\n          bottom: 0,\n          right: 0,\n          position: \"absolute\"\n        });\n      }\n    }\n    render() {\n      var _a2, _b;\n      if (import_process7.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const {\n        id,\n        visible,\n        style,\n        fill,\n        svg,\n        intrinsicHeight,\n        intrinsicWidth,\n        ariaId = \"\",\n        title,\n        description,\n        layoutId,\n        className,\n        variants,\n        withExternalLayout,\n        innerRef,\n        svgContentId,\n        height,\n        opacity,\n        width,\n        ...rest\n      } = this.props;\n      if (!withExternalLayout && (!visible || !id))\n        return null;\n      const identifier = (_a2 = id != null ? id : layoutId) != null ? _a2 : \"svg\";\n      injectComponentCSSRules();\n      const frame2 = this.frame;\n      const size2 = frame2 || { width: intrinsicWidth || 100, height: intrinsicHeight || 100 };\n      const outerStyle = { ...style, imageRendering: \"pixelated\", flexShrink: 0 };\n      const innerStyle = {};\n      this.collectLayout(outerStyle, innerStyle);\n      collectOpacityFromProps(this.props, outerStyle);\n      collectFiltersFromProps(this.props, outerStyle);\n      Layer.applyWillChange(this.props, outerStyle, false);\n      let fillElement = null;\n      if (typeof fill === \"string\" || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        outerStyle.fill = fillColor;\n        outerStyle.color = fillColor;\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${LinearGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const { stops, x1, x2, y1, y2 } = elementPropertiesForLinearGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ React87.createElement(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            xmlns: \"http://www.w3.org/2000/svg\",\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" }\n          },\n          /* @__PURE__ */ React87.createElement(\"linearGradient\", { id: gradientId, x1, x2, y1, y2 }, stops.map((stop, idx) => {\n            return /* @__PURE__ */ React87.createElement(\n              \"stop\",\n              {\n                key: idx,\n                offset: stop.position,\n                stopColor: stop.color,\n                stopOpacity: stop.alpha\n              }\n            );\n          }))\n        );\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        const gradient = fill;\n        const gradientId = `${encodeURI(id || \"\")}g${RadialGradient.hash(gradient)}`;\n        outerStyle.fill = `url(#${gradientId})`;\n        const elementProperties = elementPropertiesForRadialGradient(gradient, identifier);\n        fillElement = /* @__PURE__ */ React87.createElement(\n          \"svg\",\n          {\n            ref: this.setSVGElement,\n            xmlns: \"http://www.w3.org/2000/svg\",\n            width: \"100%\",\n            height: \"100%\",\n            style: { position: \"absolute\" }\n          },\n          /* @__PURE__ */ React87.createElement(\n            \"radialGradient\",\n            {\n              id: gradientId,\n              cy: gradient.centerAnchorY,\n              cx: gradient.centerAnchorX,\n              r: gradient.widthFactor\n            },\n            elementProperties.stops.map((stop, idx) => {\n              return /* @__PURE__ */ React87.createElement(\n                \"stop\",\n                {\n                  key: idx,\n                  offset: stop.position,\n                  stopColor: stop.color,\n                  stopOpacity: stop.alpha\n                }\n              );\n            })\n          )\n        );\n      } else if (BackgroundImage.isImageObject(fill)) {\n        const imagePattern = imagePatternPropsForFill(fill, size2, identifier);\n        if (imagePattern) {\n          outerStyle.fill = `url(#${imagePattern.id})`;\n          fillElement = /* @__PURE__ */ React87.createElement(\n            \"svg\",\n            {\n              ref: this.setSVGElement,\n              xmlns: \"http://www.w3.org/2000/svg\",\n              xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n              width: \"100%\",\n              height: \"100%\",\n              style: { position: \"absolute\" }\n            },\n            /* @__PURE__ */ React87.createElement(\"defs\", null, /* @__PURE__ */ React87.createElement(ImagePatternElement, { ...imagePattern }))\n          );\n        }\n      }\n      const dataProps = {\n        \"data-framer-component-type\": \"SVG\"\n      };\n      const hasTransformTemplate = !frame2;\n      if (hasTransformTemplate) {\n        Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n      }\n      const svgAsBackgroundImage = !fillElement && !outerStyle.fill && !outerStyle.background && !outerStyle.backgroundImage && svg.length < MAX_BACKGROUND_SVG_TEXT_LENGTH && !containsImageReference(svg) && !containsCustomPropertyReference(svg);\n      let content = null;\n      if (svgAsBackgroundImage) {\n        outerStyle.backgroundSize = \"100% 100%\";\n        outerStyle.backgroundImage = `url('data:image/svg+xml;utf8,${encodeURIComponent(svg)}')`;\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = \"\";\n      } else {\n        const contentid = svgContentId ? \"svg\" + svgContentId : null;\n        const __html = sharedSVGManager.subscribe(svg, !svgContentId, contentid);\n        sharedSVGManager.unsubscribe(this.previouslyRenderedSVG);\n        this.previouslyRenderedSVG = svg;\n        if (hasBorderRadius(outerStyle)) {\n          outerStyle.overflow = \"hidden\";\n        }\n        content = /* @__PURE__ */ React87.createElement(React87.Fragment, null, fillElement, /* @__PURE__ */ React87.createElement(\n          \"div\",\n          {\n            key: BackgroundImage.isImageObject(fill) ? fill.src : \"\",\n            className: \"svgContainer\",\n            style: innerStyle,\n            ref: this.container,\n            dangerouslySetInnerHTML: { __html }\n          }\n        ));\n      }\n      const MotionComponent = motion[(_b = this.props.as) != null ? _b : \"div\"];\n      const { href, target, rel, onClick } = this.props;\n      const ariaDescriptionId = ariaId + \"desc\";\n      return /* @__PURE__ */ React87.createElement(\n        MotionComponent,\n        {\n          ...dataProps,\n          ...rest,\n          layoutId,\n          transformTemplate: hasTransformTemplate ? transformTemplate(this.props.center) : void 0,\n          id,\n          ref: innerRef,\n          style: outerStyle,\n          className,\n          variants,\n          tabIndex: this.props.tabIndex,\n          role: title || description ? \"img\" : void 0,\n          \"aria-label\": title,\n          \"aria-describedby\": description ? ariaDescriptionId : void 0,\n          ...{ href, target, rel, onClick }\n        },\n        content,\n        description && /* @__PURE__ */ React87.createElement(\"div\", { style: VISUALLY_HIDDEN_STYLES, id: ariaDescriptionId }, description)\n      );\n    }\n  }, _a.supportsConstraints = true, _a.defaultSVGProps = {\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    style: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    parentSize: 0 /* Unknown */,\n    rotation: 0,\n    visible: true,\n    svg: \"\",\n    shadows: []\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultSVGProps\n  }, _a;\n})();\nvar VISUALLY_HIDDEN_STYLES = {\n  clip: \"rect(1px, 1px, 1px, 1px)\",\n  clipPath: \"inset(50%)\",\n  height: \"1px\",\n  width: \"1px\",\n  margin: \"-1px\",\n  overflow: \"hidden\",\n  padding: 0,\n  position: \"absolute\"\n};\n\n// ../../library/src/render/presentation/Text.tsx\nvar import_process9 = __toESM(require_browser(), 1);\nimport React89, { useEffect as useEffect10, useRef as useRef13 } from \"react\";\n\n// ../../library/src/modules/replaceFramerPageLinks.ts\nvar htmlRegExp = /[&<>'\"]/g;\nvar escapeHTML = (str) => str.replace(\n  htmlRegExp,\n  (tag) => ({\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    \"'\": \"&#39;\",\n    '\"': \"&quot;\"\n  })[tag] || tag\n);\nvar regex = /(<([a-z]+)(?:\\s+(?!href[\\s=])[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*)(?:(\\s+href\\s*=)(?:'([^']*)'|\"([^\"]*)\"))?((?:\\s+[^=\\s]+=(?:'[^']*'|\"[^\"]*\"))*>)/gi;\nfunction replaceFramerPageLinks(rawHTML, getRoute, currentRoute, implicitPathVariables) {\n  return rawHTML.replace(\n    regex,\n    (original, pre1, tag, pre2, value1, value2, post) => {\n      var _a, _b, _c;\n      if (tag.toLowerCase() !== \"a\")\n        return original;\n      const href = value1 || value2;\n      const pageLink = parseFramerPageLink(href.replace(/&amp;/g, \"&\"));\n      if (!pageLink || !pageLink.target)\n        return original;\n      const targetRoute = getRoute(pageLink.target);\n      if (!isRoute(targetRoute) || !isRoute(currentRoute))\n        return original;\n      const targetPath = targetRoute.path;\n      const currentPath = currentRoute.path;\n      if (!targetPath || !currentPath)\n        return original;\n      let attributes = ` ${\"data-framer-page-link-target\" /* Page */}=\"${pageLink.target}\"`;\n      const elementId = getRouteElementId(targetRoute, (_a = pageLink.element) != null ? _a : void 0);\n      if (elementId) {\n        attributes += ` ${\"data-framer-page-link-element\" /* Element */}=\"${pageLink.element}\"`;\n      }\n      const link = linkFromFramerPageLink(href);\n      if (!link || isString2(link))\n        return original;\n      if (linkMatchesRoute(currentRoute, link, implicitPathVariables)) {\n        attributes += ` ${\"data-framer-page-link-current\" /* Current */}`;\n      }\n      let relativePath = targetPath;\n      const pathVariables = Object.assign({}, implicitPathVariables, (_b = pageLink.collectionItem) == null ? void 0 : _b.pathVariables);\n      if (Object.keys(pathVariables).length > 0) {\n        relativePath = relativePath.replace(pathVariablesRegExp2, (_, key7) => \"\" + pathVariables[key7]);\n      }\n      if ((_c = pageLink.collectionItem) == null ? void 0 : _c.pathVariables) {\n        const params = new URLSearchParams(pageLink.collectionItem.pathVariables);\n        attributes += ` ${\"data-framer-page-link-path-variables\" /* PathVariables */}=\"${params}\"`;\n      }\n      relativePath = computeRelativePath(currentPath, relativePath);\n      return pre1 + pre2 + `\"${escapeHTML(relativePath + (elementId ? `#${elementId}` : \"\"))}\"` + attributes + post;\n    }\n  );\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar import_process8 = __toESM(require_browser(), 1);\n\n// ../../library/src/render/fonts/types.ts\nvar TypefaceSourceNames = /* @__PURE__ */ ((TypefaceSourceNames2) => {\n  TypefaceSourceNames2[\"Google\"] = \"google\";\n  TypefaceSourceNames2[\"Fontshare\"] = \"fontshare\";\n  TypefaceSourceNames2[\"Local\"] = \"local\";\n  TypefaceSourceNames2[\"Custom\"] = \"custom\";\n  return TypefaceSourceNames2;\n})(TypefaceSourceNames || {});\nvar knownGoogleFontCategories = [\"sans-serif\", \"serif\", \"monospace\", \"display\", \"handwriting\"];\n\n// ../../library/src/render/fonts/CustomFontSource.ts\nvar customFontSelectorPrefix = \"CUSTOM;\";\nfunction getCustomFontName(fileName, properties) {\n  if (!properties)\n    return fileName.substring(0, fileName.lastIndexOf(\".\"));\n  const fontFamily = properties.font.preferredFamily === \"\" ? properties.font.fontFamily : properties.font.preferredFamily;\n  const variant = properties.font.preferredSubFamily === \"\" ? properties.font.fontSubFamily : properties.font.preferredSubFamily;\n  return `${fontFamily} ${variant}`;\n}\nvar CustomFontSource = class {\n  constructor() {\n    this.name = \"custom\" /* Custom */;\n    this.typefaces = [];\n    this.byFamily = /* @__PURE__ */ new Map();\n    this.assetsByFamily = /* @__PURE__ */ new Map();\n  }\n  importFonts(assets) {\n    this.typefaces.length = 0;\n    this.byFamily.clear();\n    this.assetsByFamily.clear();\n    const fonts = [];\n    assets.forEach((asset) => {\n      var _a;\n      if (!this.isValidCustomFontAsset(asset)) {\n        return;\n      }\n      const fontName = getCustomFontName(asset.name, asset.properties);\n      const typeface = this.createTypeface(fontName);\n      const font = {\n        typeface,\n        selector: `${customFontSelectorPrefix}${fontName}`,\n        variant: this.inferVariantName(fontName),\n        postscriptName: (_a = asset.properties) == null ? void 0 : _a.font.postscriptName,\n        file: asset.url\n      };\n      typeface.fonts.push(font);\n      typeface.owner = asset.ownerType === \"team\" ? \"team\" : \"project\";\n      this.assetsByFamily.set(fontName, asset);\n      fonts.push(...typeface.fonts);\n    });\n    return fonts;\n  }\n  isValidCustomFontAsset(asset) {\n    var _a;\n    if (!asset.mimeType.startsWith(\"font/\"))\n      return false;\n    if (((_a = asset.properties) == null ? void 0 : _a.kind) !== \"font\")\n      return false;\n    if (!asset.properties.font)\n      return false;\n    return \"fontFamily\" in asset.properties.font;\n  }\n  inferVariantName(family) {\n    const possibleValues = [\n      \"thin\",\n      \"ultra light\",\n      \"extra light\",\n      \"light\",\n      \"normal\",\n      \"medium\",\n      \"semi bold\",\n      \"bold\",\n      \"extra bold\",\n      \"black\"\n    ];\n    const possibleValuesWithItalics = [...possibleValues.map((value) => `${value} italic`), ...possibleValues];\n    const lowerCaseFamily = family.toLowerCase();\n    const tokens = [...lowerCaseFamily.split(\" \"), ...lowerCaseFamily.split(\"-\"), ...lowerCaseFamily.split(\"_\")];\n    const foundToken = possibleValuesWithItalics.find(\n      (value) => tokens.includes(value) || tokens.includes(value.replace(/\\s+/g, \"\"))\n    );\n    if (foundToken)\n      return foundToken.replace(/(^\\w|\\s\\w)/g, (char) => char.toUpperCase());\n    return \"Regular\";\n  }\n  createTypeface(family) {\n    const existingTypeface = this.byFamily.get(family);\n    if (existingTypeface)\n      return existingTypeface;\n    const typeface = {\n      source: this.name,\n      family,\n      fonts: []\n    };\n    this.addTypeface(typeface);\n    return typeface;\n  }\n  addTypeface(typeface) {\n    this.typefaces.push(typeface);\n    this.byFamily.set(typeface.family, typeface);\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(customFontSelectorPrefix))\n      return null;\n    const tokens = selector.split(customFontSelectorPrefix);\n    if (tokens[1] === void 0)\n      return null;\n    const locator = { source: \"custom\", family: tokens[1] };\n    return locator;\n  }\n  getFontBySelector(selector, createFont = true) {\n    const locator = this.parseSelector(selector);\n    if (!locator)\n      return;\n    if (!createFont && !this.byFamily.get(locator.family))\n      return;\n    return this.getTypefaceByFamily(locator.family).fonts[0];\n  }\n  getTypefaceByFamily(family) {\n    const foundTypeface = this.byFamily.get(family);\n    if (foundTypeface)\n      return foundTypeface;\n    const typeface = {\n      source: \"custom\",\n      family,\n      fonts: []\n    };\n    typeface.fonts.push({\n      selector: `${customFontSelectorPrefix}${family}`,\n      variant: this.inferVariantName(family),\n      typeface\n    });\n    return typeface;\n  }\n};\n\n// ../../library/src/render/fonts/FontshareSource.ts\nvar fontsharePrefix = \"FS;\";\nvar weightNameToNumber = {\n  thin: 100,\n  hairline: 100,\n  // Alternative name for \"thin\".\n  extralight: 200,\n  light: 300,\n  regular: 400,\n  medium: 500,\n  semibold: 600,\n  bold: 700,\n  extrabold: 800,\n  ultra: 800,\n  // Alternative name for \"extrabold\".\n  black: 900,\n  heavy: 900\n  // Alternative name for \"black\".\n};\nvar weightNames = Object.keys(weightNameToNumber);\nvar allowedVariantsRegex = new RegExp(`^(${[...weightNames, \"italic\"].join(\"|\")})`);\nvar FontshareSource = class {\n  constructor() {\n    this.name = \"fontshare\" /* Fontshare */;\n    this.typefaces = [];\n    this.byFamily = /* @__PURE__ */ new Map();\n  }\n  getTypefaceByFamily(family) {\n    var _a;\n    return (_a = this.byFamily.get(family)) != null ? _a : null;\n  }\n  /**\n   * Parses variant a string into a weight number and style, defaulting to a\n   * weight of `400` and/or a style of `\"normal\"` depending on what isn't\n   * present in the variant string.\n   *\n   * E.g:\n   *   - `\"bold\"` becomes `{ weight: 700, style: \"normal\" }`\n   *   - `\"bold italic\"` becomes `{ weight: 700, style: \"italic\" }`\n   *   - `\"italic\"` becomes `{ weight: 400, style: \"italic\" }`\n   */\n  static parseVariant(variant) {\n    const variantSplit = variant.split(\" \");\n    const weightName = weightNames.find((weightName2) => {\n      return variantSplit.includes(weightName2);\n    });\n    const styleName = variant.includes(\"italic\") ? \"italic\" : \"normal\";\n    const weight = weightName && weightNameToNumber[weightName] || 400;\n    const style = styleName === \"italic\" ? styleName : \"normal\";\n    return {\n      weight,\n      style\n    };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(fontsharePrefix))\n      return null;\n    const tokens = selector.split(\"-\");\n    if (tokens.length !== 2)\n      return null;\n    const [family, variant] = tokens;\n    if (!family || !variant)\n      return null;\n    return { family: family.replace(fontsharePrefix, \"\"), variant, source: this.name };\n  }\n  // TODO: these are duplicated across implementations of FontSource\n  // When adding a third source, we should abstract them\n  createTypeface(family) {\n    const typeface = { family, fonts: [], source: this.name };\n    this.addTypeface(typeface);\n    return typeface;\n  }\n  addTypeface(typeface) {\n    this.typefaces.push(typeface);\n    this.byFamily.set(typeface.family, typeface);\n  }\n  importFonts(fontshareFonts) {\n    this.typefaces.length = 0;\n    this.byFamily.clear();\n    const fonts = [];\n    for (const fontshareFont of fontshareFonts) {\n      for (const fontStyle of fontshareFont.font_styles) {\n        const { name: family } = fontshareFont;\n        const variant = fontStyle.name.toLowerCase();\n        const allowedVariantMatch = allowedVariantsRegex.exec(variant);\n        if (!allowedVariantMatch || variant.endsWith(\"wide\")) {\n          continue;\n        }\n        let typeface = this.getTypefaceByFamily(family);\n        if (!typeface) {\n          typeface = this.createTypeface(family);\n        }\n        const selector = `FS;${family}-${variant}`;\n        const variantInfo = FontshareSource.parseVariant(variant) || {\n          weight: void 0,\n          style: void 0\n        };\n        const { weight, style } = variantInfo;\n        const font = {\n          typeface,\n          variant,\n          selector,\n          weight,\n          style,\n          file: fontStyle.file\n        };\n        typeface.fonts.push(font);\n        fonts.push(font);\n      }\n    }\n    return fonts;\n  }\n};\n\n// ../../library/src/render/fonts/GoogleFontSource.ts\nvar googleFontSelectorPrefix = \"GF;\";\nvar GoogleFontSource = class {\n  constructor() {\n    this.name = \"google\" /* Google */;\n    this.typefaces = [];\n    this.byFamily = /* @__PURE__ */ new Map();\n  }\n  getTypefaceByFamily(family) {\n    var _a;\n    return (_a = this.byFamily.get(family)) != null ? _a : null;\n  }\n  static parseVariant(variant) {\n    if (variant === \"regular\")\n      return { style: \"normal\", weight: 400 };\n    const match = /([0-9]*)([a-z]*)/.exec(variant);\n    if (!match)\n      return null;\n    const weight = parseInt(match[1] || \"400\");\n    const style = match[2] || \"normal\";\n    return { weight, style };\n  }\n  parseSelector(selector) {\n    if (!selector.startsWith(googleFontSelectorPrefix))\n      return null;\n    const tokens = selector.split(\"-\");\n    if (tokens.length !== 2)\n      return null;\n    const [family, variant] = tokens;\n    if (!family || !variant)\n      return null;\n    return { family: family.replace(googleFontSelectorPrefix, \"\"), variant, source: this.name };\n  }\n  // TODO: these are duplicated across implementations of FontSource\n  // When adding a third source, we should abstract them\n  createTypeface(family) {\n    const typeface = { family, fonts: [], source: this.name };\n    this.addTypeface(typeface);\n    return typeface;\n  }\n  addTypeface(typeface) {\n    this.typefaces.push(typeface);\n    this.byFamily.set(typeface.family, typeface);\n  }\n  // end of duplication\n  importFonts(webFonts) {\n    this.typefaces.length = 0;\n    this.byFamily.clear();\n    const fonts = [];\n    webFonts.forEach(\n      (webFont) => webFont.variants.forEach((variant) => {\n        var _a;\n        const family = webFont.family;\n        let typeface = this.getTypefaceByFamily(family);\n        if (!typeface) {\n          typeface = this.createTypeface(family);\n        }\n        const variantInfo = GoogleFontSource.parseVariant(variant) || {};\n        const { weight, style } = variantInfo;\n        const selector = `GF;${family}-${variant}`;\n        const font = {\n          typeface,\n          variant,\n          selector,\n          weight,\n          style,\n          category: ensureKnownCategory(webFont.category),\n          file: (_a = webFont.files[variant]) == null ? void 0 : _a.replace(\"http://\", \"https://\")\n        };\n        typeface.fonts.push(font);\n        fonts.push(font);\n      })\n    );\n    return fonts;\n  }\n};\nfunction ensureKnownCategory(category) {\n  if (knownGoogleFontCategories.includes(category))\n    return category;\n  return void 0;\n}\n\n// ../../library/src/render/fonts/loadFont.ts\nvar import_fontfaceobserver = __toESM(require_fontfaceobserver_standalone(), 1);\nvar FONT_LOADING_TIMEOUT = 5e3;\nvar MAX_RETRIES = 3;\nvar FontLoadingError = class extends Error {\n  constructor(message) {\n    super(message);\n    this.name = \"FontLoadingError\";\n  }\n};\nvar fontRequests = /* @__PURE__ */ new Map();\nvar fontReadyPromises = /* @__PURE__ */ new Map();\nvar loadFont = (data2, doc) => loadFontWithRetries(data2, doc);\nasync function loadFontWithRetries(data2, doc, attempt = 0) {\n  const { family, url, stretch, unicodeRange } = data2;\n  const weight = data2.weight || 500;\n  const style = data2.style || \"normal\";\n  const requestId = `${family}-${style}-${weight}-${url}`;\n  if (!fontRequests.has(requestId) || attempt > 0) {\n    const fontFace = new FontFace(family, `url(${url})`, {\n      weight: isString2(weight) ? weight : weight == null ? void 0 : weight.toString(),\n      style,\n      stretch,\n      unicodeRange\n    });\n    const readyPromise = fontFace.load().then(() => {\n      doc.fonts.add(fontFace);\n      return isFontReady(family, style, weight);\n    }).catch((e) => {\n      if (e.name !== \"NetworkError\") {\n        throw e;\n      }\n      if (attempt < MAX_RETRIES) {\n        return loadFontWithRetries(data2, doc, attempt + 1);\n      }\n      throw new FontLoadingError(\n        `Font loading failed after ${attempt} retries due to network error: ${JSON.stringify({\n          family,\n          style,\n          weight,\n          url,\n          stretch,\n          unicodeRange\n        })}`\n      );\n    });\n    fontRequests.set(requestId, readyPromise);\n  }\n  await fontRequests.get(requestId);\n}\nasync function isFontReady(family, style, weight) {\n  const readyPromiseId = `${family}-${style}-${weight}`;\n  if (!fontReadyPromises.has(readyPromiseId)) {\n    const observer = new import_fontfaceobserver.default(family, {\n      style,\n      weight\n    });\n    const readyPromise = observer.load(null, FONT_LOADING_TIMEOUT);\n    fontReadyPromises.set(readyPromiseId, readyPromise);\n  }\n  try {\n    await fontReadyPromises.get(readyPromiseId);\n  } catch (e) {\n    throw new FontLoadingError(\n      `Failed to check if font is ready (${FONT_LOADING_TIMEOUT}ms timeout exceeded): ${JSON.stringify({\n        family,\n        style,\n        weight\n      })}`\n    );\n  }\n}\n\n// ../../library/src/render/fonts/fonts.ts\nvar safeFonts = {\n  Arial: {\n    Regular: { selector: \"Arial\", weight: void 0 },\n    Black: { selector: \"Arial-Black\", weight: void 0 },\n    Narrow: { selector: \"Arial Narrow\", weight: void 0 },\n    \"Rounded Bold\": { selector: \"Arial Rounded MT Bold\", weight: void 0 }\n  },\n  Avenir: {\n    Book: { selector: \"Avenir\", weight: void 0 },\n    Light: { selector: \"Avenir-Light\", weight: void 0 },\n    Medium: { selector: \"Avenir-Medium\", weight: void 0 },\n    Heavy: { selector: \"Avenir-Heavy\", weight: void 0 },\n    Black: { selector: \"Avenir-Black\", weight: void 0 }\n  },\n  \"Avenir Next\": {\n    Regular: { selector: \"Avenir Next\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNext-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNext-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNext-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNext-Heavy\", weight: void 0 }\n  },\n  \"Avenir Next Condensed\": {\n    Regular: { selector: \"Avenir Next Condensed\", weight: void 0 },\n    \"Ultra Light\": { selector: \"AvenirNextCondensed-UltraLight\", weight: void 0 },\n    Medium: { selector: \"AvenirNextCondensed-Medium\", weight: void 0 },\n    \"Demi Bold\": { selector: \"AvenirNextCondensed-DemiBold\", weight: void 0 },\n    Heavy: { selector: \"AvenirNextCondensed-Heavy\", weight: void 0 }\n  },\n  Baskerville: {\n    Regular: { selector: \"Baskerville\", weight: void 0 },\n    \"Semi Bold\": { selector: \"Baskerville-SemiBold\", weight: void 0 }\n  },\n  \"Bodoni 72\": {\n    Book: { selector: \"Bodoni 72\", weight: void 0 },\n    Oldstyle: { selector: \"Bodoni 72 Oldstyle\", weight: void 0 },\n    Smallcaps: { selector: \"Bodoni 72 Smallcaps\", weight: void 0 }\n  },\n  Courier: { Regular: { selector: \"Courier\", weight: void 0 } },\n  \"Courier New\": { Regular: { selector: \"Courier New\", weight: void 0 } },\n  Futura: {\n    Medium: { selector: \"Futura\", weight: void 0 },\n    Condensed: { selector: \"Futura-CondensedMedium\", weight: void 0 },\n    \"Condensed ExtraBold\": { selector: \"Futura-CondensedExtraBold\", weight: void 0 }\n  },\n  Georgia: { Regular: { selector: \"Georgia\", weight: void 0 } },\n  \"Gill Sans\": {\n    Regular: { selector: \"Gill Sans\", weight: void 0 },\n    Light: { selector: \"GillSans-Light\", weight: void 0 },\n    SemiBold: { selector: \"GillSans-SemiBold\", weight: void 0 },\n    UltraBold: { selector: \"GillSans-UltraBold\", weight: void 0 }\n  },\n  Helvetica: {\n    Regular: { selector: \"Helvetica\", weight: void 0 },\n    Light: { selector: \"Helvetica-Light\", weight: void 0 },\n    Bold: { selector: \"Helvetica-Bold\", weight: void 0 },\n    Oblique: { selector: \"Helvetica-Oblique\", weight: void 0 },\n    \"Light Oblique\": { selector: \"Helvetica-LightOblique\", weight: void 0 },\n    \"Bold Oblique\": { selector: \"Helvetica-BoldOblique\", weight: void 0 }\n  },\n  \"Helvetica Neue\": {\n    Regular: { selector: \"Helvetica Neue\", weight: void 0 },\n    UltraLight: { selector: \"HelveticaNeue-UltraLight\", weight: void 0 },\n    Thin: { selector: \"HelveticaNeue-Thin\", weight: void 0 },\n    Light: { selector: \"HelveticaNeue-Light\", weight: void 0 },\n    Medium: { selector: \"HelveticaNeue-Medium\", weight: void 0 },\n    Bold: { selector: \"HelveticaNeue-Bold\", weight: void 0 },\n    Italic: { selector: \"HelveticaNeue-Italic\", weight: void 0 },\n    \"UltraLight Italic\": { selector: \"HelveticaNeue-UltraLightItalic\", weight: void 0 },\n    \"Thin Italic\": { selector: \"HelveticaNeue-ThinItalic\", weight: void 0 },\n    \"Light Italic\": { selector: \"HelveticaNeue-LightItalic\", weight: void 0 },\n    \"Medium Italic\": { selector: \"HelveticaNeue-MediumItalic\", weight: void 0 },\n    \"Bold Italic\": { selector: \"HelveticaNeue-BoldItalic\", weight: void 0 },\n    \"Condensed Bold\": { selector: \"HelveticaNeue-CondensedBold\", weight: void 0 },\n    \"Condensed Black\": { selector: \"HelveticaNeue-CondensedBlack\", weight: void 0 }\n  },\n  \"Hoefler Text\": { Regular: { selector: \"Hoefler Text\", weight: void 0 } },\n  Impact: { Regular: { selector: \"Impact\", weight: void 0 } },\n  \"Lucida Grande\": { Regular: { selector: \"Lucida Grande\", weight: void 0 } },\n  Menlo: { Regular: { selector: \"Menlo\", weight: void 0 } },\n  Monaco: { Regular: { selector: \"Monaco\", weight: void 0 } },\n  Optima: {\n    Regular: { selector: \"Optima\", weight: void 0 },\n    ExtraBlack: { selector: \"Optima-ExtraBlack\", weight: void 0 }\n  },\n  Palatino: { Regular: { selector: \"Palatino\", weight: void 0 } },\n  \"SF Pro Display\": {\n    Regular: { selector: \"__SF-UI-Display-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Black__\", weight: 900 },\n    Italic: { selector: \"__SF-UI-Display-Italic__\", weight: 400 },\n    \"Ultralight Italic\": { selector: \"__SF-UI-Display-Ultralight-Italic__\", weight: 100 },\n    \"Thin Italic\": { selector: \"__SF-UI-Display-Thin-Italic__\", weight: 200 },\n    \"Light Italic\": { selector: \"__SF-UI-Display-Light-Italic__\", weight: 300 },\n    \"Medium Italic\": { selector: \"__SF-UI-Display-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Display-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Display-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Display-Heavy-Italic__\", weight: 800 },\n    \"Black Italic\": { selector: \"__SF-UI-Display-Black-Italic__\", weight: 900 }\n  },\n  \"SF Pro Display Condensed\": {\n    Regular: { selector: \"__SF-UI-Display-Condensed-Regular__\", weight: 400 },\n    Ultralight: { selector: \"__SF-UI-Display-Condensed-Ultralight__\", weight: 100 },\n    Thin: { selector: \"__SF-UI-Display-Condensed-Thin__\", weight: 200 },\n    Light: { selector: \"__SF-UI-Display-Condensed-Light__\", weight: 300 },\n    Medium: { selector: \"__SF-UI-Display-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Display-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Display-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Display-Condensed-Heavy__\", weight: 800 },\n    Black: { selector: \"__SF-UI-Display-Condensed-Black__\", weight: 900 }\n  },\n  \"SF Pro Text\": {\n    Regular: { selector: \"__SF-UI-Text-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Heavy__\", weight: 800 },\n    Italic: { selector: \"__SF-UI-Text-Italic__\", weight: 400 },\n    \"Light Italic\": { selector: \"__SF-UI-Text-Light-Italic__\", weight: 200 },\n    \"Medium Italic\": { selector: \"__SF-UI-Text-Medium-Italic__\", weight: 500 },\n    \"Semibold Italic\": { selector: \"__SF-UI-Text-Semibold-Italic__\", weight: 600 },\n    \"Bold Italic\": { selector: \"__SF-UI-Text-Bold-Italic__\", weight: 700 },\n    \"Heavy Italic\": { selector: \"__SF-UI-Text-Heavy-Italic__\", weight: 800 }\n  },\n  \"SF Pro Text Condensed\": {\n    Regular: { selector: \"__SF-UI-Text-Condensed-Regular__\", weight: 400 },\n    Light: { selector: \"__SF-UI-Text-Condensed-Light__\", weight: 200 },\n    Medium: { selector: \"__SF-UI-Text-Condensed-Medium__\", weight: 500 },\n    Semibold: { selector: \"__SF-UI-Text-Condensed-Semibold__\", weight: 600 },\n    Bold: { selector: \"__SF-UI-Text-Condensed-Bold__\", weight: 700 },\n    Heavy: { selector: \"__SF-UI-Text-Condensed-Heavy__\", weight: 800 }\n  },\n  Tahoma: { Regular: { selector: \"Tahoma\", weight: void 0 } },\n  Times: { Regular: { selector: \"Times\", weight: void 0 } },\n  \"Times New Roman\": { Regular: { selector: \"Times New Roman\", weight: void 0 } },\n  Trebuchet: { Regular: { selector: \"Trebuchet MS\", weight: void 0 } },\n  Verdana: { Regular: { selector: \"Verdana\", weight: void 0 } }\n};\nvar typefaceAliases = {\n  \"__SF-Compact-Display-Regular__\": \"SFCompactDisplay-Regular|.SFCompactDisplay-Regular\",\n  \"__SF-Compact-Display-Ultralight__\": \"SFCompactDisplay-Ultralight|.SFCompactDisplay-Ultralight\",\n  \"__SF-Compact-Display-Thin__\": \"SFCompactDisplay-Thin|.SFCompactDisplay-Thin\",\n  \"__SF-Compact-Display-Light__\": \"SFCompactDisplay-Light|.SFCompactDisplay-Light\",\n  \"__SF-Compact-Display-Medium__\": \"SFCompactDisplay-Medium|.SFCompactDisplay-Medium\",\n  \"__SF-Compact-Display-Semibold__\": \"SFCompactDisplay-Semibold|.SFCompactDisplay-Semibold\",\n  \"__SF-Compact-Display-Heavy__\": \"SFCompactDisplay-Heavy|.SFCompactDisplay-Heavy\",\n  \"__SF-Compact-Display-Black__\": \"SFCompactDisplay-Black|.SFCompactDisplay-Black\",\n  \"__SF-Compact-Display-Bold__\": \"SFCompactDisplay-Bold|.SFCompactDisplay-Bold\",\n  \"__SF-UI-Text-Regular__\": \".SFNSText|SFProText-Regular|SFUIText-Regular|.SFUIText\",\n  \"__SF-UI-Text-Light__\": \".SFNSText-Light|SFProText-Light|SFUIText-Light|.SFUIText-Light\",\n  \"__SF-UI-Text-Medium__\": \".SFNSText-Medium|SFProText-Medium|SFUIText-Medium|.SFUIText-Medium\",\n  \"__SF-UI-Text-Semibold__\": \".SFNSText-Semibold|SFProText-Semibold|SFUIText-Semibold|.SFUIText-Semibold\",\n  \"__SF-UI-Text-Bold__\": \".SFNSText-Bold|SFProText-Bold|SFUIText-Bold|.SFUIText-Bold\",\n  \"__SF-UI-Text-Heavy__\": \".SFNSText-Heavy|SFProText-Heavy|.SFUIText-Heavy\",\n  \"__SF-UI-Text-Italic__\": \".SFNSText-Italic|SFProText-Italic|SFUIText-Italic|.SFUIText-Italic\",\n  \"__SF-UI-Text-Light-Italic__\": \".SFNSText-LightItalic|SFProText-LightItalic|SFUIText-LightItalic|.SFUIText-LightItalic\",\n  \"__SF-UI-Text-Medium-Italic__\": \".SFNSText-MediumItalic|SFProText-MediumItalic|SFUIText-MediumItalic|.SFUIText-MediumItalic\",\n  \"__SF-UI-Text-Semibold-Italic__\": \".SFNSText-SemiboldItalic|SFProText-SemiboldItalic|SFUIText-SemiboldItalic|.SFUIText-SemiboldItalic\",\n  \"__SF-UI-Text-Bold-Italic__\": \".SFNSText-BoldItalic|SFProText-BoldItalic|SFUIText-BoldItalic|.SFUIText-BoldItalic\",\n  \"__SF-UI-Text-Heavy-Italic__\": \".SFNSText-HeavyItalic|SFProText-HeavyItalic|.SFUIText-HeavyItalic\",\n  \"__SF-Compact-Text-Regular__\": \"SFCompactText-Regular|.SFCompactText-Regular\",\n  \"__SF-Compact-Text-Light__\": \"SFCompactText-Light|.SFCompactText-Light\",\n  \"__SF-Compact-Text-Medium__\": \"SFCompactText-Medium|.SFCompactText-Medium\",\n  \"__SF-Compact-Text-Semibold__\": \"SFCompactText-Semibold|.SFCompactText-Semibold\",\n  \"__SF-Compact-Text-Bold__\": \"SFCompactText-Bold|.SFCompactText-Bold\",\n  \"__SF-Compact-Text-Heavy__\": \"SFCompactText-Heavy|.SFCompactText-Heavy\",\n  \"__SF-Compact-Text-Italic__\": \"SFCompactText-Italic|.SFCompactText-Italic\",\n  \"__SF-Compact-Text-Light-Italic__\": \"SFCompactText-LightItalic|.SFCompactText-LightItalic\",\n  \"__SF-Compact-Text-Medium-Italic__\": \"SFCompactText-MediumItalic|.SFCompactText-MediumItalic\",\n  \"__SF-Compact-Text-Semibold-Italic__\": \"SFCompactText-SemiboldItalic|.SFCompactText-SemiboldItalic\",\n  \"__SF-Compact-Text-Bold-Italic__\": \"SFCompactText-BoldItalic|.SFCompactText-BoldItalic\",\n  \"__SF-Compact-Text-Heavy-Italic__\": \"SFCompactText-HeavyItalic|.SFCompactText-HeavyItalic\",\n  \"__SF-UI-Display-Condensed-Regular__\": \".SFNSDisplayCondensed-Regular|SFUIDisplayCondensed-Regular|.SFUIDisplayCondensed-Regular\",\n  \"__SF-UI-Display-Condensed-Ultralight__\": \".SFNSDisplayCondensed-Ultralight|SFUIDisplayCondensed-Ultralight|.SFUIDisplayCondensed-Ultralight\",\n  \"__SF-UI-Display-Condensed-Thin__\": \".SFNSDisplayCondensed-Thin|SFUIDisplayCondensed-Thin|.SFUIDisplayCondensed-Thin\",\n  \"__SF-UI-Display-Condensed-Light__\": \".SFNSDisplayCondensed-Light|SFUIDisplayCondensed-Light|.SFUIDisplayCondensed-Light\",\n  \"__SF-UI-Display-Condensed-Medium__\": \".SFNSDisplayCondensed-Medium|SFUIDisplayCondensed-Medium|.SFUIDisplayCondensed-Medium\",\n  \"__SF-UI-Display-Condensed-Semibold__\": \".SFNSDisplayCondensed-Semibold|SFUIDisplayCondensed-Semibold|.SFUIDisplayCondensed-Semibold\",\n  \"__SF-UI-Display-Condensed-Bold__\": \".SFNSDisplayCondensed-Bold|SFUIDisplayCondensed-Bold|.SFUIDisplayCondensed-Bold\",\n  \"__SF-UI-Display-Condensed-Heavy__\": \".SFNSDisplayCondensed-Heavy|SFUIDisplayCondensed-Heavy|.SFUIDisplayCondensed-Heavy\",\n  \"__SF-UI-Display-Condensed-Black__\": \".SFNSDisplayCondensed-Black|.SFUIDisplayCondensed-Black\",\n  \"__SF-UI-Display-Regular__\": \".SFNSDisplay|SFProDisplay-Regular|SFUIDisplay-Regular|.SFUIDisplay\",\n  \"__SF-UI-Display-Ultralight__\": \".SFNSDisplay-Ultralight|SFProDisplay-Ultralight|SFUIDisplay-Ultralight|.SFUIDisplay-Ultralight\",\n  \"__SF-UI-Display-Thin__\": \".SFNSDisplay-Thin|SFProDisplay-Thin|SFUIDisplay-Thin|.SFUIDisplay-Thin\",\n  \"__SF-UI-Display-Light__\": \".SFNSDisplay-Light|SFProDisplay-Light|SFUIDisplay-Light|.SFUIDisplay-Light\",\n  \"__SF-UI-Display-Medium__\": \".SFNSDisplay-Medium|SFProDisplay-Medium|SFUIDisplay-Medium|.SFUIDisplay-Medium\",\n  \"__SF-UI-Display-Semibold__\": \".SFNSDisplay-Semibold|SFProDisplay-Semibold|SFUIDisplay-Semibold|.SFUIDisplay-Semibold\",\n  \"__SF-UI-Display-Bold__\": \".SFNSDisplay-Bold|SFProDisplay-Bold|SFUIDisplay-Bold|.SFUIDisplay-Bold\",\n  \"__SF-UI-Display-Heavy__\": \".SFNSDisplay-Heavy|SFProDisplay-Heavy|SFUIDisplay-Heavy|.SFUIDisplay-Heavy\",\n  \"__SF-UI-Display-Black__\": \".SFNSDisplay-Black|SFProDisplay-Black|.SFUIDisplay-Black\",\n  \"__SF-UI-Display-Italic__\": \".SFNSDisplay-Italic|SFProDisplay-Italic|SFUIDisplay-Italic\",\n  \"__SF-UI-Display-Ultralight-Italic__\": \".SFNSDisplay-UltralightItalic|SFProDisplay-UltralightItalic|SFUIDisplay-UltralightItalic|.SFUIDisplay-UltralightItalic\",\n  \"__SF-UI-Display-Thin-Italic__\": \".SFNSDisplay-ThinItalic|SFProDisplay-ThinItalic|SFUIDisplay-ThinItalic|.SFUIDisplay-ThinItalic\",\n  \"__SF-UI-Display-Light-Italic__\": \".SFNSDisplay-LightItalic|SFProDisplay-LightItalic|SFUIDisplay-LightItalic|.SFUIDisplay-LightItalic\",\n  \"__SF-UI-Display-Medium-Italic__\": \".SFNSDisplay-MediumItalic|SFProDisplay-MediumItalic|SFUIDisplay-MediumItalic|.SFUIDisplay-MediumItalic\",\n  \"__SF-UI-Display-Semibold-Italic__\": \".SFNSDisplay-SemiboldItalic|SFProDisplay-SemiboldItalic|SFUIDisplay-SemiboldItalic|.SFUIDisplay-SemiboldItalic\",\n  \"__SF-UI-Display-Bold-Italic__\": \".SFNSDisplay-BoldItalic|SFProDisplay-BoldItalic|SFUIDisplay-BoldItalic|.SFUIDisplay-BoldItalic\",\n  \"__SF-UI-Display-Heavy-Italic__\": \".SFNSDisplay-HeavyItalic|SFProDisplay-HeavyItalic|SFUIDisplay-HeavyItalic|.SFUIDisplay-HeavyItalic\",\n  \"__SF-UI-Display-Black-Italic__\": \".SFNSDisplay-BlackItalic|SFProDisplay-BlackItalic|.SFUIDisplay-BlackItalic\",\n  \"__SF-UI-Text-Condensed-Regular__\": \".SFNSTextCondensed-Regular|SFUITextCondensed-Regular|.SFUITextCondensed-Regular\",\n  \"__SF-UI-Text-Condensed-Light__\": \".SFNSTextCondensed-Light|SFUITextCondensed-Light|.SFUITextCondensed-Light\",\n  \"__SF-UI-Text-Condensed-Medium__\": \".SFNSTextCondensed-Medium|SFUITextCondensed-Medium|.SFUITextCondensed-Medium\",\n  \"__SF-UI-Text-Condensed-Semibold__\": \".SFNSTextCondensed-Semibold|SFUITextCondensed-Semibold|.SFUITextCondensed-Semibold\",\n  \"__SF-UI-Text-Condensed-Bold__\": \".SFNSTextCondensed-Bold|SFUITextCondensed-Bold|.SFUITextCondensed-Bold\",\n  \"__SF-UI-Text-Condensed-Heavy__\": \".SFNSTextCondensed-Heavy|.SFUITextCondensed-Heavy\",\n  \"__SF-Compact-Rounded-Regular__\": \"SFCompactRounded-Regular|.SFCompactRounded-Regular\",\n  \"__SF-Compact-Rounded-Ultralight__\": \"SFCompactRounded-Ultralight|.SFCompactRounded-Ultralight\",\n  \"__SF-Compact-Rounded-Thin__\": \"SFCompactRounded-Thin|.SFCompactRounded-Thin\",\n  \"__SF-Compact-Rounded-Light__\": \"SFCompactRounded-Light|.SFCompactRounded-Light\",\n  \"__SF-Compact-Rounded-Medium__\": \"SFCompactRounded-Medium|.SFCompactRounded-Medium\",\n  \"__SF-Compact-Rounded-Semibold__\": \"SFCompactRounded-Semibold|.SFCompactRounded-Semibold\",\n  \"__SF-Compact-Rounded-Bold__\": \"SFCompactRounded-Bold|.SFCompactRounded-Bold\",\n  \"__SF-Compact-Rounded-Heavy__\": \"SFCompactRounded-Heavy|.SFCompactRounded-Heavy\",\n  \"__SF-Compact-Rounded-Black__\": \"SFCompactRounded-Black|.SFCompactRounded-Black\"\n};\nvar typefaces = safeFonts;\n\n// ../../library/src/render/fonts/LocalFontSource.ts\nvar systemTypefaceName = \"System Default\";\nvar LocalFontSource = class {\n  constructor() {\n    this.name = \"local\" /* Local */;\n    this.typefaces = [];\n    this.byFamily = /* @__PURE__ */ new Map();\n    this.typefaceAliasBySelector = /* @__PURE__ */ new Map();\n    this.typefaceAliases = /* @__PURE__ */ new Map();\n    this.interTypefaceSelectors = /* @__PURE__ */ new Set();\n  }\n  getTypefaceByFamily(family) {\n    var _a;\n    return (_a = this.byFamily.get(family)) != null ? _a : null;\n  }\n  // TODO: these are duplicated across implementations of FontSource\n  // When adding a third source, we should abstract them\n  createTypeface(family) {\n    const typeface = { family, fonts: [], source: this.name };\n    this.addTypeface(typeface);\n    return typeface;\n  }\n  addTypeface(typeface) {\n    this.typefaces.push(typeface);\n    this.byFamily.set(typeface.family, typeface);\n  }\n  // end of duplication\n  importFonts() {\n    const fonts = [];\n    for (const family of Object.keys(typefaces)) {\n      const members = typefaces[family];\n      if (!members)\n        continue;\n      const typeface = this.createTypeface(family);\n      for (const variant of Object.keys(members)) {\n        const member = members[variant];\n        if (!member)\n          continue;\n        const { selector, weight } = member;\n        const font = {\n          variant,\n          selector,\n          weight,\n          typeface,\n          status: \"loaded\"\n        };\n        typeface.fonts.push(font);\n      }\n      fonts.push(...typeface.fonts);\n    }\n    for (const [key7, value] of Object.entries(typefaceAliases)) {\n      this.addTypefaceAlias(key7, value);\n    }\n    const { typeface: systemTypeface, aliases } = this.getSystemTypeface();\n    this.addTypeface(systemTypeface);\n    for (const [key7, value] of aliases) {\n      this.addTypefaceAlias(key7, value);\n    }\n    fonts.push(...systemTypeface.fonts);\n    const interTypeface = this.importInterTypeface();\n    fonts.push(...interTypeface.fonts);\n    return fonts;\n  }\n  importInterTypeface() {\n    const inter = [\n      [\"Regular\", \"Inter\", 400],\n      [\"Thin\", \"Inter-Thin\", 100],\n      [\"Extra Light\", \"Inter-ExtraLight\", 200],\n      [\"Light\", \"Inter-Light\", 300],\n      [\"Medium\", \"Inter-Medium\", 500],\n      [\"Semibold\", \"Inter-SemiBold\", 600],\n      [\"Bold\", \"Inter-Bold\", 700],\n      [\"Extra Bold\", \"Inter-ExtraBold\", 800],\n      [\"Black\", \"Inter-Black\", 900],\n      [\"Thin Italic\", \"Inter-ThinItalic\", 100],\n      [\"Extra Light Italic\", \"Inter-ExtraLightItalic\", 200],\n      [\"Light Italic\", \"Inter-LightItalic\", 300],\n      [\"Italic\", \"Inter-Italic\", 400],\n      [\"Medium Italic\", \"Inter-MediumItalic\", 500],\n      [\"Semibold Italic\", \"Inter-SemiBoldItalic\", 600],\n      [\"Bold Italic\", \"Inter-BoldItalic\", 700],\n      [\"Extra Bold Italic\", \"Inter-ExtraBoldItalic\", 800],\n      [\"Black Italic\", \"Inter-BlackItalic\", 900]\n    ];\n    const typeface = this.createTypeface(\"Inter\");\n    for (const entry of inter) {\n      const [variant, selector, weight] = entry;\n      const font = {\n        variant,\n        selector,\n        weight,\n        typeface,\n        style: /italic/i.test(selector) ? \"italic\" : \"normal\"\n      };\n      typeface.fonts.push(font);\n    }\n    typeface.fonts.forEach((t) => this.interTypefaceSelectors.add(t.selector));\n    return typeface;\n  }\n  addTypefaceAlias(key7, value) {\n    this.typefaceAliases.set(key7, value);\n    this.typefaceAliasBySelector.set(value, key7);\n  }\n  getSystemTypeface() {\n    const fontFamilies = this.workaroundChrome81and82(\n      // System fonts - Taken from https://furbo.org/stuff/systemfonts-new.html - \"All Platforms\" section\n      \"system-ui|-apple-system|BlinkMacSystemFont|Segoe UI|Roboto|Oxygen|Ubuntu|Cantarell|Fira Sans|Droid Sans|Helvetica Neue|sans-serif\"\n    );\n    const typeface = { family: systemTypefaceName, fonts: [], source: this.name };\n    const aliases = /* @__PURE__ */ new Map();\n    const weights = [400, 100, 200, 300, 500, 600, 700, 800, 900];\n    const styles = [\"normal\", \"italic\"];\n    for (const style of styles) {\n      for (const weight of weights) {\n        const variant = createVariantName(weight, style);\n        const alias = `__SystemDefault-${weight}-${style}__`;\n        const font = {\n          variant,\n          selector: alias,\n          style,\n          weight,\n          typeface,\n          status: \"loaded\"\n        };\n        typeface.fonts.push(font);\n        aliases.set(alias, fontFamilies);\n      }\n    }\n    return { typeface, aliases };\n  }\n  getTypefaceAliasBySelector(selector) {\n    return this.typefaceAliasBySelector.get(selector) || null;\n  }\n  getTypefaceSelectorByAlias(alias) {\n    return this.typefaceAliases.get(alias) || null;\n  }\n  /** Typeface aliases are in the format of `__Alias-Name__` */\n  isTypefaceAlias(value) {\n    if (value && value.match(/^__.*__$/))\n      return true;\n    return false;\n  }\n  /**\n   * Use 'Inter' web font as System Default fonts on Mac with Chrome v81 v82\n   * https://github.com/framer/company/issues/17277\n   * https://bugs.chromium.org/p/chromium/issues/detail?id=1057654\n   */\n  workaroundChrome81and82(s) {\n    if (safeNavigator) {\n      const userAgent = safeNavigator.userAgent;\n      if (!userAgent.includes(\"Mac OS X 10_15\"))\n        return s;\n      if (!userAgent.includes(\"Chrome/81\") && !userAgent.includes(\"Chrome/82\"))\n        return s;\n    }\n    return `Inter|${s}`;\n  }\n};\nvar fontWeightNames = {\n  \"100\": \"Thin\",\n  \"200\": \"Extra Light\",\n  \"300\": \"Light\",\n  \"400\": \"Normal\",\n  \"500\": \"Medium\",\n  \"600\": \"Semi Bold\",\n  \"700\": \"Bold\",\n  \"800\": \"Extra Bold\",\n  \"900\": \"Black\"\n};\nfunction createVariantName(weight, style) {\n  const friendlyStyle = style === \"normal\" ? \"Regular\" : \"Italic\";\n  if (weight === 400) {\n    return friendlyStyle;\n  }\n  if (style !== \"normal\") {\n    return `${fontWeightNames[weight]} ${friendlyStyle}`;\n  }\n  return `${fontWeightNames[weight]}`;\n}\n\n// ../../library/src/render/fonts/fontStore.ts\nvar FontStore = class {\n  constructor() {\n    /**\n     * Enabling the `FontStore` will make Text components automatically load\n     * their fonts on render. Otherwise font loading is the responsibility of\n     * the environment.\n     */\n    this.enabled = false;\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.loadedSelectors = /* @__PURE__ */ new Set();\n    this.googleFamilyNames = /* @__PURE__ */ new Set();\n    this.local = new LocalFontSource();\n    this.google = new GoogleFontSource();\n    this.fontshare = new FontshareSource();\n    this.custom = new CustomFontSource();\n    this.bySelector = /* @__PURE__ */ new Map();\n    this.importLocalFonts();\n    const defaultFont = this.getFontBySelector(\"Inter\");\n    assert(defaultFont, \"Can\\u2019t find Inter font\");\n    this.defaultFont = defaultFont;\n  }\n  addFont(font) {\n    this.bySelector.set(font.selector, font);\n  }\n  getAvailableFonts() {\n    return Array.from(this.bySelector.values());\n  }\n  importLocalFonts() {\n    this.local.importFonts().forEach((font) => {\n      this.addFont(font);\n      if (!this.local.interTypefaceSelectors.has(font.selector)) {\n        this.loadFont(font);\n      }\n    });\n  }\n  async importGoogleFonts() {\n    if (!this.getGoogleFontsListPromise) {\n      this.getGoogleFontsListPromise = runtime.fetchGoogleFontsList();\n      const googleFonts = await this.getGoogleFontsListPromise;\n      this.google.importFonts(googleFonts).forEach((font) => {\n        this.googleFamilyNames.add(font.typeface.family.toLowerCase());\n        this.addFont(font);\n      });\n    }\n    return this.getGoogleFontsListPromise;\n  }\n  async importFontshareFonts() {\n    if (!this.getFontshareFontsListPromise) {\n      this.getFontshareFontsListPromise = runtime.fetchFontshareFontsList();\n      const fontshareFonts = await this.getFontshareFontsListPromise;\n      this.fontshare.importFonts(fontshareFonts).forEach((font) => {\n        if (!this.googleFamilyNames.has(font.typeface.family.toLowerCase())) {\n          this.addFont(font);\n        }\n      });\n    }\n    return this.getFontshareFontsListPromise;\n  }\n  importCustomFonts(assets) {\n    this.bySelector.forEach((_, key7) => {\n      if (key7.startsWith(customFontSelectorPrefix)) {\n        this.bySelector.delete(key7);\n      }\n    });\n    this.custom.importFonts(assets).forEach((font) => this.addFont(font));\n  }\n  getTypeface(info) {\n    const typeface = this[info.source].getTypefaceByFamily(info.family);\n    return typeface;\n  }\n  getFontBySelector(selector, createFont = true) {\n    if (selector.startsWith(customFontSelectorPrefix)) {\n      return this.custom.getFontBySelector(selector, createFont);\n    }\n    return this.bySelector.get(selector);\n  }\n  // Function called by draft to get font properties for a selector, before the (google) font is available in the store\n  // It replaces a previous function that created Font instances and added them to the store\n  // on the fly while rendering drafts, which caused issues (overriding real google font info with fake instances with partial data).\n  // Ideally this should not happen, but that's a fix for another day\n  getDraftPropertiesBySelector(selector) {\n    const font = this.getFontBySelector(selector);\n    if (font) {\n      return {\n        style: font.style,\n        weight: font.weight,\n        variant: font.variant,\n        family: font.typeface.family,\n        source: font.typeface.source,\n        category: font.category\n      };\n    }\n    const googleLocator = this.google.parseSelector(selector);\n    if (googleLocator) {\n      const fontVariant = GoogleFontSource.parseVariant(googleLocator.variant);\n      if (fontVariant) {\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: googleLocator.variant,\n          family: googleLocator.family,\n          source: \"google\" /* Google */,\n          category: void 0\n        };\n      }\n    }\n    const fontshareLocator = this.fontshare.parseSelector(selector);\n    if (fontshareLocator) {\n      const fontVariant = FontshareSource.parseVariant(fontshareLocator.variant);\n      if (fontVariant) {\n        return {\n          style: fontVariant.style,\n          weight: fontVariant.weight,\n          variant: fontshareLocator.variant,\n          family: fontshareLocator.family,\n          source: \"fontshare\" /* Fontshare */,\n          category: void 0\n        };\n      }\n    }\n    return null;\n  }\n  isSelectorLoaded(selector) {\n    return this.loadedSelectors.has(selector);\n  }\n  /**\n   * Load a single font\n   * */\n  async loadFont(font) {\n    if (this.isSelectorLoaded(font.selector)) {\n      return 0 /* AlreadyLoaded */;\n    }\n    if (font.typeface.source === \"local\" /* Local */) {\n      if (this.local.interTypefaceSelectors.has(font.selector) && import_process8.default.env.NODE_ENV !== \"test\") {\n        await isFontReady(font.typeface.family, font.style, font.weight);\n      }\n      this.loadedSelectors.add(font.selector);\n      return 1 /* Loaded */;\n    }\n    if (!font.file) {\n      return Promise.reject(`Unable to load font: ${font.selector}`);\n    }\n    await loadFont(\n      {\n        family: font.typeface.family,\n        url: font.file,\n        weight: font.weight,\n        style: font.style\n      },\n      document\n    );\n    this.loadedSelectors.add(font.selector);\n    return 1 /* Loaded */;\n  }\n  async loadWebFontsFromSelectors(selectors) {\n    if (!this.enabled)\n      return [];\n    const loadFontshareFonts = selectors.some((selector) => selector.startsWith(fontsharePrefix));\n    if (selectors.some((s) => s.startsWith(googleFontSelectorPrefix)) || loadFontshareFonts) {\n      try {\n        await this.importGoogleFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load Google fonts:\", error);\n      }\n      try {\n        await this.importFontshareFonts();\n      } catch (error) {\n        warnOnce(\"Failed to load Fontshare fonts:\", error);\n      }\n    }\n    const fonts = selectors.map((s) => this.bySelector.get(s)).filter((f) => !!f);\n    return Promise.allSettled(fonts.map((f) => this.loadFont(f)));\n  }\n  async loadMissingFonts(fontSelectors, fontsLoadedCallback) {\n    const selectors = fontSelectors.filter((selector) => {\n      return !fontStore.isSelectorLoaded(selector);\n    });\n    if (selectors.length === 0)\n      return;\n    await fontStore.loadWebFontsFromSelectors(selectors);\n    const isEachFontLoaded = selectors.every((selector) => {\n      return fontStore.isSelectorLoaded(selector);\n    });\n    if (isEachFontLoaded && fontsLoadedCallback)\n      fontsLoadedCallback();\n  }\n};\nvar fontStore = /* @__PURE__ */ new FontStore();\nPromise.allSettled = Promise.allSettled || ((promises) => Promise.all(\n  promises.map(\n    (p) => p.then((v) => ({ status: \"fulfilled\", value: v })).catch((e) => ({ status: \"rejected\", reason: e }))\n  )\n));\n\n// ../../library/src/render/fonts/useFontLoadStatus.tsx\nimport React88 from \"react\";\nfunction useFontLoadStatus(fontSelectors = [], timeout = 5e3) {\n  const missingFontSelectors = fontSelectors.filter((s) => !fontStore.isSelectorLoaded(s));\n  const [fontLoadStatus, setFontLoadStatus] = React88.useState(\n    missingFontSelectors.length ? \"loading\" : \"done\"\n  );\n  React88.useEffect(() => {\n    if (!missingFontSelectors.length)\n      return;\n    setFontLoadStatus(\"loading\");\n    const timer = setTimeout(() => {\n      setFontLoadStatus(\"timeout\");\n    }, timeout);\n    fontStore.loadWebFontsFromSelectors(missingFontSelectors).then(() => {\n      clearTimeout(timer);\n      setFontLoadStatus(\"done\");\n    });\n  }, [fontSelectors.join(\", \"), missingFontSelectors.join(\", \")]);\n  return fontLoadStatus;\n}\n\n// ../../library/src/render/utils/isShallowEqualArray.ts\nfunction isShallowEqualArray(a, b) {\n  return a.length === b.length && a.every((v, i) => v === b[i]);\n}\n\n// ../../library/src/render/presentation/Text.tsx\nvar Text = /* @__PURE__ */ React89.forwardRef(function Text2(props, forwardedRef) {\n  var _a, _b;\n  const parentSize = useParentSize();\n  const layoutId = useLayoutId(props);\n  const fallbackLayoutRef = useRef13(null);\n  const layoutRef = forwardedRef != null ? forwardedRef : fallbackLayoutRef;\n  const { navigate, getRoute } = useRouter();\n  const currentRoute = useCurrentRoute();\n  useRoutePreloader((_a = props.preload) != null ? _a : []);\n  const onCanvas = useIsOnFramerCanvas();\n  const matchesCurrentRoute = useLinkMatchesRoute(props.__link);\n  const fontLoadStatus = useFontLoadStatus(props.fonts);\n  useMeasureLayout(props, layoutRef);\n  const { fonts, __fromCanvasComponent } = props;\n  const prevFontsRef = useRef13([]);\n  const fontsDidChange = !isShallowEqualArray((_b = prevFontsRef.current) != null ? _b : [], fonts != null ? fonts : []);\n  prevFontsRef.current = fonts;\n  useEffect10(() => {\n    if (!fontsDidChange || !fonts)\n      return;\n    fontStore.loadWebFontsFromSelectors(fonts).then((results) => {\n      if (!__fromCanvasComponent || !layoutRef.current || RenderTarget.current() !== \"CANVAS\" /* canvas */)\n        return;\n      const didLoadNewFonts = results.some(\n        (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n      );\n      if (!didLoadNewFonts)\n        return;\n      measureClosestComponentContainer(layoutRef.current);\n    });\n  }, [fonts]);\n  const implicitPathVariables = useImplicitPathVariables();\n  const interceptPageLinks = React89.useCallback(\n    (event) => {\n      const anchorElement = findAnchorElement(event.target, layoutRef.current);\n      if (event.metaKey || !navigate || !anchorElement)\n        return;\n      const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n      if (didNavigate) {\n        event.preventDefault();\n      }\n    },\n    [navigate, implicitPathVariables]\n  );\n  useEffect10(() => {\n    var _a2;\n    (_a2 = layoutRef.current) == null ? void 0 : _a2.addEventListener(\"click\", interceptPageLinks);\n    const ref = layoutRef.current;\n    return () => ref == null ? void 0 : ref.removeEventListener(\"click\", interceptPageLinks);\n  }, [interceptPageLinks]);\n  const rawHTML = React89.useMemo(() => {\n    if (!props.rawHTML || onCanvas || !getRoute || !currentRoute)\n      return props.rawHTML;\n    return replaceFramerPageLinks(props.rawHTML, getRoute, currentRoute, implicitPathVariables);\n  }, [props.rawHTML, getRoute, onCanvas, currentRoute, implicitPathVariables]);\n  return /* @__PURE__ */ React89.createElement(\n    TextComponent,\n    {\n      ...props,\n      innerRef: layoutRef,\n      layoutId,\n      parentSize,\n      fontLoadStatus,\n      rawHTML,\n      matchesCurrentRoute\n    }\n  );\n});\nvar TextComponent = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    constructor() {\n      super(...arguments);\n      this.setElement = (element) => {\n        if (this.props.innerRef) {\n          this.props.innerRef.current = element;\n        }\n        this.setLayerElement(element);\n      };\n      /** Used by the ComponentContainerContext */\n      this.renderMain = (inCodeComponent) => {\n        if (import_process9.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n          safeWindow[\"perf\"].nodeRender();\n        const {\n          font,\n          visible,\n          alignment,\n          willChangeTransform,\n          opacity,\n          id,\n          layoutId,\n          className,\n          transition,\n          variants,\n          name,\n          __fromCanvasComponent,\n          _initialStyle,\n          widthType,\n          heightType,\n          _usesDOMRect,\n          autoSize,\n          style: styleProp,\n          fontLoadStatus,\n          matchesCurrentRoute,\n          preload,\n          tabIndex,\n          ...rest\n        } = this.props;\n        if (!visible) {\n          return null;\n        }\n        injectComponentCSSRules();\n        const isHidden2 = this.props.isEditable && this.props.environment() === \"CANVAS\" /* canvas */;\n        const justifyContent = convertVerticalAlignment(this.props.verticalAlignment);\n        const style = {\n          outline: \"none\",\n          display: \"flex\",\n          flexDirection: \"column\",\n          justifyContent,\n          opacity: isHidden2 ? 0 : opacity,\n          flexShrink: 0\n        };\n        if (_initialStyle) {\n          for (const key7 in _initialStyle) {\n            if (key7.startsWith(\"--framer\")) {\n              style[key7] = _initialStyle[key7];\n            }\n          }\n        }\n        const dataProps = {\n          \"data-framer-component-type\": \"Text\",\n          \"data-framer-name\": name\n        };\n        if (autoSize) {\n          dataProps[\"data-framer-component-text-autosized\"] = \"true\";\n        }\n        this.collectLayout(style, inCodeComponent);\n        collectFiltersFromProps(this.props, style);\n        collectTextShadowsForProps(this.props, style);\n        if (style.opacity === 1 || style.opacity === void 0) {\n          delete style.opacity;\n        }\n        if (willChangeTransform) {\n          forceLayerBackingWithCSSProperties(style);\n        }\n        let rawHTML = this.props.rawHTML;\n        const text = this.getOverrideText() || this.props.text;\n        if (isString2(text)) {\n          if (rawHTML) {\n            rawHTML = replaceDraftHTMLWithText(rawHTML, text);\n          } else {\n            rawHTML = `<p style=\"font: ${font}\">${text}</p>`;\n          }\n        }\n        if (this.props.style) {\n          Object.assign(style, this.props.style);\n        }\n        const centeringTransformTemplate = this.transformTemplate;\n        if (centeringTransformTemplate)\n          Object.assign(dataProps, layoutHintDataPropsForCenter(this.props.center));\n        if (rawHTML) {\n          style.lineHeight = \"1px\";\n          style.fontSize = \"0px\";\n          if (RenderTarget.current() === \"CANVAS\" /* canvas */ && fontLoadStatus === \"loading\") {\n            style.visibility = \"hidden\";\n          }\n          if (RenderTarget.current() === \"CANVAS\" /* canvas */ && fontLoadStatus === \"timeout\") {\n            style.backgroundColor = \"rgba(255, 0, 0, 0.3)\";\n          }\n          Object.assign(style, styleProp);\n          if (alignment)\n            style[\"--framer-text-alignment\"] = alignment;\n          const tabIndexProps = getTabIndexProps(tabIndex);\n          return /* @__PURE__ */ React89.createElement(\n            motion.div,\n            {\n              layoutId,\n              id,\n              ...tabIndexProps,\n              ...dataProps,\n              ...rest,\n              style,\n              transformTemplate: centeringTransformTemplate,\n              dangerouslySetInnerHTML: { __html: rawHTML },\n              \"data-center\": this.props.center,\n              className: cx(className, matchesCurrentRoute && \"isCurrent\"),\n              transition,\n              variants,\n              ref: this.setElement\n            }\n          );\n        }\n      };\n    }\n    get frame() {\n      return calculateRect(this.props, this.props.parentSize || 0 /* Unknown */, false);\n    }\n    getOverrideText() {\n      const { _forwardedOverrideId, _forwardedOverrides, id } = this.props;\n      const forwardedOverrideId = _forwardedOverrideId != null ? _forwardedOverrideId : id;\n      if (forwardedOverrideId && _forwardedOverrides) {\n        const text = _forwardedOverrides[forwardedOverrideId];\n        if (isString2(text)) {\n          return text;\n        }\n      }\n    }\n    render() {\n      return /* @__PURE__ */ React89.createElement(ComponentContainerContext.Consumer, null, this.renderMain);\n    }\n    collectLayout(style, inCodeComponent) {\n      if (this.props.withExternalLayout)\n        return;\n      const frame2 = this.frame;\n      const {\n        rotation,\n        autoSize,\n        positionSticky,\n        positionStickyTop,\n        positionStickyRight,\n        positionStickyBottom,\n        positionStickyLeft,\n        width: externalWidth,\n        height: externalHeight,\n        _usesDOMRect,\n        positionFixed,\n        positionAbsolute\n      } = this.props;\n      const rotate = Animatable.getNumber(rotation);\n      const isDOMLayoutAutoSized = _usesDOMRect && (externalWidth === \"auto\" || externalHeight === \"auto\");\n      if (frame2 && !isDOMLayoutAutoSized && RenderTarget.hasRestrictions()) {\n        Object.assign(style, {\n          transform: `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate.toFixed(4)}deg)`,\n          // Using \u201Cauto\u201D fixes wrapping problems where our size calculation does not work out well when zooming the\n          // text (due to rendering differences).\n          // TODO: When the `autoSize` prop is removed, it's safe to leave\n          // this at `${frame.width}px`, because all auto cases will be\n          // handled by DOM layout in the `else` side of the conditional\n          width: autoSize ? \"auto\" : `${frame2.width}px`,\n          minWidth: `${frame2.width}px`,\n          height: `${frame2.height}px`\n        });\n      } else {\n        const { left, right, top, bottom } = this.props;\n        let width;\n        let height;\n        if (autoSize) {\n          width = \"auto\";\n          height = \"auto\";\n        } else {\n          if (!isFiniteNumber(left) || !isFiniteNumber(right)) {\n            width = externalWidth;\n          }\n          if (!isFiniteNumber(top) || !isFiniteNumber(bottom)) {\n            height = externalHeight;\n          }\n        }\n        Object.assign(style, {\n          left,\n          right,\n          top,\n          bottom,\n          width,\n          height,\n          rotate\n        });\n      }\n      const onCanvas = RenderTarget.current() === \"CANVAS\" /* canvas */;\n      if (positionSticky) {\n        if (!onCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (onCanvas && (positionFixed || positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    get transformTemplate() {\n      const { _usesDOMRect, widthType, heightType, __fromCanvasComponent } = this.props;\n      if (this.props.transformTemplate)\n        return this.props.transformTemplate;\n      const frame2 = this.frame;\n      const isDOMLayoutAutoSized = _usesDOMRect && (widthType === 2 /* Auto */ || heightType === 2 /* Auto */);\n      const hasTransformTemplate = !frame2 || !RenderTarget.hasRestrictions() || __fromCanvasComponent || isDOMLayoutAutoSized;\n      if (hasTransformTemplate)\n        return transformTemplate(this.props.center);\n    }\n  }, _a.supportsConstraints = true, _a.defaultTextProps = {\n    opacity: void 0,\n    left: void 0,\n    right: void 0,\n    top: void 0,\n    bottom: void 0,\n    _constraints: {\n      enabled: true,\n      aspectRatio: null\n    },\n    rotation: 0,\n    visible: true,\n    alignment: void 0,\n    verticalAlignment: \"top\",\n    shadows: [],\n    font: \"16px \" + deviceFont()\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultTextProps,\n    isEditable: false,\n    environment: RenderTarget.current,\n    withExternalLayout: false,\n    fontLoadStatus: \"loading\"\n  }, _a;\n})();\nvar linkTag = \"(?:<a[^>]*>)?\";\nvar linkClosingTag = \"(?:</a>)?\";\nvar outerTag = \"<[^>]+>\";\nvar outerClosingTag = \"</[^>]+>\";\nvar blockTag = \"<(?:div|span)[^>]*>\";\nvar blockClosingTag = \"</(?:div|span)>\";\nvar inlineTag = \"<[^>]+>\";\nvar inlineClosingTag = \"</[^>]+>\";\nvar textContentRegex = new RegExp(\n  `^(${linkTag}${outerTag}${blockTag}${inlineTag}).*?(${inlineClosingTag}).*?(${blockClosingTag}${outerClosingTag}${linkClosingTag})$`,\n  //                                              ^^^ this is the content we want to replace\n  //                                                                      ^^^ this is the content we want to discard\n  \"s\"\n  // let the \".\" also match newlines\n);\nfunction replaceDraftHTMLWithText(rawHTML, text) {\n  return rawHTML.replace(\n    textContentRegex,\n    (_, openingTags, inlineClosingTag2, closingTags) => openingTags + text + inlineClosingTag2 + \"<br>\" + closingTags\n  );\n}\nfunction convertVerticalAlignment(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction getTabIndexProps(tabIndex) {\n  if (tabIndex === void 0)\n    return {};\n  return { tabIndex };\n}\n\n// ../../library/src/render/presentation/Vector.tsx\nvar import_process10 = __toESM(require_browser(), 1);\nimport React92 from \"react\";\n\n// ../../library/src/utils/internalId.ts\nvar keys2 = /* @__PURE__ */ new Map();\nvar InternalID = class {\n  constructor(id) {\n    this.id = id;\n    this._link = null;\n    this._urllink = null;\n  }\n  add(str) {\n    return InternalID.forKey(this.id + str);\n  }\n  toString() {\n    return this.id;\n  }\n  get link() {\n    const res = this._link;\n    if (res)\n      return res;\n    return this._link = \"#\" + this.id;\n  }\n  get urlLink() {\n    const res = this._urllink;\n    if (res)\n      return res;\n    return this._urllink = \"url(#\" + this.id + \")\";\n  }\n  static forKey(key7) {\n    let res = keys2.get(key7);\n    if (res)\n      return res;\n    res = new InternalID(\"a\" + (1e3 + keys2.size) + \"z\");\n    keys2.set(key7, res);\n    return res;\n  }\n};\n\n// ../../library/src/render/types/PathSegment.ts\nvar PathSegment = class {\n  constructor(value) {\n    // #region withClassDiscriminator\n    // NOTE: this implementation carefully copies the implementation of `withClassDiscriminator`\n    // from Vekter. If making changes here, make sure to sync them to `withClassDiscriminator` as well.\n    this.__class = \"PathSegment\";\n    // #endregion\n    this.x = 0;\n    // The anchor point of the segment.\n    this.y = 0;\n    this.handleMirroring = \"straight\";\n    this.handleOutX = 0;\n    // Describes the out tangent of the segment.\n    this.handleOutY = 0;\n    this.handleInX = 0;\n    // Describes the in tangent of the segment.\n    this.handleInY = 0;\n    this.radius = 0;\n    if (value) {\n      Object.assign(this, value);\n    }\n  }\n  merge(value) {\n    return Object.assign(Object.create(Object.getPrototypeOf(this)), this, value);\n  }\n};\nPathSegment.displayName = \"WithClassDiscriminatorMixin(PathSegment)\";\nPathSegment.prototype.__class = \"PathSegment\";\n((PathSegment2) => {\n  PathSegment2.point = (pathSegment) => {\n    return { x: pathSegment.x, y: pathSegment.y };\n  };\n  PathSegment2.handleOut = (pathSegment) => {\n    return { x: pathSegment.handleOutX, y: pathSegment.handleOutY };\n  };\n  PathSegment2.handleIn = (pathSegment) => {\n    return { x: pathSegment.handleInX, y: pathSegment.handleInY };\n  };\n  PathSegment2.calculatedHandleOut = (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add((0, PathSegment2.point)(pathSegment), (0, PathSegment2.handleOut)(pathSegment));\n      default:\n        return { x: pathSegment.x, y: pathSegment.y };\n    }\n  };\n  PathSegment2.calculatedHandleIn = (pathSegment) => {\n    switch (pathSegment.handleMirroring) {\n      case \"symmetric\":\n        return Point.subtract((0, PathSegment2.point)(pathSegment), (0, PathSegment2.handleOut)(pathSegment));\n      case \"disconnected\":\n      case \"asymmetric\":\n        return Point.add((0, PathSegment2.point)(pathSegment), (0, PathSegment2.handleIn)(pathSegment));\n      default:\n        return (0, PathSegment2.point)(pathSegment);\n    }\n  };\n  PathSegment2.curveDefault = (points, index) => {\n    if (points.length > 2) {\n      let pointBefore;\n      let pointAfter;\n      if (index === 0) {\n        pointBefore = points[points.length - 1];\n      } else {\n        pointBefore = points[index - 1];\n      }\n      if (index === points.length - 1) {\n        pointAfter = points[0];\n      } else {\n        pointAfter = points[index + 1];\n      }\n      assert(pointBefore, \"pointBefore should be defined\");\n      assert(pointAfter, \"pointAfter should be defined\");\n      const delta = Point.subtract((0, PathSegment2.point)(pointAfter), (0, PathSegment2.point)(pointBefore));\n      return { x: delta.x / 4, y: delta.y / 4 };\n    }\n    return { x: 10, y: 10 };\n  };\n})(PathSegment || (PathSegment = {}));\n\n// ../../library/src/render/traits/Path.ts\nvar key5 = \"pathSegments\";\nfunction withPath(target) {\n  return key5 in target;\n}\nvar pathDefaults = {\n  pathSegments: [],\n  pathClosed: false\n};\nfunction toSVGPath(withPaths, translate = { x: 0, y: 0 }, canvasMode = \"CANVAS\" /* canvas */) {\n  let pathElements = [];\n  let paths = [];\n  if (Array.isArray(withPaths)) {\n    paths = withPaths;\n  } else {\n    paths = [withPaths];\n  }\n  paths.forEach((path) => {\n    const { pathClosed, pathSegments } = path;\n    const segmentCount = pathSegments.length;\n    if (segmentCount === 0)\n      return \"\";\n    for (let i = 0; i < segmentCount; i++) {\n      const segment = pathSegments[i];\n      assert(segment, \"Path segment must be defined\");\n      let nextSegment;\n      let prevSegment;\n      const isFirstSegment = i === 0;\n      const isLastSegment = i === segmentCount - 1;\n      if (!isLastSegment) {\n        nextSegment = pathSegments[i + 1];\n      } else if (pathClosed) {\n        nextSegment = pathSegments[0];\n      }\n      if (!isFirstSegment) {\n        prevSegment = pathSegments[i - 1];\n      } else if (pathClosed) {\n        prevSegment = pathSegments[segmentCount - 1];\n      }\n      if (i === 0) {\n        pathElements.push(\"M\");\n      } else if (prevSegment && isStraightCurve(prevSegment, segment)) {\n        pathElements.push(\"L\");\n      }\n      pathElements.push(segment.x + translate.x, segment.y + translate.y);\n      if (nextSegment && !isStraightCurve(segment, nextSegment)) {\n        const handleOut = PathSegment.calculatedHandleOut(segment);\n        const handleIn = PathSegment.calculatedHandleIn(nextSegment);\n        pathElements.push(\n          \"C\",\n          handleOut.x + translate.x,\n          handleOut.y + translate.y,\n          handleIn.x + translate.x,\n          handleIn.y + translate.y\n        );\n      }\n      if (isLastSegment && nextSegment) {\n        if (isStraightCurve(segment, nextSegment)) {\n          pathElements.push(\"Z\");\n        } else {\n          pathElements.push(nextSegment.x + translate.x, nextSegment.y + translate.y, \"Z\");\n        }\n      }\n    }\n  });\n  if (canvasMode === \"EXPORT\" /* export */ || canvasMode === \"PREVIEW\" /* preview */) {\n    pathElements = pathElements.map((value) => isFiniteNumber(value) ? roundedNumberString(value, 3) : value);\n  }\n  return pathElements.join(\" \");\n}\nfunction isStraightCurve(fromSegment, toSegment) {\n  const fromStraight = fromSegment.handleMirroring === \"straight\" || fromSegment.handleOutX === 0 && fromSegment.handleOutY === 0;\n  const toStraight = toSegment.handleMirroring === \"straight\" || toSegment.handleInX === 0 && toSegment.handleInY === 0;\n  return fromStraight && toStraight;\n}\n\n// ../../library/src/render/types/svgElementAttributeDefaults.ts\nvar svgElementAttributeDefaults = {\n  stroke: \"none\",\n  strokeWidth: 1,\n  strokeLinecap: \"butt\",\n  strokeLinejoin: \"miter\",\n  strokeMiterlimit: 4,\n  strokeDasharray: \"0\",\n  strokeDashoffset: 0,\n  strokeOpacity: 1,\n  fill: \"black\",\n  fillRule: \"nonzero\",\n  fillOpacity: 1\n};\n\n// ../../library/src/render/utils/createTransformValues.ts\nfunction createTransformValues(baseTransform, mode) {\n  let { x, y } = baseTransform;\n  const { width, height, rotation } = baseTransform;\n  if (mode === \"resetXYKeepFraction\") {\n    x = x - Math.floor(x);\n    y = y - Math.floor(y);\n  } else if (mode === \"resetXY\") {\n    x = 0;\n    y = 0;\n  }\n  return { x, y, width, height, rotation };\n}\nfunction getTransformMode(isRootVectorNode, includeTransform) {\n  if (includeTransform !== void 0) {\n    if (includeTransform) {\n      return \"asIs\";\n    }\n  } else {\n    if (!isRootVectorNode) {\n      return \"asIs\";\n    }\n  }\n  if (isRootVectorNode) {\n    return \"resetXYKeepFraction\";\n  } else {\n    return \"resetXY\";\n  }\n}\nfunction transformValues2(rect, rotation, isRootVectorNode, includeTransform) {\n  const transformMode = getTransformMode(isRootVectorNode, includeTransform);\n  const baseTransform = { ...rect, rotation };\n  const transform2 = createTransformValues(baseTransform, transformMode);\n  return transform2;\n}\n\n// ../../library/src/render/utils/transformString.ts\nfunction transformString(transform2) {\n  if (transform2 === void 0) {\n    return void 0;\n  }\n  const { x, y, rotation, width, height } = transform2;\n  let result;\n  if (x !== 0 || y !== 0) {\n    result = `translate(${roundedNumberString(x, 3)} ${roundedNumberString(y, 3)})`;\n  }\n  if (rotation !== 0) {\n    const roundedRotation = roundedNumberString(rotation, 4);\n    const roundedWidth = roundedNumberString(width / 2, 3);\n    const roundedHeight = roundedNumberString(height / 2, 3);\n    const rotationString = `rotate(${roundedRotation} ${roundedWidth} ${roundedHeight})`;\n    result = result ? `${result} ${rotationString}` : rotationString;\n  }\n  return result;\n}\n\n// ../../library/src/render/presentation/GradientElement.tsx\nimport React90, { Component as Component12 } from \"react\";\nvar LinearGradientElement = class extends Component12 {\n  render() {\n    const { id, stops, x1, x2, y1, y2 } = this.props;\n    return /* @__PURE__ */ React90.createElement(\"linearGradient\", { id, x1, x2, y1, y2 }, stops.map((stop, idx) => {\n      return /* @__PURE__ */ React90.createElement(\"stop\", { key: idx, offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha });\n    }));\n  }\n};\nvar RadialGradientElement = class extends Component12 {\n  render() {\n    const { centerAnchorX, centerAnchorY, id, widthFactor, heightFactor, stops } = this.props;\n    return /* @__PURE__ */ React90.createElement(\n      \"radialGradient\",\n      {\n        id,\n        cy: centerAnchorY,\n        cx: centerAnchorX,\n        r: widthFactor,\n        gradientTransform: `translate(${centerAnchorX}, ${centerAnchorY}) scale(1 ${heightFactor / widthFactor}) translate(-${centerAnchorX}, -${centerAnchorY})`\n      },\n      stops.map((stop, idx) => {\n        return /* @__PURE__ */ React90.createElement(\"stop\", { key: idx, offset: stop.position, stopColor: stop.color, stopOpacity: stop.alpha });\n      })\n    );\n  }\n};\n\n// ../../library/src/render/presentation/SVGRoot.tsx\nimport React91, { Component as Component13 } from \"react\";\nvar SVGRoot = class extends Component13 {\n  render() {\n    const { children, frame: frame2, innerRef } = this.props;\n    const { width, height } = frame2;\n    const fx = Math.floor(frame2.x);\n    const fy = Math.floor(frame2.y);\n    const svgStyle = {\n      position: \"absolute\",\n      width: Math.ceil(width),\n      height: Math.ceil(height),\n      overflow: \"visible\",\n      display: \"block\",\n      transform: `translate(${fx}px, ${fy}px)`\n    };\n    Layer.applyWillChange(this.props, svgStyle, false);\n    return /* @__PURE__ */ React91.createElement(\n      \"svg\",\n      {\n        width: \"100%\",\n        height: \"100%\",\n        xmlns: \"http://www.w3.org/2000/svg\",\n        xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n        style: svgStyle,\n        ref: innerRef\n      },\n      children\n    );\n  }\n};\n\n// ../../library/src/render/presentation/Vector.tsx\nvar Vector = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      var _a2, _b;\n      if (import_process10.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const {\n        opacity,\n        calculatedPath,\n        d,\n        insideStroke,\n        shapeId,\n        strokeEnabled,\n        strokeClipId,\n        strokeWidth,\n        idAttribute,\n        rect,\n        shadows,\n        strokeAlpha,\n        name,\n        includeTransform,\n        isRootVectorNode,\n        rotation,\n        id,\n        lineCap,\n        lineJoin,\n        strokeColor,\n        strokeMiterLimit,\n        strokeDashArray,\n        strokeDashOffset,\n        fill,\n        variants,\n        transition\n      } = this.props;\n      if (!id || !shapeId || !strokeClipId)\n        return null;\n      const rotate = (_b = (_a2 = this.props.rotate) != null ? _a2 : rotation) != null ? _b : 0;\n      const { target } = RenderEnvironment;\n      const transform2 = transformValues2(rect, rotate, isRootVectorNode, includeTransform);\n      let vectorFill;\n      let fillAlpha = 0;\n      let imagePattern;\n      let linearGradient;\n      let radialGradient;\n      if (typeof fill === \"string\" || Color.isColorObject(fill)) {\n        const fillColor = Color.isColorObject(fill) ? fill.initialValue || Color.toRgbString(fill) : fill;\n        if (fillColor !== \"transparent\") {\n          vectorFill = fillColor;\n          fillAlpha = ConvertColor.getAlpha(vectorFill);\n        }\n      } else if (LinearGradient.isLinearGradient(fill)) {\n        linearGradient = elementPropertiesForLinearGradient(fill, id);\n        vectorFill = `url(#${linearGradient.id})`;\n        fillAlpha = 1;\n      } else if (RadialGradient.isRadialGradient(fill)) {\n        radialGradient = elementPropertiesForRadialGradient(fill, id);\n        vectorFill = `url(#${radialGradient.id})`;\n        fillAlpha = 1;\n      } else if (BackgroundImage.isImageObject(fill)) {\n        imagePattern = imagePatternPropsForFill(fill, transform2, id);\n        if (imagePattern) {\n          vectorFill = `url(#${imagePattern.id})`;\n          fillAlpha = 1;\n        }\n      }\n      if (vectorFill === svgElementAttributeDefaults.fill) {\n        vectorFill = void 0;\n      }\n      if (vectorFill === void 0) {\n        vectorFill = \"transparent\";\n      }\n      const fillEnabled = vectorFill !== void 0 && vectorFill !== \"transparent\" && fillAlpha !== 0;\n      if (!fillEnabled && !strokeEnabled) {\n        fillAlpha = 1;\n      }\n      let mainElement;\n      let strokeClipPath = null;\n      let shapeReference = null;\n      let strokeElement = null;\n      let pathTranslate;\n      let elementTransform;\n      const translatePaths = target === \"EXPORT\" /* export */;\n      if (transform2.rotation === 0 && translatePaths) {\n        pathTranslate = transform2;\n      } else {\n        pathTranslate = { x: 0, y: 0 };\n        elementTransform = transformString(transform2);\n      }\n      const pathAttributes = {\n        d: d != null ? d : toSVGPath(calculatedPath, pathTranslate, target),\n        transform: elementTransform\n      };\n      const svgStrokeAttributes = {};\n      if (strokeEnabled && strokeWidth !== 0) {\n        svgStrokeAttributes.strokeWidth = strokeWidth;\n        svgStrokeAttributes.stroke = strokeColor;\n        svgStrokeAttributes.strokeLinecap = lineCap;\n        svgStrokeAttributes.strokeLinejoin = lineJoin;\n        if (lineJoin === \"miter\") {\n          svgStrokeAttributes.strokeMiterlimit = strokeMiterLimit;\n        }\n        svgStrokeAttributes.strokeDasharray = strokeDashArray;\n        if (strokeDashOffset !== 0) {\n          svgStrokeAttributes.strokeDashoffset = strokeDashOffset;\n        }\n      }\n      for (const key7 in svgElementAttributeDefaults) {\n        if (svgStrokeAttributes[key7] === svgElementAttributeDefaults[key7]) {\n          svgStrokeAttributes[key7] = void 0;\n        }\n      }\n      const internalShapeId = InternalID.forKey(shapeId);\n      const internalStrokeClipId = InternalID.forKey(strokeClipId);\n      const shadow = shadowForShape(\n        shadows,\n        rect,\n        internalShapeId,\n        fillAlpha,\n        strokeAlpha,\n        strokeWidth,\n        internalStrokeClipId,\n        svgStrokeAttributes\n      );\n      const currentName = target === \"PREVIEW\" /* preview */ ? name || void 0 : void 0;\n      if (shadow.insetElement !== null || shadow.outsetElement !== null || insideStroke) {\n        pathAttributes.id = internalShapeId.id;\n        shapeReference = /* @__PURE__ */ React92.createElement(motion.path, { ...{ ...pathAttributes }, variants, transition });\n        if (shadow.needsStrokeClip || insideStroke) {\n          strokeClipPath = /* @__PURE__ */ React92.createElement(\"clipPath\", { id: internalStrokeClipId.id }, /* @__PURE__ */ React92.createElement(\"use\", { xlinkHref: internalShapeId.link }));\n        }\n        if (shadow.insetElement !== null && strokeEnabled && strokeWidth && strokeWidth > 0) {\n          mainElement = /* @__PURE__ */ React92.createElement(\"use\", { xlinkHref: internalShapeId.link, fill: vectorFill, strokeOpacity: \"0\", name: currentName });\n          strokeElement = /* @__PURE__ */ React92.createElement(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              clipPath: internalStrokeClipId.urlLink,\n              fill: \"transparent\",\n              ...svgStrokeAttributes,\n              strokeWidth\n            }\n          );\n        } else {\n          mainElement = /* @__PURE__ */ React92.createElement(\n            \"use\",\n            {\n              xlinkHref: internalShapeId.link,\n              fill: vectorFill,\n              clipPath: internalStrokeClipId.urlLink,\n              ...svgStrokeAttributes,\n              strokeWidth,\n              name: currentName\n            }\n          );\n        }\n      } else {\n        pathAttributes.id = idAttribute;\n        mainElement = /* @__PURE__ */ React92.createElement(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            name: currentName,\n            variants,\n            transition\n          }\n        );\n      }\n      const imagePatternElement = imagePattern ? /* @__PURE__ */ React92.createElement(ImagePatternElement, { ...imagePattern }) : void 0;\n      let gradient;\n      if (linearGradient) {\n        gradient = /* @__PURE__ */ React92.createElement(LinearGradientElement, { ...linearGradient });\n      } else if (radialGradient) {\n        gradient = /* @__PURE__ */ React92.createElement(RadialGradientElement, { ...radialGradient });\n      }\n      let defs = null;\n      if (shapeReference || strokeClipPath || shadow.definition && shadow.definition.length || gradient || imagePatternElement) {\n        defs = /* @__PURE__ */ React92.createElement(\"defs\", null, shapeReference, strokeClipPath, shadow.definition, gradient, imagePatternElement);\n      }\n      const opacityValue = opacity != null ? opacity : variants ? 1 : void 0;\n      if (defs === null && shadow.outsetElement === null && shadow.insetElement === null && strokeElement === null) {\n        mainElement = /* @__PURE__ */ React92.createElement(\n          motion.path,\n          {\n            ...{\n              ...pathAttributes,\n              fill: vectorFill,\n              ...svgStrokeAttributes\n            },\n            opacity: opacityValue,\n            variants,\n            transition,\n            name: currentName\n          }\n        );\n        return this.renderElement(mainElement);\n      } else {\n        return this.renderElement(\n          /* @__PURE__ */ React92.createElement(motion.g, { opacity: opacityValue, variants, transition }, defs, shadow.outsetElement, mainElement, shadow.insetElement, strokeElement)\n        );\n      }\n    }\n    renderElement(element) {\n      var _a2, _b;\n      const { isRootVectorNode, width, height, rect, willChangeTransform, includeTransform } = this.props;\n      const frame2 = (_b = (_a2 = this.props.frame) != null ? _a2 : rect) != null ? _b : { x: 0, y: 0, width: 100, height: 100 };\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ React92.createElement(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement\n        },\n        element\n      );\n    }\n  }, _a.defaultVectorProps = {\n    isRootVectorNode: false,\n    name: null,\n    includeTransform: void 0,\n    defaultFillColor: void 0,\n    defaultStrokeColor: void 0,\n    defaultStrokeWidth: void 0,\n    defaultStrokeAlignment: \"center\",\n    width: 100,\n    height: 100,\n    rotation: 0,\n    rotate: void 0,\n    frame: void 0,\n    opacity: void 0,\n    calculatedPath: [],\n    d: void 0,\n    shapeId: void 0,\n    insideStroke: false,\n    strokeEnabled: true,\n    strokeClipId: void 0,\n    strokeWidth: void 0,\n    idAttribute: void 0,\n    transition: void 0,\n    shadows: [],\n    strokeAlpha: 1,\n    rect: { x: 0, y: 0, width: 0, height: 0 },\n    lineCap: \"butt\",\n    strokeColor: \"#0AF\",\n    lineJoin: \"miter\",\n    strokeMiterLimit: 4,\n    strokeDashArray: \"0\",\n    strokeDashOffset: 0,\n    fill: \"rgba(0,170,255,0.5)\"\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorProps\n  }, _a;\n})();\n\n// ../../library/src/render/presentation/VectorGroup.tsx\nvar import_process11 = __toESM(require_browser(), 1);\nimport React93 from \"react\";\nvar VectorGroup = /* @__PURE__ */ (() => {\n  var _a;\n  return _a = class extends Layer {\n    render() {\n      if (import_process11.default.env.NODE_ENV !== \"production\" && safeWindow[\"perf\"])\n        safeWindow[\"perf\"].nodeRender();\n      const {\n        id,\n        name: nameProp,\n        opacity,\n        visible,\n        targetName,\n        defaultName,\n        children,\n        includeTransform,\n        x,\n        y,\n        width,\n        height,\n        rotation,\n        isRootVectorNode\n      } = this.props;\n      if (!visible)\n        return null;\n      const { target } = RenderEnvironment;\n      const rect = { x, y, width, height };\n      const transform2 = transformValues2(rect, rotation, isRootVectorNode, includeTransform);\n      const addNames = target === \"PREVIEW\" /* preview */;\n      let name = void 0;\n      if (addNames) {\n        if (targetName) {\n          name = targetName;\n        } else if (nameProp) {\n          name = nameProp;\n        } else {\n          name = defaultName;\n        }\n      }\n      return this.renderElement(\n        /* @__PURE__ */ React93.createElement(\"g\", { transform: transformString(transform2), ...{ id, name, opacity } }, children)\n      );\n    }\n    renderElement(element) {\n      const { isRootVectorNode, width, height, frame: frame2, willChangeTransform, includeTransform } = this.props;\n      if (!isRootVectorNode)\n        return element;\n      if (includeTransform)\n        return element;\n      return /* @__PURE__ */ React93.createElement(\n        SVGRoot,\n        {\n          frame: frame2,\n          width,\n          height,\n          willChangeTransform,\n          innerRef: this.setLayerElement\n        },\n        element\n      );\n    }\n  }, _a.defaultVectorGroupProps = {\n    name: void 0,\n    opacity: void 0,\n    visible: true,\n    x: 0,\n    y: 0,\n    rotation: 0,\n    width: 100,\n    height: 100,\n    targetName: void 0,\n    defaultName: \"\",\n    isRootVectorNode: false,\n    includeTransform: void 0,\n    frame: { x: 0, y: 0, width: 100, height: 100 }\n  }, _a.defaultProps = {\n    ...Layer.defaultProps,\n    ..._a.defaultVectorGroupProps\n  }, _a;\n})();\n\n// ../../library/src/render/DesignComponentWrapper.tsx\nvar _CanvasStore = class {\n  constructor() {\n    this.canvas = { children: [] };\n    this.listeners = [];\n    this.ids = [];\n  }\n  static shared(data2) {\n    if (data2) {\n      const store = new _CanvasStore();\n      store.setCanvas(data2);\n      return store;\n    }\n    if (!_CanvasStore.__shared) {\n      _CanvasStore.__shared = new _CanvasStore();\n    }\n    return _CanvasStore.__shared;\n  }\n  updateNode(presentationNode) {\n    const id = presentationNode.props.id;\n    let children = this.canvas.children;\n    if (!children) {\n      this.canvas.children = children = [];\n    }\n    let found = false;\n    for (let i = 0; i < children.length; i++) {\n      const child = children[i];\n      if ((child == null ? void 0 : child.props.id) === id) {\n        found = true;\n        children[i] = presentationNode;\n        break;\n      }\n    }\n    if (!found) {\n      children.push(presentationNode);\n    }\n    this.setCanvas(this.canvas);\n  }\n  setCanvas(canvas) {\n    if (!canvas.children)\n      return;\n    this.canvas = canvas;\n    this.listeners.forEach((l, at) => {\n      const id = this.ids[at];\n      if (!id)\n        return;\n      const data2 = findNodeFor(canvas, id);\n      l.setState({ data: data2 });\n    });\n  }\n  registerListener(listener, idOrName) {\n    this.listeners.push(listener);\n    this.ids.push(idOrName);\n    return findNodeFor(this.canvas, idOrName);\n  }\n  removeListener(listener) {\n    const at = this.listeners.indexOf(listener);\n    if (at === -1)\n      return;\n    this.listeners.splice(at, 1);\n    this.ids.splice(at, 1);\n  }\n};\nvar CanvasStore = _CanvasStore;\nCanvasStore.__shared = null;\nvar builtInComponents = { Frame, Vector, Stack, VectorGroup, SVG, Text, DeprecatedComponentContainer };\nvar DesignComponent = class extends Component14 {\n  _typeForName(name) {\n    const builtIn = builtInComponents[name];\n    if (builtIn)\n      return builtIn;\n    const codeComponent = runtime.componentLoader.componentForIdentifier(name);\n    if (codeComponent && isReactDefinition(codeComponent)) {\n      return codeComponent.class;\n    }\n    return Frame;\n  }\n  _renderData(presentation, componentProps, topLevelProps) {\n    safeWindow[\"__checkBudget__\"]();\n    const { componentClass, name } = presentation;\n    let { props, children } = presentation;\n    props = { ...props, _constraints: { enabled: false } };\n    const type = this._typeForName(componentClass);\n    if (!type)\n      return null;\n    if (topLevelProps) {\n      const { style, ...rest } = props;\n      props = { ...rest, ...topLevelProps, _initialStyle: style };\n    }\n    if (!props.size && props._sizeOfMasterOnCanvas) {\n      if (!props.width) {\n        props.width = props._sizeOfMasterOnCanvas.width;\n      }\n      if (!props.height) {\n        props.height = props._sizeOfMasterOnCanvas.height;\n      }\n    }\n    if (name && componentProps.hasOwnProperty(name)) {\n      if (componentClass === \"Text\") {\n        const text = componentProps[name];\n        if (text) {\n          props = { ...props, text: componentProps[name] };\n        }\n      } else {\n        const orig = props.background;\n        const background = { src: componentProps[name], fit: orig.fit };\n        props = { ...props, background };\n      }\n    }\n    const c = children && children.map((child) => this._renderData(child, componentProps, void 0));\n    children = children ? c : [];\n    return React94.createElement(type, props, children);\n  }\n  render() {\n    safeWindow[\"__checkBudget__\"]();\n    const data2 = this.state.data;\n    if (!data2) {\n      throw new Error(\"Unable to connect to canvas data store.\");\n    }\n    return this._renderData(this.state.data, this.props, this.props);\n  }\n};\nfunction isNode(id, presentation) {\n  const { name, props } = presentation;\n  return props && props.id === id || name === id;\n}\nfunction findNodeFor(presentation, id) {\n  if (!presentation)\n    return null;\n  if (isNode(id, presentation)) {\n    return presentation;\n  }\n  const { children } = presentation;\n  if (!children || !isArray(children))\n    return null;\n  for (const child of children) {\n    if (isNode(id, child)) {\n      return child;\n    }\n  }\n  for (const child of children) {\n    const result = findNodeFor(child, id);\n    if (result)\n      return result;\n  }\n  return null;\n}\nfunction createDesignComponent(canvasStore, id, propertyControls, width = 200, height = 200) {\n  var _a;\n  return _a = class extends DesignComponent {\n    static rect(props) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      const parentSizeInfo = props.parentSize ? { sizing: props.parentSize, positioning: props.parentSize, viewport: null } : null;\n      return ConstraintValues.toRect(constraintValues, parentSizeInfo, null);\n    }\n    static size(props, parentSize, freeSpace) {\n      const constraintValues = ConstraintValues.fromProperties(props);\n      return ConstraintValues.toSize(constraintValues, parentSize || null, null, freeSpace);\n    }\n    constructor(props, context) {\n      super(props, context);\n      const data2 = canvasStore.registerListener(this, id);\n      this.state = { data: data2 };\n    }\n    render() {\n      const maybeRenderWithProvider = (renderNode) => {\n        const nodeId = nodeIdFromString(id);\n        if (!this.state.data && renderNode) {\n          safeWindow[\"__checkBudget__\"]();\n          const el = renderNode(nodeId);\n          if (el && React94.isValidElement(el) && typeof el.type !== \"string\") {\n            return React94.createElement(WithOverride(el.type, this.props), el.props);\n          }\n        }\n        return super.render();\n      };\n      return /* @__PURE__ */ React94.createElement(RenderNodeContext.Consumer, null, maybeRenderWithProvider);\n    }\n    componentWillUnmount() {\n      canvasStore.removeListener(this);\n    }\n  }, _a.displayName = `DesignComponent(${id})`, _a.propertyControls = propertyControls, _a.supportsConstraints = true, _a.defaultProps = {\n    _sizeOfMasterOnCanvas: {\n      width,\n      height\n    }\n  }, _a;\n}\nvar RenderNodeContext = React94.createContext(null);\nvar RenderNodeProvider = RenderNodeContext.Provider;\n\n// ../../library/src/render/presentation/Image.tsx\nimport React95 from \"react\";\nvar Image2 = /* @__PURE__ */ React95.forwardRef(function Image3(props, ref) {\n  var _a;\n  const { background, children, alt, ...rest } = props;\n  const style = { ...rest.style };\n  if (background) {\n    delete style.background;\n  }\n  const MotionComponent = motion[(_a = props.as) != null ? _a : \"div\"];\n  return /* @__PURE__ */ React95.createElement(MotionComponent, { ...rest, style, ref }, background && /* @__PURE__ */ React95.createElement(BackgroundImageComponent, { image: background, alt }), children);\n});\n\n// ../../library/src/render/presentation/PresentationTree.ts\nfunction convertPresentationTree(node, converter, componentDefinitionProvider, getCachedNode, skipCodeComponentPropsCache = false) {\n  const cachedNode = getCachedNode && getCachedNode(node);\n  if (cachedNode)\n    return cachedNode;\n  let children;\n  if (isCodeComponentContainerPresentation(node)) {\n    children = convertCodeComponentContainer(\n      componentDefinitionProvider,\n      node,\n      converter,\n      getCachedNode,\n      skipCodeComponentPropsCache\n    );\n  } else if (node.children) {\n    children = node.children.map(\n      (n) => convertPresentationTree(\n        n,\n        converter,\n        componentDefinitionProvider,\n        getCachedNode,\n        skipCodeComponentPropsCache\n      )\n    );\n  }\n  return converter(node, children);\n}\nfunction isCodeComponentContainerPresentation(value) {\n  return !!value.codeComponentIdentifier;\n}\nfunction convertCodeComponentContainer(componentDefinitionProvider, node, converter, getCachedNode, skipCodeComponentPropsCache = false) {\n  var _a;\n  const codeComponentChildren = node.getComponentChildren ? node.getComponentChildren(componentDefinitionProvider) : [];\n  const codeComponentSlots = node.getComponentSlotChildren ? node.getComponentSlotChildren(componentDefinitionProvider) : {};\n  let codeComponentPresentation;\n  const props = node.getCodeComponentProps ? node.getCodeComponentProps(componentDefinitionProvider, { skipCache: skipCodeComponentPropsCache }) : void 0;\n  if (node.cache.codeComponentPresentation) {\n    codeComponentPresentation = node.cache.codeComponentPresentation;\n    if (!isShallowEqualArray(codeComponentPresentation.children, codeComponentChildren)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.children = codeComponentChildren;\n    }\n    if (!isEqual(codeComponentPresentation.props, props)) {\n      codeComponentPresentation.cache.reactElement = null;\n      codeComponentPresentation.cache.props = null;\n      codeComponentPresentation.props = props;\n    }\n  } else {\n    const { id: containerId, codeComponentIdentifier: identifier, codeComponentPackageVersion } = node;\n    node.cache.codeComponentPresentation = codeComponentPresentation = new CodeComponentPresentation(\n      containerId + identifier,\n      identifier,\n      codeComponentPackageVersion,\n      props,\n      codeComponentChildren\n    );\n  }\n  codeComponentPresentation.props.placeholders = node.cache.placeholders;\n  const slotKeys = Object.keys(codeComponentSlots);\n  if (slotKeys.length) {\n    codeComponentPresentation.props = { ...codeComponentPresentation.props };\n    codeComponentPresentation.props.__slotKeys = slotKeys;\n    for (const slotKey of slotKeys) {\n      const slotChildren = (_a = codeComponentSlots[slotKey]) == null ? void 0 : _a.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      );\n      codeComponentPresentation.props[slotKey] = slotChildren;\n    }\n  }\n  return [\n    converter(\n      codeComponentPresentation,\n      codeComponentPresentation.children.map(\n        (child) => convertPresentationTree(\n          child,\n          converter,\n          componentDefinitionProvider,\n          getCachedNode,\n          skipCodeComponentPropsCache\n        )\n      )\n    )\n  ];\n}\nvar CodeComponentPresentation = class {\n  constructor(id, componentIdentifier, packageVersion, props, children, codeOverrideIdentifier) {\n    this.id = id;\n    this.componentIdentifier = componentIdentifier;\n    this.packageVersion = packageVersion;\n    this.props = props;\n    this.children = children;\n    this.codeOverrideIdentifier = codeOverrideIdentifier;\n    this.cache = {};\n  }\n  getProps() {\n    return {\n      ...this.props,\n      id: this.id,\n      key: this.id\n    };\n  }\n  rect(_parentSizeInfo) {\n    return { x: 0, y: 0, width: 0, height: 0 };\n  }\n};\n\n// ../../library/src/render/presentation/RichText.tsx\nimport React97, { Children, cloneElement, forwardRef as forwardRef4, isValidElement, useContext as useContext15, useRef as useRef15 } from \"react\";\n\n// ../../library/src/render/presentation/DeprecatedRichText.tsx\nimport * as React96 from \"react\";\nimport { useRef as useRef14 } from \"react\";\nvar htmlEscapes = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\"\n};\nvar reUnescapedHtml = /[&<>\"']/g;\nvar reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\nfunction escapeHTML2(str) {\n  return str && reHasUnescapedHtml.test(str) ? str.replace(reUnescapedHtml, (chr) => htmlEscapes[chr]) : str || \"\";\n}\nvar deprecatedRichTextPlaceholder = \"{{ text-placeholder }}\";\nvar richTextWrapperClassName = \"rich-text-wrapper\";\nvar DeprecatedRichText = /* @__PURE__ */ React96.forwardRef(\n  function Text3(props, forwardedRef) {\n    var _a, _b;\n    const {\n      id,\n      name,\n      html,\n      htmlFromDesign,\n      text,\n      textFromDesign,\n      fonts = [],\n      width,\n      height,\n      left,\n      right,\n      top,\n      bottom,\n      center,\n      className,\n      stylesPresetsClassName,\n      visible = true,\n      opacity,\n      rotation = 0,\n      verticalAlignment = \"top\",\n      isEditable = false,\n      willChangeTransform,\n      environment: environment2 = RenderTarget.current,\n      withExternalLayout = false,\n      positionSticky,\n      positionStickyTop,\n      positionStickyRight,\n      positionStickyBottom,\n      positionStickyLeft,\n      __htmlStructure,\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      children,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const layoutId = useLayoutId(props);\n    const fallbackLayoutRef = useRef14(null);\n    const layoutRef = forwardedRef != null ? forwardedRef : fallbackLayoutRef;\n    const { navigate, getRoute } = useRouter();\n    const currentRoute = useCurrentRoute();\n    useRoutePreloader((_a = props.preload) != null ? _a : []);\n    useMeasureLayout(props, layoutRef);\n    const inCodeComponent = React96.useContext(ComponentContainerContext);\n    const isOnCanvas = useIsOnFramerCanvas();\n    let textOrOverride = text;\n    const forwardedOverrideId = _forwardedOverrideId != null ? _forwardedOverrideId : id;\n    if (forwardedOverrideId && _forwardedOverrides) {\n      const override = _forwardedOverrides[forwardedOverrideId];\n      if (typeof override === \"string\") {\n        textOrOverride = override;\n      }\n    }\n    let innerHTML = \"\";\n    if (textOrOverride) {\n      const escapedText = escapeHTML2(textOrOverride);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (html) {\n      innerHTML = html;\n    } else if (textFromDesign) {\n      const escapedText = escapeHTML2(textFromDesign);\n      innerHTML = __htmlStructure ? __htmlStructure.replace(deprecatedRichTextPlaceholder, escapedText) : `<p>${escapedText}</p>`;\n    } else if (htmlFromDesign) {\n      innerHTML = htmlFromDesign;\n    }\n    const implicitPathVariables = useImplicitPathVariables();\n    const innerHTMLWithReplacedFramerPageLinks = React96.useMemo(() => {\n      if (isOnCanvas || !getRoute || !currentRoute)\n        return innerHTML;\n      return replaceFramerPageLinks(innerHTML, getRoute, currentRoute, implicitPathVariables);\n    }, [isOnCanvas, innerHTML, getRoute, currentRoute, implicitPathVariables]);\n    React96.useEffect(() => {\n      const container = layoutRef.current;\n      if (container === null)\n        return;\n      function interceptPageLinks(event) {\n        const anchorElement = findAnchorElement(event.target, layoutRef.current);\n        if (event.metaKey || !navigate || !anchorElement || anchorElement.getAttribute(\"target\") === \"_blank\" /* _blank */)\n          return;\n        const didNavigate = navigateFromAttributes(navigate, anchorElement, implicitPathVariables);\n        if (didNavigate) {\n          event.preventDefault();\n        }\n      }\n      container.addEventListener(\"click\", interceptPageLinks);\n      return () => {\n        container.removeEventListener(\"click\", interceptPageLinks);\n      };\n    }, [navigate, implicitPathVariables]);\n    useLoadFonts(fonts, __fromCanvasComponent, layoutRef);\n    if (!visible)\n      return null;\n    injectComponentCSSRules();\n    const isHidden2 = isEditable && environment2() === \"CANVAS\" /* canvas */;\n    const style = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment2(verticalAlignment),\n      opacity: isHidden2 ? 0 : opacity,\n      flexShrink: 0\n    };\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? (_b = props.transformTemplate) != null ? _b : transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        const rotate = Animatable.getNumber(rotation).toFixed(4);\n        style.transform = `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate}deg)`;\n        style.width = frame2.width;\n        style.minWidth = frame2.width;\n        style.height = frame2.height;\n      } else {\n        style.left = left;\n        style.right = right;\n        style.top = top;\n        style.bottom = bottom;\n        style.width = width;\n        style.height = height;\n        style.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          style.position = \"sticky\";\n          style.willChange = \"transform\";\n          style.zIndex = 1;\n          style.top = positionStickyTop;\n          style.right = positionStickyRight;\n          style.bottom = positionStickyBottom;\n          style.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        style.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, style);\n    collectTextShadowsForProps(props, style);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(style);\n    }\n    Object.assign(style, props.style);\n    return /* @__PURE__ */ React96.createElement(\n      motion.div,\n      {\n        id,\n        ref: layoutRef,\n        ...rest,\n        style,\n        layoutId,\n        \"data-framer-name\": name,\n        \"data-framer-component-type\": \"DeprecatedRichText\",\n        \"data-center\": center,\n        className: cx(className, stylesPresetsClassName, richTextWrapperClassName),\n        transformTemplate: template,\n        dangerouslySetInnerHTML: { __html: innerHTMLWithReplacedFramerPageLinks }\n      }\n    );\n  }\n);\nfunction convertVerticalAlignment2(verticalAlignment) {\n  switch (verticalAlignment) {\n    case \"top\":\n      return \"flex-start\";\n    case \"center\":\n      return \"center\";\n    case \"bottom\":\n      return \"flex-end\";\n  }\n}\nfunction useLoadFonts(fonts, fromCanvasComponent, containerRef) {\n  const prevFontsRef = useRef14([]);\n  if (!isShallowEqualArray(prevFontsRef.current, fonts)) {\n    prevFontsRef.current = fonts;\n    fontStore.loadWebFontsFromSelectors(fonts).then((results) => {\n      if (!fromCanvasComponent || !containerRef.current || RenderTarget.current() !== \"CANVAS\" /* canvas */)\n        return;\n      const didLoadNewFonts = results.some(\n        (result) => result.status === \"fulfilled\" && result.value === 1 /* Loaded */\n      );\n      if (didLoadNewFonts) {\n        measureClosestComponentContainer(containerRef.current);\n      }\n    });\n  }\n}\n\n// ../../library/src/render/presentation/RichText.tsx\nvar RichTextContainer = /* @__PURE__ */ forwardRef4(\n  (props, ref) => {\n    var _a;\n    const {\n      __fromCanvasComponent = false,\n      _forwardedOverrideId,\n      _forwardedOverrides,\n      _usesDOMRect,\n      bottom,\n      center,\n      children,\n      environment: environment2 = RenderTarget.current,\n      fonts = [],\n      height,\n      isEditable = false,\n      left,\n      name,\n      opacity,\n      positionSticky,\n      positionStickyBottom,\n      positionStickyLeft,\n      positionStickyRight,\n      positionStickyTop,\n      right,\n      rotation = 0,\n      style,\n      stylesPresetsClassNames,\n      text: plainText,\n      top,\n      verticalAlignment = \"top\",\n      visible = true,\n      width,\n      willChangeTransform,\n      withExternalLayout = false,\n      viewBox,\n      viewBoxScale = 1,\n      ...rest\n    } = props;\n    const parentSize = useParentSize();\n    const isOnCanvas = useIsOnFramerCanvas();\n    const inCodeComponent = useContext15(ComponentContainerContext);\n    const layoutId = useLayoutId(props);\n    const fallbackRef = useRef15(null);\n    const containerRef = ref != null ? ref : fallbackRef;\n    useMeasureLayout(props, containerRef);\n    useLoadFonts(fonts, __fromCanvasComponent, containerRef);\n    if (!visible)\n      return null;\n    injectComponentCSSRules();\n    const isHidden2 = isEditable && environment2() === \"CANVAS\" /* canvas */;\n    const containerStyle = {\n      outline: \"none\",\n      display: \"flex\",\n      flexDirection: \"column\",\n      justifyContent: convertVerticalAlignment2(verticalAlignment),\n      opacity: isHidden2 ? 0 : opacity,\n      flexShrink: 0\n    };\n    const restrictedRenderTarget = RenderTarget.hasRestrictions();\n    const frame2 = calculateRect(props, parentSize || 0 /* Unknown */, false);\n    const isAutoSized2 = _usesDOMRect && (width === \"auto\" || height === \"auto\");\n    const hasTransformTemplate = !!props.transformTemplate || !frame2 || !restrictedRenderTarget || __fromCanvasComponent || isAutoSized2;\n    const template = hasTransformTemplate ? (_a = props.transformTemplate) != null ? _a : transformTemplate(center) : void 0;\n    if (!withExternalLayout) {\n      if (frame2 && restrictedRenderTarget && !isAutoSized2) {\n        const rotate = Animatable.getNumber(rotation).toFixed(4);\n        containerStyle.transform = `translate(${frame2.x}px, ${frame2.y}px) rotate(${rotate}deg)`;\n        containerStyle.width = frame2.width;\n        containerStyle.minWidth = frame2.width;\n        containerStyle.height = frame2.height;\n      } else {\n        containerStyle.left = left;\n        containerStyle.right = right;\n        containerStyle.top = top;\n        containerStyle.bottom = bottom;\n        containerStyle.width = width;\n        containerStyle.height = height;\n        containerStyle.rotate = rotation;\n      }\n      if (positionSticky) {\n        if (!isOnCanvas || inCodeComponent) {\n          containerStyle.position = \"sticky\";\n          containerStyle.willChange = \"transform\";\n          containerStyle.zIndex = 1;\n          containerStyle.top = positionStickyTop;\n          containerStyle.right = positionStickyRight;\n          containerStyle.bottom = positionStickyBottom;\n          containerStyle.left = positionStickyLeft;\n        }\n      } else if (isOnCanvas && (props.positionFixed || props.positionAbsolute)) {\n        containerStyle.position = \"absolute\";\n      }\n    }\n    collectFiltersFromProps(props, containerStyle);\n    collectTextShadowsForProps(props, containerStyle);\n    if (willChangeTransform) {\n      forceLayerBackingWithCSSProperties(containerStyle);\n    }\n    Object.assign(containerStyle, style);\n    if (layoutId) {\n      rest.layout = \"preserve-aspect\";\n    }\n    if (isString2(props.viewBox)) {\n      return /* @__PURE__ */ React97.createElement(\n        motion.svg,\n        {\n          ...rest,\n          ref: containerRef,\n          style: containerStyle,\n          layoutId,\n          transformTemplate: template,\n          \"data-framer-name\": name,\n          \"data-framer-component-type\": \"RichTextContainer\",\n          viewBox\n        },\n        /* @__PURE__ */ React97.createElement(\n          motion.foreignObject,\n          {\n            width: \"100%\",\n            height: \"100%\",\n            transform: `scale(${viewBoxScale})`,\n            style: { overflow: \"visible\", transformOrigin: \"center center\" }\n          },\n          children && styleRichTextChildren(children, stylesPresetsClassNames, plainText)\n        )\n      );\n    }\n    return /* @__PURE__ */ React97.createElement(\n      motion.div,\n      {\n        ...rest,\n        ref: containerRef,\n        style: containerStyle,\n        layoutId,\n        transformTemplate: template,\n        \"data-framer-name\": name,\n        \"data-framer-component-type\": \"RichTextContainer\"\n      },\n      children && styleRichTextChildren(children, stylesPresetsClassNames, plainText)\n    );\n  }\n);\nfunction styleRichTextChildren(element, stylesPresetsClassNames, plainText) {\n  let children = Children.toArray(element.props.children);\n  if (isString2(plainText)) {\n    children = children.slice(0, 1);\n  }\n  children = children.map((child) => {\n    if (isValidElement(child)) {\n      return styleRichTextChildren(child, stylesPresetsClassNames, plainText);\n    }\n    if (isString2(plainText)) {\n      return plainText;\n    }\n    return child;\n  });\n  const { [\"data-preset-tag\"]: dataPresetTag, ...props } = element.props;\n  if (isString2(element.type) || isMotionComponent(element.type)) {\n    const tag = dataPresetTag || unwrapMotionComponent(element.type) || element.type;\n    const stylesPresetClassName = isString2(tag) ? stylesPresetsClassNames == null ? void 0 : stylesPresetsClassNames[tag] : void 0;\n    props.className = cx(\"framer-text\", props.className, stylesPresetClassName);\n  }\n  return cloneElement(element, props, ...children);\n}\nvar RichText = /* @__PURE__ */ forwardRef4(\n  ({ children, html, htmlFromDesign, ...props }, ref) => {\n    const content = html || children || htmlFromDesign;\n    if (isString2(content)) {\n      if (!props.stylesPresetsClassName && isObject2(props.stylesPresetsClassNames)) {\n        props.stylesPresetsClassName = Object.values(props.stylesPresetsClassNames).join(\" \");\n      }\n      const contentProp = {\n        // We need to use the original prop name.\n        [isString2(html) ? \"html\" : \"htmlFromDesign\"]: content\n      };\n      return /* @__PURE__ */ React97.createElement(DeprecatedRichText, { ...props, ...contentProp, ref });\n    }\n    if (!props.stylesPresetsClassNames && isString2(props.stylesPresetsClassName)) {\n      const [h1, h2, h3, p, a] = props.stylesPresetsClassName.split(\" \");\n      if (h1 === void 0 || h2 === void 0 || h3 === void 0 || p === void 0 || a === void 0) {\n        console.warn(`Encountered invalid stylesPresetsClassNames: ${props.stylesPresetsClassNames}`);\n      } else {\n        props.stylesPresetsClassNames = { h1, h2, h3, p, a };\n      }\n    }\n    return /* @__PURE__ */ React97.createElement(RichTextContainer, { ...props, ref }, isValidElement(content) ? content : void 0);\n  }\n);\n\n// ../../library/src/render/traits/Shape.ts\nvar key6 = \"calculatedPaths\";\nfunction withShape(target) {\n  return key6 in target;\n}\n\n// ../../library/src/render/types/Size.ts\nvar Size = /* @__PURE__ */ (() => {\n  function Size2(width, height) {\n    return { width, height };\n  }\n  Size2.equals = (sizeA, sizeB) => {\n    if (sizeA === sizeB)\n      return true;\n    if (!sizeA || !sizeB)\n      return false;\n    return sizeA.width === sizeB.width && sizeA.height === sizeB.height;\n  };\n  Size2.update = (fromSize, toSize, keepAspectRatio = false) => {\n    let { width, height } = fromSize;\n    const sizeRatio = width / height;\n    width = toSize.width !== void 0 ? toSize.width : width;\n    height = toSize.height !== void 0 ? toSize.height : height;\n    if (keepAspectRatio) {\n      if (toSize.width === void 0 && toSize.height !== void 0) {\n        width = toSize.height * sizeRatio;\n      }\n      if (toSize.width !== void 0 && toSize.height === void 0 && sizeRatio !== 0) {\n        height = toSize.width / sizeRatio;\n      }\n    }\n    return { width, height };\n  };\n  Size2.subtract = (sizeA, sizeB) => {\n    return {\n      width: Math.max(0, sizeA.width - sizeB.width),\n      height: Math.max(0, sizeA.height - sizeB.height)\n    };\n  };\n  Size2.zero = Size2(0, 0);\n  Size2.isZero = function(size2) {\n    return size2 === Size2.zero || size2.width === 0 && size2.height === 0;\n  };\n  Size2.defaultIfZero = function(width, height, size2) {\n    if (Size2.isZero(size2)) {\n      return Size2(width, height);\n    }\n    return size2;\n  };\n  return Size2;\n})();\n\n// ../../library/src/render/utils/annotateTypeOnStringify.ts\nfunction annotateTypeOnStringify(ctor, typeName) {\n  const existingToJSON = ctor.prototype.toJSON;\n  ctor.prototype.toJSON = function() {\n    const base = existingToJSON ? existingToJSON.apply(this) : this;\n    return Object.assign({}, base, { __type__: typeName });\n  };\n  return ctor;\n}\nfunction isOfAnnotatedType(object, typeName) {\n  return object && object.__type__ && object.__type__ === typeName;\n}\n\n// ../../library/src/render/utils/dom.ts\nvar frameFromElement = (element) => {\n  const frame2 = Rect.fromRect(element.getBoundingClientRect());\n  frame2.x = frame2.x + safeWindow.scrollX;\n  frame2.y = frame2.y + safeWindow.scrollY;\n  return frame2;\n};\nvar frameFromElements = (elements) => {\n  return Rect.merge(...elements.map(frameFromElement));\n};\nvar convertToPageFrame = (frame2, element) => {\n  const point = convertToPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar convertFromPageFrame = (frame2, element) => {\n  const point = convertFromPagePoint(frame2, element);\n  return {\n    x: point.x,\n    y: point.y,\n    width: frame2.width,\n    height: frame2.height\n  };\n};\nvar getPageFrame = (element) => {\n  const rect = element.getBoundingClientRect();\n  return {\n    x: rect.left + safeWindow.scrollX,\n    y: rect.top + safeWindow.scrollY,\n    width: rect.width,\n    height: rect.height\n  };\n};\nvar fromEventForPage = (event) => {\n  return {\n    x: event.pageX,\n    y: event.pageY\n  };\n};\nvar fromEventForClient = (event) => {\n  return {\n    x: event.clientX,\n    y: event.clientY\n  };\n};\nvar convertToPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x + frame2.x,\n    y: point.y + frame2.y\n  };\n};\nvar convertFromPagePoint = (point, element) => {\n  const frame2 = getPageFrame(element);\n  return {\n    x: point.x - frame2.x,\n    y: point.y - frame2.y\n  };\n};\nvar dispatchKeyDownEvent = (keyCode, options = {}) => {\n  const keyboardEvent = new KeyboardEvent(\"keydown\", {\n    bubbles: true,\n    keyCode,\n    ...options\n  });\n  const activeElement = document.activeElement;\n  if (activeElement) {\n    activeElement.dispatchEvent(keyboardEvent);\n  }\n};\nvar DOM = {\n  frameFromElement,\n  frameFromElements,\n  convertToPageFrame,\n  convertFromPageFrame,\n  getPageFrame,\n  fromEventForPage,\n  fromEventForClient,\n  convertToPagePoint,\n  convertFromPagePoint\n};\n\n// ../../library/src/render/utils/getConfigFromURL.ts\nfunction getConfigFromPreviewURL(windowURLString = safeWindow.location.href) {\n  if (!windowURLString) {\n    throw new Error(\n      `getConfigFromURL() called without url argument (location.href = \"${safeWindow.location.href}\")`\n    );\n  }\n  const params = new URL(windowURLString).searchParams;\n  const imageBaseURL = params.get(\"imageBaseURL\") || \"\";\n  const projectURL = params.get(\"projectURL\") || \"\";\n  const showConsole = params.get(\"console\") === \"1\";\n  const disableDevice = params.get(\"device\") === \"0\";\n  return { imageBaseURL, projectURL, showConsole, disableDevice };\n}\nfunction getConfigFromVekterURL(windowURLString = safeWindow.location.href) {\n  if (!windowURLString) {\n    throw new Error(\n      `getConfigFromURL() called without url argument (location.href = \"${safeWindow.location.href}\")`\n    );\n  }\n  const hash2 = decodeURIComponent(new URL(windowURLString).hash.slice(1));\n  const [documentURL, imageBaseURL, projectURL] = hash2.split(\"#&#\");\n  return { documentURL, imageBaseURL, projectURL };\n}\n\n// ../../library/src/render/utils/gradientForShape.tsx\nfunction gradientForShape(nodeId, node) {\n  if (LinearGradient.isLinearGradient(node.fill)) {\n    return elementPropertiesForLinearGradient(node.fill, nodeId);\n  }\n  if (RadialGradient.isRadialGradient(node.fill)) {\n    return elementPropertiesForRadialGradient(node.fill, nodeId);\n  }\n  return void 0;\n}\n\n// ../../library/src/render/utils/throttle.ts\nfunction throttle(fn, time2) {\n  let previous = 0;\n  let timeout;\n  const later = (...args) => {\n    previous = Date.now();\n    timeout = void 0;\n    fn(...args);\n  };\n  return (...args) => {\n    const now = Date.now();\n    const remaining = time2 - (now - previous);\n    if (remaining <= 0 || remaining > time2) {\n      if (timeout) {\n        safeWindow.clearTimeout(timeout);\n        timeout = void 0;\n      }\n      previous = now;\n      fn(...args);\n    } else if (!timeout) {\n      timeout = safeWindow.setTimeout(later, remaining, ...args);\n    }\n  };\n}\n\n// ../../library/src/utils/addActionControls.ts\nfunction addActionControls(action, title, controls) {\n  runtime.addActionControls(action, title, controls);\n}\n\n// ../../library/src/utils/addFonts.ts\nfunction addFonts(component, fonts) {\n  Object.assign(component, { fonts });\n}\nfunction getFonts(component) {\n  const fonts = component.fonts;\n  return fonts || [];\n}\n\n// ../../library/src/utils/network.ts\nfunction loadJSON(url) {\n  return fetch(url, { mode: \"cors\" }).then((res) => res.json());\n}\n\n// ../../library/src/utils/inspectObjectType.ts\nfunction inspectObjectType(item) {\n  let className;\n  if ((item.constructor !== null ? item.constructor.name : void 0) !== null && (item.constructor !== null ? item.constructor.name : void 0) !== \"Object\") {\n    return item.constructor.name;\n  }\n  const extract = function(str) {\n    if (!str) {\n      return null;\n    }\n    const regex2 = /\\[object (\\w+)\\]/;\n    const match = regex2.exec(str);\n    if (match) {\n      return match[1];\n    }\n    return null;\n  };\n  if (item.toString) {\n    className = extract(item.toString());\n    if (className) {\n      return className;\n    }\n  }\n  if (item.constructor !== null ? item.constructor.toString : void 0) {\n    className = extract(item.constructor !== null ? item.constructor.toString() : void 0);\n    if (className) {\n      return className.replace(\"Constructor\", \"\");\n    }\n  }\n  return \"Object\";\n}\n\n// ../../library/src/utils/inspect.ts\nfunction inspect(item, max, l) {\n  if (max === void 0) {\n    max = 5;\n  }\n  if (l === void 0) {\n    l = 0;\n  }\n  if (item === null) {\n    return \"null\";\n  }\n  if (item === void 0) {\n    return \"undefined\";\n  }\n  if (isObject2(item) && isFunction(item.toInspect)) {\n    return item.toInspect();\n  }\n  if (isString2(item)) {\n    return `\"${item}\"`;\n  }\n  if (isNumber(item)) {\n    return `${item}`;\n  }\n  if (isFunction(item)) {\n    let code = item.toString().slice(\"function \".length).replace(/\\n/g, \"\").replace(/\\s+/g, \" \");\n    const limit = 50;\n    if (code.length > limit && l > 0) {\n      code = `${code.slice(0, +limit + 1 || void 0).trim()}\\u2026 }`;\n    }\n    return `<Function ${code}>`;\n  }\n  if (isArray(item)) {\n    if (l > max) {\n      return \"[...]\";\n    }\n    return `[${item.map((i) => inspect(i, max, (l || 0) + 1)).join(\", \")}]`;\n  }\n  if (isObject2(item)) {\n    let objectInfo;\n    const objectType = inspectObjectType(item);\n    if (/HTML\\w+?Element/.test(objectType)) {\n      return `<${objectType}>`;\n    }\n    if (l > max) {\n      objectInfo = \"{...}\";\n    } else {\n      const itemKeys = Object.keys(item);\n      objectInfo = `{${itemKeys.map((k) => `${k}:${inspect(item[k], max, (l || 0) + 1)}`).join(\", \")}}`;\n    }\n    if (objectType === \"Object\") {\n      return objectInfo;\n    }\n    return `<${objectType} ${objectInfo}>`;\n  }\n  return `${item}`;\n}\n\n// ../../library/src/utils/print.ts\nfunction print(...args) {\n  const line = args.map((arg) => {\n    return inspect(arg);\n  }).join(\", \");\n  console.log(line);\n}\n\n// ../../library/src/utils/useInitialRouteComponent.ts\nimport { useEffect as useEffect12, useState as useState2 } from \"react\";\nfunction initialRoutComponent(component) {\n  if (!component)\n    return null;\n  if (withPreload(component))\n    return null;\n  return component;\n}\nfunction useInitialRouteComponent(routes, homeNodeId) {\n  var _a;\n  const InitialRouteComponent = (_a = routes[homeNodeId]) == null ? void 0 : _a.page;\n  const [RouteComponent2, setRouteComponent] = useState2(\n    initialRoutComponent(InitialRouteComponent)\n  );\n  useEffect12(() => {\n    if (withPreload(InitialRouteComponent)) {\n      InitialRouteComponent.preload().then(setRouteComponent);\n    }\n  }, []);\n  return RouteComponent2;\n}\n\n// ../../library/package.json\nvar package_default = {\n  name: \"framer\",\n  version: \"2.3.0\",\n  main: \"build/index.js\",\n  type: \"module\",\n  exports: {\n    \".\": \"./build/index.js\",\n    \"./package.json\": \"./package.json\",\n    \"./*\": \"./build/*\"\n  },\n  files: [\n    \"build\",\n    \"CHANGELOG.md\",\n    \"README.md\",\n    \"LICENSE.md\",\n    \"postinstall.cjs\"\n  ],\n  types: \"./build/index.d.ts\",\n  author: \"Framer\",\n  license: \"MIT\",\n  scripts: {\n    prepublishOnly: \"make build\",\n    coverage: \"yarn :jest --coverage\",\n    lint: \"yarn :eslint ./src --ext .ts,.tsx --format codeframe --quiet\",\n    \"lint:fix\": \"yarn lint --fix\",\n    test: \"yarn :jest\",\n    watch: \"yarn :jest --watch\",\n    postinstall: \"node postinstall.cjs\"\n  },\n  dependencies: {\n    \"@juggle/resize-observer\": \"^3.3.1\",\n    eventemitter3: \"^3.1.0\",\n    fontfaceobserver: \"^2.1.0\",\n    \"hoist-non-react-statics\": \"^3.3.2\",\n    hsluv: \"^0.0.3\"\n  },\n  devDependencies: {\n    \"@framerjs/router\": \"workspace:src/router\",\n    \"@testing-library/dom\": \"^8.19.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/google.fonts\": \"1.0.3\",\n    \"@types/hsluv\": \"https://github.com/framer/typed_hsluv#bump\",\n    \"@types/node\": \"^18.11.18\",\n    \"@types/react\": \"^18.0.26\",\n    \"@types/react-dom\": \"^18.0.10\",\n    \"@types/yargs\": \"^17.0.19\",\n    \"@typescript-eslint/eslint-plugin\": \"^5.48.0\",\n    \"@typescript-eslint/parser\": \"^5.48.0\",\n    chalk: \"^4.1.2\",\n    eslint: \"^8.31.0\",\n    immutable: \"^3.8.2\",\n    \"jest-diff\": \"^29.3.1\",\n    \"jest-junit\": \"^15.0.0\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    rollup: \"^3.17.2\",\n    \"rollup-plugin-dts\": \"^5.1.0\",\n    semver: \"^7.5.2\",\n    typescript: \"^4.9.5\",\n    yargs: \"^17.6.2\"\n  },\n  peerDependencies: {\n    \"framer-motion\": \"^10.13.1\",\n    react: \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\"\n  },\n  tsdoc: {\n    tsdocFlavor: \"AEDoc\"\n  },\n  framer: {\n    components: [\n      {\n        name: \"Scroll\",\n        children: true,\n        properties: [\n          {\n            key: \"direction\",\n            title: \"Direction\",\n            kind: \"enum\",\n            options: [\n              \"horizontal\",\n              \"vertical\",\n              \"both\"\n            ]\n          }\n        ]\n      },\n      {\n        name: \"Page\"\n      }\n    ]\n  }\n};\n\n// ../../library/src/version.ts\nvar { version } = package_default;\n\n// ../../library/src/animation/Motion/addChildHack.ts\nMotionValue.prototype.addChild = function({ transformer = (v) => v }) {\n  const child = motionValue(transformer(this.get()));\n  this.onChange((v) => child.set(transformer(v)));\n  return child;\n};\n\n// ../../library/src/indexInternal.ts\nif (false) {\n  MainLoop.start();\n}\nexport {\n  AnchorLinkTarget,\n  Animatable,\n  AnimatePresence,\n  AnimateSharedLayout,\n  AnyInterpolation,\n  AutomaticLayoutIds,\n  BackgroundImage,\n  BezierAnimator,\n  BoxShadow,\n  CanvasStore,\n  Color,\n  ColorFormat,\n  ColorMixModelType,\n  ComponentContainerContext,\n  ComponentPresetsConsumer,\n  ComponentPresetsProvider,\n  ConstraintMask,\n  ConstraintValues,\n  Container,\n  ControlType,\n  ConvertColor,\n  CustomProperties,\n  CustomPropertiesContext,\n  CycleVariantState,\n  DOM,\n  Data,\n  DataContext,\n  DataObserver,\n  DataObserverContext,\n  DeprecatedComponentContainer,\n  DeprecatedFrameWithEvents,\n  DeprecatedLayoutGroupContext,\n  Device,\n  DeviceCodeComponent,\n  DimensionType,\n  DragControls,\n  Draggable,\n  EmptyState,\n  ErrorPlaceholder,\n  FlatTree,\n  Frame,\n  FrameWithMotion,\n  FramerAnimation,\n  FramerEvent,\n  FramerEventListener,\n  FramerEventSession,\n  GamepadContext,\n  GeneratedComponentContext,\n  Image2 as Image,\n  InternalID,\n  Layer,\n  LayoutGroup,\n  DeprecatedLayoutGroupContext as LayoutGroupContext,\n  LayoutIdContext,\n  LazyMotion,\n  LazyValue,\n  Line,\n  LinearGradient,\n  Link,\n  MainLoop,\n  MotionConfig,\n  MotionConfigContext,\n  MotionContext,\n  MotionSetup,\n  MotionValue,\n  NavigateTo,\n  NavigationWrapper as Navigation,\n  NavigationCallbackProvider,\n  NavigationConsumer,\n  NavigationTransitionType,\n  NotFoundError,\n  ObservableObject,\n  Page3 as Page,\n  PageRoot,\n  ParentSizeState,\n  PathSegment,\n  PathVariablesContext,\n  Point,\n  PresenceContext,\n  PropertyOverrides,\n  PropertyStore,\n  RadialGradient,\n  Rect,\n  RenderNodeProvider,\n  RenderTarget,\n  Reorder,\n  RichText,\n  SSRVariants,\n  SVG,\n  Scroll,\n  Shadow,\n  Size,\n  SpringAnimator,\n  Stack,\n  StyleSheetContext,\n  SwitchLayoutGroupContext,\n  Text,\n  TypefaceSourceNames,\n  ValueInterpolation,\n  VariantSelector,\n  Vector,\n  VectorGroup,\n  VisualElement,\n  WindowContext,\n  WithNavigator,\n  WithOverride,\n  _injectRuntime,\n  addActionControls,\n  addFonts,\n  addPointerEvent,\n  addPointerInfo,\n  addPropertyControls,\n  addScaleCorrector,\n  animate2 as animate,\n  animateValue,\n  animateVisualElement,\n  animationControls,\n  animations,\n  annotateTypeOnStringify,\n  anticipate,\n  backIn,\n  backInOut,\n  backOut,\n  backgroundImageFromProps,\n  buildTransform,\n  calcLength,\n  calculateRect,\n  callEach,\n  cancelFrame,\n  cancelSync,\n  checkTargetForNewValues,\n  circIn,\n  circInOut,\n  circOut,\n  clamp,\n  collectVisualStyleFromProps,\n  color,\n  combinedCSSRulesForPreview,\n  complex,\n  constraintsEnabled,\n  convertPresentationTree,\n  convertPropsToDeviceOptions,\n  createBox,\n  createData,\n  createDesignComponent,\n  createDomMotionComponent,\n  createFramerPageLink,\n  createMotionComponent,\n  createScopedAnimate,\n  cssBackgroundSize,\n  cubicBezier,\n  cx,\n  debounce,\n  defaultDeviceProps,\n  delay,\n  devicePresets,\n  dispatchKeyDownEvent,\n  distance,\n  distance2D,\n  domAnimation,\n  domMax,\n  easeIn,\n  easeInOut,\n  easeOut,\n  environment,\n  executeInRenderEnvironment,\n  filterProps,\n  finiteNumber,\n  fontStore,\n  forceLayerBackingWithCSSProperties,\n  fraction,\n  frame,\n  frameData,\n  frameFromElement,\n  frameFromElements,\n  framerAppearAnimationScriptKey,\n  framerAppearEffects,\n  framerAppearIdKey,\n  framerAppearTransformTemplateToken,\n  getComponentSize,\n  getConfigFromPreviewURL,\n  getConfigFromPreviewURL as getConfigFromURL,\n  getConfigFromVekterURL,\n  getDevicePreset,\n  getFonts,\n  getMeasurableCodeComponentChildren,\n  getMergedConstraintsProps,\n  getPropertyControls,\n  getWhereExpressionFromPathVariables,\n  gradientForShape,\n  imagePatternPropsForFill,\n  imageUrlForAsset,\n  inView,\n  inferInitialRouteFromPath,\n  injectComponentCSSRules,\n  installFlexboxGapWorkaroundIfNeeded,\n  interpolate,\n  invariant,\n  isAnimatable,\n  isBrowser,\n  isDesignDefinition,\n  isDragActive,\n  isEqual,\n  isFiniteNumber,\n  isFractionDimension,\n  isFramerGamepadKeydownData,\n  isFramerPageLink,\n  isGapEnabled,\n  isMotionComponent,\n  isMotionValue2 as isMotionValue,\n  isOfAnnotatedType,\n  isOverride,\n  isReactDefinition,\n  isShallowEqualArray,\n  isStraightCurve,\n  isValidMotionProp,\n  lazy,\n  loadFont,\n  loadJSON,\n  localPackageFallbackIdentifier,\n  localShadowFrame,\n  m,\n  makePaddingString,\n  makeUseVisualState,\n  memoize2 as memoize,\n  mirrorEasing,\n  mix,\n  modulate,\n  motion,\n  motionValue,\n  optimizeAppear,\n  optimizeAppearTransformTemplate,\n  optimizedAppearDataAttribute,\n  paddingFromProps,\n  parseFramerPageLink,\n  pathDefaults,\n  pipe,\n  print,\n  progress,\n  propsForLink,\n  px,\n  removeHiddenBreakpointLayers,\n  resolveLink,\n  resolveMotionValue,\n  resolvePageScope,\n  reverseEasing,\n  roundWithOffset,\n  roundedNumber,\n  roundedNumberString,\n  scroll,\n  scrollInfo,\n  serverURL,\n  setGlobalRenderEnvironment,\n  sharedSVGManager,\n  shouldOpenLinkInNewTab,\n  spring,\n  stagger,\n  startAnimation,\n  startOptimizedAppearAnimation,\n  steps,\n  sync,\n  systemTypefaceName,\n  throttle,\n  toFlexDirection,\n  toJustifyOrAlignment,\n  toSVGPath,\n  transform,\n  transformString,\n  transformTemplate,\n  unwrapMotionComponent,\n  useActiveTargetCallback,\n  useActiveVariantCallback,\n  useAddVariantProps,\n  useAnimate,\n  useAnimatedState,\n  useAnimation,\n  useAnimationControls,\n  useAnimationFrame,\n  useBreakpointVariants,\n  useCurrentPathVariables,\n  useCurrentRouteId,\n  useCycle,\n  useDataRecord,\n  useAnimatedState as useDeprecatedAnimatedState,\n  useInvertedScale as useDeprecatedInvertedScale,\n  useDomEvent,\n  useDragControls,\n  useDynamicRefs,\n  useElementScroll,\n  useForceUpdate,\n  useGamepad,\n  useHotkey,\n  useHydratedBreakpointVariants,\n  useInView,\n  useInitialRouteComponent,\n  useInstantLayoutTransition,\n  useInstantTransition,\n  useInvertedScale,\n  useIsInCurrentNavigationTarget,\n  useIsOnFramerCanvas,\n  useIsPresent,\n  useIsomorphicLayoutEffect,\n  useLocale,\n  useLocaleCode,\n  useLocaleInfo,\n  useLocalizationInfo,\n  useMeasureLayout,\n  useMotionTemplate,\n  useMotionValue,\n  useMotionValueEvent,\n  useNavigate,\n  useNavigation,\n  useObserveData,\n  useOnAppear,\n  useOnCurrentTargetChange,\n  useOnVariantChange,\n  useOverlayState,\n  usePresence,\n  usePrototypeNavigate,\n  useProvidedWindow,\n  useQueryData,\n  useReducedMotion,\n  useReducedMotionConfig,\n  useRenderEnvironment,\n  useResetProjection,\n  useRoute,\n  useRouteAnchor,\n  useRouteElementId,\n  useRouteHandler,\n  useRouter,\n  useScroll,\n  useSpring,\n  useTime,\n  useTransform,\n  useUnmountEffect,\n  useVariantState,\n  useVelocity,\n  useViewportScroll,\n  useWillChange,\n  valueToDimensionType,\n  version,\n  visualElementStore,\n  warning,\n  withCSS,\n  withFX,\n  withGeneratedLayoutId,\n  withMeasuredSize,\n  withOpacity,\n  withParallaxTransform,\n  withPath,\n  withShape,\n  withStyleAppearEffect,\n  withVariantAppearEffect,\n  wrap\n};\n/**\n * @license Emotion v11.0.0\n * MIT License\n *\n * Copyright (c) Emotion team and other contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n/*! Bundled license information:\n\nreact-is/cjs/react-is.production.min.js:\n  (** @license React v16.13.1\n   * react-is.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n*/\n//# sourceMappingURL=framer.G34L3KPS.js.map\n"],
  "mappings": "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",
  "names": ["npm_react_18_1_exports", "__export", "j", "I", "x", "P", "D", "V", "L", "U", "q", "z", "B", "H", "W", "e", "Y", "J", "K", "X", "Z", "ee", "te", "re", "ne", "oe", "ue", "ae", "ce", "ie", "fe", "se", "le", "pe", "ye", "de", "_e", "me", "e", "t", "r", "n", "o", "u", "a", "c", "i", "f", "s", "l", "p", "A", "y", "d", "_", "E", "F", "G", "m", "h", "v", "b", "C", "M", "N", "O", "escape", "w", "Q", "R", "S", "T", "$", "k", "g", "j", "I", "x", "P", "D", "V", "L", "U", "q", "z", "B", "H", "W", "Y", "J", "K", "X", "Z", "ee", "te", "re", "ne", "oe", "ue", "ae", "ce", "ie", "fe", "se", "le", "pe", "ye", "de", "_e", "me", "__create", "__defProp", "__getOwnPropDesc", "__getOwnPropNames", "__getProtoOf", "__hasOwnProp", "__commonJS", "cb", "mod", "__copyProps", "to", "from", "except", "desc", "key", "__toESM", "isNodeMode", "target", "__accessCheck", "obj", "member", "msg", "__privateGet", "getter", "__privateAdd", "value", "__privateSet", "setter", "require_memoize_browser_cjs", "exports", "memoize", "fn", "cache", "arg", "require_is_prop_valid_browser_cjs", "_interopDefault", "ex", "reactPropsRegex", "index", "prop", "MotionConfigContext", "z", "p", "MotionContext", "PresenceContext", "isBrowser", "useIsomorphicLayoutEffect", "fe", "ue", "LayoutGroupContext", "SwitchLayoutGroupContext", "LazyContext", "useVisualElement", "Component2", "visualState", "props", "createVisualElement2", "parent", "re", "lazyContext", "presenceContext", "reducedMotionConfig", "visualElementRef", "pe", "visualElement", "ie", "canHandoff", "window", "isRefObject", "ref", "useMotionRef", "externalRef", "te", "instance", "isVariantLabel", "v", "isAnimationControls", "variantPriorityOrder", "variantProps", "isControllingVariants", "name", "isVariantNode", "getCurrentTreeVariants", "context", "initial", "animate2", "useCreateMotionContext", "se", "variantLabelsAsDependency", "featureProps", "featureDefinitions", "loadFeatures", "features", "motionComponentSymbol", "createMotionComponent", "preloadedFeatures2", "useRender", "useVisualState2", "MotionComponent", "MeasureLayout2", "configAndProps", "useLayoutId", "isStatic", "initialLayoutGroupConfig", "isStrict", "B", "ForwardRefComponent", "Y", "layoutId", "layoutGroupId", "scaleCorrectors", "addScaleCorrector", "correctors", "isMotionValue", "transformPropOrder", "transformProps", "translateAlias", "numTransforms", "buildTransform", "transform2", "enableHardwareAcceleration", "allowTransformNone", "transformIsDefault", "transformTemplate", "transformString", "i", "transformName", "clamp", "min", "max", "sanitize", "floatRegex", "colorRegex", "singleColorRegex", "isString", "createUnitType", "unit", "degrees", "percent", "px", "vh", "vw", "progressPercentage", "validMotionProps", "isValidMotionProp", "shouldForward", "loadExternalIsValidProp", "isValidProp", "filterProps", "isDom", "forwardMotionProps", "filteredProps", "isKeyframesTarget", "isCustomValue", "resolveFinalValueInKeyframes", "resolveMotionValue", "unwrappedValue", "resolveVariantFromProps", "definition", "custom", "currentValues", "currentVelocity", "useConstant", "init", "makeState", "scrapeMotionValuesFromProps3", "createRenderState", "onMount", "state", "makeLatestValues", "makeUseVisualState", "config", "make", "scrapeMotionValues", "values", "motionValues", "isControllingVariants$1", "isVariantNode$1", "isInitialAnimationBlocked", "variantToSet", "resolved", "transitionEnd", "transition", "valueTarget", "noop", "any", "Queue", "process2", "createRenderStep", "runNextFrame", "thisFrame", "nextFrame", "numToRun", "isProcessing", "flushNextFrame", "toKeepAlive", "step", "callback", "keepAlive", "immediate", "addToCurrentFrame", "queue", "frameData2", "stepsOrder", "maxElapsed", "createRenderBatcher", "scheduleNextBatch", "allowKeepAlive", "useDefaultElapsed", "steps2", "acc", "processStep", "stepId", "processBatch", "timestamp", "wake", "frame", "cancelFrame", "frameData", "steps", "isPrimaryPointer", "event", "extractEventInfo", "pointType", "addPointerInfo", "handler", "addDomEvent", "eventName", "options", "addPointerEvent", "combineFunctions", "a", "b", "pipe", "transformers", "createLock", "lock", "openLock", "globalHorizontalLock", "globalVerticalLock", "getGlobalLock", "drag2", "openHorizontal", "openVertical", "isDragActive", "openGestureLock", "camelToDash", "str", "optimizedAppearDataId", "optimizedAppearDataAttribute", "warning", "invariant", "calcBezier", "t", "a1", "a2", "subdivisionPrecision", "subdivisionMaxIterations", "binarySubdivide", "x", "lowerBound", "upperBound", "mX1", "mX2", "currentX", "currentT", "cubicBezier", "mY1", "mY2", "getTForX", "aX", "easeIn", "easeOut", "easeInOut", "mirrorEasing", "easing", "reverseEasing", "circIn", "circOut", "circInOut", "backOut", "backIn", "backInOut", "anticipate", "number", "alpha", "scale", "isColorString", "type", "testProp", "splitColor", "aName", "bName", "cName", "c", "alpha2", "clampRgbUnit", "rgbUnit", "rgba", "red", "green", "blue", "alpha$1", "parseHex", "r", "g", "hex", "hsla", "hue", "saturation", "lightness", "color", "mix", "progress2", "checkStringStartsWith", "token", "isCSSVariableName", "isCSSVariableToken", "cssVariableRegex", "test", "_a", "_b", "cssVarTokeniser", "colorTokeniser", "numberTokeniser", "tokenise", "info", "regex", "countKey", "parse", "matches", "analyseComplexValue", "originalValue", "parseComplexValue", "createTransformer", "source", "numColors", "numVars", "tokenised", "numValues", "output", "convertNumbersToZero", "getAnimatableNone", "parsed", "complex", "progress", "toFromDifference", "hueToRgb", "q", "hslaToRgba", "mixLinearColor", "fromExpo", "colorTypes", "getColorType", "asRGBA", "color2", "model", "mixColor", "fromRGBA", "toRGBA", "blended", "mixImmediate", "origin", "getMixer", "mixComplex", "mixArray", "blendValue", "fromThis", "mixObject", "template", "originStats", "targetStats", "mixNumber", "detectMixerFactory", "createMixers", "ease2", "customMixer", "mixers", "mixerFactory", "numMixers", "mixer", "easingFunction", "interpolate", "input", "isClamp", "inputLength", "interpolator", "progressInRange", "secondsToMilliseconds", "seconds", "millisecondsToSeconds", "milliseconds", "velocityPerSecond", "velocity", "frameDuration", "velocitySampleDuration", "calcGeneratorVelocity", "resolveValue", "current", "prevT", "safeMin", "minDuration", "maxDuration", "minDamping", "maxDamping", "findSpring", "duration", "bounce", "mass", "envelope", "derivative", "dampingRatio", "undampedFreq2", "exponentialDecay", "delta", "calcAngularFreq", "e", "f", "initialGuess", "undampedFreq", "approximateRoot", "stiffness", "rootIterations", "result", "durationKeys", "physicsKeys", "isSpringType", "keys2", "getSpringOptions", "springOptions", "derived", "spring", "keyframes2", "restDelta", "restSpeed", "damping", "isResolvedFromDuration", "initialVelocity", "initialDelta", "undampedAngularFreq", "isGranularScale", "resolveSpring", "angularFreq", "dampedAngularFreq", "freqForT", "isBelowVelocityThreshold", "isBelowDisplacementThreshold", "isEasingArray", "easingLookup", "easingDefinitionToFunction", "x1", "y1", "x2", "y2", "fillOffset", "offset", "remaining", "offsetProgress", "defaultOffset", "arr", "convertOffsetToTimes", "o", "defaultEasing", "keyframes", "keyframeValues", "times", "easingFunctions", "absoluteTimes", "mapTimeToKeyframe", "inertia", "power", "timeConstant", "bounceDamping", "bounceStiffness", "modifyTarget", "isOutOfBounds", "nearestBoundary", "amplitude", "ideal", "calcDelta", "calcLatest", "applyFriction", "latest", "timeReachedBoundary", "spring$1", "checkCatchBoundary", "hasUpdatedFrame", "frameloopDriver", "update", "passTimestamp", "maxGeneratorDuration", "calcGeneratorDuration", "generator", "timeStep", "types", "animateValue", "autoplay", "delay2", "driver", "keyframes$1", "repeat", "repeatDelay", "repeatType", "onPlay", "onStop", "onComplete", "onUpdate", "speed", "hasStopped", "resolveFinishedPromise", "currentFinishedPromise", "updateFinishedPromise", "resolve", "animationDriver", "generatorFactory", "mapNumbersToKeyframes", "mirroredGenerator", "playState", "holdTime", "startTime", "cancelTime", "calculatedDuration", "resolvedDuration", "totalDuration", "currentTime", "tick", "timeWithoutDelay", "isInDelayPhase", "elapsed", "frameGenerator", "currentIteration", "iterationProgress", "iterationIsOdd", "done", "isAnimationFinished", "finish", "stopAnimationDriver", "cancel", "play", "now", "controls", "reject", "newTime", "newSpeed", "addUniqueItem", "item", "removeItem", "moveItem", "fromIndex", "toIndex", "startIndex", "endIndex", "SubscriptionManager", "numSubscriptions", "isFloat", "collectMotionValues", "MotionValue", "render", "subscription", "unsubscribe", "eventManagers", "passiveEffect", "stopPassiveEffect", "prev", "startAnimation", "motionValue", "isNumericalString", "isZeroValueString", "maxDefaults", "applyDefaultFilter", "number2", "defaultValue", "functionRegex", "filter", "functions", "int", "numberValueTypes", "defaultValueTypes", "getDefaultValueType", "getAnimatableNone2", "defaultValueType", "testValueType", "auto", "dimensionValueTypes", "findDimensionValueType", "valueTypes", "findValueType", "getCurrent", "getVelocity", "resolveVariant", "setMotionValue", "setTarget", "setVariants", "variantLabels", "variant", "child", "setValues", "checkTargetForNewValues", "newValueKeys", "numNewValues", "targetValue", "getOriginFromTransition", "getOrigin", "transitionOrigin", "instantAnimationState", "isBezierDefinition", "isWaapiSupportedEasing", "supportedWaapiEasing", "cubicBezierAsString", "d", "mapEasingToNativeEasing", "animateStyle", "element", "valueName", "keyframeOptions", "getFinalKeyframe", "memo", "supportsWaapi", "acceleratedValues", "sampleDelta", "maxDuration2", "requiresPregeneratedKeyframes", "createAcceleratedAnimation", "sampleAnimation", "pregeneratedKeyframes", "animation", "cancelAnimation", "safeCancel", "timeline", "createInstantAnimation", "setValue", "underDampedSpring", "criticallyDampedSpring", "keyframesTransition", "ease", "getDefaultTransition", "valueKey", "isAnimatable", "isNone", "getKeyframes", "isTargetAnimatable", "defaultOrigin", "animatableTemplateValue", "noneKeyframeIndexes", "isTransitionDefined", "when", "_delay", "delayChildren", "staggerChildren", "staggerDirection", "getValueTransition", "animateMotionValue", "valueTransition", "originKeyframe", "targetKeyframe", "isOriginAnimatable", "acceleratedAnimation", "isWillChangeMotionValue", "shouldBlockAnimation", "protectedKeys", "needsAnimating", "shouldBlock", "animateTarget", "transitionOverride", "willChange", "animations2", "animationTypeState", "appearId", "animateVariant", "getAnimation", "getChildAnimations", "forwardDelay", "animateChildren", "first", "last", "maxStaggerDuration", "generateStaggerDuration", "sortByTreeOrder", "animateVisualElement", "resolvedDefinition", "shallowCompare", "next", "prevLength", "reversePriorityOrder", "numAnimationTypes", "animateList", "createAnimationState", "createState", "isInitialRender", "buildResolvedTypeValues", "setAnimateFunction", "makeAnimator", "animateChanges", "changedActiveType", "removedKeys", "encounteredKeys", "removedVariantIndex", "typeState", "propIsVariant", "activeDelta", "isInherited", "variantDidChange", "checkVariantsDidChange", "shouldAnimateType", "definitionList", "resolvedValues", "prevResolvedValues", "allKeys", "markToAnimate", "fallbackAnimation", "fallbackTarget", "shouldAnimate", "setActive", "isActive", "_a2", "createTypeState", "Feature", "node", "AnimationFeature", "prevAnimate", "id", "ExitAnimationFeature", "isPresent2", "onExitComplete", "prevIsPresent", "exitAnimation", "register", "animations", "distance", "distance2D", "xDelta", "yDelta", "calcLength", "axis", "isNear", "maxDistance", "calcAxisDelta", "calcBoxDelta", "calcRelativeAxis", "relative", "calcRelativeBox", "calcRelativeAxisPosition", "layout2", "calcRelativePosition", "createAxisDelta", "createDelta", "createAxis", "createBox", "usePresence", "id4", "ae", "compareByDepth", "a", "b", "FlatTree", "child", "addUniqueItem", "removeItem", "callback", "delay", "timeout", "start", "checkElapsed", "timestamp", "elapsed", "cancelFrame", "frame", "visualElementStore", "prefersReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "isBrowser", "window", "motionMediaQuery", "setReducedMotionPreferences", "updateMotionValuesFromProps", "element", "next", "prev", "willChange", "key", "nextValue", "prevValue", "isMotionValue", "isWillChangeMotionValue", "motionValue", "existingValue", "latestValue", "featureNames", "featureDefinitions", "numFeatures", "propEventHandlers", "numVariantProps", "variantProps", "VisualElement", "parent", "props", "presenceContext", "reducedMotionConfig", "visualState", "options", "latestValues", "renderState", "isControllingVariants", "isVariantNode", "initialMotionValues", "value", "_props", "_prevProps", "instance", "remove", "valueIsTransform", "transformProps", "removeOnChange", "removeOnRenderRequest", "other", "children", "renderedProps", "isStrict", "preloadedFeatures2", "initialLayoutGroupConfig", "ProjectionNodeConstructor", "MeasureLayout2", "i", "name", "isEnabled", "FeatureConstructor", "ProjectionNode", "MeasureLayoutComponent", "layoutId", "layout2", "drag2", "dragConstraints", "layoutScroll", "layoutRoot", "isRefObject", "feature", "createBox", "target", "canMutate", "listener", "startAtParent", "context2", "context", "prop", "isVariantLabel", "closestVariantNode", "unsubscribe", "defaultValue", "_a", "initial", "valueFromInitial", "resolveVariantFromProps", "eventName", "SubscriptionManager", "args", "createMotionProxy", "createConfig", "custom", "Component2", "customMotionComponentConfig", "createMotionComponent", "componentCache", "_target", "lowercaseSVGElements", "isSVGComponent", "isForcedMotionValue", "scaleCorrectors", "getValueAsType", "type", "buildHTMLStyles", "state", "transformTemplate", "style", "vars", "transform2", "transformOrigin", "hasTransform2", "hasTransformOrigin", "transformIsNone", "isCSSVariableName", "valueType", "numberValueTypes", "valueAsType", "buildTransform", "originX", "originY", "originZ", "createHtmlRenderState", "copyRawValuesOnly", "source", "useInitialMotionValues", "isStatic", "se", "useStyle", "styleProp", "useHTMLProps", "htmlProps", "calcOrigin", "origin", "offset", "size", "px", "calcSVGTransformOrigin", "dimensions", "pxOriginX", "pxOriginY", "dashKeys", "camelKeys", "buildSVGPath", "attrs", "length", "spacing", "useDashCase", "keys2", "pathLength", "pathSpacing", "buildSVGAttrs", "attrX", "attrY", "attrScale", "pathOffset", "latest", "isSVGTag2", "createSvgRenderState", "isSVGTag", "tag", "useSVGProps", "_isStatic", "visualProps", "rawStyles", "createUseRender", "forwardMotionProps", "ref", "elementProps", "filterProps", "renderedChildren", "B", "renderHTML", "projection", "camelCaseAttributes", "renderSVG", "_styleProp", "camelToDash", "scrapeMotionValuesFromProps", "prevProps", "newValues", "scrapeMotionValuesFromProps2", "targetKey", "transformPropOrder", "svgMotionConfig", "makeUseVisualState", "htmlMotionConfig", "createDomMotionConfig", "createVisualElement2", "addHoverEvent", "node", "isActive", "callbackName", "handleEvent", "event", "info", "isDragActive", "addPointerEvent", "HoverGesture", "Feature", "pipe", "FocusGesture", "isFocusVisible", "addDomEvent", "isNodeOrChild", "fireSyntheticPointerEvent", "handler", "syntheticPointerEvent", "extractEventInfo", "PressGesture", "noop", "startEvent", "startInfo", "removePointerUpListener", "endEvent", "endInfo", "onTap", "onTapCancel", "removePointerCancelListener", "cancelEvent", "cancelInfo", "handleKeydown", "keydownEvent", "handleKeyup", "keyupEvent", "removeKeydownListener", "handleBlur", "removeBlurListener", "onTapStart", "whileTap", "removePointerListener", "removeFocusListener", "observerCallbacks", "observers", "fireObserverCallback", "entry", "fireAllObserverCallbacks", "entries", "initIntersectionObserver", "root", "lookupRoot", "rootObservers", "observeIntersection", "rootInteresectionObserver", "thresholdNames", "InViewFeature", "viewport", "rootMargin", "amount", "once", "onIntersectionUpdate", "isIntersecting", "onViewportEnter", "onViewportLeave", "hasViewportOptionChanged", "prevViewport", "gestureAnimations", "PanSession", "handlers", "transformPagePoint", "info2", "getPanInfo", "isPanStarted", "isDistancePastThreshold", "distance2D", "point3", "timestamp2", "frameData", "onStart", "onMove", "event2", "transformPoint", "onEnd", "onSessionEnd", "panInfo", "isPrimaryPointer", "initialInfo", "point2", "onSessionStart", "subtractPoint", "history", "lastDevicePoint", "startDevicePoint", "getVelocity2", "timeDelta", "timestampedPoint", "lastPoint", "secondsToMilliseconds", "time", "millisecondsToSeconds", "currentVelocity", "applyConstraints", "min", "max", "elastic", "mix", "calcRelativeAxisConstraints", "axis", "calcRelativeConstraints", "layoutBox", "top", "left", "bottom", "right", "calcViewportAxisConstraints", "layoutAxis", "constraintsAxis", "calcViewportConstraints", "constraintsBox", "calcOrigin2", "sourceLength", "calcLength", "targetLength", "progress", "clamp", "rebaseAxisConstraints", "constraints", "relativeConstraints", "defaultElastic", "resolveDragElastic", "dragElastic", "resolveAxisElastic", "minLabel", "maxLabel", "resolvePointElastic", "label", "eachAxis", "convertBoundingBoxToBox", "convertBoxToBoundingBox", "x", "y", "transformBoxPoints", "transformPoint2", "topLeft", "bottomRight", "isIdentityScale", "scale2", "hasScale", "scaleX", "scaleY", "hasTransform", "values", "has2DTranslate", "is2DTranslate", "scalePoint", "originPoint", "distanceFromOrigin", "scaled", "applyPointDelta", "translate", "boxScale", "applyAxisDelta", "applyBoxDelta", "box", "applyTreeDeltas", "treeScale", "treePath", "isSharedTransition", "treeLength", "delta", "transformBox", "snapToDefault", "translateAxis", "distance2", "transformAxis", "transforms", "scaleKey", "originKey", "axisOrigin", "xKeys", "yKeys", "measureViewportBox", "measurePageBox", "rootProjectionNode2", "viewportBox", "scroll2", "elementDragControls", "VisualElementDragControls", "visualElement", "originEvent", "snapToCursor", "dragPropagation", "onDragStart", "getGlobalLock", "current", "percent", "measuredAxis", "animationState", "dragDirectionLock", "onDirectionLock", "onDrag", "getCurrentDirection", "isDragging", "velocity", "onDragEnd", "_point", "shouldDrag", "axisValue", "prevConstraints", "onMeasureDragConstraints", "constraintsElement", "invariant", "measuredConstraints", "userConstraints", "dragMomentum", "dragTransition", "dragSnapToOrigin", "onDragTransitionEnd", "momentumAnimations", "transition", "bounceStiffness", "bounceDamping", "inertia2", "animateMotionValue", "dragKey", "externalMotionValue", "boxProgress", "stopPointerListener", "dragListener", "measureDragConstraints", "stopMeasureLayoutListener", "stopResizeListener", "stopLayoutUpdateListener", "hasLayoutChanged", "motionValue2", "direction", "currentDirection", "lockThreshold", "DragGesture", "dragControls", "asyncHandler", "PanGesture", "pointerDownEvent", "onPanSessionStart", "onPanStart", "onPan", "onPanEnd", "globalProjectionState", "pixelsToPercent", "pixels", "correctBorderRadius", "correctBoxShadow", "projectionDelta", "original", "shadow", "complex", "template", "xScale", "yScale", "averageScale", "MeasureLayoutWithContext", "e", "layoutGroup", "switchLayoutGroup", "addScaleCorrector", "defaultScaleCorrectors", "layoutDependency", "isPresent2", "stack", "promoteContext", "safeToRemove", "MeasureLayout", "usePresence", "re", "LayoutGroupContext", "SwitchLayoutGroupContext", "borders", "numBorders", "asNumber", "isPx", "mixValues", "follow", "lead", "progress2", "shouldCrossfadeOpacity", "isOnlyMember", "easeCrossfadeIn", "easeCrossfadeOut", "borderLabel", "followRadius", "getRadius", "leadRadius", "radiusName", "compress", "circOut", "easing", "p", "copyAxisInto", "originAxis", "copyBoxInto", "originBox", "removePointDelta", "removeAxisDelta", "sourceAxis", "removeAxisTransforms", "xKeys2", "yKeys2", "removeBoxTransforms", "sourceBox", "isAxisDeltaZero", "isDeltaZero", "boxEquals", "boxEqualsRounded", "aspectRatio", "NodeStack", "prevLead", "indexOfNode", "member", "preserveFollowOpacity", "crossfade", "resumingFrom", "buildProjectionTransform", "latestTransform", "xTranslate", "yTranslate", "rotate", "rotateX", "rotateY", "elementScaleX", "elementScaleY", "record", "data", "isSVGElement", "animateSingleValue", "keyframes2", "motionValue$1", "transformAxes", "animationTarget", "id2", "projectionFrameData", "createProjectionNode", "attachResizeListener", "defaultParent", "measureScroll", "checkIsScrollRoot", "resetTransform", "propagateDirtyNodes", "resolveTargetDelta", "calcProjection", "cleanDirtyNodes", "subscriptionManager", "isLayoutDirty", "cancelDelay", "resizeUnblockUpdate", "finishAnimation", "hasRelativeTargetChanged", "newLayout", "layoutTransition", "defaultLayoutTransition", "onLayoutAnimationStart", "onLayoutAnimationComplete", "targetChanged", "hasOnlyRelativeTargetChanged", "animationOptions", "getValueTransition", "resetRotation", "shouldNotifyListeners", "clearMeasurements", "clearIsLayoutDirty", "resetTransformStyle", "updateLayout", "notifyLayoutUpdate", "now", "steps", "clearSnapshot", "removeLeadSnapshots", "prevLayout", "phase", "needsMeasurement", "isResetRequested", "hasProjection", "transformTemplateValue", "transformTemplateHasChanged", "removeTransform", "pageBox", "roundBox", "boxWithoutScroll", "rootScroll", "transformOnly", "withTransforms", "boxWithoutTransform", "nodeBox", "forceRecalculation", "isShared", "relativeParent", "calcRelativePosition", "calcRelativeBox", "canSkip", "prevTreeScaleX", "prevTreeScaleY", "createDelta", "prevProjectionTransform", "calcBoxDelta", "notifyAll2", "snapshot", "snapshotLatestValues", "mixedValues", "targetDelta", "relativeLayout", "snapshotSource", "layoutSource", "isSharedLayoutAnimation", "hasOpacityCrossfade", "prevRelativeTarget", "mixAxisDelta", "mixBox", "targetWithTransforms", "shouldAnimatePositionOnly", "xLength", "yLength", "config", "needsReset", "hasRotate", "resetValues", "_b", "styles", "resolveMotionValue", "emptyStyles", "valuesToRender", "correct", "applyTo", "corrected", "num", "measuredLayout", "animationType", "axisSnapshot", "layoutDelta", "visualDelta", "parentSnapshot", "parentLayout", "relativeSnapshot", "onExitComplete", "output", "mixAxis", "from", "to", "userAgentContains", "string", "navigator", "roundPoint", "roundAxis", "isNear", "DocumentProjectionNode", "notify2", "rootProjectionNode", "HTMLProjectionNode", "documentNode", "drag", "splitCSSVariableRegex", "parseCSSVariable", "match", "token", "fallback", "maxDepth", "getVariableValue", "depth", "resolved", "trimmed", "isNumericalString", "isCSSVariableToken", "resolveCSSVariables", "transitionEnd", "positionalKeys", "isPositionalKey", "hasPositionalKey", "isNumOrPxType", "v", "number", "getPosFromMatrix", "matrix", "pos", "getTranslateFromMatrix", "pos2", "pos3", "_bbox", "matrix3d", "transformKeys", "nonTranslationalTransformKeys", "removeNonTranslationalTransform", "removedTransforms", "positionalValues", "paddingLeft", "paddingRight", "paddingTop", "paddingBottom", "convertChangedValueTypes", "changedKeys", "originBbox", "elementComputedStyle", "display", "targetBbox", "checkAndConvertChangedValueTypes", "targetPositionalKeys", "removedTransformValues", "hasAttemptedToRemoveTransformValues", "changedValueTypeKeys", "fromType", "findDimensionValueType", "toType", "isKeyframesTarget", "numKeyframes", "fromIndex", "scrollY", "convertedTarget", "unitConversion", "parseDomVariant", "DOMVisualElement", "transformValues", "isMounted", "getOrigin", "checkTargetForNewValues", "parsed", "getComputedStyle2", "HTMLVisualElement", "defaultType", "getDefaultValueType", "computedStyle", "SVGVisualElement", "createDomVisualElement", "layout", "preloadedFeatures", "animations", "motion", "m", "createMotionProxy", "createDomMotionConfig", "useIsMounted", "isMounted", "pe", "useIsomorphicLayoutEffect", "useForceUpdate", "forcedRenderCount", "setForcedRenderCount", "ye", "forceRender", "te", "frame", "useUnmountEffect", "callback", "ue", "PopChildMeasure", "I", "prevProps", "element", "size", "PopChild", "children", "isPresent2", "id4", "ae", "ref", "ie", "width", "height", "top", "left", "style", "B", "q", "PresenceChild", "initial", "onExitComplete", "custom", "presenceAffectsLayout", "mode", "presenceChildren", "useConstant", "newChildrenMap", "context", "se", "childId", "isComplete", "_", "key", "PresenceContext", "getChildKey", "child", "updateChildLookup", "allChildren", "onlyElements", "filtered", "j", "J", "AnimatePresence", "exitBeforeEnter", "invariant", "re", "LayoutGroupContext", "filteredChildren", "childrenToRender", "exitingChildren", "presentChildren", "isInitialRender", "x", "presentKeys", "targetKeys", "numPresent", "i", "component", "insertionIndex", "exitingComponent", "onExit", "removeIndex", "presentChild", "MotionConfig", "isValidProp", "config", "loadExternalIsValidProp", "MotionConfigContext", "DeprecatedLayoutGroupContext", "z", "notify", "node", "nodeGroup", "nodes", "subscriptions", "dirtyAll", "unsubscribe", "shouldInheritGroup", "inherit", "shouldInheritId", "LayoutGroup", "children", "id4", "layoutGroupContext", "re", "LayoutGroupContext", "deprecatedLayoutGroupContext", "forceRender", "key", "useForceUpdate", "context", "pe", "upstreamId", "memoizedContext", "se", "B", "useMotionValue", "initial", "value", "useConstant", "motionValue", "isStatic", "MotionConfigContext", "setLatest", "ye", "ue", "isCustomValueType", "v", "getMixer2", "transform", "args", "useImmediate", "argOffset", "inputValue", "inputRange", "outputRange", "options", "interpolator", "interpolate", "useCombineMotionValues", "values", "combineValues", "updateValue", "useIsomorphicLayoutEffect", "scheduleUpdate", "frame", "cancelFrame", "useComputed", "compute", "collectMotionValues", "useTransform", "input", "inputRangeOrTransformer", "transformer", "useListTransform", "latest", "numValues", "ReorderContext", "checkReorder", "order", "offset", "velocity", "index", "item2", "nextOffset", "nextItem", "item", "nextLayout", "nextItemCenter", "mix", "moveItem", "ReorderGroup", "as", "axis", "onReorder", "props", "externalRef", "Component2", "motion", "isReordering", "invariant", "layout2", "entry", "compareMin", "newOrder", "getValue", "Group", "Y", "a", "b", "useDefaultMotionValue", "defaultValue", "isMotionValue", "ReorderItem", "style", "onDrag", "point2", "zIndex", "latestX", "latestY", "measuredLayout", "registerItem", "updateOrder", "event", "gesturePoint", "measured", "Item", "domAnimation", "createDomVisualElement", "animations", "gestureAnimations", "domMax", "drag", "layout", "resolveElements", "elements", "scope", "selectorCache", "_a", "root", "invariant", "resizeHandlers", "observer", "getElementSize", "target", "borderBoxSize", "inlineSize", "blockSize", "notifyTarget", "contentRect", "handler", "notifyAll", "entries", "createResizeObserver", "resizeElement", "element", "elementHandlers", "windowCallbacks", "windowResizeHandler", "createWindowResizeHandler", "size", "window", "info", "callback", "resizeWindow", "resize", "a", "b", "maxElapsed2", "createAxisInfo", "createScrollInfo", "keys", "updateAxisInfo", "axisName", "time", "axis", "length", "position", "prev", "prevTime", "progress", "elapsed", "velocityPerSecond", "updateScrollInfo", "calcInset", "container", "inset", "current", "svgBoundingBox", "parentBoundingBox", "x", "y", "svg", "parent", "ScrollOffset", "namedEdges", "resolveEdge", "edge", "delta", "asNumber2", "defaultOffset2", "resolveOffset", "offset", "containerLength", "targetLength", "targetInset", "offsetDefinition", "targetPoint", "containerPoint", "point", "getTargetSize", "resolveOffsets", "options", "lengthLabel", "targetSize", "containerSize", "hasChanged", "numOffsets", "i", "interpolate", "defaultOffset", "measure", "node", "createOnScrollHandler", "onScroll", "scrollListeners", "resizeListeners", "onScrollHandlers", "getEventTarget", "scrollInfo", "containerHandlers", "containerHandler", "measureAll", "updateAll", "frameData", "notifyAll2", "listener2", "frame", "listener", "cancelFrame", "currentHandlers", "scrollListener", "refWarning", "name", "ref", "warning", "createScrollMotionValues", "motionValue", "useScroll", "layoutEffect", "values", "useConstant", "useIsomorphicLayoutEffect", "ue", "useReducedMotion", "hasReducedMotionListener", "initPrefersReducedMotion", "shouldReduceMotion", "ye", "prefersReducedMotion", "useReducedMotionConfig", "reducedMotionPreference", "reducedMotion", "re", "MotionConfigContext", "stopAnimation", "visualElement", "value", "animationControls", "hasMounted", "subscribers", "controls", "definition", "transitionOverride", "invariant", "animations2", "animateVisualElement", "setValues", "wrap", "min", "max", "v", "rangeSize", "observeTimeline", "update", "timeline", "prevProgress", "onFrame", "currentTime", "progress2", "frame", "cancelFrame", "supportsScrollTimeline", "memo", "window", "GroupPlaybackControls", "onResolve", "onReject", "propName", "newValue", "i", "cancelAll", "animation", "cancelTimeline", "time", "speed", "methodName", "isDOMKeyframes", "keyframes2", "createVisualElement", "element", "options", "node", "isSVGElement", "SVGVisualElement", "HTMLVisualElement", "visualElementStore", "createGeneratorEasing", "scale2", "generator", "spring", "duration", "calcGeneratorDuration", "maxGeneratorDuration", "millisecondsToSeconds", "calcNextTime", "current", "next", "prev", "labels", "_a", "getEasingForSegment", "easing", "isEasingArray", "eraseKeyframes", "sequence", "startTime", "endTime", "keyframe", "removeItem", "addKeyframes", "offset", "mix", "compareByTime", "a", "b", "defaultSegmentEasing", "createAnimationsFromSequence", "defaultTransition", "sequenceTransition", "scope", "defaultDuration", "animationDefinitions", "sequences", "elementCache", "timeLabels", "prevTime", "totalDuration", "segment", "subject", "transition", "maxDuration3", "resolveValueSequence", "valueKeyframes", "valueTransition", "valueSequence", "elementIndex", "numElements", "valueKeyframesAsList", "keyframesAsList", "delay2", "times", "defaultOffset", "type", "remainingTransition", "ease2", "calculatedDelay", "numKeyframes", "absoluteDelta", "isNumberKeyframesArray", "delta", "springTransition", "secondsToMilliseconds", "springEasing", "targetTime", "remainder", "fillOffset", "isMotionValue", "subjectSequence", "getSubjectSequence", "getValueSequence", "elements", "resolveElements", "key", "getValueTransition2", "valueSequences", "valueOffset", "valueEasing", "at", "progress", "name", "isNumber", "animateElements", "elementOrSelector", "animateTarget", "isSequence", "animateSequence", "animateSingleValue", "createScopedAnimate", "scopedAnimate", "valueOrElementOrSequence", "animate", "useAnimationControls", "controls", "useConstant", "animationControls", "useIsomorphicLayoutEffect", "useAnimation", "isMotionComponent", "component", "motionComponentSymbol", "unwrapMotionComponent", "useInstantLayoutTransition", "startTransition", "callback", "rootProjectionNode", "useInstantTransition", "forceUpdate", "forcedRenderCount", "useForceUpdate", "startInstantLayoutTransition", "unlockOnFrameRef", "pe", "ue", "frame", "instantAnimationState", "useResetProjection", "te", "root", "createObject", "useVisualState", "makeUseVisualState", "createObject", "cancelSync", "stepsOrder", "acc", "key", "process2", "cancelFrame", "require_hsluv", "__commonJS", "exports", "module", "hsluv", "a", "b", "x", "y", "point", "line", "slope", "intercept", "angle", "m2", "theta", "L", "result", "sub1", "sub2", "_g", "m1", "m3", "_g1", "t", "top1", "top2", "bottom", "bounds", "min", "bound", "length", "H", "hrad", "sum", "i", "c", "tuple", "rgbl", "Y", "X", "Z", "divider", "varU", "varV", "U", "V", "C", "Hrad", "S", "max", "h", "chan", "digit2", "digit1", "hex", "ret", "n", "s", "root", "require_eventemitter3", "has", "prefix2", "Events", "EE", "fn", "context", "once", "addListener", "emitter", "event", "listener", "evt", "clearEvent", "EventEmitter2", "names", "events2", "name", "handlers", "l", "ee", "listeners", "a1", "a2", "a3", "a4", "a5", "len", "args", "j", "require_browser", "process13", "cachedSetTimeout", "cachedClearTimeout", "defaultSetTimout", "defaultClearTimeout", "runTimeout", "fun", "runClearTimeout", "marker", "queue", "draining", "currentQueue", "queueIndex", "cleanUpNextTick", "drainQueue", "timeout", "Item", "array", "noop", "dir", "require_react_is_production_min", "d", "e", "f", "g", "k", "p", "q", "r", "v", "w", "z", "u", "A", "require_react_is", "require_hoist_non_react_statics_cjs", "reactIs", "REACT_STATICS", "KNOWN_STATICS", "FORWARD_REF_STATICS", "MEMO_STATICS", "TYPE_STATICS", "getStatics", "component", "defineProperty", "getOwnPropertyNames", "getOwnPropertySymbols", "getOwnPropertyDescriptor", "getPrototypeOf", "objectPrototype", "hoistNonReactStatics", "targetComponent", "sourceComponent", "blacklist", "inheritedComponent", "keys3", "targetStatics", "sourceStatics", "key7", "descriptor", "require_fontfaceobserver_standalone", "B", "D", "E", "F", "G", "J", "window", "K", "b2", "M", "b3", "c2", "N", "I", "computeRelativePath", "from", "to", "fromDir", "getDirAndFile", "toDir", "toFile", "relativePath", "relative", "path", "index", "CHAR_DOT", "CHAR_FORWARD_SLASH", "StringPrototypeCharCodeAt", "str", "StringPrototypeLastIndexOf", "searchString", "StringPrototypeSlice", "start", "end", "normalizeString", "fromStart", "fromEnd", "fromLen", "toStart", "toLen", "lastCommonSep", "fromCode", "out", "allowAboveRoot", "separator", "isPathSeparator", "code", "res", "lastSegmentLength", "lastSlash", "dots", "lastSlashIndex", "isObject", "value", "isString", "preloadKey", "isLazyComponentType", "componentType", "lazy", "factory", "LazyComponent", "factoryPromise", "LoadedComponent", "Component15", "props", "ref", "getRouteElementId", "route", "hash2", "renderPage", "Page4", "defaultPageStyle", "element", "NotFoundError", "ErrorBoundary", "error", "nextProps", "prevState", "newState", "notFoundPage", "pathVariablesRegExpRaw", "pathVariablesRegExp", "pushRouteState", "routeId", "currentRoutePath", "pathVariables", "localeId", "newPath", "getPathForRoute", "useReplaceInitialState", "disabled", "initialPathVariables", "initialLocaleId", "usePopStateHandler", "setCurrentRouteId", "popStateHandler", "state", "getHashForRoute", "hashVariables", "resolvedHash", "variables", "p1", "_a", "relative2", "currentPath", "_a2", "switchLocale", "locale", "memoPathRoutes", "memoPaths", "lastRoutes", "getRouteInfoMemo", "routes", "pathDepth", "depth1", "depth2", "inferInitialRouteFromPath", "decodedLocationPath", "fallback", "locales", "pathRoutes", "paths", "activeLocale", "locationPath", "firstPathSegment", "slug", "defaultLocale", "exactMatch", "match", "matchPath", "rootPath", "firstRoute", "pathWithTrimmedSlashes", "routePath", "pathVariablesKeys", "routePathRegExpString", "escapeStringRegExp", "_", "routePathRegExp", "matches", "pathVariablesValues", "existingValue", "string", "key", "isRoute", "fillPathVariables", "isSamePage", "aPathVariables", "bPathVariables", "useGetRouteCallback", "RouterContext", "RouterAPIProvider", "api", "children", "useRouter", "RoutesProvider", "getRoute", "useForceUpdate2", "setForcedRenderCount", "defaultLocaleInfo", "LocaleInfoContext", "useLocaleInfo", "useLocaleCode", "_a", "_b", "useLocaleInfo", "updateScrollPosition", "hash2", "smoothScroll", "element", "scrollElementIntoView", "window", "useScheduleRenderSideEffects", "dep", "actions", "e", "_a", "action", "cb", "Router", "defaultPageStyle", "disableHistory", "initialPathVariables", "initialRoute", "notFoundPage", "routes", "initialLocaleId", "locales", "useReplaceInitialState", "currentRouteRef", "currentPathVariablesRef", "currentLocaleIdRef", "currentLocaleId", "activeLocale", "id", "slug", "forceUpdate", "useForceUpdate2", "localeInfo", "locale", "currentRouteId2", "currentRoute", "switchLocale", "Z", "scheduleSideEffect", "setCurrentRouteId", "routeId", "pathVariables", "localeId", "usePopStateHandler", "navigate", "_b", "newRoute", "inUse", "path", "match", "pathVariablesRegExp", "usedVariable", "key7", "routeElementId", "getRouteElementId", "isSamePage", "route", "pushRouteState", "getRoute", "useGetRouteCallback", "currentRouteId", "currentPathVariables", "api", "current", "pathWithFilledVariables", "fillPathVariables", "remountKey", "RouterAPIProvider", "LocaleInfoContext", "ErrorBoundary", "renderPage", "scrollIntoViewOptions", "CurrentRouteContext", "useCurrentRoute", "router", "useRouter", "override", "re", "useCurrentPathVariables", "_a", "useCurrentRoute", "useRoute", "routeId", "routerAPI", "useRouter", "useRoutePreloader", "routeIds", "enabled", "getRoute", "e", "route", "preloadComponent", "component", "isLazyComponentType", "useRouteElementId", "id", "targetRouteId", "_a", "currentRoute", "useCurrentRoute", "route", "useRoute", "e", "getRouteElementId", "warningMessages", "warnOnce", "keyMessage", "rest", "deprecationWarning", "removedItem", "removalVersion", "replacement", "replacementText", "warningText", "Observers", "observer", "isCalled", "change", "transaction", "accumulatedChange", "finishObservers", "Animatable", "Animatable2", "value", "isAnimatable", "AnimatableValue", "update", "transactionId", "updatedValues", "animatable", "finish", "defaultValue", "object", "result", "key7", "onUpdateKey", "finishTransactionKey", "animatableInterpolation", "currentInterpolation", "from", "to", "fromValue", "toValue", "progress2", "v", "oldValue", "handler", "isMotionValue2", "MotionValue", "roundedNumber", "decimals", "d", "multiplier", "roundWithOffset", "value", "offset", "Point", "x", "y", "Point3", "args", "previousValue", "currentValue", "a", "b", "point", "deltaX", "deltaY", "lastValue", "diff", "maxDiff", "nTimes", "center", "minDamping", "SpringTensionFrictionDefaults", "import_hsluv", "__toESM", "require_hsluv", "cssNames", "modulate", "value", "rangeA", "rangeB", "limit", "fromLow", "fromHigh", "toLow", "toHigh", "fromDelta", "toDelta", "result", "isNumeric", "percentToFraction", "val", "digits", "numberFromString", "input", "match", "hsluvToRgb", "rgbToHsluvExternal", "import_hsluv", "rgbToHsluv", "r", "g", "b", "h", "s", "l", "rgbaFromHusl", "a", "rgb", "hsvToStr", "v", "_h", "_s", "_v", "rgbToRgb", "bound01", "rgbToHex", "allow3Char", "hex", "pad2", "rgbToHsl", "_r", "_g", "_b", "max", "min", "d", "hue2rgb", "p", "q", "t", "hslToRgb", "rgbToHsv", "hsvToRgb", "i", "f", "mod", "n", "_max", "_n", "isOnePointZero", "processPercent", "isPercentage", "char", "matchers", "cssInteger", "cssUnit", "permissiveMatch3", "permissiveMatch4", "stringToObject", "inputColor", "_a", "_c", "_d", "_e", "_f", "_i", "_j", "_k", "_l", "_m", "_o", "_p", "_q", "_t", "_u", "_w", "_x", "_y", "_z", "_A", "_B", "trimLeft", "trimRight", "color2", "named", "cssNames", "parseIntFromHex", "convertHexToDecimal", "cache", "Color", "Color2", "c", "createColor", "created", "colorData", "getCompleteColorStrategy", "newColor", "ColorMixModel", "colorModel", "initialValue", "colorString", "hsl", "hsv", "key7", "amount", "angle", "alphaValue", "colorA", "colorB", "model", "progress2", "from", "toColor", "fromColor", "mixer", "fraction2", "hslA", "hslB", "fromH", "toH", "deltaH", "tween", "gen", "name", "deltaR", "deltaG", "deltaB", "deltaR2", "deltaG2", "deltaB2", "tolerance", "channelToDecimal", "interpolate", "convertChannelToLinearRgb", "channel", "abs", "l1", "l2", "colorOrR", "completeColor", "getCompleteColorFromRGB", "getCompleteColorFromString", "getCompleteColorFromHSL", "getCompleteColorFromHSV", "correctAlpha", "Defaults2", "mockWindow", "query", "safeWindow", "window", "_raf", "f", "__raf", "raf", "import_eventemitter3", "__toESM", "require_eventemitter3", "EventEmitter3", "EventEmitter", "listeners", "eventName", "fn", "once", "unique", "context", "name", "handler", "count", "args", "LoopTimeStep", "Loop", "start", "task", "_a", "postEventTasks", "length", "i", "value", "MainLoop", "RenderTarget", "RenderTarget2", "RenderEnvironment", "RenderTarget2", "current", "RenderEnvironment", "hasRestrictions", "target", "RenderTarget", "correctBorderScale", "axis", "latest", "delta", "treeScale", "corrected", "addScaleCorrector", "assert", "condition", "msg2", "_a", "_b", "e", "lines", "assertNever", "x", "error", "LayoutIdContext", "args", "LayoutIdProvider", "children", "re", "cache3", "pe", "screen", "usedIds", "getLayoutId", "te", "id", "name", "duplicatedFrom", "cacheKey", "previousId", "nodeIdentifier", "possibleMatch", "index", "duplicatedId", "match", "byLastIdMatch", "matchedLayoutId", "shouldUseNamedLastIdMatch", "previousLayoutId", "shouldUseNamedMatch", "last", "possible", "rootDuplicatedId", "identifier", "value", "layoutId", "nextValue", "nextLayoutId", "lastId", "possibleId", "persistLayoutIdCache", "contextValue", "initialValue", "AutomaticLayoutIds", "enabled", "props", "context", "se", "useConstant", "init", "ref", "baseStyle", "errorStyle", "textStyle", "titleStyle", "messageStyle", "ErrorPlaceholder", "file", "title", "stripSlash", "message", "HAND_IMG_GAP_BOTTOM", "isFiniteNumber", "value", "isEmpty", "obj", "isReactElement", "test", "isReactChild", "Rect", "Rect2", "equals", "rect", "other", "size2", "a", "b", "n", "delta", "xOffset", "yOffset", "inflate", "value", "doubleValue", "x", "y", "rectMaxX", "rectMaxY", "width", "height", "decimals", "roundedNumber", "ps", "xValues", "point", "yValues", "min", "max", "rect1", "rect2", "x2", "y2", "matrix", "x1", "y1", "x3", "y3", "x4", "y4", "rectA", "rectB", "aMax", "bMax", "rects", "comparingRect", "rectMinX", "rectMinY", "rectMidX", "rectMidY", "Point", "fromAnyDefaults", "defaults", "minSize", "minWidth", "minHeight", "diffX", "diffY", "ConstraintMask", "ConstraintMask2", "constraints", "isFiniteNumber", "valueToDimensionType", "value", "trimmedValue", "ConstraintValues", "ConstraintValues2", "props", "left", "right", "top", "bottom", "width", "height", "centerX", "centerY", "aspectRatio", "autoSize", "isAnimatable", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "Animatable", "parsedHeight", "centerAnchorX", "centerAnchorY", "values", "parentSizeInfo", "freeSpace", "parentWidth", "parentHeight", "hOpposingPinsOffset", "pinnedOffset", "assertNever", "vOpposingPinsOffset", "sizeAfterApplyingConstraintsAndAspectRatio", "pixelAlign", "_a", "x", "y", "parentSizeForPositioning", "positioningParentWidth", "positioningParentHeight", "f", "Rect", "defaultWidth", "defaultHeight", "getConstraintValue", "constraint", "parentSize", "viewport", "constrainHeight", "constrainWidth", "w", "h", "start", "end", "containsInvalidStringValues", "props", "constraintsEnabled", "sizeFromFiniteNumberProps", "size2", "width", "height", "isFiniteNumber", "rectFromFiniteNumberProps", "left", "top", "calculateRect", "parentSize", "pixelAlign", "parentSizeDisabled", "constraintValues", "getConstraintValues", "enabledParentSize", "deprecatedParentSize", "parentSizeInfo", "ConstraintValues", "right", "bottom", "center", "_constraints", "aspectRatio", "autoSize", "constraintMask", "ConstraintMask", "valueToDimensionType", "widthValue", "heightValue", "widthType", "heightType", "parsedWidth", "parsedHeight", "centerAnchorX", "centerAnchorY", "ConstraintsContext", "e", "deprecatedParentSize", "parentSize", "useParentSize", "isSize", "o", "ProvideParentSize", "props", "currentParentSize", "children", "value", "getParentWidth", "getParentHeight", "ConsumeParentSize", "useProvideParentSize", "node", "useConstraints", "calculateRect", "ControlType", "ControlType2", "isFlexboxGapSupportedCached", "isFlexboxGapSupported", "flex", "isSupported", "flexboxGapNotSupportedClass", "initialized", "installFlexboxGapWorkaroundIfNeeded", "richTextStylesRule", "richTextParagraphSpacingStylesRule", "richTextBackgroundMaskStylesRule", "richTextLinkStylesRule", "richTextLinkHoverStylesRule", "richTextLinkCurrentStylesRule", "richTextLinkCurrentHoverStylesRule", "richTextBoldStylesRule", "richTextItalicStylesRule", "richTextImageRule", "richTextBlockElementResetRule", "richTextStylesPresetResetRule", "richTextStylesList", "richTextStylesListItem", "richTextStylesNumberedListMarker", "richTextStylesBulletedListMarker", "deprecatedRichTextCSSRules", "richTextCSSRules", "defaultCache", "defaultSheet", "injectCSSRule", "cssRule", "sheet", "cache3", "styleElement", "componentCSSRules", "textAlignmentRule", "textBlockSpanRule", "textInlineSpanRule", "renderTextStylesRule", "textStylesRule", "linkStylesRule", "linkHoverStylesRule", "linkCurrentStylesRule", "textCSSRules", "stackPositionRule", "nativeStackGapRules", "stackGapRule", "stackDirectionRuleVertical", "stackDirectionRuleHorizontal", "stackCSSRules", "navigationCSSRules", "scrollCSSRules", "nativeScrollCSSRules", "deviceComponentCSSRules", "pageContentWrapperWrapperCSSRules", "presenceCSS", "cursorCSS", "frameCSS", "resetCSS", "hideScrollbars", "frameCSSRules", "isPreview", "svgCSSRules", "combineCSSRules", "combinedCSSRules", "combinedCSSRulesForPreview", "didInject", "injectComponentCSSRules", "styles", "RenderTarget", "rule", "isFunction", "isBoolean", "isString2", "isNumber", "isArray", "isObject2", "isUndefined", "isValidDate", "isReactComponent", "component", "optionalKey", "controlIsOptional", "control", "getControlDefaultValue", "control", "isString2", "isBoolean", "isUndefined", "isNumber", "isObject2", "value", "applyControlDefaultsToDefaultProps", "isArray", "defaultProps", "controls", "controlKey", "currentDefault", "controlIsOptional", "defaultValue", "getDefaultProps", "component", "applyControlDefaultsToReactDefaultProps", "isReactComponent", "addPropertyControls", "propertyControls", "getPropertyControls", "presetsBase", "devicePresets", "devicePresetsMap", "devicePresets", "map", "preset", "import_process3", "__toESM", "require_browser", "memoize", "fn", "cache3", "arg", "reactPropsRegex", "isPropValid", "prop", "useIsomorphicLayoutEffect2", "fe", "ue", "mockWithWarning", "message", "warnOnce", "implementation", "image", "_a", "rect", "nodeId", "element", "runtime", "isRuntimeInjected", "runtimeProxy", "target", "key7", "reciever", "minZoomForPixelatedImageRendering", "image", "containerSize", "devicePixelRatio3", "_a", "_b", "_c", "_d", "frameWidth", "frameHeight", "imageWidth", "imageHeight", "frameAspectRatio", "imageAspectRatio", "imageRenderingForZoom", "zoom", "minPixelatedZoom", "wrapperStyle", "placeholderStyle", "cssObjectFit", "imageFit", "cssImageRendering", "RenderTarget", "safeWindow", "RenderEnvironment", "getImageStyle", "InnerImage", "nodeId", "alt", "wrapperRef", "e", "source", "runtime", "imageStyle", "imageElement", "useIsomorphicLayoutEffect2", "wrapper", "BackgroundImageComponent", "layoutId", "props", "hasImage", "isString2", "hasPlaceholder", "motion", "key2", "BackgroundImage", "BackgroundImage2", "applyForwardOverrides", "background", "_forwardedOverrideId", "_forwardedOverrides", "id", "forwardedOverrideId", "src", "backgroundImageFromProps", "backgroundImage", "Animatable", "collectBorderStyleForProps", "style", "collapseEqualBorders", "borderWidth", "borderStyle", "borderColor", "borderTop", "borderBottom", "borderLeft", "borderRight", "Border", "import_process", "__toESM", "require_browser", "safeNavigator", "navigator", "isBrowser2", "safariVersion", "version2", "result", "safeNavigator", "isChrome", "isEdge", "isSafari", "isFramerX", "safeNavigator", "isEdge", "isTest", "import_process", "isChrome2", "isChrome", "layoutHintDataPropsForCenter", "center", "props", "RenderTarget", "nodeIdFromString", "str", "processOverrideForwarding", "children", "_forwardedOverrides", "extractions", "key7", "propName", "e", "child", "isCustomValue", "v", "isColorProp", "resolveSingleCustomValue", "invariant", "Color", "resolveCustomValues", "numValues", "resolved", "customValueHandlers", "inputValues", "outputValues", "value", "px", "complex", "transformValues", "values", "transformedValues", "valueHandler", "transformTemplate", "_", "generated", "useLayoutId", "specificLayoutId", "postfix", "name", "layoutIdKey", "duplicatedFrom", "__fromCodeComponentNode", "drag", "getLayoutId", "enabled", "re", "LayoutIdContext", "se", "existingLayoutId", "layoutIdCandidate", "ComponentContainerContext", "resizeObservers", "hasActiveObservations", "ro", "hasSkippedObservations", "msg", "deliverResizeLoopError", "event", "window", "ResizeObserverBoxOptions", "ResizeObserverBoxOptions2", "freeze", "obj", "ResizeObserverSize", "ResizeObserverSize2", "inlineSize", "blockSize", "DOMRectReadOnly", "DOMRectReadOnly2", "x", "y", "width", "height", "_a", "top", "right", "bottom", "left", "rectangle", "isSVG", "target", "isHidden", "_b", "offsetWidth", "offsetHeight", "isElement", "scope", "isReplacedElement", "global", "cache2", "scrollRegexp", "verticalRegexp", "IE", "parseDimension", "pixel", "size", "switchSizes", "zeroBoxes", "calculateBoxSizes", "forceRecalculation", "cs", "svg", "removePadding", "canScrollVertically", "canScrollHorizontally", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "borderTop", "borderRight", "borderBottom", "borderLeft", "horizontalPadding", "verticalPadding", "horizontalBorderArea", "verticalBorderArea", "horizontalScrollbarThickness", "verticalScrollbarThickness", "widthReduction", "heightReduction", "contentWidth", "contentHeight", "borderBoxWidth", "borderBoxHeight", "boxes", "calculateBoxSize", "observedBox", "borderBoxSize", "contentBoxSize", "devicePixelContentBoxSize", "ResizeObserverEntry", "ResizeObserverEntry2", "calculateDepthForNode", "node", "depth", "parent", "broadcastActiveObservations", "shallowestDepth", "callbacks2", "entries", "ot", "entry", "targetDepth", "_i", "callbacks_1", "callback", "gatherActiveObservationsAtDepth", "process3", "trigger", "callbacks", "notify", "cb", "queueMicroTask", "toggle_1", "el_1", "config", "queueResizeObserver", "watching", "isWatching", "CATCH_PERIOD", "observerConfig", "events", "time", "timeout", "scheduled", "Scheduler", "Scheduler2", "_this", "until", "elementsHaveResized", "scheduler", "updateCount", "n", "skipNotifyOnElement", "ResizeObservation", "ResizeObservation2", "size2", "ResizeObserverDetail", "ResizeObserverDetail2", "resizeObserver", "observerMap", "getObservationIndex", "observationTargets", "i", "ResizeObserverController", "ResizeObserverController2", "detail", "options", "firstObservation", "index", "lastObservation", "ResizeObserver", "ResizeObserver2", "useForceUpdate3", "setForcedRenderCount", "_sharedResizeObserver", "_callbacks", "SharedObserver", "__privateAdd", "_a", "ResizeObserver2", "safeWindow", "ResizeObserver", "__privateSet", "entries", "entry", "callbackForElement", "__privateGet", "element", "callback", "sharedResizeObserver", "isBrowser2", "useRerenderOnResize", "ref", "update", "useForceUpdate3", "ue", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "getMeasurableCodeComponentChildren", "element", "SIZE_COMPATIBILITY_WRAPPER_ATTRIBUTE", "isMeasurable", "unwrapInlinedDisplayContents", "firstMeasurableChild", "useMeasureLayout", "props", "ref", "getChildren", "options", "id", "visible", "_needsMeasure", "skipHook", "inCodeComponent", "re", "ComponentContainerContext", "onCanvas", "RenderTarget", "useIsomorphicLayoutEffect2", "runtime", "nodeIdFromString", "measureClosestComponentContainer", "container", "hasProp", "o", "prop", "withEquals", "valueEqual", "a", "b", "arrayShallowEqual", "length", "i", "arrayDeepEqual", "equal", "mapShallowEqual", "key7", "aValue", "mapDeepEqual", "setEqual", "objectShallowEqual", "keys3", "objectDeepEqual", "deep", "typeA", "aIsArray", "bIsArray", "aIsMap", "bIsMap", "aIsSet", "bIsSet", "dateA", "dateB", "regexpA", "regexpB", "isEqual", "error", "smallValue", "translateZ", "useTranslateZHack", "isFramerX", "isSafari", "isTest", "forceLayerBackingWithMotionStyle", "motionStyle", "forceLayerBackingWithCSSProperties", "cssProperties", "setTranslateZHack", "style", "enabled", "transform2", "resetSetStyle", "toValue", "microtask", "value", "reset", "Layer", "I", "usingMotionStyle", "nextProps", "nextState", "prevProps", "manageCache", "cache3", "maxEntries", "memoize2", "create", "r", "g", "hash", "hasher", "chr", "ConvertColor", "color2", "angle", "Color", "alpha", "obj", "stringToObject", "hsv", "hsvToStr", "hsl", "h", "input", "CSSVariableRegExp", "colorCache", "cachedMultiplyAlpha", "s", "gradientColorStops", "gradient", "stops", "stop", "gradientColorStopsHash", "result", "multiStopGradientKeys", "isMultiStopGradient", "simpleGradientKeys", "isSimpleGradient", "linearGradientKeys", "LinearGradient", "linearGradient", "overrideAngle", "cssStops", "radialGradientKeys", "RadialGradient", "radialGradient", "widthFactor", "heightFactor", "centerAnchorX", "centerAnchorY", "collectBackgroundFromProps", "background", "backgroundColor", "isMotionValue2", "Animatable", "extractStyleFromProps", "name", "styleRef", "into", "hasLeftAndRight", "hasTopAndBottom", "getStyleForFrameProps", "hasEvents", "pointerEvents", "pointerEventsSet", "event", "getCursorFromEvents", "overflowKey", "hasScrollableContent", "hasScrollingOverflow", "unwrapFrameProps", "frameProps", "left", "top", "bottom", "right", "width", "height", "center", "_constraints", "size2", "widthType", "heightType", "positionFixed", "positionAbsolute", "minWidth", "resolveMotionValue", "minHeight", "maxWidth", "maxHeight", "defaultFrameRect", "useStyleAndRect", "_a", "_b", "injectComponentCSSRules", "_initialStyle", "__fromCanvasComponent", "unwrappedProps", "constraintsRect", "useConstraints", "defaultStyle", "shouldDisablePointerEvents", "safeToEditPointerEvents", "centerTextStyle", "e", "child", "propsStyle", "constraintsStyle", "constraintsEnabled", "isAutoSized", "resultStyle", "filteredProps", "getMotionProps", "motionProps", "isValidMotionProp", "isPropValid", "hasDataFramerName", "VisibleFrame", "Y", "forwardedRef", "border", "_border", "__portal", "propsWithOverrides", "children", "processOverrideForwarding", "layoutId", "useLayoutId", "cursor", "fallbackRef", "pe", "dataProps", "currentStyle", "rect", "autoSized", "transformTemplate", "layoutHintDataPropsForCenter", "backgroundImage", "backgroundImageFromProps", "parentSize", "resolveParentSize", "wrappedContent", "useProvideParentSize", "BackgroundImageComponent", "Border", "MotionComponent", "motion", "transformValues", "FrameWithMotion", "import_process3", "safeWindow", "_usesDOMRect", "import_hoist_non_react_statics", "__toESM", "require_hoist_non_react_statics_cjs", "NavigatorMock", "warnOnce", "navigatorMock", "NavigationContext", "z", "import_hoist_non_react_statics3", "__toESM", "require_hoist_non_react_statics_cjs", "import_hoist_non_react_statics2", "__toESM", "require_hoist_non_react_statics_cjs", "DraggingContext", "e", "hoverProps", "hoverEventKeys", "import_process4", "__toESM", "require_browser", "hasOwnProperty", "obj", "prop", "ObservableObject", "ObservableObject2", "initial", "makeAnimatables", "observeAnimatables", "unproxiedState", "$private", "Observers", "key7", "state", "sharedProxyHandler", "target", "observer", "ObservableObjectProxyHandler", "value", "receiver", "privateObject", "animatable", "rawValue", "isAnimatable", "Animatable", "transactions", "change", "transaction", "result", "changed", "rawValueIsObject", "keys3", "privateIndex", "key3", "withOpacity", "target", "collectOpacityFromProps", "props", "style", "opacity", "Animatable", "shadowsAsFilter", "shadows", "filters", "dropShadows", "shadowItem", "collectTextShadowsForProps", "props", "style", "textShadow", "shadow", "collectLayerFilters", "props", "style", "filters", "isFiniteNumber", "shadowsAsFilter", "collectBackgroundFilters", "collectFiltersFromProps", "getNumber", "Animatable", "TREE_ROOT_ID", "SharedLayoutContext", "e", "SharedLayoutRoot", "I", "tree", "transition", "shouldAnimate", "_a", "needsReset", "projectionNode", "_a2", "_b", "rootStyles", "MagicMotionCrossfadeRoot", "props", "motion", "_sharedIntersectionObserver", "_callbacks2", "SharedIntersectionObserver", "options", "__privateAdd", "__privateSet", "entries", "observer", "entry", "callbackForElement", "__privateGet", "element", "callback", "SharedIntersectionObserverContext", "useSharedIntersectionObserver", "ref", "key7", "useConstant", "observers", "enabled", "root", "rest", "thresholds", "_", "i", "ViewportContext", "useAppearEffect", "appearCallback", "internalState", "animateOnce", "threshold", "rootMargin", "isInView", "hasAnimatedOnce", "isIntersecting", "isIntersectingWithThreshold", "calculatedIntersection", "intersectionRect", "boundingClientRect", "safeWindow", "LayoutTree", "child", "nextProps", "isLead", "isExiting", "isOverlayed", "animatesLayout", "sharedLayoutContext", "hasBecomeLead", "hasExitBeenCancelled", "shouldPromote", "shouldDemote", "overlayChanged", "projection", "layoutId", "SwitchLayoutGroupContext", "SharedLayoutTree", "NavigationContainerContext", "newMap", "useMap", "useConstant", "NavigationTargetContext", "z", "NavigationTargetWrapper", "isCurrent", "isOverlayed", "children", "callbacks2", "register", "te", "fn", "deregister", "cleanup", "value", "pe", "ue", "_", "cb", "newCleanup", "isFunction", "e", "useOnCurrentTargetChange", "callback", "deps", "re", "NavigationContainer", "isLayeredContainer", "isPrevious", "visible", "transitionProps", "backdropColor", "onTapBackdrop", "backfaceVisible", "exitBackfaceVisible", "animation", "exitAnimation", "instant", "initialProps", "exitProps", "position", "withMagicMotion", "index", "areMagicMotionLayersPresent", "id", "isInitial", "animate3", "useAnimation", "presence", "PresenceContext", "persistLayoutIdCache", "LayoutIdContext", "previousState", "getOriginProps", "viewportRef", "isBeingRemoved", "wasPrevious", "wasCurrent", "shouldAnimateIn", "shouldAnimateOut", "origins", "wasReset", "allAnimatableProperties", "transition", "exitTransition", "layout", "perspective", "contains3Dprops", "identity", "animations2", "isPresent", "isCurrentTarget", "forceOpacity", "FrameWithMotion", "ViewportContext", "NavigationContainerContext", "SharedLayoutTree", "shouldUsePreviousValue", "prevProps", "nextProps", "currentOriginProps", "result", "isFiniteNumber", "containerProps", "_a", "_b", "_c", "toPropsContain3d", "fromPropsContain3d", "TransitionDefaults", "pushTransition", "options", "overlayTransition", "flipTransition", "defaultState", "reduceNavigationStateForAction", "state", "action", "addOverlay", "removeOverlay", "add", "remove", "updateComponent", "back", "forward", "currentState", "key7", "component", "currentOverlay", "overlayItemId", "overlayStack", "currentItem", "isCurrentScreen", "nextIndex", "removed", "shouldMoveForward", "isNextTargetForward", "current", "previous", "containerKey", "findLatestHistoryIndex", "containerVisualIndex", "containerIsRemoved", "magicMotionPropsForAdd", "transitionForContainer", "updateTransitions", "containers", "nextState", "nextItem", "history", "target", "assert", "item", "previousTransition", "visualIndex", "magicMotionPropsForRemove", "nextKey", "update", "nextVisualIndex", "validTargets", "nextValidTarget", "targetVisualIndex", "currentVisualIndex", "shouldRemoveLastKey", "containerIndex", "transitions", "screenIndex", "transitionForScreen", "stackState", "sequence", "allAnimatableKeys", "direction", "from", "property", "transitionTo", "transitionFrom", "NavigationConsumer", "NavigationContext", "NavigationCallbackContext", "NavigationCallbackProvider", "IsInitialNavigationContext", "Navigation", "I", "props", "newState", "skipLayoutAnimation", "historyItem", "updateState", "isReactChild", "isReactElement", "injectComponentCSSRules", "previousOverlay", "transitionTraits", "transitionOptions", "_d", "_e", "overlayStackState", "activeOverlay", "activeOverlayItem", "isOverlayVisible", "contentContainers", "isInstantContainerTransition", "animationPropsForContainer", "getBackfaceVisibleForScreen", "MagicMotionCrossfadeRoot", "containerContent", "overlayContainers", "stackIndex", "initialPropsForOverlay", "transitionPropsForOverlay", "containerIsVisible", "backdropColorForTransition", "getBackfaceVisibleForOverlay", "backdropTapAction", "transitionPropsForStackWrapper", "animationForStackWrapper", "backfaceVisibleForStackWrapper", "LayoutIdProvider", "SharedLayoutRoot", "AnimatePresence", "animationDefault", "currentOverlayItem", "previousOverlayItem", "navigationItem", "overlayIndex", "containerCurrent", "overCurrentContext", "child", "shouldStretchWidth", "shouldStretchHeight", "canStretchStyle", "isObject2", "goBackAction", "NavigationWrapper", "resetProjection", "useResetProjection", "useInstantLayoutTransition", "import_process5", "__toESM", "require_browser", "requiresPolyfill", "isSafari", "safariVersion", "cx", "classNames", "emptyObject", "timeDelta", "data", "Data2", "initial", "_data", "ObservableObject", "target", "observer", "Data", "initialState", "DataObserverContext", "e", "DataObserver", "I", "initialState", "MainLoop", "cancel", "Data", "children", "d", "observer", "e", "DataObserverContext", "prefix", "prefixLength", "stripPrefixFromPrefixedKey", "key7", "prefix", "prefixLength", "effectValuesKeys", "makeFXValues", "defaults", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "motionValue", "defaultFXValues", "useFXValues", "values", "enabled", "effect", "useConstant", "e", "value", "isUndefined", "loopOptionsKeys", "useDelay", "timeoutRef", "pe", "ue", "d", "resolve", "useLoop", "loopEffectEnabled", "loopRepeatDelay", "loopTransition", "loopRepeatType", "loop", "shouldReduceMotion", "useReducedMotionConfig", "mirrorStateRef", "delay2", "animateValues", "transition", "mirror", "to", "from", "_a2", "animate", "start", "stop", "te", "parallaxTransform", "scrollY", "originalPosition", "speed", "offset", "adjustPosition", "speedFactor", "initialPosition", "scrollOffset", "parallaxOptionsKeys", "useParallax", "options", "ref", "visibilityStyle", "parallaxTransformEnabled", "transform2", "yValue", "frame", "parallaxY", "visibility", "useScroll", "useTransform", "useMotionValue", "defaultValue", "calcOffsetTop", "element", "container", "top", "current", "scrollObserverOffset", "createTransformInputRange", "transformTargets", "threshold", "callback", "starts", "inputRange", "index", "targetRef", "height", "previousTop", "end", "currentScrollDirection", "lastOffset", "scrollDirectionThreshold", "useScrollDirectionChange", "scrollDirection", "cb", "direction", "target", "repeat", "directionChangeOffset", "lastDirection", "currentTarget", "scrollInfo", "hasDirectionChanged", "nextTarget", "styleAppearOptionsKeys", "defaultOutputRange", "createInputOutputRange", "targets", "hasExit", "outputRange", "firstRange", "assert", "idx", "last", "makeStyle", "_i", "useAnimationVariants", "opacity", "targetOpacity", "transformPerspective", "enter", "exit", "animateVariant", "defaultStyles", "useStyleAppearEffect", "variants", "playState", "animation", "runAnimation", "fromInitial", "transitionWithFallback", "toValue", "visualElement", "visualElementStore", "hasAnimatedOnce", "animateWithIntersectionObserver", "useAppearEffect", "appears", "isPlaying", "lastAppearState", "animateWithScrollInfo", "playedState", "lastVariant", "variant", "transform", "styleTransformOptionsKeys", "defaultValues", "initial", "defaultRanges", "useAttachOptionalSpring", "spring2", "springs", "m2", "v", "set", "active", "animateValue", "frameData", "delta", "createInputOutputRanges", "effectKeyOutputRange", "previousTarget", "createPageOutputRange", "keyOutputRange", "pageInputRange", "useStyleTransform", "transformTrigger", "styleTransformEffectEnabled", "transformViewportThreshold", "scrollYInputRange", "groups", "groupValues", "backwardsCompatibleEnabledCheck", "secondaryKey", "object", "extractFXOptions", "props", "result", "strippedKey", "group", "add2", "sum", "multiply", "reactRefObjectKey", "isReactRefObject", "isObject2", "withFX", "Component15", "forwardedRef", "fallbackRef", "parallax", "styleAppear", "styleTransform", "forwardedProps", "isMotionValue", "isNumber", "targetOpacityValue", "parallaxValues", "parallaxStyle", "transformValues3", "appearEffectValues", "loopValues", "fxValues", "scale", "x", "y", "rotate", "rotateX", "rotateY", "drag", "dragConstraints", "useRerenderOnResize", "motionValueStyle", "withStyleAppearEffect", "withFX", "import_hoist_non_react_statics4", "__toESM", "require_hoist_non_react_statics_cjs", "withGeneratedLayoutId", "Component15", "e", "props", "ref", "layoutId", "useLayoutId", "Providers", "children", "outerLayoutId", "useConstant", "motion", "ComponentContainerContext", "AutomaticLayoutIds", "LayoutGroup", "child", "Container", "elementKey", "collectionKey", "collectionItemIdKey", "pathVariablesKey", "mediaType", "isFramerPageLink", "value", "isString2", "parseFramerPageLink", "link", "isFramerPageLink", "url", "target", "mediaType", "searchParams", "element", "elementKey", "collectionItem", "collection", "collectionKey", "collectionItemId", "collectionItemIdKey", "pathVariablesValue", "pathVariablesKey", "pathVariables", "navigateFromAttributes", "navigate", "element", "implicitPathVariables", "_a", "_b", "_c", "routeId", "elementId", "pathVariables", "pathVariablesRaw", "href", "link", "parseFramerPageLink", "smoothScroll", "GeneratedComponentContext", "e", "LazyValue", "resolver", "value", "status", "promise", "error", "assertNever", "findAnchorElement", "target", "withinElement", "linkKey", "isLinkToWebPage", "createVariablesFromPageLinkCollectionItem", "collectionItem", "variables", "pathVariablesKey2", "linkFromFramerPageLink", "isFramerPageLink", "parsed", "pathVariablesRegExp2", "PathVariablesContext", "useImplicitPathVariables", "contextPathVariables", "currentPathVariables", "useCurrentRoute", "linkMatchesRoute", "route", "webPageId", "hash2", "combinedPathVariable", "key7", "isInternalURL", "href", "isValidURL", "isInternal", "url", "getTargetAttrValue", "openInNewTab", "isInternal", "propsForLink", "href", "isInternalURL", "anchorTarget", "isValidURL", "createOnClickLinkHandler", "router", "routeId", "elementId", "combinedPathVariables", "smoothScroll", "event", "_a", "anchorElement", "findAnchorElement", "propsForRoutePath", "currentRoute", "implicitPathVariables", "pathname", "hash2", "assert", "pathVariables", "inferInitialRouteFromPath", "route", "preloadComponent", "path", "getPathForRoute", "Link", "e", "children", "restProps", "forwardedRef", "useRouter", "useCurrentRoute", "useImplicitPathVariables", "props", "pageLink", "isLinkToWebPage", "linkFromFramerPageLink", "isString2", "webPageId", "hashVariables", "combinedPathVariable", "combinedHashVariable", "resolvedHref", "resolvedHash", "linkMatchesRoute", "child", "resolveLink", "combinedHashVariables", "AnimationCollector", "nodeId", "prop", "value", "variantHash", "nodeEntry", "assert", "framerAppearEffects", "optimizeAppear", "id", "animateTargetAndTransition", "isBrowser2", "framerAppearTransformTemplateToken", "optimizeAppearTransformTemplate", "fn", "template", "framerAppearIdKey", "framerAppearAnimationScriptKey", "PageRoot", "RootComponent", "isWebsite", "routeId", "pathVariables", "routes", "notFoundPage", "isReducedMotion", "includeDataObserver", "localeId", "locales", "e", "MainLoop", "MotionConfig", "Router", "Wrapper", "DataObserver", "RoutesProvider", "NavigationWrapper", "StyleSheetContext", "node", "componentsWithServerRenderedStyles", "_a", "componentsWithSSRStylesAttr", "styleTagSSRMarker", "withCSS", "Component15", "escapedCSS", "componentSerializationId", "props", "ref", "sheet", "cache3", "concatenatedCSS", "rule", "injectCSSRule", "SSRParentVariantsContext", "SSRVariantClassName", "propsForClonedChild", "child", "childrenWithForwardedProps", "children", "isReactChild", "isReactElement", "renderBranchedChildrenFromPropertyOverrides", "overrides", "variantClassNames", "primaryVariantId", "parentVariants", "type", "childrenArray", "branches", "nonOverriddenVariants", "variantId", "propOverrides", "arePropOverridesEffectivelyDifferent", "effectiveVariants", "intersection", "remainingVariants", "effectiveRemainingVariants", "variants", "key7", "element", "hiddenClassNames", "generateHiddenClassNames", "generateHiddenClassNames", "showOnlyInVariantIds", "parentVariants", "variantClassNames", "classNames", "variantId", "variantClassName", "alreadyHiddenInParent", "variantHash", "intersection", "variants", "variant", "propertyKeyDifferenceShouldBeIgnored", "key7", "arePropOverridesEffectivelyDifferent", "props", "propOverrides", "isEqual", "propsForBreakpoint", "overrides", "PropertyOverrides", "e", "breakpoint", "children", "ref", "isBrowser2", "childrenWithForwardedProps", "generatedComponentContext", "GeneratedComponentContext", "primaryVariantId", "SSRParentVariantsContext", "renderBranchedChildrenFromPropertyOverrides", "rejectPending", "pendingTimers", "pendingPromises", "t", "reject", "createSet", "useActiveVariantCallback", "baseVariant", "useConstant", "useOnCurrentTargetChange", "callback", "args", "resolve", "msDelay", "useAddVariantProps", "baseVariant", "gestureVariant", "variantProps", "e", "id", "_a", "_b", "_c", "activeMediaQueryFromWindow", "mediaQueries", "variant", "query", "safeWindow", "useHydratedBreakpointVariants", "initial", "hydratedWithInitial", "_a", "isInitialNavigation", "re", "IsInitialNavigationContext", "baseVariant", "pe", "isBrowser2", "basePropsVariant", "forceUpdate", "useForceUpdate3", "instantTransition", "useInstantTransition", "setActiveVariantInstant", "te", "Z", "useIsomorphicLayoutEffect2", "ue", "callbacks2", "mql", "callback", "event", "addMQLCallback", "removeMQLCallback", "removeHiddenBreakpointLayers", "initial", "mediaQueries", "variantClassNames", "_a", "_b", "_c", "_d", "_e", "activeVariant", "activeMediaQueryFromWindow", "activeVariantHash", "hiddenLayer", "ssrVariant", "SSRVariantClassName", "image", "originalSizes", "useIsOnFramerCanvas", "RenderTarget", "callbackForVariant", "map", "variant", "useOnVariantChange", "callbackMap", "useIsOnFramerCanvas", "isActiveScreenRef", "e", "callbackMapRef", "useOnCurrentTargetChange", "isCurrent", "isOverlayed", "isActiveScreen", "callback", "DeepWeakMap", "key1", "key22", "map2", "value", "_a", "useData", "from", "_b", "_c", "isArray", "localeId", "collections", "collection", "promise", "indexCache", "useInsertIndex", "data2", "cached", "result", "item", "index", "whereCache", "useExecuteWhere", "where", "evaluateExpression", "identifier", "orderByCache", "useExecuteOrderBy", "orderBy", "leftItem", "rightItem", "order", "expression", "leftValue", "rightValue", "isNumber", "isString2", "offsetCache", "useExecuteOffset", "offset", "offsetValue", "limitCache", "useExecuteLimit", "limit", "limitValue", "selectCache", "useExecuteSelect", "select", "preloadPromise", "preloadExpressions", "selected", "name", "stringifyExpression", "LazyValue", "expressions", "identifiers", "extractIdentifiers", "preloadPromises", "argument", "condition", "useQueryData", "query", "queryRef", "pe", "isEqual", "context", "evaluateFunctionCall", "evaluateCase", "evaluateUnaryOperation", "evaluateBinaryOperation", "evaluateTypeCast", "getArgument", "search", "when", "isLooseEqual", "left", "right", "isValidDate", "parsed", "getWhereExpressionFromPathVariables", "pathVariables", "isUndefined", "isObject2", "createGestureVariant", "variant", "type", "nextVariant", "allVariants", "currentVariant", "nextIndex", "nextVariant2", "assert", "activeTransition", "transitions", "variantTransition", "getGesture", "enabledGestures", "isHovered", "isPressed", "hover", "pressed", "createVariantClassName", "baseVariant", "variantClassNames", "mappedClassName", "safeBaseVariant", "targetVariant", "fallbackVariant", "validBaseVariants", "CycleVariantState", "useVariantState", "variant", "externalDefaultVariant", "externalTransitions", "externalEnabledGestures", "externalCycleOrder", "variantProps", "forceUpdate", "useForceUpdate3", "useConstant", "internalState", "e", "resolveNextVariant", "targetBaseVariant", "isHovered2", "isPressed2", "enabledGestures2", "defaultVariant2", "nextBaseVariant", "gesture", "nextGestureVariant", "createGestureVariant", "setGestureState", "baseVariant2", "gestureVariant2", "nextBase", "nextGesture", "setVariant", "proposedVariant", "cycleOrder", "nextVariant", "gestureVariant", "defaultVariant", "addVariantProps", "useAddVariantProps", "variants", "activeTransition", "cx", "import_process6", "__toESM", "require_browser", "import_process7", "__toESM", "require_browser", "Line", "Line2", "a", "b", "lineA", "lineB", "x1", "y1", "x2", "y2", "x3", "y3", "x4", "y4", "d", "xi", "yi", "deltaAX", "deltaAY", "deltaBX", "deltaBY", "line", "pointOnLine", "deltaX", "deltaY", "pointB", "Point", "point", "perp", "distance2", "hypotenuse", "r", "linearGradientLine", "angle", "_a", "_b", "rad", "offset", "anglePoint", "angleLine", "points", "Rect", "sortedPoints", "a2", "b2", "assert", "c", "start", "end", "elementPropertiesForLinearGradient", "gradient", "id", "_c", "_d", "stops", "gradientColorStops", "startPosition", "endPosition", "startPoint", "endPoint", "interpolator", "interpolate", "LinearGradient", "stop", "ConvertColor", "elementPropertiesForRadialGradient", "RadialGradient", "imagePatternPropsForFill", "fill", "frame2", "Animatable", "BackgroundImage", "imageWidth", "imageHeight", "transform2", "fit", "scaleX", "scaleY", "offsetX", "offsetY", "imageRatio", "realWidth", "realHeight", "validScaleX", "validScaleY", "WindowContext", "e", "useProvidedWindow", "mediaType2", "isAssetReference", "value", "imageUrlForAsset", "asset", "pixelSize", "isExport", "RenderTarget", "runtime", "ImagePatternElement", "I", "path", "xlinkHref", "useDOM", "isBrowser2", "SharedSVGEntry", "svg", "innerHTML", "viewBox", "count", "SharedSVGManager", "generateUniqueIds", "contentId", "entry", "hash", "uniqueSVG", "svgSize", "svgDom", "parseSVG", "prefixIdsInSVG", "getSVGSize", "containerId", "container", "size2", "svgTemplates", "box", "output", "style", "sharedSVGManager", "node", "prefix2", "sanitizedPrefix", "sanitizeString", "recursivelyPrefixId", "str", "el", "prefixId", "attr", "base", "fragmentIdentifier", "URL_REF", "prefixedValue", "unitsToPixels", "parseLength", "m2", "width", "height", "SVG", "props", "parentSize", "useParentSize", "ariaId", "layoutId", "useLayoutId", "layoutRef", "providedWindow", "useMeasureLayout", "SVGComponent", "MAX_BACKGROUND_SVG_TEXT_LENGTH", "containsImageReference", "containsCustomPropertyReference", "hasBorderRadius", "sizeSVG", "div", "localWindow", "safeWindow", "withExternalLayout", "constraintsEnabled", "intrinsicWidth", "intrinsicHeight", "_constraints", "isFiniteNumber", "Layer", "element", "calculateRect", "prevProps", "resetSetStyle", "innerStyle", "rotation", "rotate", "xFactor", "yFactor", "zoom", "target", "RenderEnvironment", "zoomFactor", "left", "right", "top", "bottom", "_a2", "visible", "title", "description", "className", "variants", "innerRef", "svgContentId", "opacity", "rest", "identifier", "injectComponentCSSRules", "outerStyle", "collectOpacityFromProps", "collectFiltersFromProps", "fillElement", "Color", "fillColor", "gradientId", "idx", "elementProperties", "imagePattern", "dataProps", "hasTransformTemplate", "layoutHintDataPropsForCenter", "svgAsBackgroundImage", "content", "contentid", "__html", "MotionComponent", "motion", "href", "rel", "onClick", "ariaDescriptionId", "transformTemplate", "VISUALLY_HIDDEN_STYLES", "import_process9", "htmlRegExp", "escapeHTML", "tag", "regex", "replaceFramerPageLinks", "rawHTML", "getRoute", "currentRoute", "implicitPathVariables", "original", "pre1", "pre2", "value1", "value2", "post", "pageLink", "parseFramerPageLink", "targetRoute", "isRoute", "targetPath", "currentPath", "attributes", "elementId", "getRouteElementId", "link", "linkFromFramerPageLink", "isString2", "linkMatchesRoute", "relativePath", "pathVariables", "pathVariablesRegExp2", "_", "key7", "params", "computeRelativePath", "import_process8", "knownGoogleFontCategories", "customFontSelectorPrefix", "getCustomFontName", "fileName", "properties", "fontFamily", "variant", "CustomFontSource", "assets", "fonts", "asset", "_a", "fontName", "typeface", "font", "family", "possibleValues", "possibleValuesWithItalics", "value", "lowerCaseFamily", "tokens", "foundToken", "char", "existingTypeface", "selector", "createFont", "locator", "foundTypeface", "fontsharePrefix", "weightNameToNumber", "weightNames", "allowedVariantsRegex", "FontshareSource", "variantSplit", "weightName", "weightName2", "styleName", "fontshareFonts", "fontshareFont", "fontStyle", "variantInfo", "weight", "style", "googleFontSelectorPrefix", "GoogleFontSource", "match", "webFonts", "webFont", "ensureKnownCategory", "category", "import_fontfaceobserver", "__toESM", "require_fontfaceobserver_standalone", "FONT_LOADING_TIMEOUT", "MAX_RETRIES", "FontLoadingError", "message", "fontRequests", "fontReadyPromises", "loadFont", "data2", "doc", "loadFontWithRetries", "attempt", "url", "stretch", "unicodeRange", "requestId", "fontFace", "isString2", "readyPromise", "isFontReady", "e", "readyPromiseId", "safeFonts", "typefaceAliases", "typefaces", "systemTypefaceName", "LocalFontSource", "members", "member", "key7", "systemTypeface", "aliases", "interTypeface", "inter", "entry", "t", "fontFamilies", "weights", "styles", "createVariantName", "alias", "s", "safeNavigator", "userAgent", "fontWeightNames", "friendlyStyle", "FontStore", "defaultFont", "assert", "runtime", "googleFonts", "_", "info", "googleLocator", "fontVariant", "fontshareLocator", "import_process8", "selectors", "loadFontshareFonts", "error", "warnOnce", "f", "fontSelectors", "fontsLoadedCallback", "fontStore", "promises", "p", "v", "isShallowEqualArray", "a", "b", "v", "i", "linkTag", "linkClosingTag", "outerTag", "outerClosingTag", "blockTag", "blockClosingTag", "inlineTag", "inlineClosingTag", "textContentRegex", "import_process10", "__toESM", "require_browser", "PathSegment", "value", "PathSegment2", "pathSegment", "Point", "points", "index", "pointBefore", "pointAfter", "assert", "delta", "import_process11", "__toESM", "require_browser", "_CanvasStore", "data2", "store", "presentationNode", "id", "children", "found", "child", "canvas", "l", "at", "findNodeFor", "listener", "idOrName", "CanvasStore", "isNode", "id", "presentation", "name", "props", "findNodeFor", "children", "isArray", "child", "result", "RenderNodeContext", "e", "RenderNodeProvider", "Image2", "props", "ref", "_a", "background", "children", "alt", "rest", "style", "MotionComponent", "motion", "BackgroundImageComponent", "htmlEscapes", "reUnescapedHtml", "reHasUnescapedHtml", "escapeHTML2", "str", "chr", "deprecatedRichTextPlaceholder", "richTextWrapperClassName", "DeprecatedRichText", "Y", "props", "forwardedRef", "_a", "_b", "id", "name", "html", "htmlFromDesign", "text", "textFromDesign", "fonts", "width", "height", "left", "right", "top", "bottom", "center", "className", "stylesPresetsClassName", "visible", "opacity", "rotation", "verticalAlignment", "isEditable", "willChangeTransform", "environment2", "RenderTarget", "withExternalLayout", "positionSticky", "positionStickyTop", "positionStickyRight", "positionStickyBottom", "positionStickyLeft", "__htmlStructure", "__fromCanvasComponent", "_forwardedOverrideId", "_forwardedOverrides", "_usesDOMRect", "children", "rest", "parentSize", "useParentSize", "layoutId", "useLayoutId", "fallbackLayoutRef", "pe", "layoutRef", "navigate", "getRoute", "useRouter", "currentRoute", "useCurrentRoute", "useRoutePreloader", "useMeasureLayout", "inCodeComponent", "re", "ComponentContainerContext", "isOnCanvas", "useIsOnFramerCanvas", "textOrOverride", "forwardedOverrideId", "override", "innerHTML", "escapedText", "implicitPathVariables", "useImplicitPathVariables", "innerHTMLWithReplacedFramerPageLinks", "se", "replaceFramerPageLinks", "ue", "container", "interceptPageLinks", "event", "anchorElement", "findAnchorElement", "navigateFromAttributes", "useLoadFonts", "injectComponentCSSRules", "isHidden2", "style", "convertVerticalAlignment2", "restrictedRenderTarget", "frame2", "calculateRect", "isAutoSized2", "template", "transformTemplate", "rotate", "Animatable", "collectFiltersFromProps", "collectTextShadowsForProps", "forceLayerBackingWithCSSProperties", "B", "motion", "cx", "fromCanvasComponent", "containerRef", "prevFontsRef", "isShallowEqualArray", "fontStore", "results", "result", "measureClosestComponentContainer", "RichTextContainer", "ref", "stylesPresetsClassNames", "plainText", "viewBox", "viewBoxScale", "fallbackRef", "containerStyle", "isString2", "e", "styleRichTextChildren", "element", "j", "child", "J", "dataPresetTag", "isMotionComponent", "tag", "unwrapMotionComponent", "stylesPresetClassName", "q", "RichText", "content", "isObject2", "contentProp", "h1", "h2", "h3", "p", "a", "addFonts", "component", "fonts", "getFonts", "package_default", "version", "MotionValue", "transformer", "v", "child", "motionValue"]
}
