{
  "version": 3,
  "sources": ["ssg:https://ga.jspm.io/npm:react@18.1.0/index.js", "ssg:https://app.framerstatic.com/chunk-JSYRSOA7.js", "ssg:https://app.framerstatic.com/framer.7JDSY23Y.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  useIsomorphicLayoutEffect(() => {\n    visualElement && visualElement.render();\n  });\n  useEffect2(() => {\n    visualElement && visualElement.updateFeatures();\n  });\n  const useAnimateChangesEffect = window.HandoffAppearAnimations ? useIsomorphicLayoutEffect : useEffect2;\n  useAnimateChangesEffect(() => {\n    if (visualElement && visualElement.animationState) {\n      visualElement.animationState.animateChanges();\n    }\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/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/utils/noop.mjs\nvar noop = (any) => any;\n\n// ../../../node_modules/framer-motion/dist/es/frameloop/render-step.mjs\nfunction createRenderStep(runNextFrame) {\n  let toRun = [];\n  let toRunNextFrame = [];\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 buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n      if (keepAlive)\n        toKeepAlive.add(callback);\n      if (buffer.indexOf(callback) === -1) {\n        buffer.push(callback);\n        if (addToCurrentFrame && isProcessing)\n          numToRun = toRun.length;\n      }\n      return callback;\n    },\n    /**\n     * Cancel the provided callback from running on the next frame.\n     */\n    cancel: (callback) => {\n      const index = toRunNextFrame.indexOf(callback);\n      if (index !== -1)\n        toRunNextFrame.splice(index, 1);\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      [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n      toRunNextFrame.length = 0;\n      numToRun = toRun.length;\n      if (numToRun) {\n        for (let i = 0; i < numToRun; i++) {\n          const callback = toRun[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 = (timestamp) => {\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  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/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 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.15.0\";\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    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.15.0\", `Attempting to mix Framer Motion versions ${nextValue.version} with 10.15.0 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      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      buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n      renderSVG(instance, renderState);\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    return resolved.trim();\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-transform.mjs\nfunction useTransform(input, inputRangeOrTransformer, outputRange, options) {\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  let 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 instanceof SVGGraphicsElement && \"getBBox\" in current) {\n      const { top, left } = current.getBBox();\n      inset.x += left;\n      inset.y += top;\n      while (current && current.tagName !== \"svg\") {\n        current = current.parentNode;\n      }\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 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 } : { width: target.clientWidth, height: target.clientHeight };\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  addPointerInfo,\n  addPointerEvent,\n  pipe,\n  isDragActive,\n  frame,\n  cancelFrame,\n  frameData,\n  steps,\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-JSYRSOA7.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-JSYRSOA7.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  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: pathWithFilledVariables }, 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}) {\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: \"absolute\" }\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      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/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() {\n  const [showOverlay, setShowOverlay] = React80.useState(false);\n  const callback = React80.useCallback((show) => {\n    if (show) {\n      document.documentElement.style.setProperty(\"overflow\", \"hidden\");\n    } else {\n      document.documentElement.style.removeProperty(\"overflow\");\n    }\n    setShowOverlay(show);\n  }, []);\n  React80.useEffect(\n    () => () => {\n      document.documentElement.style.removeProperty(\"overflow\");\n    },\n    []\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 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};\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    /**\n     * Enable loading fonts from Fontshare. It's a function because the value\n     * from experiments will initially be `false` before it's checked again in\n     * `loadWebFontsFromSelectors`.\n     *\n     * TODO: Remove this once Fontshare has been fully implemented and there is\n     * no need for the \"fontshareTypefaces\" experiment.\n     */\n    this.fontshareEnabled = () => 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 = this.fontshareEnabled() && selectors.some((selector) => selector.startsWith(fontsharePrefix));\n    if (selectors.some((s) => s.startsWith(googleFontSelectorPrefix)) || loadFontshareFonts) {\n      await this.importGoogleFonts();\n      await this.importFontshareFonts();\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.7JDSY23Y.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", "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", "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", "noop", "any", "createRenderStep", "runNextFrame", "toRun", "toRunNextFrame", "numToRun", "isProcessing", "flushNextFrame", "toKeepAlive", "step", "callback", "keepAlive", "immediate", "addToCurrentFrame", "buffer", "frameData2", "stepsOrder", "maxElapsed", "createRenderBatcher", "scheduleNextBatch", "allowKeepAlive", "useDefaultElapsed", "steps2", "acc", "processStep", "stepId", "processBatch", "timestamp", "wake", "process2", "frame", "cancelFrame", "frameData", "steps", "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", "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", "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", "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", "useMotionValueEvent", "value", "event", "callback", "ie", "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", "top", "left", "ScrollOffset", "namedEdges", "resolveEdge", "edge", "delta", "asNumber2", "defaultOffset2", "resolveOffset", "offset", "containerLength", "targetLength", "targetInset", "offsetDefinition", "targetPoint", "containerPoint", "point", "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", "x", "y", "useAnimationFrame", "callback", "initialTimestamp", "pe", "isStatic", "re", "MotionConfigContext", "ue", "provideTimeSinceStart", "timestamp", "delta", "frame", "cancelFrame", "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", "thresholds", "inView", "elementOrSelector", "onStart", "root", "rootMargin", "amount", "elements", "resolveElements", "activeIntersections", "onIntersectionChange", "entries", "entry", "onEnd", "newOnEnd", "observer2", "element", "useInView", "ref", "margin", "once", "isInView", "setInView", "ye", "ue", "onEnter", "options", "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", "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", "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", "BezierDefaults", "controlPointsForCurve", "curve", "BezierAnimator", "options", "interpolation", "delta", "duration", "controlPoints", "p1x", "p1y", "p2x", "p2y", "UnitBezier", "point1", "point2", "epsilon2", "t", "t0", "t1", "t2", "x2", "d2", "i", "Integrator", "accelerationFunction", "state", "dt", "c", "d", "dxdt", "dvdt", "initialState2", "dv", "derivative", "isInterpolatable", "value", "Interpolation", "from", "to", "NumberInterpolation", "a1", "b1", "progress2", "epsilon", "minDuration", "maxDuration", "minDamping", "maxDamping", "approximateRoot", "func", "derivative", "initialGuess", "times", "result", "i", "end", "asc", "angularFrequency", "undampedFrequency", "dampingRatio", "SpringCurveValueConverter", "tension", "friction", "mass", "velocity", "duration", "a", "b", "d", "envelope", "envelopeUndampedFrequency", "exponentialDecay", "currentDisplacement", "c", "derivativeUndampedFrequency", "e", "f", "SpringTensionFrictionDefaults", "SpringDampingDurationDefaults", "isDampingDurationSpringOptions", "options", "SpringAnimator", "interpolation", "_opt", "toPass", "Integrator", "state", "delta", "positionNearZero", "velocityNearZero", "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", "ColorInterpolation", "type", "to", "Interpolation", "NoInterpolation", "ObjectInterpolation", "valueInterpolation", "interpolations", "keys3", "sum", "difference", "DefaultInterpolationOptions", "ValueInterpolation", "options", "NumberInterpolation", "constructor", "isInterpolatable", "interpolation", "Defaults2", "PrecalculatedAnimator", "options", "delta", "value", "time2", "index", "end", "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", "MainLoop", "RenderTarget", "RenderTarget2", "RenderEnvironment", "RenderTarget2", "current", "RenderEnvironment", "hasRestrictions", "target", "RenderTarget", "AnimationDriver", "animator", "updateCallback", "finishedCallback", "frame2", "elapsed", "value", "MainLoopAnimationDriver", "MainLoop", "DefaultDeprecatedAnimationOptions", "FramerAnimation", "from", "to", "animatorClass", "options", "driverClass", "deprecatedAnimationOptions", "animatorOptions", "interpolation", "ValueInterpolation", "BezierAnimator", "PrecalculatedAnimator", "isFinished", "isAnimatable", "isMotionValue2", "targetObject", "Animatable", "update", "key7", "targetValue", "oldValue", "resolve", "reject", "reason", "deprecatedAnimate", "deprecationWarning", "fromValue", "animation", "animate2", "animate3", "animatorOrTransition", "animate", "SpringAnimator", "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", "useIsInCurrentNavigationTarget", "re", "newMap", "useMap", "NavigationTargetContext", "z", "NavigationTargetWrapper", "isCurrent", "children", "callbacks2", "register", "te", "fn", "deregister", "cleanup", "value", "pe", "ue", "cb", "newCleanup", "isFunction", "useOnCurrentTargetChange", "deps", "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", "exitTransition", "layout", "perspective", "contains3Dprops", "identity", "animations2", "isPresent", "isCurrentTarget", "forceOpacity", "FrameWithMotion", "shouldUsePreviousValue", "prevProps", "currentOriginProps", "result", "isFiniteNumber", "containerProps", "_c", "toPropsContain3d", "fromPropsContain3d", "TransitionDefaults", "pushTransition", "overlayTransition", "flipTransition", "defaultState", "reduceNavigationStateForAction", "state", "action", "addOverlay", "removeOverlay", "add", "remove", "updateComponent", "back", "forward", "currentState", "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", "newState", "skipLayoutAnimation", "historyItem", "updateState", "isReactChild", "isReactElement", "injectComponentCSSRules", "previousOverlay", "transitionTraits", "transitionOptions", "_d", "_e", "overlayStackState", "activeOverlay", "activeOverlayItem", "isOverlayVisible", "contentContainers", "isInstantContainerTransition", "animationPropsForContainer", "getBackfaceVisibleForScreen", "containerContent", "overlayContainers", "stackIndex", "initialPropsForOverlay", "transitionPropsForOverlay", "containerIsVisible", "backdropColorForTransition", "getBackfaceVisibleForOverlay", "backdropTapAction", "transitionPropsForStackWrapper", "animationForStackWrapper", "backfaceVisibleForStackWrapper", "LayoutIdProvider", "AnimatePresence", "animationDefault", "currentOverlayItem", "previousOverlayItem", "navigationItem", "overlayIndex", "containerCurrent", "overCurrentContext", "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", "extractPrefixedProps", "props", "keys3", "result", "rest", "key7", "strippedKey", "stripPrefixFromPrefixedKey", "effectValuesKeys", "makeFXValues", "defaults", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "motionValue", "defaultFXValues", "useFXValues", "values", "enabled", "effect", "useConstant", "value", "isUndefined", "loopOptionsKeys", "useDelay", "timeoutRef", "pe", "ue", "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", "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", "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", "findAnchorElement", "target", "withinElement", "linkKey", "isLinkToWebPage", "createVariablesFromPageLinkCollectionItem", "collectionItem", "variables", "pathVariablesKey2", "value", "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", "useOverlayState", "showOverlay", "setShowOverlay", "e", "callback", "show", "LazyValue", "resolver", "value", "status", "promise", "error", "assertNever", "DeepWeakMap", "key1", "key22", "map2", "_a", "useData", "from", "_b", "_c", "isArray", "localeId", "collections", "collection", "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", "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", "keys", "createInputOutputRanges2", "transformTargets", "threshold", "exitTarget", "outputRange", "inputRange", "createTransformInputRange", "index", "lastInputRange", "assert", "firstItem", "withVariantAppearEffect", "Component15", "props", "forwardedRef", "fallbackRef", "ref", "options", "rest", "extractPrefixedProps", "visibleVariantId", "obscuredVariantId", "animateOnce", "variantAppearEffectEnabled", "targets", "scrollDirection", "activeVariant", "animateState", "useAppearEffect", "appears", "playedState", "currentVariant", "scrollInfo", "scrollY", "_a", "_b", "transform", "useScrollDirectionChange", "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", "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"]
}
