{"version":3,"file":"static/js/main.97919814.js","mappings":"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AAXnN,EAAI,IACO,MAAXA,EAAI,IACJA,EAAImkE,WAAW,IAAgB,IAC/BnkE,EAAImkE,WAAW,IAAgB,GAE/BtpE,EAAOmF,GAAOkiE,GAAMh1D,EAAGC,GAId,cAARnN,GAA+B,qBAARA,GACX,kBAANkN,GACM,kBAANC,EAGU,OAARnN,GAAgBkN,GAAKC,EAC9BtS,EAAOooB,GAAKsgD,GAASr2D,EAAGC,GAGxBtS,EAAOmF,QAAavE,IAAN0R,EAAkBA,EAAID,EALpCrS,EAAOmF,GAAOokE,GAAKl3D,EAAGC,EAO1B,CACF,CAEA,OAAOtS,CACT,CCjE8B,qBAAX+J,SAA0BA,OAAOiJ,UAAYjJ,OAAOiJ,SAASC,cAwFhF,SAASu2D,GAAUjqC,GACjB,MAAMkqC,GAASlgC,EAAAA,EAAAA,QAAO,MAEtB,OADAL,EAAAA,EAAAA,qBAAoB3J,GAAK,IAAMkqC,EAAOrnD,UAC/BqnD,CACT,CCpGA,IAAIC,GAA+B,IAAIh3D,IAAI,CACzC,KACA,OACA,QACA,QACA,OACA,WACA,UACA,QACA,SACA,OACA,SACA,gBACA,YACA,SACA,kBACA,oBACA,MACA,QACA,eACA,YACA,WACA,cACA,cACA,YACA,UACA,UACA,OACA,QACA,YACA,OACA,UACA,UACA,UACA,kBACA,cACA,WACA,SACA,cACA,OACA,WACA,UACA,QACA,MACA,WACA,WACA,YACA,WACA,UACA,eACA,MACA,OACA,aACA,cACA,aACA,iBACA,aACA,cACA,UACA,SACA,OACA,OACA,WACA,YACA,OACA,YACA,QACA,SACA,WACA,UACA,YACA,WACA,OACA,QACA,OACA,OACA,OACA,WACA,MACA,YACA,QACA,aACA,SACA,MACA,YACA,WACA,QACA,OACA,aACA,OACA,UACA,UACA,OACA,cACA,SACA,UACA,aACA,iBACA,WACA,MACA,WACA,OACA,UACA,UACA,QACA,SACA,YACA,WACA,WACA,QACA,OACA,QACA,OACA,WACA,OACA,aACA,MACA,SACA,SACA,QACA,OACA,SACA,YACA,gBACA,SACA,QACA,QACA,SAEEi3D,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C,iBAEM,OACV,OAAuB2iC,EAAAA,EAAAA,KAAI6hH,GAAS,CAAEhB,kBAAiBxjJ,SAAUo2C,GAAW,IAE9E+tG,GAAWjnJ,YAAc,oBACzB,IAAIunJ,GAAsBN,GC7DtBO,GAAqB,CACvBvgG,KAAM,CAAC,IAAM,IAAM,GAAK,GACxBm4B,OAAQ,CAAC,GAAK,EAAG,EAAG,GACpBC,QAAS,CAAC,EAAG,EAAG,GAAK,GACrBC,UAAW,CAAC,GAAK,EAAG,GAAK,GACzBxD,OAAQ,CAAC,KAAO,MAAO,KAAO,MAC9B2rE,UAAW,CAAC,KAAO,IAAM,IAAM,KAC/BC,WAAY,CAAC,IAAM,KAAM,GAAK,OCN5BC,GAAuB,CACzBC,QAAS,CACPr+H,EAAG,EACHxY,WAAY,CACVk2C,KAAMugG,GAAmBnoE,UAG7BwrB,OAAQ,CACNthF,EAAG,QACHxY,WAAY,CACVk2C,KAAMugG,GAAmBpoE,UCN3ByoE,GAAS9yF,GAAG,CACdX,MAAO,CACL5sD,KAAM,CACJ,OACA,OACA,SACA,SACA,eACA,iBACA,qCAEFy+D,QAAS,CACP,OACA,OACA,OACA,QACA,SACA,WACA,WACA,cACA,eACA,kBACA,4BAEF6hF,OAAQ,CACN,QACA,OACA,eACA,iBACA,MACA,SACA,eACA,gBACA,+BACG3yF,IAEL4yF,OAAQ,CAAC,WACTC,WAAY,CACV,SACA,SACA,sBACA,OACA,WACA,eACA,iBACA,eACA,uCACA,qBACA,sBACA,eACA,cACA,aACA,oBACA,8BACA,sBACA,wBACA,kBACA,+CACA,0CACA,qBACA,cACA,aACA,YACA,mBACA,6BACA,qBACA,sBACA,iBACA,6CACA,2CAEF5yG,MAAO,CACL,OACA,UACA,WACA,YACA,cACA,gBACA,iBACA,eACA,eACA,cACA,oBACA,cAEF4P,QAAS,CACP,OACA,QACA,SACA,WACA,cACA,eACA,qCACA,iCACA,+BACA,uCACA,iCACA,+BACA,8BAEFukC,KAAM,CACJ,cACA,oBACA,aACA,YACA,oCAEF49D,KAAM,CACJ,OACA,OACA,OACA,QACA,OACA,aACA,6BACA,YACA,WACA,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","sources":["../node_modules/lodash.debounce/index.js","../node_modules/react-device-detect/dist/lib.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/ua-parser-js/dist/ua-parser.min.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/nonce","../node_modules/@nextui-org/react-utils/dist/chunk-3XT5V4LF.mjs","../node_modules/@nextui-org/system/dist/chunk-Q66YAGZJ.mjs","../node_modules/@react-aria/i18n/dist/packages/@react-aria/i18n/src/utils.ts","../packages/@react-aria/ssr/src/SSRProvider.tsx","../node_modules/@react-aria/i18n/dist/packages/@react-aria/i18n/src/useDefaultLocale.ts","../node_modules/@react-aria/i18n/dist/packages/@react-aria/i18n/src/context.tsx","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/focusWithoutScrolling.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/platform.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/openLink.tsx","../node_modules/@react-aria/overlays/dist/packages/@react-aria/overlays/src/useModal.tsx","../node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs","../node_modules/@nextui-org/system/dist/chunk-PYQ4KYZP.mjs","../node_modules/@nextui-org/theme/dist/chunk-BYWORP66.mjs","../node_modules/@nextui-org/theme/node_modules/clsx/dist/clsx.m.js","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/class-utils.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/lru-cache.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/modifier-utils.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/tw-join.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/config-utils.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/from-theme.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/validators.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/default-config.ts","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/merge-configs.ts","../node_modules/@nextui-org/theme/dist/chunk-3XVMTUU7.mjs","../node_modules/@nextui-org/theme/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../node_modules/@nextui-org/button/dist/chunk-BOMWXXSL.mjs","../node_modules/@nextui-org/shared-utils/dist/chunk-MCFSCOSB.mjs","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/isVirtualEvent.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/domHelpers.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocusVisible.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useLayoutEffect.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useEffectEvent.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/utils.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocus.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useFocusWithin.ts","../node_modules/@react-aria/focus/dist/packages/@react-aria/focus/src/useFocusRing.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/chain.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useValueEffect.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useId.ts","../node_modules/clsx/dist/clsx.mjs","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/mergeProps.ts","../node_modules/@nextui-org/react-utils/dist/chunk-RQNQ5XFG.mjs","../node_modules/@nextui-org/react-rsc-utils/dist/chunk-RFWDHYLZ.mjs","../node_modules/@nextui-org/react-rsc-utils/dist/chunk-RJKRL3AU.mjs","../node_modules/@nextui-org/theme/dist/chunk-BZCSOIUI.mjs","../node_modules/tailwind-variants/dist/chunk-JXBJZR5A.js","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/class-utils.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/lru-cache.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/modifier-utils.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/merge-classlist.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/tw-join.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/config-utils.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/from-theme.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/validators.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/default-config.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/tw-merge.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/merge-configs.ts","../node_modules/tailwind-variants/node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../node_modules/tailwind-variants/dist/index.js","../node_modules/@nextui-org/theme/dist/chunk-N2KXC5ZE.mjs","../node_modules/@nextui-org/theme/dist/chunk-XHQUSKIE.mjs","../node_modules/@nextui-org/theme/dist/chunk-XXQSA25O.mjs","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/filterDOMProps.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/runAfterTransition.ts","../node_modules/@react-aria/focus/dist/packages/@react-aria/focus/src/focusSafely.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useSyncRef.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/createEventHandler.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useKeyboard.ts","../node_modules/@react-aria/focus/dist/packages/@react-aria/focus/src/useFocusable.tsx","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/textSelection.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/context.ts","../node_modules/@swc/helpers/esm/_class_extract_field_descriptor.js","../node_modules/@swc/helpers/esm/_class_private_field_init.js","../node_modules/@swc/helpers/esm/_check_private_redeclaration.js","../node_modules/@swc/helpers/esm/_class_private_field_set.js","../node_modules/@swc/helpers/esm/_class_apply_descriptor_set.js","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useGlobalListeners.ts","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/usePress.ts","../node_modules/@swc/helpers/esm/_class_apply_descriptor_get.js","../node_modules/@swc/helpers/esm/_class_private_field_get.js","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/useHover.ts","../node_modules/@nextui-org/shared-utils/dist/chunk-SOU6N57Y.mjs","../node_modules/@nextui-org/button/dist/chunk-P5GIOWF5.mjs","../node_modules/@nextui-org/ripple/dist/chunk-6NL67ZRH.mjs","../node_modules/@nextui-org/use-aria-button/dist/index.mjs","../node_modules/@nextui-org/system-rsc/dist/chunk-DRE2DOBH.mjs","../node_modules/@nextui-org/theme/dist/chunk-AXXUQWWC.mjs","../node_modules/@nextui-org/shared-utils/dist/chunk-6BQDBGF4.mjs","../node_modules/@nextui-org/spinner/dist/chunk-TDOFO53L.mjs","../node_modules/@nextui-org/spinner/dist/chunk-GF2IUMUE.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.mjs","../node_modules/framer-motion/dist/es/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.mjs","../node_modules/framer-motion/dist/es/components/LazyMotion/index.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","../node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../node_modules/framer-motion/dist/es/utils/noop.mjs","../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../node_modules/framer-motion/dist/es/frameloop/frame.mjs","../node_modules/framer-motion/dist/es/frameloop/sync-time.mjs","../node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/utils/errors.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","../node_modules/framer-motion/dist/es/utils/clamp.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","../node_modules/framer-motion/dist/es/value/types/utils.mjs","../node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","../node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs","../node_modules/framer-motion/dist/es/value/types/color/utils.mjs","../node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","../node_modules/framer-motion/dist/es/value/types/color/hex.mjs","../node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","../node_modules/framer-motion/dist/es/value/types/color/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","../node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs","../node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs","../node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs","../node_modules/framer-motion/dist/es/animation/generators/inertia.mjs","../node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/easing/ease.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","../node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","../node_modules/framer-motion/dist/es/easing/circ.mjs","../node_modules/framer-motion/dist/es/easing/back.mjs","../node_modules/framer-motion/dist/es/easing/utils/map.mjs","../node_modules/framer-motion/dist/es/easing/anticipate.mjs","../node_modules/framer-motion/dist/es/utils/pipe.mjs","../node_modules/framer-motion/dist/es/utils/progress.mjs","../node_modules/framer-motion/dist/es/utils/mix/number.mjs","../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/framer-motion/dist/es/utils/mix/color.mjs","../node_modules/framer-motion/dist/es/utils/mix/complex.mjs","../node_modules/framer-motion/dist/es/utils/mix/index.mjs","../node_modules/framer-motion/dist/es/utils/interpolate.mjs","../node_modules/framer-motion/dist/es/utils/offsets/default.mjs","../node_modules/framer-motion/dist/es/utils/offsets/fill.mjs","../node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs","../node_modules/framer-motion/dist/es/utils/offsets/time.mjs","../node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs","../node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs","../node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs","../node_modules/framer-motion/dist/es/utils/memo.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/value/index.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs","../node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element.mjs","../node_modules/framer-motion/dist/es/motion/features/Feature.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/exit.mjs","../node_modules/framer-motion/dist/es/motion/features/animations.mjs","../node_modules/framer-motion/dist/es/motion/features/animation/index.mjs","../node_modules/framer-motion/dist/es/events/add-dom-event.mjs","../node_modules/framer-motion/dist/es/events/event-info.mjs","../node_modules/framer-motion/dist/es/events/add-pointer-event.mjs","../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../node_modules/framer-motion/dist/es/gestures/hover.mjs","../node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","../node_modules/framer-motion/dist/es/gestures/press.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","../node_modules/framer-motion/dist/es/motion/features/viewport/index.mjs","../node_modules/framer-motion/dist/es/motion/features/gestures.mjs","../node_modules/framer-motion/dist/es/gestures/focus.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/html/utils/render.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","../node_modules/framer-motion/dist/es/render/store.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/VisualElement.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","../node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","../node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","../node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","../node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/render/dom/features-animation.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../node_modules/framer-motion/dist/es/utils/use-force-update.mjs","../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/html/use-props.mjs","../node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/use-props.mjs","../node_modules/framer-motion/dist/es/render/dom/use-render.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-minimal.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../node_modules/@nextui-org/ripple/dist/chunk-SC6YC33A.mjs","../node_modules/@nextui-org/shared-utils/dist/chunk-MNNRULGA.mjs","../node_modules/@nextui-org/button/dist/chunk-DBLREEYE.mjs","../node_modules/@nextui-org/theme/dist/chunk-U6G6SZ26.mjs","../node_modules/@nextui-org/use-safe-layout-effect/dist/index.mjs","../node_modules/@nextui-org/image/dist/chunk-AJLGONGP.mjs","../node_modules/@nextui-org/use-image/dist/index.mjs","../node_modules/@nextui-org/image/dist/chunk-NK4BRF7C.mjs","../node_modules/@nextui-org/theme/dist/chunk-UDSOWFZE.mjs","../node_modules/@nextui-org/skeleton/dist/chunk-SO5PHFDL.mjs","../node_modules/@nextui-org/skeleton/dist/chunk-YENB4D5W.mjs","../node_modules/@iconify/react/dist/iconify.js","mobile-painting-list-item.js","mobile-spinner.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","MobileApp.js","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","desktop-painting-list-item.js","../node_modules/@nextui-org/theme/dist/chunk-MP2JYSMR.mjs","../node_modules/@nextui-org/shared-icons/dist/chunk-M3MASYO7.mjs","../node_modules/@nextui-org/chip/dist/chunk-4WFLSIHH.mjs","../node_modules/@nextui-org/chip/dist/chunk-TWKIP7BA.mjs","painting-scroller.js","ArtworkRating.js","PaintingPriceRange.js","desktop-painting-detail-page.js","../node_modules/@nextui-org/navbar/dist/chunk-CLWTNWD4.mjs","../node_modules/@nextui-org/navbar/dist/chunk-UJDFI5KD.mjs","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@react-aria/overlays/dist/packages/@react-aria/overlays/src/PortalProvider.tsx","../node_modules/@react-aria/interactions/dist/packages/@react-aria/interactions/src/PressResponder.tsx","../node_modules/@react-aria/focus/dist/packages/@react-aria/focus/src/isElementVisible.ts","../node_modules/@react-aria/focus/dist/packages/@react-aria/focus/src/FocusScope.tsx","../node_modules/@react-aria/overlays/dist/packages/@react-aria/overlays/src/Overlay.tsx","../node_modules/@nextui-org/navbar/dist/chunk-HNKQQZSS.mjs","../node_modules/@nextui-org/framer-utils/dist/chunk-736YWA4T.mjs","../node_modules/@nextui-org/navbar/dist/chunk-SBDILHQN.mjs","../node_modules/@nextui-org/theme/dist/chunk-3QYYLFUC.mjs","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useResizeObserver.ts","../node_modules/@nextui-org/use-scroll-position/dist/index.mjs","../node_modules/@react-stately/utils/dist/packages/@react-stately/utils/src/useControlledState.ts","../node_modules/@nextui-org/navbar/dist/chunk-XBDGBS3U.mjs","../node_modules/@nextui-org/react-rsc-utils/dist/chunk-FGM523TA.mjs","../node_modules/@nextui-org/navbar/dist/chunk-NTOVBIR5.mjs","../node_modules/@nextui-org/navbar/dist/chunk-PSG7VTZC.mjs","../node_modules/@nextui-org/navbar/dist/chunk-XVPKP73N.mjs","../node_modules/@nextui-org/navbar/dist/chunk-MG5LCNUN.mjs","../node_modules/@nextui-org/theme/dist/chunk-QWWVIX6M.mjs","../node_modules/@nextui-org/shared-utils/dist/chunk-CAFRINWI.mjs","../node_modules/@nextui-org/shared-utils/dist/chunk-RFUEKIFS.mjs","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useFormReset.ts","../node_modules/@react-aria/utils/dist/packages/@react-aria/utils/src/useLabels.ts","../node_modules/@react-aria/label/dist/packages/@react-aria/label/src/useLabel.ts","../node_modules/@react-aria/label/dist/packages/@react-aria/label/src/useField.ts","../node_modules/@react-aria/form/dist/packages/@react-aria/form/src/useFormValidation.ts","../node_modules/@react-stately/form/dist/packages/@react-stately/form/src/useFormValidationState.ts","../node_modules/@react-aria/textfield/dist/packages/@react-aria/textfield/src/useTextField.ts","../node_modules/@nextui-org/input/dist/chunk-ZBD2AF2V.mjs","../node_modules/@nextui-org/input/dist/chunk-IR2E3HZF.mjs","NavbarComponent.js","Canonical.js","desktop-spinner.js","DesktopApp.js","index.js"],"sourcesContent":["/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * @license React\n * react-dom.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 Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/* UAParser.js v1.0.39\n Copyright © 2012-2021 Faisal Salman \n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.39\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=500;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\",SUFFIX_BROWSER=\" Browser\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","\"use client\";\n\n// src/context.ts\nimport * as React from \"react\";\nfunction createContext2(options = {}) {\n const {\n strict = true,\n errorMessage = \"useContext: `context` is undefined. Seems you forgot to wrap component within the Provider\",\n name\n } = options;\n const Context = React.createContext(void 0);\n Context.displayName = name;\n function useContext2() {\n var _a;\n const context = React.useContext(Context);\n if (!context && strict) {\n const error = new Error(errorMessage);\n error.name = \"ContextError\";\n (_a = Error.captureStackTrace) == null ? void 0 : _a.call(Error, error, useContext2);\n throw error;\n }\n return context;\n }\n return [Context.Provider, useContext2, Context];\n}\n\nexport {\n createContext2 as createContext\n};\n","\"use client\";\n\n// src/provider-context.ts\nimport { createContext } from \"@nextui-org/react-utils\";\nvar [ProviderContext, useProviderContext] = createContext({\n name: \"ProviderContext\",\n strict: false\n});\n\nexport {\n ProviderContext,\n useProviderContext\n};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// https://en.wikipedia.org/wiki/Right-to-left\nconst RTL_SCRIPTS = new Set(['Arab', 'Syrc', 'Samr', 'Mand', 'Thaa', 'Mend', 'Nkoo', 'Adlm', 'Rohg', 'Hebr']);\nconst RTL_LANGS = new Set(['ae', 'ar', 'arc', 'bcc', 'bqi', 'ckb', 'dv', 'fa', 'glk', 'he', 'ku', 'mzn', 'nqo', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi']);\n\n/**\n * Determines if a locale is read right to left using [Intl.Locale]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale}.\n */\nexport function isRTL(localeString: string) {\n // If the Intl.Locale API is available, use it to get the locale's text direction.\n // @ts-ignore\n if (Intl.Locale) {\n let locale = new Intl.Locale(localeString).maximize();\n\n // Use the text info object to get the direction if possible.\n // @ts-ignore - this was implemented as a property by some browsers before it was standardized as a function.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/getTextInfo\n let textInfo = typeof locale.getTextInfo === 'function' ? locale.getTextInfo() : locale.textInfo;\n if (textInfo) {\n return textInfo.direction === 'rtl';\n }\n\n // Fallback: guess using the script.\n // This is more accurate than guessing by language, since languages can be written in multiple scripts.\n if (locale.script) {\n return RTL_SCRIPTS.has(locale.script);\n }\n }\n\n // If not, just guess by the language (first part of the locale)\n let lang = localeString.split('-')[0];\n return RTL_LANGS.has(lang);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We must avoid a circular dependency with @react-aria/utils, and this useLayoutEffect is\n// guarded by a check that it only runs on the client side.\n// eslint-disable-next-line rulesdir/useLayoutEffectRule\nimport React, {JSX, ReactNode, useContext, useLayoutEffect, useMemo, useRef, useState} from 'react';\n\n// To support SSR, the auto incrementing id counter is stored in a context. This allows\n// it to be reset on every request to ensure the client and server are consistent.\n// There is also a prefix string that is used to support async loading components\n// Each async boundary must be wrapped in an SSR provider, which appends to the prefix\n// and resets the current id counter. This ensures that async loaded components have\n// consistent ids regardless of the loading order.\ninterface SSRContextValue {\n prefix: string,\n current: number\n}\n\n// Default context value to use in case there is no SSRProvider. This is fine for\n// client-only apps. In order to support multiple copies of React Aria potentially\n// being on the page at once, the prefix is set to a random number. SSRProvider\n// will reset this to zero for consistency between server and client, so in the\n// SSR case multiple copies of React Aria is not supported.\nconst defaultContext: SSRContextValue = {\n prefix: String(Math.round(Math.random() * 10000000000)),\n current: 0\n};\n\nconst SSRContext = React.createContext(defaultContext);\nconst IsSSRContext = React.createContext(false);\n\nexport interface SSRProviderProps {\n /** Your application here. */\n children: ReactNode\n}\n\n// This is only used in React < 18.\nfunction LegacySSRProvider(props: SSRProviderProps): JSX.Element {\n let cur = useContext(SSRContext);\n let counter = useCounter(cur === defaultContext);\n let [isSSR, setIsSSR] = useState(true);\n let value: SSRContextValue = useMemo(() => ({\n // If this is the first SSRProvider, start with an empty string prefix, otherwise\n // append and increment the counter.\n prefix: cur === defaultContext ? '' : `${cur.prefix}-${counter}`,\n current: 0\n }), [cur, counter]);\n\n // If on the client, and the component was initially server rendered,\n // then schedule a layout effect to update the component after hydration.\n if (typeof document !== 'undefined') {\n // This if statement technically breaks the rules of hooks, but is safe\n // because the condition never changes after mounting.\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n setIsSSR(false);\n }, []);\n }\n\n return (\n \n \n {props.children}\n \n \n );\n}\n\nlet warnedAboutSSRProvider = false;\n\n/**\n * When using SSR with React Aria in React 16 or 17, applications must be wrapped in an SSRProvider.\n * This ensures that auto generated ids are consistent between the client and server.\n */\nexport function SSRProvider(props: SSRProviderProps): JSX.Element {\n if (typeof React['useId'] === 'function') {\n if (process.env.NODE_ENV !== 'test' && !warnedAboutSSRProvider) {\n console.warn('In React 18, SSRProvider is not necessary and is a noop. You can remove it from your app.');\n warnedAboutSSRProvider = true;\n }\n return <>{props.children};\n }\n return ;\n}\n\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nlet componentIds = new WeakMap();\n\nfunction useCounter(isDisabled = false) {\n let ctx = useContext(SSRContext);\n let ref = useRef(null);\n // eslint-disable-next-line rulesdir/pure-render\n if (ref.current === null && !isDisabled) {\n // In strict mode, React renders components twice, and the ref will be reset to null on the second render.\n // This means our id counter will be incremented twice instead of once. This is a problem because on the\n // server, components are only rendered once and so ids generated on the server won't match the client.\n // In React 18, useId was introduced to solve this, but it is not available in older versions. So to solve this\n // we need to use some React internals to access the underlying Fiber instance, which is stable between renders.\n // This is exposed as ReactCurrentOwner in development, which is all we need since StrictMode only runs in development.\n // To ensure that we only increment the global counter once, we store the starting id for this component in\n // a weak map associated with the Fiber. On the second render, we reset the global counter to this value.\n // Since React runs the second render immediately after the first, this is safe.\n // @ts-ignore\n let currentOwner = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED?.ReactCurrentOwner?.current;\n if (currentOwner) {\n let prevComponentValue = componentIds.get(currentOwner);\n if (prevComponentValue == null) {\n // On the first render, and first call to useId, store the id and state in our weak map.\n componentIds.set(currentOwner, {\n id: ctx.current,\n state: currentOwner.memoizedState\n });\n } else if (currentOwner.memoizedState !== prevComponentValue.state) {\n // On the second render, the memoizedState gets reset by React.\n // Reset the counter, and remove from the weak map so we don't\n // do this for subsequent useId calls.\n ctx.current = prevComponentValue.id;\n componentIds.delete(currentOwner);\n }\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n ref.current = ++ctx.current;\n }\n\n // eslint-disable-next-line rulesdir/pure-render\n return ref.current;\n}\n\nfunction useLegacySSRSafeId(defaultId?: string): string {\n let ctx = useContext(SSRContext);\n\n // If we are rendering in a non-DOM environment, and there's no SSRProvider,\n // provide a warning to hint to the developer to add one.\n if (ctx === defaultContext && !canUseDOM) {\n console.warn('When server rendering, you must wrap your application in an to ensure consistent ids are generated between the client and server.');\n }\n\n let counter = useCounter(!!defaultId);\n let prefix = ctx === defaultContext && process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${ctx.prefix}`;\n return defaultId || `${prefix}-${counter}`;\n}\n\nfunction useModernSSRSafeId(defaultId?: string): string {\n // @ts-ignore\n let id = React.useId();\n let [didSSR] = useState(useIsSSR());\n let prefix = didSSR || process.env.NODE_ENV === 'test' ? 'react-aria' : `react-aria${defaultContext.prefix}`;\n return defaultId || `${prefix}-${id}`;\n}\n\n// Use React.useId in React 18 if available, otherwise fall back to our old implementation.\n/** @private */\nexport const useSSRSafeId = typeof React['useId'] === 'function' ? useModernSSRSafeId : useLegacySSRSafeId;\n\nfunction getSnapshot() {\n return false;\n}\n\nfunction getServerSnapshot() {\n return true;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction subscribe(onStoreChange: () => void): () => void {\n // noop\n return () => {};\n}\n\n/**\n * Returns whether the component is currently being server side rendered or\n * hydrated on the client. Can be used to delay browser-specific rendering\n * until after hydration.\n */\nexport function useIsSSR(): boolean {\n // In React 18, we can use useSyncExternalStore to detect if we're server rendering or hydrating.\n if (typeof React['useSyncExternalStore'] === 'function') {\n return React['useSyncExternalStore'](subscribe, getSnapshot, getServerSnapshot);\n }\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useContext(IsSSRContext);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Direction} from '@react-types/shared';\nimport {isRTL} from './utils';\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport interface Locale {\n /** The [BCP47](https://www.ietf.org/rfc/bcp/bcp47.txt) language code for the locale. */\n locale: string,\n /** The writing direction for the locale. */\n direction: Direction\n}\n\n// Locale passed from server by PackageLocalizationProvider.\nconst localeSymbol = Symbol.for('react-aria.i18n.locale');\n\n/**\n * Gets the locale setting of the browser.\n */\nexport function getDefaultLocale(): Locale {\n let locale = typeof window !== 'undefined' && window[localeSymbol]\n // @ts-ignore\n || (typeof navigator !== 'undefined' && (navigator.language || navigator.userLanguage))\n || 'en-US';\n\n try {\n // @ts-ignore\n Intl.DateTimeFormat.supportedLocalesOf([locale]);\n } catch (_err) {\n locale = 'en-US';\n }\n return {\n locale,\n direction: isRTL(locale) ? 'rtl' : 'ltr'\n };\n}\n\nlet currentLocale = getDefaultLocale();\nlet listeners = new Set<(locale: Locale) => void>();\n\nfunction updateLocale() {\n currentLocale = getDefaultLocale();\n for (let listener of listeners) {\n listener(currentLocale);\n }\n}\n\n/**\n * Returns the current browser/system language, and updates when it changes.\n */\nexport function useDefaultLocale(): Locale {\n let isSSR = useIsSSR();\n let [defaultLocale, setDefaultLocale] = useState(currentLocale);\n\n useEffect(() => {\n if (listeners.size === 0) {\n window.addEventListener('languagechange', updateLocale);\n }\n\n listeners.add(setDefaultLocale);\n\n return () => {\n listeners.delete(setDefaultLocale);\n if (listeners.size === 0) {\n window.removeEventListener('languagechange', updateLocale);\n }\n };\n }, []);\n\n // We cannot determine the browser's language on the server, so default to\n // en-US. This will be updated after hydration on the client to the correct value.\n if (isSSR) {\n return {\n locale: 'en-US',\n direction: 'ltr'\n };\n }\n\n return defaultLocale;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {isRTL} from './utils';\nimport {Locale, useDefaultLocale} from './useDefaultLocale';\nimport React, {ReactNode, useContext} from 'react';\n\nexport interface I18nProviderProps {\n /** Contents that should have the locale applied. */\n children: ReactNode,\n /** The locale to apply to the children. */\n locale?: string\n}\n\nconst I18nContext = React.createContext(null);\n\n/**\n * Provides the locale for the application to all child components.\n */\nexport function I18nProvider(props: I18nProviderProps) {\n let {locale, children} = props;\n let defaultLocale = useDefaultLocale();\n\n let value: Locale = React.useMemo(() => {\n if (!locale) {\n return defaultLocale;\n }\n\n return {\n locale,\n direction: isRTL(locale) ? 'rtl' : 'ltr'\n };\n }, [defaultLocale, locale]);\n\n return (\n \n {children}\n \n );\n}\n\n/**\n * Returns the current locale and layout direction.\n */\nexport function useLocale(): Locale {\n let defaultLocale = useDefaultLocale();\n let context = useContext(I18nContext);\n return context || defaultLocale;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\n\n// This is a polyfill for element.focus({preventScroll: true});\n// Currently necessary for Safari and old Edge:\n// https://caniuse.com/#feat=mdn-api_htmlelement_focus_preventscroll_option\n// See https://bugs.webkit.org/show_bug.cgi?id=178583\n//\n\n// Original licensing for the following methods can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/calvellido/focus-options-polyfill\n\ninterface ScrollableElement {\n element: HTMLElement,\n scrollTop: number,\n scrollLeft: number\n}\n\nexport function focusWithoutScrolling(element: FocusableElement) {\n if (supportsPreventScroll()) {\n element.focus({preventScroll: true});\n } else {\n let scrollableElements = getScrollableElements(element);\n element.focus();\n restoreScrollPosition(scrollableElements);\n }\n}\n\nlet supportsPreventScrollCached: boolean | null = null;\nfunction supportsPreventScroll() {\n if (supportsPreventScrollCached == null) {\n supportsPreventScrollCached = false;\n try {\n let focusElem = document.createElement('div');\n focusElem.focus({\n get preventScroll() {\n supportsPreventScrollCached = true;\n return true;\n }\n });\n } catch (e) {\n // Ignore\n }\n }\n\n return supportsPreventScrollCached;\n}\n\nfunction getScrollableElements(element: FocusableElement): ScrollableElement[] {\n let parent = element.parentNode;\n let scrollableElements: ScrollableElement[] = [];\n let rootScrollingElement = document.scrollingElement || document.documentElement;\n\n while (parent instanceof HTMLElement && parent !== rootScrollingElement) {\n if (\n parent.offsetHeight < parent.scrollHeight ||\n parent.offsetWidth < parent.scrollWidth\n ) {\n scrollableElements.push({\n element: parent,\n scrollTop: parent.scrollTop,\n scrollLeft: parent.scrollLeft\n });\n }\n parent = parent.parentNode;\n }\n\n if (rootScrollingElement instanceof HTMLElement) {\n scrollableElements.push({\n element: rootScrollingElement,\n scrollTop: rootScrollingElement.scrollTop,\n scrollLeft: rootScrollingElement.scrollLeft\n });\n }\n\n return scrollableElements;\n}\n\nfunction restoreScrollPosition(scrollableElements: ScrollableElement[]) {\n for (let {element, scrollTop, scrollLeft} of scrollableElements) {\n element.scrollTop = scrollTop;\n element.scrollLeft = scrollLeft;\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nfunction testUserAgent(re: RegExp) {\n if (typeof window === 'undefined' || window.navigator == null) {\n return false;\n }\n return (\n window.navigator['userAgentData']?.brands.some((brand: {brand: string, version: string}) => re.test(brand.brand))\n ) ||\n re.test(window.navigator.userAgent);\n}\n\nfunction testPlatform(re: RegExp) {\n return typeof window !== 'undefined' && window.navigator != null\n ? re.test(window.navigator['userAgentData']?.platform || window.navigator.platform)\n : false;\n}\n\nexport function isMac() {\n return testPlatform(/^Mac/i);\n}\n\nexport function isIPhone() {\n return testPlatform(/^iPhone/i);\n}\n\nexport function isIPad() {\n return testPlatform(/^iPad/i) ||\n // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.\n (isMac() && navigator.maxTouchPoints > 1);\n}\n\nexport function isIOS() {\n return isIPhone() || isIPad();\n}\n\nexport function isAppleDevice() {\n return isMac() || isIOS();\n}\n\nexport function isWebKit() {\n return testUserAgent(/AppleWebKit/i) && !isChrome();\n}\n\nexport function isChrome() {\n return testUserAgent(/Chrome/i);\n}\n\nexport function isAndroid() {\n return testUserAgent(/Android/i);\n}\n\nexport function isFirefox() {\n return testUserAgent(/Firefox/i);\n}\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {focusWithoutScrolling, isMac, isWebKit} from './index';\nimport {Href, LinkDOMProps, RouterOptions} from '@react-types/shared';\nimport {isFirefox, isIPad} from './platform';\nimport React, {createContext, ReactNode, useContext, useMemo} from 'react';\n\ninterface Router {\n isNative: boolean,\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => void,\n useHref: (href: Href) => string\n}\n\nconst RouterContext = createContext({\n isNative: true,\n open: openSyntheticLink,\n useHref: (href) => href\n});\n\ninterface RouterProviderProps {\n navigate: (path: Href, routerOptions: RouterOptions | undefined) => void,\n useHref?: (href: Href) => string,\n children: ReactNode\n}\n\n/**\n * A RouterProvider accepts a `navigate` function from a framework or client side router,\n * and provides it to all nested React Aria links to enable client side navigation.\n */\nexport function RouterProvider(props: RouterProviderProps) {\n let {children, navigate, useHref} = props;\n\n let ctx = useMemo(() => ({\n isNative: false,\n open: (target: Element, modifiers: Modifiers, href: Href, routerOptions: RouterOptions | undefined) => {\n getSyntheticLink(target, link => {\n if (shouldClientNavigate(link, modifiers)) {\n navigate(href, routerOptions);\n } else {\n openLink(link, modifiers);\n }\n });\n },\n useHref: useHref || ((href) => href)\n }), [navigate, useHref]);\n\n return (\n \n {children}\n \n );\n}\n\nexport function useRouter(): Router {\n return useContext(RouterContext);\n}\n\ninterface Modifiers {\n metaKey?: boolean,\n ctrlKey?: boolean,\n altKey?: boolean,\n shiftKey?: boolean\n}\n\nexport function shouldClientNavigate(link: HTMLAnchorElement, modifiers: Modifiers) {\n // Use getAttribute here instead of link.target. Firefox will default link.target to \"_parent\" when inside an iframe.\n let target = link.getAttribute('target');\n return (\n (!target || target === '_self') &&\n link.origin === location.origin &&\n !link.hasAttribute('download') &&\n !modifiers.metaKey && // open in new tab (mac)\n !modifiers.ctrlKey && // open in new tab (windows)\n !modifiers.altKey && // download\n !modifiers.shiftKey\n );\n}\n\nexport function openLink(target: HTMLAnchorElement, modifiers: Modifiers, setOpening = true) {\n let {metaKey, ctrlKey, altKey, shiftKey} = modifiers;\n\n // Firefox does not recognize keyboard events as a user action by default, and the popup blocker\n // will prevent links with target=\"_blank\" from opening. However, it does allow the event if the\n // Command/Control key is held, which opens the link in a background tab. This seems like the best we can do.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=257870 and https://bugzilla.mozilla.org/show_bug.cgi?id=746640.\n if (isFirefox() && window.event?.type?.startsWith('key') && target.target === '_blank') {\n if (isMac()) {\n metaKey = true;\n } else {\n ctrlKey = true;\n }\n }\n\n // WebKit does not support firing click events with modifier keys, but does support keyboard events.\n // https://github.com/WebKit/WebKit/blob/c03d0ac6e6db178f90923a0a63080b5ca210d25f/Source/WebCore/html/HTMLAnchorElement.cpp#L184\n let event = isWebKit() && isMac() && !isIPad() && process.env.NODE_ENV !== 'test'\n // @ts-ignore - keyIdentifier is a non-standard property, but it's what webkit expects\n ? new KeyboardEvent('keydown', {keyIdentifier: 'Enter', metaKey, ctrlKey, altKey, shiftKey})\n : new MouseEvent('click', {metaKey, ctrlKey, altKey, shiftKey, bubbles: true, cancelable: true});\n (openLink as any).isOpening = setOpening;\n focusWithoutScrolling(target);\n target.dispatchEvent(event);\n (openLink as any).isOpening = false;\n}\n// https://github.com/parcel-bundler/parcel/issues/8724\n(openLink as any).isOpening = false;\n\nfunction getSyntheticLink(target: Element, open: (link: HTMLAnchorElement) => void) {\n if (target instanceof HTMLAnchorElement) {\n open(target);\n } else if (target.hasAttribute('data-href')) {\n let link = document.createElement('a');\n link.href = target.getAttribute('data-href')!;\n if (target.hasAttribute('data-target')) {\n link.target = target.getAttribute('data-target')!;\n }\n if (target.hasAttribute('data-rel')) {\n link.rel = target.getAttribute('data-rel')!;\n }\n if (target.hasAttribute('data-download')) {\n link.download = target.getAttribute('data-download')!;\n }\n if (target.hasAttribute('data-ping')) {\n link.ping = target.getAttribute('data-ping')!;\n }\n if (target.hasAttribute('data-referrer-policy')) {\n link.referrerPolicy = target.getAttribute('data-referrer-policy')!;\n }\n target.appendChild(link);\n open(link);\n target.removeChild(link);\n }\n}\n\nfunction openSyntheticLink(target: Element, modifiers: Modifiers) {\n getSyntheticLink(target, link => openLink(link, modifiers));\n}\n\nexport function getSyntheticLinkProps(props: LinkDOMProps) {\n return {\n 'data-href': props.href,\n 'data-target': props.target,\n 'data-rel': props.rel,\n 'data-download': props.download,\n 'data-ping': props.ping,\n 'data-referrer-policy': props.referrerPolicy\n };\n}\n\nexport function useLinkProps(props: LinkDOMProps) {\n let router = useRouter();\n return {\n href: props?.href ? router.useHref(props?.href) : undefined,\n target: props?.target,\n rel: props?.rel,\n download: props?.download,\n ping: props?.ping,\n referrerPolicy: props?.referrerPolicy\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMAttributes} from '@react-types/shared';\nimport React, {AriaAttributes, ReactNode, useContext, useEffect, useMemo, useState} from 'react';\nimport ReactDOM from 'react-dom';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport interface ModalProviderProps extends DOMAttributes {\n children: ReactNode\n}\n\ninterface ModalContext {\n parent: ModalContext | null,\n modalCount: number,\n addModal: () => void,\n removeModal: () => void\n}\n\nconst Context = React.createContext(null);\n\n/**\n * Each ModalProvider tracks how many modals are open in its subtree. On mount, the modals\n * trigger `addModal` to increment the count, and trigger `removeModal` on unmount to decrement it.\n * This is done recursively so that all parent providers are incremented and decremented.\n * If the modal count is greater than zero, we add `aria-hidden` to this provider to hide its\n * subtree from screen readers. This is done using React context in order to account for things\n * like portals, which can cause the React tree and the DOM tree to differ significantly in structure.\n */\nexport function ModalProvider(props: ModalProviderProps) {\n let {children} = props;\n let parent = useContext(Context);\n let [modalCount, setModalCount] = useState(0);\n let context = useMemo(() => ({\n parent,\n modalCount,\n addModal() {\n setModalCount(count => count + 1);\n if (parent) {\n parent.addModal();\n }\n },\n removeModal() {\n setModalCount(count => count - 1);\n if (parent) {\n parent.removeModal();\n }\n }\n }), [parent, modalCount]);\n\n return (\n \n {children}\n \n );\n}\n\nexport interface ModalProviderAria {\n /**\n * Props to be spread on the container element.\n */\n modalProviderProps: AriaAttributes\n}\n\n/**\n * Used to determine if the tree should be aria-hidden based on how many\n * modals are open.\n */\nexport function useModalProvider(): ModalProviderAria {\n let context = useContext(Context);\n return {\n modalProviderProps: {\n 'aria-hidden': context && context.modalCount > 0 ? true : null\n }\n };\n}\n\n/**\n * Creates a root node that will be aria-hidden if there are other modals open.\n */\nfunction OverlayContainerDOM(props: ModalProviderProps) {\n let {modalProviderProps} = useModalProvider();\n return
;\n}\n\n/**\n * An OverlayProvider acts as a container for the top-level application.\n * Any application that uses modal dialogs or other overlays should\n * be wrapped in a ``. This is used to ensure that\n * the main content of the application is hidden from screen readers\n * if a modal or other overlay is opened. Only the top-most modal or\n * overlay should be accessible at once.\n */\nexport function OverlayProvider(props: ModalProviderProps) {\n return (\n \n \n \n );\n}\n\nexport interface OverlayContainerProps extends ModalProviderProps {\n /**\n * The container element in which the overlay portal will be placed.\n * @default document.body\n */\n portalContainer?: Element\n}\n\n/**\n * A container for overlays like modals and popovers. Renders the overlay\n * into a Portal which is placed at the end of the document body.\n * Also ensures that the overlay is hidden from screen readers if a\n * nested modal is opened. Only the top-most modal or overlay should\n * be accessible at once.\n */\nexport function OverlayContainer(props: OverlayContainerProps): React.ReactPortal {\n let isSSR = useIsSSR();\n let {portalContainer = isSSR ? null : document.body, ...rest} = props;\n\n React.useEffect(() => {\n if (portalContainer?.closest('[data-overlay-container]')) {\n throw new Error('An OverlayContainer must not be inside another container. Please change the portalContainer prop.');\n }\n }, [portalContainer]);\n\n if (!portalContainer) {\n return null;\n }\n\n let contents = ;\n return ReactDOM.createPortal(contents, portalContainer);\n}\n\ninterface ModalAriaProps extends DOMAttributes {\n /** Data attribute marks the dom node as a modal for the aria-modal-polyfill. */\n 'data-ismodal': boolean\n}\n\nexport interface AriaModalOptions {\n isDisabled?: boolean\n}\n\nexport interface ModalAria {\n /** Props for the modal content element. */\n modalProps: ModalAriaProps\n}\n\n/**\n * Hides content outside the current `` from screen readers\n * on mount and restores it on unmount. Typically used by modal dialogs and\n * other types of overlays to ensure that only the top-most modal is\n * accessible at once.\n */\nexport function useModal(options?: AriaModalOptions): ModalAria {\n // Add aria-hidden to all parent providers on mount, and restore on unmount.\n let context = useContext(Context);\n if (!context) {\n throw new Error('Modal is not contained within a provider');\n }\n\n useEffect(() => {\n if (options?.isDisabled || !context || !context.parent) {\n return;\n }\n\n // The immediate context is from the provider containing this modal, so we only\n // want to trigger aria-hidden on its parents not on the modal provider itself.\n context.parent.addModal();\n return () => {\n if (context && context.parent) {\n context.parent.removeModal();\n }\n };\n }, [context, context.parent, options?.isDisabled]);\n\n return {\n modalProps: {\n 'data-ismodal': !options?.isDisabled\n }\n };\n}\n","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\n","\"use client\";\nimport {\n ProviderContext\n} from \"./chunk-Q66YAGZJ.mjs\";\n\n// src/provider.tsx\nimport { I18nProvider } from \"@react-aria/i18n\";\nimport { RouterProvider } from \"@react-aria/utils\";\nimport { OverlayProvider } from \"@react-aria/overlays\";\nimport { useMemo } from \"react\";\nimport { MotionGlobalConfig } from \"framer-motion\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NextUIProvider = ({\n children,\n navigate,\n useHref,\n disableAnimation = false,\n disableRipple = false,\n skipFramerMotionAnimations = disableAnimation,\n validationBehavior = \"aria\",\n locale = \"en-US\",\n defaultDates,\n createCalendar,\n ...otherProps\n}) => {\n let contents = children;\n if (navigate) {\n contents = /* @__PURE__ */ jsx(RouterProvider, { navigate, useHref, children: contents });\n }\n const context = useMemo(() => {\n if (disableAnimation && skipFramerMotionAnimations) {\n MotionGlobalConfig.skipAnimations = true;\n }\n return {\n createCalendar,\n defaultDates,\n disableAnimation,\n disableRipple,\n validationBehavior\n };\n }, [\n createCalendar,\n defaultDates == null ? void 0 : defaultDates.maxDate,\n defaultDates == null ? void 0 : defaultDates.minDate,\n disableAnimation,\n disableRipple,\n validationBehavior\n ]);\n return /* @__PURE__ */ jsx(ProviderContext, { value: context, children: /* @__PURE__ */ jsx(I18nProvider, { locale, children: /* @__PURE__ */ jsx(OverlayProvider, { ...otherProps, children: contents }) }) });\n};\n\nexport {\n NextUIProvider\n};\n","// src/utils/tw-merge-config.ts\nvar COMMON_UNITS = [\"small\", \"medium\", \"large\"];\nvar twMergeConfig = {\n theme: {\n opacity: [\"disabled\"],\n spacing: [\"divider\"],\n borderWidth: COMMON_UNITS,\n borderRadius: COMMON_UNITS\n },\n classGroups: {\n shadow: [{ shadow: COMMON_UNITS }],\n \"font-size\": [{ text: [\"tiny\", ...COMMON_UNITS] }],\n \"bg-image\": [\"bg-stripe-gradient\"]\n }\n};\n\nexport {\n COMMON_UNITS,\n twMergeConfig\n};\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t\n validators: ClassValidatorObject[]\n classGroupId?: ClassGroupId\n}\n\ninterface ClassValidatorObject {\n classGroupId: ClassGroupId\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport function createClassUtils(config: Config) {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers = {} } = config\n\n function getClassGroupId(className: string) {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift()\n }\n\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n function getConflictingClassGroupIds(classGroupId: ClassGroupId, hasPostfixModifier: boolean) {\n const conflicts = conflictingClassGroups[classGroupId] || []\n\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n }\n\n return conflicts\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nfunction getGroupRecursive(\n classParts: string[],\n classPartObject: ClassPartObject,\n): ClassGroupId | undefined {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nfunction getGroupIdForArbitraryProperty(className: string) {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property\n }\n }\n}\n\n/**\n * Exported for testing only\n */\nexport function createClassMap(config: Config) {\n const { theme, prefix } = config\n const classMap: ClassPartObject = {\n nextPart: new Map(),\n validators: [],\n }\n\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(\n Object.entries(config.classGroups),\n prefix,\n )\n\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme)\n })\n\n return classMap\n}\n\nfunction processClassesRecursively(\n classGroup: ClassGroup,\n classPartObject: ClassPartObject,\n classGroupId: ClassGroupId,\n theme: ThemeObject,\n) {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nfunction getPart(classPartObject: ClassPartObject, path: string) {\n let currentClassPartObject = classPartObject\n\n path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: [],\n })\n }\n\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nfunction isThemeGetter(func: ClassValidator | ThemeGetter): func is ThemeGetter {\n return (func as ThemeGetter).isThemeGetter\n}\n\nfunction getPrefixedClassGroupEntries(\n classGroupEntries: Array<[classGroupId: string, classGroup: ClassGroup]>,\n prefix: string | undefined,\n): Array<[classGroupId: string, classGroup: ClassGroup]> {\n if (!prefix) {\n return classGroupEntries\n }\n\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map((classDefinition) => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition\n }\n\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(\n Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]),\n )\n }\n\n return classDefinition\n })\n\n return [classGroupId, prefixedClassGroup]\n })\n}\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport function createLruCache(maxCacheSize: number): LruCache {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache = new Map()\n let previousCache = new Map()\n\n function update(key: Key, value: Value) {\n cache.set(key, value)\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = new Map()\n }\n }\n\n return {\n get(key) {\n let value = cache.get(key)\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value)\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { Config } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nexport function createSplitModifiers(config: Config) {\n const separator = config.separator || ':'\n const isSeparatorSingleCharacter = separator.length === 1\n const firstSeparatorCharacter = separator[0]\n const separatorLength = separator.length\n\n // splitModifiers inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n return function splitModifiers(className: string) {\n const modifiers = []\n\n let bracketDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index]\n\n if (bracketDepth === 0) {\n if (\n currentCharacter === firstSeparatorCharacter &&\n (isSeparatorSingleCharacter ||\n className.slice(index, index + separatorLength) === separator)\n ) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + separatorLength\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') {\n bracketDepth++\n } else if (currentCharacter === ']') {\n bracketDepth--\n }\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.substring(modifierStart)\n const hasImportantModifier =\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n const baseClassName = hasImportantModifier\n ? baseClassNameWithImportantModifier.substring(1)\n : baseClassNameWithImportantModifier\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n }\n }\n}\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport function sortModifiers(modifiers: string[]) {\n if (modifiers.length <= 1) {\n return modifiers\n }\n\n const sortedModifiers: string[] = []\n let unsortedModifiers: string[] = []\n\n modifiers.forEach((modifier) => {\n const isArbitraryVariant = modifier[0] === '['\n\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n unsortedModifiers = []\n } else {\n unsortedModifiers.push(modifier)\n }\n })\n\n sortedModifiers.push(...unsortedModifiers.sort())\n\n return sortedModifiers\n}\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER, sortModifiers } from './modifier-utils'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport function mergeClassList(classList: string, configUtils: ConfigUtils) {\n const { splitModifiers, getClassGroupId, getConflictingClassGroupIds } = configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = new Set()\n\n return (\n classList\n .trim()\n .split(SPLIT_CLASSES_REGEX)\n .map((originalClassName) => {\n const {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = splitModifiers(originalClassName)\n\n let classGroupId = getClassGroupId(\n maybePostfixModifierPosition\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition)\n\n if (!classGroupId) {\n if (!maybePostfixModifierPosition) {\n return {\n isTailwindClass: false as const,\n originalClassName,\n }\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n return {\n isTailwindClass: false as const,\n originalClassName,\n }\n }\n\n hasPostfixModifier = false\n }\n\n const variantModifier = sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n return {\n isTailwindClass: true as const,\n modifierId,\n classGroupId,\n originalClassName,\n hasPostfixModifier,\n }\n })\n .reverse()\n // Last class in conflict wins, so we need to filter conflicting classes in reverse order.\n .filter((parsed) => {\n if (!parsed.isTailwindClass) {\n return true\n }\n\n const { modifierId, classGroupId, hasPostfixModifier } = parsed\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.has(classId)) {\n return false\n }\n\n classGroupsInConflict.add(classId)\n\n getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach((group) =>\n classGroupsInConflict.add(modifierId + group),\n )\n\n return true\n })\n .reverse()\n .map((parsed) => parsed.originalClassName)\n .join(' ')\n )\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < arguments.length) {\n if ((argument = arguments[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nfunction toValue(mix: ClassNameArray | string) {\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { Config } from './types'\n\ntype CreateConfigFirst = () => Config\ntype CreateConfigSubsequent = (config: Config) => Config\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType\n\nexport function createTailwindMerge(\n ...createConfig: [CreateConfigFirst, ...CreateConfigSubsequent[]]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const [firstCreateConfig, ...restCreateConfig] = createConfig\n\n const config = restCreateConfig.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n firstCreateConfig(),\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n","import { createClassUtils } from './class-utils'\nimport { createLruCache } from './lru-cache'\nimport { createSplitModifiers } from './modifier-utils'\nimport { Config } from './types'\n\nexport type ConfigUtils = ReturnType\n\nexport function createConfigUtils(config: Config) {\n return {\n cache: createLruCache(config.cacheSize),\n splitModifiers: createSplitModifiers(config),\n ...createClassUtils(config),\n }\n}\n","import { ThemeGetter, ThemeObject } from './types'\n\nexport function fromTheme(key: string): ThemeGetter {\n const themeGetter = (theme: ThemeObject) => theme[key] || []\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst stringLengths = new Set(['px', 'full', 'screen'])\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\n// Shadow always begins with x and y offset separated by underscore\nconst shadowRegex = /^-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\n\nexport function isLength(value: string) {\n return (\n isNumber(value) ||\n stringLengths.has(value) ||\n fractionRegex.test(value) ||\n isArbitraryLength(value)\n )\n}\n\nexport function isArbitraryLength(value: string) {\n return getIsArbitraryValue(value, 'length', isLengthOnly)\n}\n\nexport function isArbitrarySize(value: string) {\n return getIsArbitraryValue(value, 'size', isNever)\n}\n\nexport function isArbitraryPosition(value: string) {\n return getIsArbitraryValue(value, 'position', isNever)\n}\n\nexport function isArbitraryUrl(value: string) {\n return getIsArbitraryValue(value, 'url', isUrl)\n}\n\nexport function isArbitraryNumber(value: string) {\n return getIsArbitraryValue(value, 'number', isNumber)\n}\n\n/**\n * @deprecated Will be removed in next major version. Use `isArbitraryNumber` instead.\n */\nexport const isArbitraryWeight = isArbitraryNumber\n\nexport function isNumber(value: string) {\n return !Number.isNaN(Number(value))\n}\n\nexport function isPercent(value: string) {\n return value.endsWith('%') && isNumber(value.slice(0, -1))\n}\n\nexport function isInteger(value: string) {\n return isIntegerOnly(value) || getIsArbitraryValue(value, 'number', isIntegerOnly)\n}\n\nexport function isArbitraryValue(value: string) {\n return arbitraryValueRegex.test(value)\n}\n\nexport function isAny() {\n return true\n}\n\nexport function isTshirtSize(value: string) {\n return tshirtUnitRegex.test(value)\n}\n\nexport function isArbitraryShadow(value: string) {\n return getIsArbitraryValue(value, '', isShadow)\n}\n\nfunction getIsArbitraryValue(value: string, label: string, testValue: (value: string) => boolean) {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return result[1] === label\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nfunction isLengthOnly(value: string) {\n return lengthUnitRegex.test(value)\n}\n\nfunction isNever() {\n return false\n}\n\nfunction isUrl(value: string) {\n return value.startsWith('url(')\n}\n\nfunction isIntegerOnly(value: string) {\n return Number.isInteger(Number(value))\n}\n\nfunction isShadow(value: string) {\n return shadowRegex.test(value)\n}\n","import { fromTheme } from './from-theme'\nimport { Config } from './types'\nimport {\n isAny,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryUrl,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport function getDefaultConfig() {\n const colors = fromTheme('colors')\n const spacing = fromTheme('spacing')\n const blur = fromTheme('blur')\n const brightness = fromTheme('brightness')\n const borderColor = fromTheme('borderColor')\n const borderRadius = fromTheme('borderRadius')\n const borderSpacing = fromTheme('borderSpacing')\n const borderWidth = fromTheme('borderWidth')\n const contrast = fromTheme('contrast')\n const grayscale = fromTheme('grayscale')\n const hueRotate = fromTheme('hueRotate')\n const invert = fromTheme('invert')\n const gap = fromTheme('gap')\n const gradientColorStops = fromTheme('gradientColorStops')\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions')\n const inset = fromTheme('inset')\n const margin = fromTheme('margin')\n const opacity = fromTheme('opacity')\n const padding = fromTheme('padding')\n const saturate = fromTheme('saturate')\n const scale = fromTheme('scale')\n const sepia = fromTheme('sepia')\n const skew = fromTheme('skew')\n const space = fromTheme('space')\n const translate = fromTheme('translate')\n\n const getOverscroll = () => ['auto', 'contain', 'none'] as const\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing] as const\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing] as const\n const getLengthWithEmpty = () => ['', isLength] as const\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue] as const\n const getPositions = () =>\n [\n 'bottom',\n 'center',\n 'left',\n 'left-bottom',\n 'left-top',\n 'right',\n 'right-bottom',\n 'right-top',\n 'top',\n ] as const\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'] as const\n const getBlendModes = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n 'plus-lighter',\n ] as const\n const getAlign = () =>\n ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'] as const\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue] as const\n const getBreaks = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const getNumber = () => [isNumber, isArbitraryNumber]\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue]\n\n return {\n cacheSize: 500,\n theme: {\n colors: [isAny],\n spacing: [isLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumber(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmpty(),\n contrast: getNumber(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumber(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumber(),\n scale: getNumber(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary(),\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{ aspect: ['auto', 'square', 'video', isArbitraryValue] }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{ columns: [isTshirtSize] }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': getBreaks() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': getBreaks() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: [...getPositions(), isArbitraryValue] }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: getOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': getOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': getOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: getOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': getOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': getOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: [inset] }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': [inset] }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': [inset] }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: [inset] }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: [inset] }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: [inset] }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: [inset] }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: [inset] }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: [inset] }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: ['auto', isInteger] }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{ basis: getSpacingWithAutoAndArbitrary() }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['wrap', 'wrap-reverse', 'nowrap'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: ['1', 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: getZeroAndEmpty() }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: getZeroAndEmpty() }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{ order: ['first', 'last', 'none', isInteger] }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': [isAny] }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: ['auto', { span: ['full', isInteger] }, isArbitraryValue] }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': [isAny] }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: ['auto', { span: [isInteger] }, isArbitraryValue] }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: [gap] }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': [gap] }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': [gap] }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: ['normal', ...getAlign()] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': ['start', 'end', 'center', 'stretch'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...getAlign(), 'baseline'] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{ self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline'] }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': [...getAlign(), 'baseline'] }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: [padding] }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: [padding] }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: [padding] }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: [padding] }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: [padding] }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: [padding] }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: [padding] }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: [padding] }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: [padding] }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: [margin] }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: [margin] }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: [margin] }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: [margin] }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: [margin] }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: [margin] }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: [margin] }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: [margin] }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: [margin] }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{ 'space-x': [space] }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{ 'space-y': [space] }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: ['auto', 'min', 'max', 'fit', isArbitraryValue, spacing] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{ 'min-w': ['min', 'max', 'fit', isArbitraryValue, isLength] }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n '0',\n 'none',\n 'full',\n 'min',\n 'max',\n 'fit',\n 'prose',\n { screen: [isTshirtSize] },\n isTshirtSize,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit'] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['min', 'max', 'fit', isArbitraryValue, isLength] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit'] }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{ text: ['base', isTshirtSize, isArbitraryLength] }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isAny] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractons'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [\n {\n tracking: [\n 'tighter',\n 'tight',\n 'normal',\n 'wide',\n 'wider',\n 'widest',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{ 'line-clamp': ['none', isNumber, isArbitraryNumber] }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n 'none',\n 'tight',\n 'snug',\n 'normal',\n 'relaxed',\n 'loose',\n isArbitraryValue,\n isLength,\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryValue] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{ list: ['none', 'disc', 'decimal', isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: [colors] }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{ 'placeholder-opacity': [opacity] }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: [colors] }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{ 'text-opacity': [opacity] }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...getLineStyles(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{ decoration: ['auto', 'from-font', isLength] }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{ 'underline-offset': ['auto', isArbitraryValue, isLength] }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: [colors] }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: getSpacingWithArbitrary() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryValue] }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{ 'bg-opacity': [opacity] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: [...getPositions(), isArbitraryPosition] }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: ['no-repeat', { repeat: ['', 'x', 'y', 'round', 'space'] }] }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: ['auto', 'cover', 'contain', isArbitrarySize] }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n { 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isArbitraryUrl,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: [colors] }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: [gradientColorStops] }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: [gradientColorStops] }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: [gradientColorStops] }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: [borderRadius] }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': [borderRadius] }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': [borderRadius] }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': [borderRadius] }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': [borderRadius] }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': [borderRadius] }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': [borderRadius] }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': [borderRadius] }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': [borderRadius] }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': [borderRadius] }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': [borderRadius] }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': [borderRadius] }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': [borderRadius] }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': [borderRadius] }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': [borderRadius] }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: [borderWidth] }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': [borderWidth] }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': [borderWidth] }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': [borderWidth] }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': [borderWidth] }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': [borderWidth] }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': [borderWidth] }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': [borderWidth] }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': [borderWidth] }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{ 'border-opacity': [opacity] }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...getLineStyles(), 'hidden'] }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{ 'divide-x': [borderWidth] }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{ 'divide-y': [borderWidth] }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{ 'divide-opacity': [opacity] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{ divide: getLineStyles() }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: [borderColor] }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': [borderColor] }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': [borderColor] }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': [borderColor] }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': [borderColor] }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': [borderColor] }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': [borderColor] }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: [borderColor] }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: ['', ...getLineStyles()] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{ 'outline-offset': [isArbitraryValue, isLength] }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{ outline: [isLength] }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: [colors] }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{ ring: getLengthWithEmpty() }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{ ring: [colors] }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{ 'ring-opacity': [opacity] }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{ 'ring-offset': [isLength] }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{ 'ring-offset': [colors] }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{ shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow] }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{ shadow: [isAny] }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [opacity] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': getBlendModes() }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': getBlendModes() }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{ filter: ['', 'none'] }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: [blur] }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [brightness] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [contrast] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{ 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue] }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: [grayscale] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [hueRotate] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: [invert] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [saturate] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: [sepia] }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{ 'backdrop-filter': ['', 'none'] }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': [blur] }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{ 'backdrop-brightness': [brightness] }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{ 'backdrop-contrast': [contrast] }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{ 'backdrop-grayscale': [grayscale] }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{ 'backdrop-hue-rotate': [hueRotate] }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{ 'backdrop-invert': [invert] }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{ 'backdrop-opacity': [opacity] }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{ 'backdrop-saturate': [saturate] }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{ 'backdrop-sepia': [sepia] }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': [borderSpacing] }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': [borderSpacing] }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': [borderSpacing] }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n 'none',\n 'all',\n '',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: getNumberAndArbitrary() }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{ ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue] }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: getNumberAndArbitrary() }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue] }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{ transform: ['', 'gpu', 'none'] }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: [scale] }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': [scale] }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': [scale] }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: [isInteger, isArbitraryValue] }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': [translate] }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': [translate] }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': [skew] }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': [skew] }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [\n {\n origin: [\n 'center',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n 'top-left',\n isArbitraryValue,\n ],\n },\n ],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: ['auto', colors] }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: ['appearance-none'],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: [colors] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['none', 'auto'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', 'y', 'x', ''] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': getSpacingWithArbitrary() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [\n {\n touch: [\n 'auto',\n 'none',\n 'pinch-zoom',\n 'manipulation',\n { pan: ['x', 'left', 'right', 'y', 'up', 'down'] },\n ],\n },\n ],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n { 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue] },\n ],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: [colors, 'none'] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{ stroke: [isLength, isArbitraryNumber] }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: [colors, 'none'] }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n } as const satisfies Config\n}\n","import { Config } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport function mergeConfigs(baseConfig: Config, configExtension: Partial) {\n for (const key in configExtension) {\n mergePropertyRecursively(baseConfig as any, key, configExtension[key as keyof Config])\n }\n\n return baseConfig\n}\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst overrideTypes = new Set(['string', 'number', 'boolean'])\n\nfunction mergePropertyRecursively(\n baseObject: Record,\n mergeKey: string,\n mergeValue: unknown,\n) {\n if (\n !hasOwnProperty.call(baseObject, mergeKey) ||\n overrideTypes.has(typeof mergeValue) ||\n mergeValue === null\n ) {\n baseObject[mergeKey] = mergeValue\n return\n }\n\n if (Array.isArray(mergeValue) && Array.isArray(baseObject[mergeKey])) {\n baseObject[mergeKey] = (baseObject[mergeKey] as unknown[]).concat(mergeValue)\n return\n }\n\n if (typeof mergeValue === 'object' && typeof baseObject[mergeKey] === 'object') {\n if (baseObject[mergeKey] === null) {\n baseObject[mergeKey] = mergeValue\n return\n }\n\n for (const nextKey in mergeValue) {\n mergePropertyRecursively(\n baseObject[mergeKey] as Record,\n nextKey,\n mergeValue[nextKey as keyof object],\n )\n }\n }\n}\n","import {\n twMergeConfig\n} from \"./chunk-BYWORP66.mjs\";\n\n// src/utils/cn.ts\nimport clsx from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\nvar twMerge = extendTailwindMerge(twMergeConfig);\nfunction cn(...inputs) {\n return twMerge(clsx(inputs));\n}\n\nexport {\n cn\n};\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { Config } from './types'\n\ntype CreateConfigSubsequent = (config: Config) => Config\n\nexport function extendTailwindMerge(\n configExtension: Partial | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) {\n return typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n}\n","\"use client\";\n\n// src/button-group-context.ts\nimport { createContext } from \"@nextui-org/react-utils\";\nvar [ButtonGroupProvider, useButtonGroupContext] = createContext({\n name: \"ButtonGroupContext\",\n strict: false\n});\n\nexport {\n ButtonGroupProvider,\n useButtonGroupContext\n};\n","// src/assertion.ts\nvar __DEV__ = process.env.NODE_ENV !== \"production\";\nvar __TEST__ = process.env.NODE_ENV === \"test\";\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isEmptyArray(value) {\n return isArray(value) && value.length === 0;\n}\nfunction isObject(value) {\n const type = typeof value;\n return value != null && (type === \"object\" || type === \"function\") && !isArray(value);\n}\nfunction isEmptyObject(value) {\n return isObject(value) && Object.keys(value).length === 0;\n}\nfunction isEmpty(value) {\n if (isArray(value))\n return isEmptyArray(value);\n if (isObject(value))\n return isEmptyObject(value);\n if (value == null || value === \"\")\n return true;\n return false;\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nvar dataAttr = (condition) => condition ? \"true\" : void 0;\nvar isNumeric = (value) => value != null && parseInt(value.toString(), 10) > 0;\n\nexport {\n __DEV__,\n __TEST__,\n isArray,\n isEmptyArray,\n isObject,\n isEmptyObject,\n isEmpty,\n isFunction,\n dataAttr,\n isNumeric\n};\n","/*\n * Copyright 2022 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {isAndroid} from './platform';\n\n// Original licensing for the following method can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/blob/3c713d513195a53788b3f8bb4b70279d68b15bcc/packages/react-interactions/events/src/dom/shared/index.js#L74-L87\n\n// Keyboards, Assistive Technologies, and element.click() all produce a \"virtual\"\n// click event. This is a method of inferring such clicks. Every browser except\n// IE 11 only sets a zero value of \"detail\" for click events that are \"virtual\".\n// However, IE 11 uses a zero value for all click events. For IE 11 we rely on\n// the quirk that it produces click events that are of type PointerEvent, and\n// where only the \"virtual\" click lacks a pointerType field.\n\nexport function isVirtualClick(event: MouseEvent | PointerEvent): boolean {\n // JAWS/NVDA with Firefox.\n if ((event as any).mozInputSource === 0 && event.isTrusted) {\n return true;\n }\n\n // Android TalkBack's detail value varies depending on the event listener providing the event so we have specific logic here instead\n // If pointerType is defined, event is from a click listener. For events from mousedown listener, detail === 0 is a sufficient check\n // to detect TalkBack virtual clicks.\n if (isAndroid() && (event as PointerEvent).pointerType) {\n return event.type === 'click' && event.buttons === 1;\n }\n\n return event.detail === 0 && !(event as PointerEvent).pointerType;\n}\n\nexport function isVirtualPointerEvent(event: PointerEvent) {\n // If the pointer size is zero, then we assume it's from a screen reader.\n // Android TalkBack double tap will sometimes return a event with width and height of 1\n // and pointerType === 'mouse' so we need to check for a specific combination of event attributes.\n // Cannot use \"event.pressure === 0\" as the sole check due to Safari pointer events always returning pressure === 0\n // instead of .5, see https://bugs.webkit.org/show_bug.cgi?id=206216. event.pointerType === 'mouse' is to distingush\n // Talkback double tap from Windows Firefox touch screen press\n return (\n (!isAndroid() && event.width === 0 && event.height === 0) ||\n (event.width === 1 &&\n event.height === 1 &&\n event.pressure === 0 &&\n event.detail === 0 &&\n event.pointerType === 'mouse'\n )\n );\n}\n","export const getOwnerDocument = (el: Element | null | undefined): Document => {\n return el?.ownerDocument ?? document;\n};\n\nexport const getOwnerWindow = (\n el: (Window & typeof global) | Element | null | undefined\n): Window & typeof global => {\n if (el && 'window' in el && el.window === el) {\n return el;\n }\n\n const doc = getOwnerDocument(el as Element | null | undefined);\n return doc.defaultView || window;\n};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {getOwnerDocument, getOwnerWindow, isMac, isVirtualClick} from '@react-aria/utils';\nimport {useEffect, useState} from 'react';\nimport {useIsSSR} from '@react-aria/ssr';\n\nexport type Modality = 'keyboard' | 'pointer' | 'virtual';\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent | null;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\nexport type FocusVisibleHandler = (isFocusVisible: boolean) => void;\nexport interface FocusVisibleProps {\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\nexport interface FocusVisibleResult {\n /** Whether keyboard focus is visible globally. */\n isFocusVisible: boolean\n}\n\nlet currentModality: null | Modality = null;\nlet changeHandlers = new Set();\ninterface GlobalListenerData {\n focus: () => void\n}\nexport let hasSetupGlobalListeners = new Map(); // We use a map here to support setting event listeners across multiple document objects.\nlet hasEventBeforeFocus = false;\nlet hasBlurredWindowRecently = false;\n\n// Only Tab or Esc keys will make focus visible on text input elements\nconst FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n for (let handler of changeHandlers) {\n handler(modality, e);\n }\n}\n\n/**\n * Helper function to determine if a KeyboardEvent is unmodified and could make keyboard focus styles visible.\n */\nfunction isValidKey(e: KeyboardEvent) {\n // Control and Shift keys trigger when navigating back to the tab with keyboard.\n return !(e.metaKey || (!isMac() && e.altKey) || e.ctrlKey || e.key === 'Control' || e.key === 'Shift' || e.key === 'Meta');\n}\n\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n if (isValidKey(e)) {\n currentModality = 'keyboard';\n triggerChangeHandlers('keyboard', e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentModality = 'pointer';\n if (e.type === 'mousedown' || e.type === 'pointerdown') {\n hasEventBeforeFocus = true;\n triggerChangeHandlers('pointer', e);\n }\n}\n\nfunction handleClickEvent(e: MouseEvent) {\n if (isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n currentModality = 'virtual';\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document) {\n return;\n }\n\n // If a focus event occurs without a preceding keyboard or pointer event, switch to virtual modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n currentModality = 'virtual';\n triggerChangeHandlers('virtual', e);\n }\n\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\n\nfunction handleWindowBlur() {\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\n\n/**\n * Setup global event listeners to control when keyboard focus style should be visible.\n */\nfunction setupGlobalFocusEvents(element?: HTMLElement | null) {\n if (typeof window === 'undefined' || hasSetupGlobalListeners.get(getOwnerWindow(element))) {\n return;\n }\n\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n let focus = windowObject.HTMLElement.prototype.focus;\n windowObject.HTMLElement.prototype.focus = function () {\n hasEventBeforeFocus = true;\n focus.apply(this, arguments as unknown as [options?: FocusOptions | undefined]);\n };\n\n documentObject.addEventListener('keydown', handleKeyboardEvent, true);\n documentObject.addEventListener('keyup', handleKeyboardEvent, true);\n documentObject.addEventListener('click', handleClickEvent, true);\n\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n windowObject.addEventListener('focus', handleFocusEvent, true);\n windowObject.addEventListener('blur', handleWindowBlur, false);\n\n if (typeof PointerEvent !== 'undefined') {\n documentObject.addEventListener('pointerdown', handlePointerEvent, true);\n documentObject.addEventListener('pointermove', handlePointerEvent, true);\n documentObject.addEventListener('pointerup', handlePointerEvent, true);\n } else {\n documentObject.addEventListener('mousedown', handlePointerEvent, true);\n documentObject.addEventListener('mousemove', handlePointerEvent, true);\n documentObject.addEventListener('mouseup', handlePointerEvent, true);\n }\n\n // Add unmount handler\n windowObject.addEventListener('beforeunload', () => {\n tearDownWindowFocusTracking(element);\n }, {once: true});\n\n hasSetupGlobalListeners.set(windowObject, {focus});\n}\n\nconst tearDownWindowFocusTracking = (element, loadListener?: () => void) => {\n const windowObject = getOwnerWindow(element);\n const documentObject = getOwnerDocument(element);\n if (loadListener) {\n documentObject.removeEventListener('DOMContentLoaded', loadListener);\n }\n if (!hasSetupGlobalListeners.has(windowObject)) {\n return;\n }\n windowObject.HTMLElement.prototype.focus = hasSetupGlobalListeners.get(windowObject)!.focus;\n\n documentObject.removeEventListener('keydown', handleKeyboardEvent, true);\n documentObject.removeEventListener('keyup', handleKeyboardEvent, true);\n documentObject.removeEventListener('click', handleClickEvent, true);\n windowObject.removeEventListener('focus', handleFocusEvent, true);\n windowObject.removeEventListener('blur', handleWindowBlur, false);\n\n if (typeof PointerEvent !== 'undefined') {\n documentObject.removeEventListener('pointerdown', handlePointerEvent, true);\n documentObject.removeEventListener('pointermove', handlePointerEvent, true);\n documentObject.removeEventListener('pointerup', handlePointerEvent, true);\n } else {\n documentObject.removeEventListener('mousedown', handlePointerEvent, true);\n documentObject.removeEventListener('mousemove', handlePointerEvent, true);\n documentObject.removeEventListener('mouseup', handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners.delete(windowObject);\n};\n\n/**\n * EXPERIMENTAL\n * Adds a window (i.e. iframe) to the list of windows that are being tracked for focus visible.\n *\n * Sometimes apps render portions of their tree into an iframe. In this case, we cannot accurately track if the focus\n * is visible because we cannot see interactions inside the iframe. If you have this in your application's architecture,\n * then this function will attach event listeners inside the iframe. You should call `addWindowFocusTracking` with an\n * element from inside the window you wish to add. We'll retrieve the relevant elements based on that.\n * Note, you do not need to call this for the default window, as we call it for you.\n *\n * When you are ready to stop listening, but you do not wish to unmount the iframe, you may call the cleanup function\n * returned by `addWindowFocusTracking`. Otherwise, when you unmount the iframe, all listeners and state will be cleaned\n * up automatically for you.\n *\n * @param element @default document.body - The element provided will be used to get the window to add.\n * @returns A function to remove the event listeners and cleanup the state.\n */\nexport function addWindowFocusTracking(element?: HTMLElement | null): () => void {\n const documentObject = getOwnerDocument(element);\n let loadListener;\n if (documentObject.readyState !== 'loading') {\n setupGlobalFocusEvents(element);\n } else {\n loadListener = () => {\n setupGlobalFocusEvents(element);\n };\n documentObject.addEventListener('DOMContentLoaded', loadListener);\n }\n\n return () => tearDownWindowFocusTracking(element, loadListener);\n}\n\n// Server-side rendering does not have the document object defined\n// eslint-disable-next-line no-restricted-globals\nif (typeof document !== 'undefined') {\n addWindowFocusTracking();\n}\n\n/**\n * If true, keyboard focus is visible.\n */\nexport function isFocusVisible(): boolean {\n return currentModality !== 'pointer';\n}\n\nexport function getInteractionModality(): Modality | null {\n return currentModality;\n}\n\nexport function setInteractionModality(modality: Modality) {\n currentModality = modality;\n triggerChangeHandlers(modality, null);\n}\n\n/**\n * Keeps state of the current modality.\n */\nexport function useInteractionModality(): Modality | null {\n setupGlobalFocusEvents();\n\n let [modality, setModality] = useState(currentModality);\n useEffect(() => {\n let handler = () => {\n setModality(currentModality);\n };\n\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n }, []);\n\n return useIsSSR() ? null : modality;\n}\n\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n\n/**\n * If this is attached to text input component, return if the event is a focus event (Tab/Escape keys pressed) so that\n * focus visible style can be properly set.\n */\nfunction isKeyboardFocusEvent(isTextInput: boolean, modality: Modality, e: HandlerEvent) {\n const IHTMLInputElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLInputElement : HTMLInputElement;\n const IHTMLTextAreaElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLTextAreaElement : HTMLTextAreaElement;\n const IHTMLElement = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).HTMLElement : HTMLElement;\n const IKeyboardEvent = typeof window !== 'undefined' ? getOwnerWindow(e?.target as Element).KeyboardEvent : KeyboardEvent;\n\n isTextInput = isTextInput ||\n (e?.target instanceof IHTMLInputElement && !nonTextInputTypes.has(e?.target?.type)) ||\n e?.target instanceof IHTMLTextAreaElement ||\n (e?.target instanceof IHTMLElement && e?.target.isContentEditable);\n return !(isTextInput && modality === 'keyboard' && e instanceof IKeyboardEvent && !FOCUS_VISIBLE_INPUT_KEYS[e.key]);\n}\n\n/**\n * Manages focus visible state for the page, and subscribes individual components for updates.\n */\nexport function useFocusVisible(props: FocusVisibleProps = {}): FocusVisibleResult {\n let {isTextInput, autoFocus} = props;\n let [isFocusVisibleState, setFocusVisible] = useState(autoFocus || isFocusVisible());\n useFocusVisibleListener((isFocusVisible) => {\n setFocusVisible(isFocusVisible);\n }, [isTextInput], {isTextInput});\n\n return {isFocusVisible: isFocusVisibleState};\n}\n\n/**\n * Listens for trigger change and reports if focus is visible (i.e., modality is not pointer).\n */\nexport function useFocusVisibleListener(fn: FocusVisibleHandler, deps: ReadonlyArray, opts?: {isTextInput?: boolean}): void {\n setupGlobalFocusEvents();\n\n useEffect(() => {\n let handler = (modality: Modality, e: HandlerEvent) => {\n if (!isKeyboardFocusEvent(!!(opts?.isTextInput), modality, e)) {\n return;\n }\n fn(isFocusVisible());\n };\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport React from 'react';\n\n// During SSR, React emits a warning when calling useLayoutEffect.\n// Since neither useLayoutEffect nor useEffect run on the server,\n// we can suppress this by replace it with a noop on the server.\nexport const useLayoutEffect = typeof document !== 'undefined'\n ? React.useLayoutEffect\n : () => {};\n","/*\n * Copyright 2023 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useRef} from 'react';\nimport {useLayoutEffect} from './useLayoutEffect';\n\nexport function useEffectEvent(fn?: T): T {\n const ref = useRef(null);\n useLayoutEffect(() => {\n ref.current = fn;\n }, [fn]);\n // @ts-ignore\n return useCallback((...args) => {\n const f = ref.current!;\n return f?.(...args);\n }, []);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusEvent as ReactFocusEvent, useCallback, useRef} from 'react';\nimport {useEffectEvent, useLayoutEffect} from '@react-aria/utils';\n\nexport class SyntheticFocusEvent implements ReactFocusEvent {\n nativeEvent: FocusEvent;\n target: EventTarget & Target;\n currentTarget: EventTarget & Target;\n relatedTarget: Element;\n bubbles: boolean;\n cancelable: boolean;\n defaultPrevented: boolean;\n eventPhase: number;\n isTrusted: boolean;\n timeStamp: number;\n type: string;\n\n constructor(type: string, nativeEvent: FocusEvent) {\n this.nativeEvent = nativeEvent;\n this.target = nativeEvent.target as EventTarget & Target;\n this.currentTarget = nativeEvent.currentTarget as EventTarget & Target;\n this.relatedTarget = nativeEvent.relatedTarget as Element;\n this.bubbles = nativeEvent.bubbles;\n this.cancelable = nativeEvent.cancelable;\n this.defaultPrevented = nativeEvent.defaultPrevented;\n this.eventPhase = nativeEvent.eventPhase;\n this.isTrusted = nativeEvent.isTrusted;\n this.timeStamp = nativeEvent.timeStamp;\n this.type = type;\n }\n\n isDefaultPrevented(): boolean {\n return this.nativeEvent.defaultPrevented;\n }\n\n preventDefault(): void {\n this.defaultPrevented = true;\n this.nativeEvent.preventDefault();\n }\n\n stopPropagation(): void {\n this.nativeEvent.stopPropagation();\n this.isPropagationStopped = () => true;\n }\n\n isPropagationStopped(): boolean {\n return false;\n }\n\n persist() {}\n}\n\nexport function useSyntheticBlurEvent(onBlur: (e: ReactFocusEvent) => void) {\n let stateRef = useRef({\n isFocused: false,\n observer: null as MutationObserver | null\n });\n\n // Clean up MutationObserver on unmount. See below.\n // eslint-disable-next-line arrow-body-style\n useLayoutEffect(() => {\n const state = stateRef.current;\n return () => {\n if (state.observer) {\n state.observer.disconnect();\n state.observer = null;\n }\n };\n }, []);\n\n let dispatchBlur = useEffectEvent((e: SyntheticFocusEvent) => {\n onBlur?.(e);\n });\n\n // This function is called during a React onFocus event.\n return useCallback((e: ReactFocusEvent) => {\n // React does not fire onBlur when an element is disabled. https://github.com/facebook/react/issues/9142\n // Most browsers fire a native focusout event in this case, except for Firefox. In that case, we use a\n // MutationObserver to watch for the disabled attribute, and dispatch these events ourselves.\n // For browsers that do, focusout fires before the MutationObserver, so onBlur should not fire twice.\n if (\n e.target instanceof HTMLButtonElement ||\n e.target instanceof HTMLInputElement ||\n e.target instanceof HTMLTextAreaElement ||\n e.target instanceof HTMLSelectElement\n ) {\n stateRef.current.isFocused = true;\n\n let target = e.target;\n let onBlurHandler: EventListenerOrEventListenerObject | null = (e) => {\n stateRef.current.isFocused = false;\n\n if (target.disabled) {\n // For backward compatibility, dispatch a (fake) React synthetic event.\n dispatchBlur(new SyntheticFocusEvent('blur', e as FocusEvent));\n }\n\n // We no longer need the MutationObserver once the target is blurred.\n if (stateRef.current.observer) {\n stateRef.current.observer.disconnect();\n stateRef.current.observer = null;\n }\n };\n\n target.addEventListener('focusout', onBlurHandler, {once: true});\n\n stateRef.current.observer = new MutationObserver(() => {\n if (stateRef.current.isFocused && target.disabled) {\n stateRef.current.observer?.disconnect();\n let relatedTargetEl = target === document.activeElement ? null : document.activeElement;\n target.dispatchEvent(new FocusEvent('blur', {relatedTarget: relatedTargetEl}));\n target.dispatchEvent(new FocusEvent('focusout', {bubbles: true, relatedTarget: relatedTargetEl}));\n }\n });\n\n stateRef.current.observer.observe(target, {attributes: true, attributeFilter: ['disabled']});\n }\n }, [dispatchBlur]);\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, FocusableElement, FocusEvents} from '@react-types/shared';\nimport {FocusEvent, useCallback} from 'react';\nimport {getOwnerDocument} from '@react-aria/utils';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusProps extends FocusEvents {\n /** Whether the focus events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface FocusResult {\n /** Props to spread onto the target element. */\n focusProps: DOMAttributes\n}\n\n/**\n * Handles focus events for the immediate target.\n * Focus events on child elements will be ignored.\n */\nexport function useFocus(props: FocusProps): FocusResult {\n let {\n isDisabled,\n onFocus: onFocusProp,\n onBlur: onBlurProp,\n onFocusChange\n } = props;\n\n const onBlur: FocusProps['onBlur'] = useCallback((e: FocusEvent) => {\n if (e.target === e.currentTarget) {\n if (onBlurProp) {\n onBlurProp(e);\n }\n\n if (onFocusChange) {\n onFocusChange(false);\n }\n\n return true;\n }\n }, [onBlurProp, onFocusChange]);\n\n\n const onSyntheticFocus = useSyntheticBlurEvent(onBlur);\n\n const onFocus: FocusProps['onFocus'] = useCallback((e: FocusEvent) => {\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n\n const ownerDocument = getOwnerDocument(e.target);\n\n if (e.target === e.currentTarget && ownerDocument.activeElement === e.target) {\n if (onFocusProp) {\n onFocusProp(e);\n }\n\n if (onFocusChange) {\n onFocusChange(true);\n }\n\n onSyntheticFocus(e);\n }\n }, [onFocusChange, onFocusProp, onSyntheticFocus]);\n\n return {\n focusProps: {\n onFocus: (!isDisabled && (onFocusProp || onFocusChange || onBlurProp)) ? onFocus : undefined,\n onBlur: (!isDisabled && (onBlurProp || onFocusChange)) ? onBlur : undefined\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes} from '@react-types/shared';\nimport {FocusEvent, useCallback, useRef} from 'react';\nimport {useSyntheticBlurEvent} from './utils';\n\nexport interface FocusWithinProps {\n /** Whether the focus within events should be disabled. */\n isDisabled?: boolean,\n /** Handler that is called when the target element or a descendant receives focus. */\n onFocusWithin?: (e: FocusEvent) => void,\n /** Handler that is called when the target element and all descendants lose focus. */\n onBlurWithin?: (e: FocusEvent) => void,\n /** Handler that is called when the the focus within state changes. */\n onFocusWithinChange?: (isFocusWithin: boolean) => void\n}\n\nexport interface FocusWithinResult {\n /** Props to spread onto the target element. */\n focusWithinProps: DOMAttributes\n}\n\n/**\n * Handles focus events for the target and its descendants.\n */\nexport function useFocusWithin(props: FocusWithinProps): FocusWithinResult {\n let {\n isDisabled,\n onBlurWithin,\n onFocusWithin,\n onFocusWithinChange\n } = props;\n let state = useRef({\n isFocusWithin: false\n });\n\n let onBlur = useCallback((e: FocusEvent) => {\n // We don't want to trigger onBlurWithin and then immediately onFocusWithin again\n // when moving focus inside the element. Only trigger if the currentTarget doesn't\n // include the relatedTarget (where focus is moving).\n if (state.current.isFocusWithin && !(e.currentTarget as Element).contains(e.relatedTarget as Element)) {\n state.current.isFocusWithin = false;\n\n if (onBlurWithin) {\n onBlurWithin(e);\n }\n\n if (onFocusWithinChange) {\n onFocusWithinChange(false);\n }\n }\n }, [onBlurWithin, onFocusWithinChange, state]);\n\n let onSyntheticFocus = useSyntheticBlurEvent(onBlur);\n let onFocus = useCallback((e: FocusEvent) => {\n // Double check that document.activeElement actually matches e.target in case a previously chained\n // focus handler already moved focus somewhere else.\n if (!state.current.isFocusWithin && document.activeElement === e.target) {\n if (onFocusWithin) {\n onFocusWithin(e);\n }\n\n if (onFocusWithinChange) {\n onFocusWithinChange(true);\n }\n\n state.current.isFocusWithin = true;\n onSyntheticFocus(e);\n }\n }, [onFocusWithin, onFocusWithinChange, onSyntheticFocus]);\n\n if (isDisabled) {\n return {\n focusWithinProps: {\n // These should not have been null, that would conflict in mergeProps\n onFocus: undefined,\n onBlur: undefined\n }\n };\n }\n\n return {\n focusWithinProps: {\n onFocus,\n onBlur\n }\n };\n}\n","import {DOMAttributes} from '@react-types/shared';\nimport {isFocusVisible, useFocus, useFocusVisibleListener, useFocusWithin} from '@react-aria/interactions';\nimport {useCallback, useRef, useState} from 'react';\n\nexport interface AriaFocusRingProps {\n /**\n * Whether to show the focus ring when something\n * inside the container element has focus (true), or\n * only if the container itself has focus (false).\n * @default 'false'\n */\n within?: boolean,\n\n /** Whether the element is a text input. */\n isTextInput?: boolean,\n\n /** Whether the element will be auto focused. */\n autoFocus?: boolean\n}\n\nexport interface FocusRingAria {\n /** Whether the element is currently focused. */\n isFocused: boolean,\n\n /** Whether keyboard focus should be visible. */\n isFocusVisible: boolean,\n\n /** Props to apply to the container element with the focus ring. */\n focusProps: DOMAttributes\n}\n\n/**\n * Determines whether a focus ring should be shown to indicate keyboard focus.\n * Focus rings are visible only when the user is interacting with a keyboard,\n * not with a mouse, touch, or other input methods.\n */\nexport function useFocusRing(props: AriaFocusRingProps = {}): FocusRingAria {\n let {\n autoFocus = false,\n isTextInput,\n within\n } = props;\n let state = useRef({\n isFocused: false,\n isFocusVisible: autoFocus || isFocusVisible()\n });\n let [isFocused, setFocused] = useState(false);\n let [isFocusVisibleState, setFocusVisible] = useState(() => state.current.isFocused && state.current.isFocusVisible);\n\n let updateState = useCallback(() => setFocusVisible(state.current.isFocused && state.current.isFocusVisible), []);\n\n let onFocusChange = useCallback(isFocused => {\n state.current.isFocused = isFocused;\n setFocused(isFocused);\n updateState();\n }, [updateState]);\n\n useFocusVisibleListener((isFocusVisible) => {\n state.current.isFocusVisible = isFocusVisible;\n updateState();\n }, [], {isTextInput});\n\n let {focusProps} = useFocus({\n isDisabled: within,\n onFocusChange\n });\n\n let {focusWithinProps} = useFocusWithin({\n isDisabled: !within,\n onFocusWithinChange: onFocusChange\n });\n\n return {\n isFocused,\n isFocusVisible: isFocusVisibleState,\n focusProps: within ? focusWithinProps : focusProps\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n/**\n * Calls all functions in the order they were chained with the same arguments.\n */\nexport function chain(...callbacks: any[]): (...args: any[]) => void {\n return (...args: any[]) => {\n for (let callback of callbacks) {\n if (typeof callback === 'function') {\n callback(...args);\n }\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {Dispatch, MutableRefObject, useRef, useState} from 'react';\nimport {useEffectEvent, useLayoutEffect} from './';\n\ntype SetValueAction = (prev: S) => Generator;\n\n// This hook works like `useState`, but when setting the value, you pass a generator function\n// that can yield multiple values. Each yielded value updates the state and waits for the next\n// layout effect, then continues the generator. This allows sequential updates to state to be\n// written linearly.\nexport function useValueEffect(defaultValue: S | (() => S)): [S, Dispatch>] {\n let [value, setValue] = useState(defaultValue);\n let effect: MutableRefObject | null> = useRef | null>(null);\n\n // Store the function in a ref so we can always access the current version\n // which has the proper `value` in scope.\n let nextRef = useEffectEvent(() => {\n if (!effect.current) {\n return;\n }\n // Run the generator to the next yield.\n let newValue = effect.current.next();\n\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\n\n // If the value is the same as the current value,\n // then continue to the next yield. Otherwise,\n // set the value in state and wait for the next layout effect.\n if (value === newValue.value) {\n nextRef();\n } else {\n setValue(newValue.value);\n }\n });\n\n useLayoutEffect(() => {\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) {\n nextRef();\n }\n });\n\n let queue = useEffectEvent(fn => {\n effect.current = fn(value);\n nextRef();\n });\n\n return [value, queue];\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useEffect, useRef, useState} from 'react';\nimport {useLayoutEffect} from './useLayoutEffect';\nimport {useSSRSafeId} from '@react-aria/ssr';\nimport {useValueEffect} from './';\n\n// copied from SSRProvider.tsx to reduce exports, if needed again, consider sharing\nlet canUseDOM = Boolean(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n);\n\nlet idsUpdaterMap: Map void> = new Map();\n\n/**\n * If a default is not provided, generate an id.\n * @param defaultId - Default component id.\n */\nexport function useId(defaultId?: string): string {\n let [value, setValue] = useState(defaultId);\n let nextId = useRef(null);\n\n let res = useSSRSafeId(value);\n\n let updateValue = useCallback((val) => {\n nextId.current = val;\n }, []);\n\n if (canUseDOM) {\n idsUpdaterMap.set(res, updateValue);\n }\n\n useLayoutEffect(() => {\n let r = res;\n return () => {\n idsUpdaterMap.delete(r);\n };\n }, [res]);\n\n // This cannot cause an infinite loop because the ref is updated first.\n // eslint-disable-next-line\n useEffect(() => {\n let newId = nextId.current;\n if (newId) {\n nextId.current = null;\n setValue(newId);\n }\n });\n\n return res;\n}\n\n/**\n * Merges two ids.\n * Different ids will trigger a side-effect and re-render components hooked up with `useId`.\n */\nexport function mergeIds(idA: string, idB: string): string {\n if (idA === idB) {\n return idA;\n }\n\n let setIdA = idsUpdaterMap.get(idA);\n if (setIdA) {\n setIdA(idB);\n return idB;\n }\n\n let setIdB = idsUpdaterMap.get(idB);\n if (setIdB) {\n setIdB(idA);\n return idA;\n }\n\n return idB;\n}\n\n/**\n * Used to generate an id, and after render, check if that id is rendered so we know\n * if we can use it in places such as labelledby.\n * @param depArray - When to recalculate if the id is in the DOM.\n */\nexport function useSlotId(depArray: ReadonlyArray = []): string {\n let id = useId();\n let [resolvedId, setResolvedId] = useValueEffect(id);\n let updateId = useCallback(() => {\n setResolvedId(function *() {\n yield id;\n\n yield document.getElementById(id) ? id : undefined;\n });\n }, [id, setResolvedId]);\n\n useLayoutEffect(updateId, [id, updateId, ...depArray]);\n\n return resolvedId;\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t = { [P in keyof T]: T[P] } extends { [key: number]: infer V } ? NullToObject : never;\ntype NullToObject = T extends (null | undefined) ? {} : T;\n// eslint-disable-next-line no-undef, @typescript-eslint/no-unused-vars\ntype UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;\n\n/**\n * Merges multiple props objects together. Event handlers are chained,\n * classNames are combined, and ids are deduplicated - different ids\n * will trigger a side-effect and re-render components hooked up with `useId`.\n * For all other props, the last prop object overrides all previous ones.\n * @param args - Multiple sets of props to merge together.\n */\nexport function mergeProps(...args: T): UnionToIntersection> {\n // Start with a base clone of the first argument. This is a lot faster than starting\n // with an empty object and adding properties as we go.\n let result: Props = {...args[0]};\n for (let i = 1; i < args.length; i++) {\n let props = args[i];\n for (let key in props) {\n let a = result[key];\n let b = props[key];\n\n // Chain events\n if (\n typeof a === 'function' &&\n typeof b === 'function' &&\n // This is a lot faster than a regex.\n key[0] === 'o' &&\n key[1] === 'n' &&\n key.charCodeAt(2) >= /* 'A' */ 65 &&\n key.charCodeAt(2) <= /* 'Z' */ 90\n ) {\n result[key] = chain(a, b);\n\n // Merge classnames, sometimes classNames are empty string which eval to false, so we just need to do a type check\n } else if (\n (key === 'className' || key === 'UNSAFE_className') &&\n typeof a === 'string' &&\n typeof b === 'string'\n ) {\n result[key] = clsx(a, b);\n } else if (key === 'id' && a && b) {\n result.id = mergeIds(a, b);\n // Override others\n } else {\n result[key] = b !== undefined ? b : a;\n }\n }\n }\n\n return result as UnionToIntersection>;\n}\n","\"use client\";\n\n// src/dom.ts\nimport {\n useImperativeHandle,\n useLayoutEffect,\n useRef\n} from \"react\";\nfunction canUseDOM() {\n return !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\n}\nvar isBrowser = canUseDOM();\nfunction getUserAgentBrowser(navigator) {\n const { userAgent: ua, vendor } = navigator;\n const android = /(android)/i.test(ua);\n switch (true) {\n case /CriOS/.test(ua):\n return \"Chrome for iOS\";\n case /Edg\\//.test(ua):\n return \"Edge\";\n case (android && /Silk\\//.test(ua)):\n return \"Silk\";\n case (/Chrome/.test(ua) && /Google Inc/.test(vendor)):\n return \"Chrome\";\n case /Firefox\\/\\d+\\.\\d+$/.test(ua):\n return \"Firefox\";\n case android:\n return \"AOSP\";\n case /MSIE|Trident/.test(ua):\n return \"IE\";\n case (/Safari/.test(navigator.userAgent) && /Apple Computer/.test(ua)):\n return \"Safari\";\n case /AppleWebKit/.test(ua):\n return \"WebKit\";\n default:\n return null;\n }\n}\nfunction getUserAgentOS(navigator) {\n const { userAgent: ua, platform } = navigator;\n switch (true) {\n case /Android/.test(ua):\n return \"Android\";\n case /iPhone|iPad|iPod/.test(platform):\n return \"iOS\";\n case /Win/.test(platform):\n return \"Windows\";\n case /Mac/.test(platform):\n return \"Mac\";\n case /CrOS/.test(ua):\n return \"Chrome OS\";\n case /Firefox/.test(ua):\n return \"Firefox OS\";\n default:\n return null;\n }\n}\nfunction detectDeviceType(navigator) {\n const { userAgent: ua } = navigator;\n if (/(tablet)|(iPad)|(Nexus 9)/i.test(ua))\n return \"tablet\";\n if (/(mobi)/i.test(ua))\n return \"phone\";\n return \"desktop\";\n}\nfunction detectOS(os) {\n if (!isBrowser)\n return false;\n return getUserAgentOS(window.navigator) === os;\n}\nfunction detectBrowser(browser) {\n if (!isBrowser)\n return false;\n return getUserAgentBrowser(window.navigator) === browser;\n}\nfunction detectTouch() {\n if (!isBrowser)\n return false;\n return window.ontouchstart === null && window.ontouchmove === null && window.ontouchend === null;\n}\nfunction createDOMRef(ref) {\n return {\n UNSAFE_getDOMNode() {\n return ref.current;\n }\n };\n}\nfunction createFocusableRef(domRef, focusableRef = domRef) {\n return {\n ...createDOMRef(domRef),\n focus() {\n if (focusableRef.current) {\n focusableRef.current.focus();\n }\n }\n };\n}\nfunction useDOMRef(ref) {\n const domRef = useRef(null);\n useImperativeHandle(ref, () => domRef.current);\n return domRef;\n}\nfunction useFocusableRef(ref, focusableRef) {\n const domRef = useRef(null);\n useImperativeHandle(ref, () => createFocusableRef(domRef, focusableRef));\n return domRef;\n}\nfunction useSyncRef(context, ref) {\n useLayoutEffect(() => {\n if (context && context.ref && ref && ref.current) {\n context.ref.current = ref.current;\n return () => {\n var _a;\n if ((_a = context.ref) == null ? void 0 : _a.current) {\n context.ref.current = null;\n }\n };\n }\n }, [context, ref]);\n}\nfunction areRectsIntersecting(rect1, rect2) {\n return rect1 && rect2 && rect1.x < rect2.x + rect2.width && rect1.x + rect1.width > rect2.x && rect1.y < rect2.y + rect2.height && rect1.y + rect1.height > rect2.y;\n}\n\nexport {\n canUseDOM,\n isBrowser,\n getUserAgentBrowser,\n getUserAgentOS,\n detectDeviceType,\n detectOS,\n detectBrowser,\n detectTouch,\n createDOMRef,\n createFocusableRef,\n useDOMRef,\n useFocusableRef,\n useSyncRef,\n areRectsIntersecting\n};\n","// src/dom-props.ts\nvar DOMPropNames = /* @__PURE__ */ new Set([\n \"id\",\n \"type\",\n \"style\",\n \"title\",\n \"role\",\n \"tabIndex\",\n \"htmlFor\",\n \"width\",\n \"height\",\n \"abbr\",\n \"accept\",\n \"acceptCharset\",\n \"accessKey\",\n \"action\",\n \"allowFullScreen\",\n \"allowTransparency\",\n \"alt\",\n \"async\",\n \"autoComplete\",\n \"autoFocus\",\n \"autoPlay\",\n \"cellPadding\",\n \"cellSpacing\",\n \"challenge\",\n \"charset\",\n \"checked\",\n \"cite\",\n \"class\",\n \"className\",\n \"cols\",\n \"colSpan\",\n \"command\",\n \"content\",\n \"contentEditable\",\n \"contextMenu\",\n \"controls\",\n \"coords\",\n \"crossOrigin\",\n \"data\",\n \"dateTime\",\n \"default\",\n \"defer\",\n \"dir\",\n \"disabled\",\n \"download\",\n \"draggable\",\n \"dropzone\",\n \"encType\",\n \"enterKeyHint\",\n \"for\",\n \"form\",\n \"formAction\",\n \"formEncType\",\n \"formMethod\",\n \"formNoValidate\",\n \"formTarget\",\n \"frameBorder\",\n \"headers\",\n \"hidden\",\n \"high\",\n \"href\",\n \"hrefLang\",\n \"httpEquiv\",\n \"icon\",\n \"inputMode\",\n \"isMap\",\n \"itemId\",\n \"itemProp\",\n \"itemRef\",\n \"itemScope\",\n \"itemType\",\n \"kind\",\n \"label\",\n \"lang\",\n \"list\",\n \"loop\",\n \"manifest\",\n \"max\",\n \"maxLength\",\n \"media\",\n \"mediaGroup\",\n \"method\",\n \"min\",\n \"minLength\",\n \"multiple\",\n \"muted\",\n \"name\",\n \"noValidate\",\n \"open\",\n \"optimum\",\n \"pattern\",\n \"ping\",\n \"placeholder\",\n \"poster\",\n \"preload\",\n \"radioGroup\",\n \"referrerPolicy\",\n \"readOnly\",\n \"rel\",\n \"required\",\n \"rows\",\n \"rowSpan\",\n \"sandbox\",\n \"scope\",\n \"scoped\",\n \"scrolling\",\n \"seamless\",\n \"selected\",\n \"shape\",\n \"size\",\n \"sizes\",\n \"slot\",\n \"sortable\",\n \"span\",\n \"spellCheck\",\n \"src\",\n \"srcDoc\",\n \"srcSet\",\n \"start\",\n \"step\",\n \"target\",\n \"translate\",\n \"typeMustMatch\",\n \"useMap\",\n \"value\",\n \"wmode\",\n \"wrap\"\n]);\nvar DOMEventNames = /* @__PURE__ */ new Set([\n \"onCopy\",\n \"onCut\",\n \"onPaste\",\n \"onLoad\",\n \"onError\",\n \"onWheel\",\n \"onScroll\",\n \"onCompositionEnd\",\n \"onCompositionStart\",\n \"onCompositionUpdate\",\n \"onKeyDown\",\n \"onKeyPress\",\n \"onKeyUp\",\n \"onFocus\",\n \"onBlur\",\n \"onChange\",\n \"onInput\",\n \"onSubmit\",\n \"onClick\",\n \"onContextMenu\",\n \"onDoubleClick\",\n \"onDrag\",\n \"onDragEnd\",\n \"onDragEnter\",\n \"onDragExit\",\n \"onDragLeave\",\n \"onDragOver\",\n \"onDragStart\",\n \"onDrop\",\n \"onMouseDown\",\n \"onMouseEnter\",\n \"onMouseLeave\",\n \"onMouseMove\",\n \"onMouseOut\",\n \"onMouseOver\",\n \"onMouseUp\",\n \"onPointerDown\",\n \"onPointerEnter\",\n \"onPointerLeave\",\n \"onPointerUp\",\n \"onSelect\",\n \"onTouchCancel\",\n \"onTouchEnd\",\n \"onTouchMove\",\n \"onTouchStart\",\n \"onAnimationStart\",\n \"onAnimationEnd\",\n \"onAnimationIteration\",\n \"onTransitionEnd\"\n]);\n\nexport {\n DOMPropNames,\n DOMEventNames\n};\n","import {\n DOMEventNames,\n DOMPropNames\n} from \"./chunk-RFWDHYLZ.mjs\";\n\n// src/filter-dom-props.ts\nvar propRe = /^(data-.*)$/;\nvar ariaRe = /^(aria-.*)$/;\nvar funcRe = /^(on[A-Z].*)$/;\nfunction filterDOMProps(props, opts = {}) {\n let {\n labelable = true,\n enabled = true,\n propNames,\n omitPropNames,\n omitEventNames,\n omitDataProps,\n omitEventProps\n } = opts;\n let filteredProps = {};\n if (!enabled) {\n return props;\n }\n for (const prop in props) {\n if (omitPropNames == null ? void 0 : omitPropNames.has(prop)) {\n continue;\n }\n if ((omitEventNames == null ? void 0 : omitEventNames.has(prop)) && funcRe.test(prop)) {\n continue;\n }\n if (funcRe.test(prop) && !DOMEventNames.has(prop)) {\n continue;\n }\n if (omitDataProps && propRe.test(prop)) {\n continue;\n }\n if (omitEventProps && funcRe.test(prop)) {\n continue;\n }\n if (Object.prototype.hasOwnProperty.call(props, prop) && (DOMPropNames.has(prop) || labelable && ariaRe.test(prop) || (propNames == null ? void 0 : propNames.has(prop)) || propRe.test(prop)) || funcRe.test(prop)) {\n filteredProps[prop] = props[prop];\n }\n }\n return filteredProps;\n}\n\nexport {\n filterDOMProps\n};\n","// src/utils/variants.ts\nvar solid = {\n default: \"bg-default text-default-foreground\",\n primary: \"bg-primary text-primary-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n danger: \"bg-danger text-danger-foreground\",\n foreground: \"bg-foreground text-background\"\n};\nvar shadow = {\n default: \"shadow-lg shadow-default/50 bg-default text-default-foreground\",\n primary: \"shadow-lg shadow-primary/40 bg-primary text-primary-foreground\",\n secondary: \"shadow-lg shadow-secondary/40 bg-secondary text-secondary-foreground\",\n success: \"shadow-lg shadow-success/40 bg-success text-success-foreground\",\n warning: \"shadow-lg shadow-warning/40 bg-warning text-warning-foreground\",\n danger: \"shadow-lg shadow-danger/40 bg-danger text-danger-foreground\",\n foreground: \"shadow-lg shadow-foreground/40 bg-foreground text-background\"\n};\nvar bordered = {\n default: \"bg-transparent border-default text-foreground\",\n primary: \"bg-transparent border-primary text-primary\",\n secondary: \"bg-transparent border-secondary text-secondary\",\n success: \"bg-transparent border-success text-success\",\n warning: \"bg-transparent border-warning text-warning\",\n danger: \"bg-transparent border-danger text-danger\",\n foreground: \"bg-transparent border-foreground text-foreground\"\n};\nvar flat = {\n default: \"bg-default/40 text-default-700\",\n primary: \"bg-primary/20 text-primary-700\",\n secondary: \"bg-secondary/20 text-secondary-700\",\n success: \"bg-success/20 text-success-800 dark:text-success\",\n warning: \"bg-warning/20 text-warning-800 dark:text-warning\",\n danger: \"bg-danger/20 text-danger-800 dark:text-danger-500\",\n foreground: \"bg-foreground/10 text-foreground\"\n};\nvar faded = {\n default: \"border-default bg-default-100 text-default-foreground\",\n primary: \"border-default bg-default-100 text-primary\",\n secondary: \"border-default bg-default-100 text-secondary\",\n success: \"border-default bg-default-100 text-success\",\n warning: \"border-default bg-default-100 text-warning\",\n danger: \"border-default bg-default-100 text-danger\",\n foreground: \"border-default bg-default-100 text-foreground\"\n};\nvar light = {\n default: \"bg-transparent text-default-foreground\",\n primary: \"bg-transparent text-primary\",\n secondary: \"bg-transparent text-secondary\",\n success: \"bg-transparent text-success\",\n warning: \"bg-transparent text-warning\",\n danger: \"bg-transparent text-danger\",\n foreground: \"bg-transparent text-foreground\"\n};\nvar ghost = {\n default: \"border-default text-default-foreground\",\n primary: \"border-primary text-primary\",\n secondary: \"border-secondary text-secondary\",\n success: \"border-success text-success\",\n warning: \"border-warning text-warning\",\n danger: \"border-danger text-danger\",\n foreground: \"border-foreground text-foreground hover:!bg-foreground\"\n};\nvar colorVariants = {\n solid,\n shadow,\n bordered,\n flat,\n faded,\n light,\n ghost\n};\n\nexport {\n colorVariants\n};\n","var l=e=>typeof e==\"boolean\"?`${e}`:e===0?\"0\":e,u=e=>!e||typeof e!=\"object\"||Object.keys(e).length===0,x=(e,o)=>JSON.stringify(e)===JSON.stringify(o),A=e=>typeof e==\"boolean\";function i(e,o){e.forEach(function(r){Array.isArray(r)?i(r,o):o.push(r);});}function y(e){let o=[];return i(e,o),o}var a=(...e)=>y(e).filter(Boolean),p=(e,o)=>{let r={},c=Object.keys(e),f=Object.keys(o);for(let t of c)if(f.includes(t)){let s=e[t],n=o[t];typeof s==\"object\"&&typeof n==\"object\"?r[t]=p(s,n):Array.isArray(s)||Array.isArray(n)?r[t]=a(n,s):r[t]=n+\" \"+s;}else r[t]=e[t];for(let t of f)c.includes(t)||(r[t]=o[t]);return r},g=e=>!e||typeof e!=\"string\"?e:e.replace(/\\s+/g,\" \").trim();\n\nexport { l as a, u as b, x as c, A as d, y as e, a as f, p as g, g as h };\n","import { ClassGroup, ClassGroupId, ClassValidator, Config, ThemeGetter, ThemeObject } from './types'\n\nexport interface ClassPartObject {\n nextPart: Map\n validators: ClassValidatorObject[]\n classGroupId?: ClassGroupId\n}\n\ninterface ClassValidatorObject {\n classGroupId: ClassGroupId\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport function createClassUtils(config: Config) {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers = {} } = config\n\n function getClassGroupId(className: string) {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift()\n }\n\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n function getConflictingClassGroupIds(classGroupId: ClassGroupId, hasPostfixModifier: boolean) {\n const conflicts = conflictingClassGroups[classGroupId] || []\n\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n }\n\n return conflicts\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nfunction getGroupRecursive(\n classParts: string[],\n classPartObject: ClassPartObject,\n): ClassGroupId | undefined {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nfunction getGroupIdForArbitraryProperty(className: string) {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property\n }\n }\n}\n\n/**\n * Exported for testing only\n */\nexport function createClassMap(config: Config) {\n const { theme, prefix } = config\n const classMap: ClassPartObject = {\n nextPart: new Map(),\n validators: [],\n }\n\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(\n Object.entries(config.classGroups),\n prefix,\n )\n\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme)\n })\n\n return classMap\n}\n\nfunction processClassesRecursively(\n classGroup: ClassGroup,\n classPartObject: ClassPartObject,\n classGroupId: ClassGroupId,\n theme: ThemeObject,\n) {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nfunction getPart(classPartObject: ClassPartObject, path: string) {\n let currentClassPartObject = classPartObject\n\n path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: [],\n })\n }\n\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nfunction isThemeGetter(func: ClassValidator | ThemeGetter): func is ThemeGetter {\n return (func as ThemeGetter).isThemeGetter\n}\n\nfunction getPrefixedClassGroupEntries(\n classGroupEntries: Array<[classGroupId: string, classGroup: ClassGroup]>,\n prefix: string | undefined,\n): Array<[classGroupId: string, classGroup: ClassGroup]> {\n if (!prefix) {\n return classGroupEntries\n }\n\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map((classDefinition) => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition\n }\n\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(\n Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]),\n )\n }\n\n return classDefinition\n })\n\n return [classGroupId, prefixedClassGroup]\n })\n}\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nexport function createLruCache(maxCacheSize: number): LruCache {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache = new Map()\n let previousCache = new Map()\n\n function update(key: Key, value: Value) {\n cache.set(key, value)\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = new Map()\n }\n }\n\n return {\n get(key) {\n let value = cache.get(key)\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value)\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { Config } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nexport function createSplitModifiers(config: Config) {\n const separator = config.separator || ':'\n const isSeparatorSingleCharacter = separator.length === 1\n const firstSeparatorCharacter = separator[0]\n const separatorLength = separator.length\n\n // splitModifiers inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n return function splitModifiers(className: string) {\n const modifiers = []\n\n let bracketDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index]\n\n if (bracketDepth === 0) {\n if (\n currentCharacter === firstSeparatorCharacter &&\n (isSeparatorSingleCharacter ||\n className.slice(index, index + separatorLength) === separator)\n ) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + separatorLength\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') {\n bracketDepth++\n } else if (currentCharacter === ']') {\n bracketDepth--\n }\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.substring(modifierStart)\n const hasImportantModifier =\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n const baseClassName = hasImportantModifier\n ? baseClassNameWithImportantModifier.substring(1)\n : baseClassNameWithImportantModifier\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n }\n }\n}\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nexport function sortModifiers(modifiers: string[]) {\n if (modifiers.length <= 1) {\n return modifiers\n }\n\n const sortedModifiers: string[] = []\n let unsortedModifiers: string[] = []\n\n modifiers.forEach((modifier) => {\n const isArbitraryVariant = modifier[0] === '['\n\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n unsortedModifiers = []\n } else {\n unsortedModifiers.push(modifier)\n }\n })\n\n sortedModifiers.push(...unsortedModifiers.sort())\n\n return sortedModifiers\n}\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER, sortModifiers } from './modifier-utils'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport function mergeClassList(classList: string, configUtils: ConfigUtils) {\n const { splitModifiers, getClassGroupId, getConflictingClassGroupIds } = configUtils\n\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = new Set()\n\n return (\n classList\n .trim()\n .split(SPLIT_CLASSES_REGEX)\n .map((originalClassName) => {\n const {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = splitModifiers(originalClassName)\n\n let classGroupId = getClassGroupId(\n maybePostfixModifierPosition\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition)\n\n if (!classGroupId) {\n if (!maybePostfixModifierPosition) {\n return {\n isTailwindClass: false as const,\n originalClassName,\n }\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n return {\n isTailwindClass: false as const,\n originalClassName,\n }\n }\n\n hasPostfixModifier = false\n }\n\n const variantModifier = sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n return {\n isTailwindClass: true as const,\n modifierId,\n classGroupId,\n originalClassName,\n hasPostfixModifier,\n }\n })\n .reverse()\n // Last class in conflict wins, so we need to filter conflicting classes in reverse order.\n .filter((parsed) => {\n if (!parsed.isTailwindClass) {\n return true\n }\n\n const { modifierId, classGroupId, hasPostfixModifier } = parsed\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.has(classId)) {\n return false\n }\n\n classGroupsInConflict.add(classId)\n\n getConflictingClassGroupIds(classGroupId, hasPostfixModifier).forEach((group) =>\n classGroupsInConflict.add(modifierId + group),\n )\n\n return true\n })\n .reverse()\n .map((parsed) => parsed.originalClassName)\n .join(' ')\n )\n}\n","/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com)\n */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < arguments.length) {\n if ((argument = arguments[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nfunction toValue(mix: ClassNameArray | string) {\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { Config } from './types'\n\ntype CreateConfigFirst = () => Config\ntype CreateConfigSubsequent = (config: Config) => Config\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType\n\nexport function createTailwindMerge(\n ...createConfig: [CreateConfigFirst, ...CreateConfigSubsequent[]]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const [firstCreateConfig, ...restCreateConfig] = createConfig\n\n const config = restCreateConfig.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n firstCreateConfig(),\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n","import { createClassUtils } from './class-utils'\nimport { createLruCache } from './lru-cache'\nimport { createSplitModifiers } from './modifier-utils'\nimport { Config } from './types'\n\nexport type ConfigUtils = ReturnType\n\nexport function createConfigUtils(config: Config) {\n return {\n cache: createLruCache(config.cacheSize),\n splitModifiers: createSplitModifiers(config),\n ...createClassUtils(config),\n }\n}\n","import { ThemeGetter, ThemeObject } from './types'\n\nexport function fromTheme(key: string): ThemeGetter {\n const themeGetter = (theme: ThemeObject) => theme[key] || []\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst stringLengths = new Set(['px', 'full', 'screen'])\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/\n// Shadow always begins with x and y offset separated by underscore\nconst shadowRegex = /^-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/\n\nexport function isLength(value: string) {\n return (\n isNumber(value) ||\n stringLengths.has(value) ||\n fractionRegex.test(value) ||\n isArbitraryLength(value)\n )\n}\n\nexport function isArbitraryLength(value: string) {\n return getIsArbitraryValue(value, 'length', isLengthOnly)\n}\n\nexport function isArbitrarySize(value: string) {\n return getIsArbitraryValue(value, 'size', isNever)\n}\n\nexport function isArbitraryPosition(value: string) {\n return getIsArbitraryValue(value, 'position', isNever)\n}\n\nexport function isArbitraryUrl(value: string) {\n return getIsArbitraryValue(value, 'url', isUrl)\n}\n\nexport function isArbitraryNumber(value: string) {\n return getIsArbitraryValue(value, 'number', isNumber)\n}\n\n/**\n * @deprecated Will be removed in next major version. Use `isArbitraryNumber` instead.\n */\nexport const isArbitraryWeight = isArbitraryNumber\n\nexport function isNumber(value: string) {\n return !Number.isNaN(Number(value))\n}\n\nexport function isPercent(value: string) {\n return value.endsWith('%') && isNumber(value.slice(0, -1))\n}\n\nexport function isInteger(value: string) {\n return isIntegerOnly(value) || getIsArbitraryValue(value, 'number', isIntegerOnly)\n}\n\nexport function isArbitraryValue(value: string) {\n return arbitraryValueRegex.test(value)\n}\n\nexport function isAny() {\n return true\n}\n\nexport function isTshirtSize(value: string) {\n return tshirtUnitRegex.test(value)\n}\n\nexport function isArbitraryShadow(value: string) {\n return getIsArbitraryValue(value, '', isShadow)\n}\n\nfunction getIsArbitraryValue(value: string, label: string, testValue: (value: string) => boolean) {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return result[1] === label\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nfunction isLengthOnly(value: string) {\n return lengthUnitRegex.test(value)\n}\n\nfunction isNever() {\n return false\n}\n\nfunction isUrl(value: string) {\n return value.startsWith('url(')\n}\n\nfunction isIntegerOnly(value: string) {\n return Number.isInteger(Number(value))\n}\n\nfunction isShadow(value: string) {\n return shadowRegex.test(value)\n}\n","import { fromTheme } from './from-theme'\nimport { Config } from './types'\nimport {\n isAny,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryUrl,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport function getDefaultConfig() {\n const colors = fromTheme('colors')\n const spacing = fromTheme('spacing')\n const blur = fromTheme('blur')\n const brightness = fromTheme('brightness')\n const borderColor = fromTheme('borderColor')\n const borderRadius = fromTheme('borderRadius')\n const borderSpacing = fromTheme('borderSpacing')\n const borderWidth = fromTheme('borderWidth')\n const contrast = fromTheme('contrast')\n const grayscale = fromTheme('grayscale')\n const hueRotate = fromTheme('hueRotate')\n const invert = fromTheme('invert')\n const gap = fromTheme('gap')\n const gradientColorStops = fromTheme('gradientColorStops')\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions')\n const inset = fromTheme('inset')\n const margin = fromTheme('margin')\n const opacity = fromTheme('opacity')\n const padding = fromTheme('padding')\n const saturate = fromTheme('saturate')\n const scale = fromTheme('scale')\n const sepia = fromTheme('sepia')\n const skew = fromTheme('skew')\n const space = fromTheme('space')\n const translate = fromTheme('translate')\n\n const getOverscroll = () => ['auto', 'contain', 'none'] as const\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing] as const\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing] as const\n const getLengthWithEmpty = () => ['', isLength] as const\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue] as const\n const getPositions = () =>\n [\n 'bottom',\n 'center',\n 'left',\n 'left-bottom',\n 'left-top',\n 'right',\n 'right-bottom',\n 'right-top',\n 'top',\n ] as const\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'] as const\n const getBlendModes = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n 'plus-lighter',\n ] as const\n const getAlign = () =>\n ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'] as const\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue] as const\n const getBreaks = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const getNumber = () => [isNumber, isArbitraryNumber]\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue]\n\n return {\n cacheSize: 500,\n theme: {\n colors: [isAny],\n spacing: [isLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumber(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmpty(),\n contrast: getNumber(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumber(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumber(),\n scale: getNumber(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary(),\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{ aspect: ['auto', 'square', 'video', isArbitraryValue] }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{ columns: [isTshirtSize] }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': getBreaks() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': getBreaks() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none'] }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: [...getPositions(), isArbitraryValue] }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: getOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': getOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': getOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: getOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': getOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': getOverscroll() }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{ inset: [inset] }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': [inset] }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': [inset] }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: [inset] }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: [inset] }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: [inset] }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: [inset] }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: [inset] }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: [inset] }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{ z: ['auto', isInteger] }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{ basis: getSpacingWithAutoAndArbitrary() }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['wrap', 'wrap-reverse', 'nowrap'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: ['1', 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: getZeroAndEmpty() }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: getZeroAndEmpty() }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{ order: ['first', 'last', 'none', isInteger] }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': [isAny] }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: ['auto', { span: ['full', isInteger] }, isArbitraryValue] }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': [isAny] }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: ['auto', { span: [isInteger] }, isArbitraryValue] }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: [gap] }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': [gap] }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': [gap] }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: ['normal', ...getAlign()] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': ['start', 'end', 'center', 'stretch'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...getAlign(), 'baseline'] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{ self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline'] }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': [...getAlign(), 'baseline'] }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: [padding] }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: [padding] }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: [padding] }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: [padding] }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: [padding] }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: [padding] }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: [padding] }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: [padding] }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: [padding] }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: [margin] }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: [margin] }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: [margin] }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: [margin] }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: [margin] }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: [margin] }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: [margin] }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: [margin] }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: [margin] }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{ 'space-x': [space] }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{ 'space-y': [space] }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: ['auto', 'min', 'max', 'fit', isArbitraryValue, spacing] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{ 'min-w': ['min', 'max', 'fit', isArbitraryValue, isLength] }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n '0',\n 'none',\n 'full',\n 'min',\n 'max',\n 'fit',\n 'prose',\n { screen: [isTshirtSize] },\n isTshirtSize,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit'] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['min', 'max', 'fit', isArbitraryValue, isLength] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit'] }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{ text: ['base', isTshirtSize, isArbitraryLength] }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [\n {\n font: [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isAny] }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractons'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [\n {\n tracking: [\n 'tighter',\n 'tight',\n 'normal',\n 'wide',\n 'wider',\n 'widest',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{ 'line-clamp': ['none', isNumber, isArbitraryNumber] }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n 'none',\n 'tight',\n 'snug',\n 'normal',\n 'relaxed',\n 'loose',\n isArbitraryValue,\n isLength,\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryValue] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{ list: ['none', 'disc', 'decimal', isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: [colors] }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{ 'placeholder-opacity': [opacity] }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: [colors] }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{ 'text-opacity': [opacity] }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{ decoration: [...getLineStyles(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{ decoration: ['auto', 'from-font', isLength] }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{ 'underline-offset': ['auto', isArbitraryValue, isLength] }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: [colors] }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: getSpacingWithArbitrary() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [\n { whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces'] },\n ],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryValue] }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{ 'bg-opacity': [opacity] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: [...getPositions(), isArbitraryPosition] }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: ['no-repeat', { repeat: ['', 'x', 'y', 'round', 'space'] }] }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: ['auto', 'cover', 'contain', isArbitrarySize] }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n { 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isArbitraryUrl,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: [colors] }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: [gradientColorStops] }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: [gradientColorStops] }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: [gradientColorStops] }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: [borderRadius] }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': [borderRadius] }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': [borderRadius] }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': [borderRadius] }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': [borderRadius] }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': [borderRadius] }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': [borderRadius] }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': [borderRadius] }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': [borderRadius] }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': [borderRadius] }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': [borderRadius] }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': [borderRadius] }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': [borderRadius] }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': [borderRadius] }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': [borderRadius] }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: [borderWidth] }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': [borderWidth] }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': [borderWidth] }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': [borderWidth] }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': [borderWidth] }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': [borderWidth] }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': [borderWidth] }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': [borderWidth] }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': [borderWidth] }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{ 'border-opacity': [opacity] }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...getLineStyles(), 'hidden'] }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{ 'divide-x': [borderWidth] }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{ 'divide-y': [borderWidth] }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{ 'divide-opacity': [opacity] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{ divide: getLineStyles() }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: [borderColor] }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': [borderColor] }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': [borderColor] }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': [borderColor] }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': [borderColor] }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': [borderColor] }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': [borderColor] }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: [borderColor] }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: ['', ...getLineStyles()] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{ 'outline-offset': [isArbitraryValue, isLength] }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{ outline: [isLength] }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: [colors] }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{ ring: getLengthWithEmpty() }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{ ring: [colors] }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{ 'ring-opacity': [opacity] }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{ 'ring-offset': [isLength] }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{ 'ring-offset': [colors] }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{ shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow] }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{ shadow: [isAny] }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [opacity] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': getBlendModes() }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': getBlendModes() }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{ filter: ['', 'none'] }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: [blur] }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [brightness] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [contrast] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{ 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue] }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: [grayscale] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [hueRotate] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: [invert] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [saturate] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: [sepia] }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{ 'backdrop-filter': ['', 'none'] }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': [blur] }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{ 'backdrop-brightness': [brightness] }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{ 'backdrop-contrast': [contrast] }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{ 'backdrop-grayscale': [grayscale] }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{ 'backdrop-hue-rotate': [hueRotate] }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{ 'backdrop-invert': [invert] }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{ 'backdrop-opacity': [opacity] }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{ 'backdrop-saturate': [saturate] }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{ 'backdrop-sepia': [sepia] }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': [borderSpacing] }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': [borderSpacing] }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': [borderSpacing] }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n 'none',\n 'all',\n '',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: getNumberAndArbitrary() }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{ ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue] }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: getNumberAndArbitrary() }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue] }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{ transform: ['', 'gpu', 'none'] }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: [scale] }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': [scale] }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': [scale] }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: [isInteger, isArbitraryValue] }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': [translate] }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': [translate] }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': [skew] }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': [skew] }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [\n {\n origin: [\n 'center',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n 'top-left',\n isArbitraryValue,\n ],\n },\n ],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: ['auto', colors] }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: ['appearance-none'],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: [colors] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['none', 'auto'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', 'y', 'x', ''] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': getSpacingWithArbitrary() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [\n {\n touch: [\n 'auto',\n 'none',\n 'pinch-zoom',\n 'manipulation',\n { pan: ['x', 'left', 'right', 'y', 'up', 'down'] },\n ],\n },\n ],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n { 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue] },\n ],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: [colors, 'none'] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{ stroke: [isLength, isArbitraryNumber] }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: [colors, 'none'] }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n 'font-size': ['leading'],\n 'fvn-normal': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n rounded: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': [\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading'],\n },\n } as const satisfies Config\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { Config } from './types'\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nexport function mergeConfigs(baseConfig: Config, configExtension: Partial) {\n for (const key in configExtension) {\n mergePropertyRecursively(baseConfig as any, key, configExtension[key as keyof Config])\n }\n\n return baseConfig\n}\n\nconst hasOwnProperty = Object.prototype.hasOwnProperty\nconst overrideTypes = new Set(['string', 'number', 'boolean'])\n\nfunction mergePropertyRecursively(\n baseObject: Record,\n mergeKey: string,\n mergeValue: unknown,\n) {\n if (\n !hasOwnProperty.call(baseObject, mergeKey) ||\n overrideTypes.has(typeof mergeValue) ||\n mergeValue === null\n ) {\n baseObject[mergeKey] = mergeValue\n return\n }\n\n if (Array.isArray(mergeValue) && Array.isArray(baseObject[mergeKey])) {\n baseObject[mergeKey] = (baseObject[mergeKey] as unknown[]).concat(mergeValue)\n return\n }\n\n if (typeof mergeValue === 'object' && typeof baseObject[mergeKey] === 'object') {\n if (baseObject[mergeKey] === null) {\n baseObject[mergeKey] = mergeValue\n return\n }\n\n for (const nextKey in mergeValue) {\n mergePropertyRecursively(\n baseObject[mergeKey] as Record,\n nextKey,\n mergeValue[nextKey as keyof object],\n )\n }\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { Config } from './types'\n\ntype CreateConfigSubsequent = (config: Config) => Config\n\nexport function extendTailwindMerge(\n configExtension: Partial | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) {\n return typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n}\n","import { e, b, g, c, f, a, h } from './chunk-JXBJZR5A.js';\nimport { twMerge, extendTailwindMerge } from 'tailwind-merge';\n\nvar se={twMerge:!0,twMergeConfig:{},responsiveVariants:!1},_=s=>s||void 0,N=(...s)=>_(e(s).filter(Boolean).join(\" \")),q=null,M={},F=!1,w=(...s)=>b$1=>b$1.twMerge?((!q||F)&&(F=!1,q=b(M)?twMerge:extendTailwindMerge(M)),_(q(N(s)))):N(s),Z=(s,b)=>{for(let e in b)s.hasOwnProperty(e)?s[e]=N(s[e],b[e]):s[e]=b[e];return s},ie=(s,b$1)=>{let{extend:e=null,slots:j={},variants:U={},compoundVariants:C=[],compoundSlots:V=[],defaultVariants:W={}}=s,m={...se,...b$1},S=e!=null&&e.base?N(e.base,s==null?void 0:s.base):s==null?void 0:s.base,g$1=e!=null&&e.variants&&!b(e.variants)?g(U,e.variants):U,A=e!=null&&e.defaultVariants&&!b(e.defaultVariants)?{...e.defaultVariants,...W}:W;!b(m.twMergeConfig)&&!c(m.twMergeConfig,M)&&(F=!0,M=m.twMergeConfig);let O=b(e==null?void 0:e.slots),$=b(j)?{}:{base:N(s==null?void 0:s.base,O&&(e==null?void 0:e.base)),...j},h$1=O?$:Z({...e==null?void 0:e.slots},b($)?{base:s==null?void 0:s.base}:$),v=l=>{if(b(g$1)&&b(j)&&O)return w(S,l==null?void 0:l.class,l==null?void 0:l.className)(m);if(C&&!Array.isArray(C))throw new TypeError(`The \"compoundVariants\" prop must be an array. Received: ${typeof C}`);if(V&&!Array.isArray(V))throw new TypeError(`The \"compoundSlots\" prop must be an array. Received: ${typeof V}`);let K=(t,n,a=[],i)=>{let r=a;if(typeof n==\"string\")r=r.concat(h(n).split(\" \").map(c=>`${t}:${c}`));else if(Array.isArray(n))r=r.concat(n.reduce((c,f)=>c.concat(`${t}:${f}`),[]));else if(typeof n==\"object\"&&typeof i==\"string\"){for(let c in n)if(n.hasOwnProperty(c)&&c===i){let f=n[c];if(f&&typeof f==\"string\"){let o=h(f);r[i]?r[i]=r[i].concat(o.split(\" \").map(u=>`${t}:${u}`)):r[i]=o.split(\" \").map(u=>`${t}:${u}`);}else Array.isArray(f)&&f.length>0&&(r[i]=f.reduce((o,u)=>o.concat(`${t}:${u}`),[]));}}return r},z=(t,n=g$1,a$1=null,i=null)=>{var J;let r=n[t];if(!r||b(r))return null;let c=(J=i==null?void 0:i[t])!=null?J:l==null?void 0:l[t];if(c===null)return null;let f=a(c),o=Array.isArray(m.responsiveVariants)&&m.responsiveVariants.length>0||m.responsiveVariants===!0,u=A==null?void 0:A[t],d=[];if(typeof f==\"object\"&&o)for(let[k,L]of Object.entries(f)){let ae=r[L];if(k===\"initial\"){u=L;continue}Array.isArray(m.responsiveVariants)&&!m.responsiveVariants.includes(k)||(d=K(k,ae,d,a$1));}let T=r[f]||r[a(u)];return typeof d==\"object\"&&typeof a$1==\"string\"&&d[a$1]?Z(d,T):d.length>0?(d.push(T),d):T},P=()=>g$1?Object.keys(g$1).map(t=>z(t,g$1)):null,p=(t,n)=>{if(!g$1||typeof g$1!=\"object\")return null;let a=new Array;for(let i in g$1){let r=z(i,g$1,t,n),c=t===\"base\"&&typeof r==\"string\"?r:r&&r[t];c&&(a[a.length]=c);}return a},D={};for(let t in l)l[t]!==void 0&&(D[t]=l[t]);let G=(t,n)=>{var i;let a=typeof(l==null?void 0:l[t])==\"object\"?{[t]:(i=l[t])==null?void 0:i.initial}:{};return {...A,...D,...a,...n}},H=(t=[],n)=>{let a=[];for(let{class:i,className:r,...c}of t){let f=!0;for(let[o,u]of Object.entries(c)){let d=G(o,n);if(Array.isArray(u)){if(!u.includes(d[o])){f=!1;break}}else if(d[o]!==u){f=!1;break}}f&&(i&&a.push(i),r&&a.push(r));}return a},I=t=>{let n=H(C,t),a=H(e==null?void 0:e.compoundVariants,t);return f(a,n)},ee=t=>{let n=I(t);if(!Array.isArray(n))return n;let a={};for(let i of n)if(typeof i==\"string\"&&(a.base=w(a.base,i)(m)),typeof i==\"object\")for(let[r,c]of Object.entries(i))a[r]=w(a[r],c)(m);return a},te=t=>{if(V.length<1)return null;let n={};for(let{slots:a=[],class:i,className:r,...c}of V){if(!b(c)){let f=!0;for(let o of Object.keys(c)){let u=G(o,t)[o];if(u===void 0||(Array.isArray(c[o])?!c[o].includes(u):c[o]!==u)){f=!1;break}}if(!f)continue}for(let f of a)n[f]=n[f]||[],n[f].push([i,r]);}return n};if(!b(j)||!O){let t={};if(typeof h$1==\"object\"&&!b(h$1))for(let n of Object.keys(h$1))t[n]=a=>{var i,r;return w(h$1[n],p(n,a),((i=ee(a))!=null?i:[])[n],((r=te(a))!=null?r:[])[n],a==null?void 0:a.class,a==null?void 0:a.className)(m)};return t}return w(S,P(),I(),l==null?void 0:l.class,l==null?void 0:l.className)(m)},x=()=>{if(!(!g$1||typeof g$1!=\"object\"))return Object.keys(g$1)};return v.variantKeys=x(),v.extend=e,v.base=S,v.slots=h$1,v.variants=g$1,v.defaultVariants=A,v.compoundSlots=V,v.compoundVariants=C,v},le=s=>(b,e)=>ie(b,e?g(s,e):s);\n\nexport { w as cn, N as cnBase, le as createTV, se as defaultConfig, ie as tv, _ as voidEmpty };\n","import {\n twMergeConfig\n} from \"./chunk-BYWORP66.mjs\";\n\n// src/utils/tv.ts\nimport { tv as tvBase } from \"tailwind-variants\";\nvar tv = (options, config) => {\n var _a, _b, _c;\n return tvBase(options, {\n ...config,\n twMerge: (_a = config == null ? void 0 : config.twMerge) != null ? _a : true,\n twMergeConfig: {\n ...config == null ? void 0 : config.twMergeConfig,\n theme: {\n ...(_b = config == null ? void 0 : config.twMergeConfig) == null ? void 0 : _b.theme,\n ...twMergeConfig.theme\n },\n classGroups: {\n ...(_c = config == null ? void 0 : config.twMergeConfig) == null ? void 0 : _c.classGroups,\n ...twMergeConfig.classGroups\n }\n }\n });\n};\n\nexport {\n tv\n};\n","// src/utils/classes.ts\nvar baseStyles = (prefix) => ({\n color: `hsl(var(--${prefix}-foreground))`,\n backgroundColor: `hsl(var(--${prefix}-background))`\n});\nvar focusVisibleClasses = [\n \"focus-visible:z-10\",\n \"focus-visible:outline-2\",\n \"focus-visible:outline-focus\",\n \"focus-visible:outline-offset-2\"\n];\nvar dataFocusVisibleClasses = [\n \"outline-none\",\n \"data-[focus-visible=true]:z-10\",\n \"data-[focus-visible=true]:outline-2\",\n \"data-[focus-visible=true]:outline-focus\",\n \"data-[focus-visible=true]:outline-offset-2\"\n];\nvar groupDataFocusVisibleClasses = [\n \"outline-none\",\n \"group-data-[focus-visible=true]:z-10\",\n \"group-data-[focus-visible=true]:ring-2\",\n \"group-data-[focus-visible=true]:ring-focus\",\n \"group-data-[focus-visible=true]:ring-offset-2\",\n \"group-data-[focus-visible=true]:ring-offset-background\"\n];\nvar ringClasses = [\n \"outline-none\",\n \"ring-2\",\n \"ring-focus\",\n \"ring-offset-2\",\n \"ring-offset-background\"\n];\nvar translateCenterClasses = [\n \"absolute\",\n \"top-1/2\",\n \"left-1/2\",\n \"-translate-x-1/2\",\n \"-translate-y-1/2\"\n];\nvar absoluteFullClasses = [\"absolute\", \"inset-0\"];\nvar collapseAdjacentVariantBorders = {\n default: [\"[&+.border-medium.border-default]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n primary: [\"[&+.border-medium.border-primary]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n secondary: [\"[&+.border-medium.border-secondary]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n success: [\"[&+.border-medium.border-success]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n warning: [\"[&+.border-medium.border-warning]:ms-[calc(theme(borderWidth.medium)*-1)]\"],\n danger: [\"[&+.border-medium.border-danger]:ms-[calc(theme(borderWidth.medium)*-1)]\"]\n};\n\nexport {\n baseStyles,\n focusVisibleClasses,\n dataFocusVisibleClasses,\n groupDataFocusVisibleClasses,\n ringClasses,\n translateCenterClasses,\n absoluteFullClasses,\n collapseAdjacentVariantBorders\n};\n","import {\n colorVariants\n} from \"./chunk-BZCSOIUI.mjs\";\nimport {\n tv\n} from \"./chunk-N2KXC5ZE.mjs\";\nimport {\n collapseAdjacentVariantBorders,\n dataFocusVisibleClasses\n} from \"./chunk-XHQUSKIE.mjs\";\n\n// src/components/button.ts\nvar button = tv({\n base: [\n \"z-0\",\n \"group\",\n \"relative\",\n \"inline-flex\",\n \"items-center\",\n \"justify-center\",\n \"box-border\",\n \"appearance-none\",\n \"outline-none\",\n \"select-none\",\n \"whitespace-nowrap\",\n \"min-w-max\",\n \"font-normal\",\n \"subpixel-antialiased\",\n \"overflow-hidden\",\n \"tap-highlight-transparent\",\n \"data-[pressed=true]:scale-[0.97]\",\n ...dataFocusVisibleClasses\n ],\n variants: {\n variant: {\n solid: \"\",\n bordered: \"border-medium bg-transparent\",\n light: \"bg-transparent\",\n flat: \"\",\n faded: \"border-medium\",\n shadow: \"\",\n ghost: \"border-medium bg-transparent\"\n },\n size: {\n sm: \"px-3 min-w-16 h-8 text-tiny gap-2 rounded-small\",\n md: \"px-4 min-w-20 h-10 text-small gap-2 rounded-medium\",\n lg: \"px-6 min-w-24 h-12 text-medium gap-3 rounded-large\"\n },\n color: {\n default: \"\",\n primary: \"\",\n secondary: \"\",\n success: \"\",\n warning: \"\",\n danger: \"\"\n },\n radius: {\n none: \"rounded-none\",\n sm: \"rounded-small\",\n md: \"rounded-medium\",\n lg: \"rounded-large\",\n full: \"rounded-full\"\n },\n fullWidth: {\n true: \"w-full\"\n },\n isDisabled: {\n true: \"opacity-disabled pointer-events-none\"\n },\n isInGroup: {\n true: \"[&:not(:first-child):not(:last-child)]:rounded-none\"\n },\n isIconOnly: {\n true: \"px-0 !gap-0\",\n false: \"[&>svg]:max-w-[theme(spacing.8)]\"\n },\n disableAnimation: {\n true: \"!transition-none data-[pressed=true]:scale-100\",\n false: \"transition-transform-colors-opacity motion-reduce:transition-none\"\n }\n },\n defaultVariants: {\n size: \"md\",\n variant: \"solid\",\n color: \"default\",\n fullWidth: false,\n isDisabled: false,\n isInGroup: false\n },\n compoundVariants: [\n {\n variant: \"solid\",\n color: \"default\",\n class: colorVariants.solid.default\n },\n {\n variant: \"solid\",\n color: \"primary\",\n class: colorVariants.solid.primary\n },\n {\n variant: \"solid\",\n color: \"secondary\",\n class: colorVariants.solid.secondary\n },\n {\n variant: \"solid\",\n color: \"success\",\n class: colorVariants.solid.success\n },\n {\n variant: \"solid\",\n color: \"warning\",\n class: colorVariants.solid.warning\n },\n {\n variant: \"solid\",\n color: \"danger\",\n class: colorVariants.solid.danger\n },\n {\n variant: \"shadow\",\n color: \"default\",\n class: colorVariants.shadow.default\n },\n {\n variant: \"shadow\",\n color: \"primary\",\n class: colorVariants.shadow.primary\n },\n {\n variant: \"shadow\",\n color: \"secondary\",\n class: colorVariants.shadow.secondary\n },\n {\n variant: \"shadow\",\n color: \"success\",\n class: colorVariants.shadow.success\n },\n {\n variant: \"shadow\",\n color: \"warning\",\n class: colorVariants.shadow.warning\n },\n {\n variant: \"shadow\",\n color: \"danger\",\n class: colorVariants.shadow.danger\n },\n {\n variant: \"bordered\",\n color: \"default\",\n class: colorVariants.bordered.default\n },\n {\n variant: \"bordered\",\n color: \"primary\",\n class: colorVariants.bordered.primary\n },\n {\n variant: \"bordered\",\n color: \"secondary\",\n class: colorVariants.bordered.secondary\n },\n {\n variant: \"bordered\",\n color: \"success\",\n class: colorVariants.bordered.success\n },\n {\n variant: \"bordered\",\n color: \"warning\",\n class: colorVariants.bordered.warning\n },\n {\n variant: \"bordered\",\n color: \"danger\",\n class: colorVariants.bordered.danger\n },\n {\n variant: \"flat\",\n color: \"default\",\n class: colorVariants.flat.default\n },\n {\n variant: \"flat\",\n color: \"primary\",\n class: colorVariants.flat.primary\n },\n {\n variant: \"flat\",\n color: \"secondary\",\n class: colorVariants.flat.secondary\n },\n {\n variant: \"flat\",\n color: \"success\",\n class: colorVariants.flat.success\n },\n {\n variant: \"flat\",\n color: \"warning\",\n class: colorVariants.flat.warning\n },\n {\n variant: \"flat\",\n color: \"danger\",\n class: colorVariants.flat.danger\n },\n {\n variant: \"faded\",\n color: \"default\",\n class: colorVariants.faded.default\n },\n {\n variant: \"faded\",\n color: \"primary\",\n class: colorVariants.faded.primary\n },\n {\n variant: \"faded\",\n color: \"secondary\",\n class: colorVariants.faded.secondary\n },\n {\n variant: \"faded\",\n color: \"success\",\n class: colorVariants.faded.success\n },\n {\n variant: \"faded\",\n color: \"warning\",\n class: colorVariants.faded.warning\n },\n {\n variant: \"faded\",\n color: \"danger\",\n class: colorVariants.faded.danger\n },\n {\n variant: \"light\",\n color: \"default\",\n class: [colorVariants.light.default, \"data-[hover=true]:bg-default/40\"]\n },\n {\n variant: \"light\",\n color: \"primary\",\n class: [colorVariants.light.primary, \"data-[hover=true]:bg-primary/20\"]\n },\n {\n variant: \"light\",\n color: \"secondary\",\n class: [colorVariants.light.secondary, \"data-[hover=true]:bg-secondary/20\"]\n },\n {\n variant: \"light\",\n color: \"success\",\n class: [colorVariants.light.success, \"data-[hover=true]:bg-success/20\"]\n },\n {\n variant: \"light\",\n color: \"warning\",\n class: [colorVariants.light.warning, \"data-[hover=true]:bg-warning/20\"]\n },\n {\n variant: \"light\",\n color: \"danger\",\n class: [colorVariants.light.danger, \"data-[hover=true]:bg-danger/20\"]\n },\n {\n variant: \"ghost\",\n color: \"default\",\n class: [colorVariants.ghost.default, \"data-[hover=true]:!bg-default\"]\n },\n {\n variant: \"ghost\",\n color: \"primary\",\n class: [\n colorVariants.ghost.primary,\n \"data-[hover=true]:!bg-primary data-[hover=true]:!text-primary-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"secondary\",\n class: [\n colorVariants.ghost.secondary,\n \"data-[hover=true]:!bg-secondary data-[hover=true]:!text-secondary-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"success\",\n class: [\n colorVariants.ghost.success,\n \"data-[hover=true]:!bg-success data-[hover=true]:!text-success-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"warning\",\n class: [\n colorVariants.ghost.warning,\n \"data-[hover=true]:!bg-warning data-[hover=true]:!text-warning-foreground\"\n ]\n },\n {\n variant: \"ghost\",\n color: \"danger\",\n class: [colorVariants.ghost.danger, \"data-[hover=true]:!bg-danger !text-danger-foreground\"]\n },\n {\n isInGroup: true,\n class: \"rounded-none first:rounded-s-medium last:rounded-e-medium\"\n },\n {\n isInGroup: true,\n size: \"sm\",\n class: \"rounded-none first:rounded-s-small last:rounded-e-small\"\n },\n {\n isInGroup: true,\n size: \"md\",\n class: \"rounded-none first:rounded-s-medium last:rounded-e-medium\"\n },\n {\n isInGroup: true,\n size: \"lg\",\n class: \"rounded-none first:rounded-s-large last:rounded-e-large\"\n },\n {\n isInGroup: true,\n isRounded: true,\n class: \"rounded-none first:rounded-s-full last:rounded-e-full\"\n },\n {\n isInGroup: true,\n radius: \"none\",\n class: \"rounded-none first:rounded-s-none last:rounded-e-none\"\n },\n {\n isInGroup: true,\n radius: \"sm\",\n class: \"rounded-none first:rounded-s-small last:rounded-e-small\"\n },\n {\n isInGroup: true,\n radius: \"md\",\n class: \"rounded-none first:rounded-s-medium last:rounded-e-medium\"\n },\n {\n isInGroup: true,\n radius: \"lg\",\n class: \"rounded-none first:rounded-s-large last:rounded-e-large\"\n },\n {\n isInGroup: true,\n radius: \"full\",\n class: \"rounded-none first:rounded-s-full last:rounded-e-full\"\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"default\",\n className: collapseAdjacentVariantBorders.default\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"primary\",\n className: collapseAdjacentVariantBorders.primary\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"secondary\",\n className: collapseAdjacentVariantBorders.secondary\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"success\",\n className: collapseAdjacentVariantBorders.success\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"warning\",\n className: collapseAdjacentVariantBorders.warning\n },\n {\n isInGroup: true,\n variant: [\"ghost\", \"bordered\"],\n color: \"danger\",\n className: collapseAdjacentVariantBorders.danger\n },\n {\n isIconOnly: true,\n size: \"sm\",\n class: \"min-w-8 w-8 h-8\"\n },\n {\n isIconOnly: true,\n size: \"md\",\n class: \"min-w-10 w-10 h-10\"\n },\n {\n isIconOnly: true,\n size: \"lg\",\n class: \"min-w-12 w-12 h-12\"\n },\n {\n variant: [\"solid\", \"faded\", \"flat\", \"bordered\", \"shadow\"],\n class: \"data-[hover=true]:opacity-hover\"\n }\n ]\n});\nvar buttonGroup = tv({\n base: \"inline-flex items-center justify-center h-auto\",\n variants: {\n fullWidth: {\n true: \"w-full\"\n }\n },\n defaultVariants: {\n fullWidth: false\n }\n});\n\nexport {\n button,\n buttonGroup\n};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {AriaLabelingProps, DOMProps, LinkDOMProps} from '@react-types/shared';\n\nconst DOMPropNames = new Set([\n 'id'\n]);\n\nconst labelablePropNames = new Set([\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby',\n 'aria-details'\n]);\n\n// See LinkDOMProps in dom.d.ts.\nconst linkPropNames = new Set([\n 'href',\n 'hrefLang',\n 'target',\n 'rel',\n 'download',\n 'ping',\n 'referrerPolicy'\n]);\n\ninterface Options {\n /**\n * If labelling associated aria properties should be included in the filter.\n */\n labelable?: boolean,\n /** Whether the element is a link and should include DOM props for elements. */\n isLink?: boolean,\n /**\n * A Set of other property names that should be included in the filter.\n */\n propNames?: Set\n}\n\nconst propRe = /^(data-.*)$/;\n\n/**\n * Filters out all props that aren't valid DOM props or defined via override prop obj.\n * @param props - The component props to be filtered.\n * @param opts - Props to override.\n */\nexport function filterDOMProps(props: DOMProps & AriaLabelingProps & LinkDOMProps, opts: Options = {}): DOMProps & AriaLabelingProps {\n let {labelable, isLink, propNames} = opts;\n let filteredProps = {};\n\n for (const prop in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, prop) && (\n DOMPropNames.has(prop) ||\n (labelable && labelablePropNames.has(prop)) ||\n (isLink && linkPropNames.has(prop)) ||\n propNames?.has(prop) ||\n propRe.test(prop)\n )\n ) {\n filteredProps[prop] = props[prop];\n }\n }\n\n return filteredProps;\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// We store a global list of elements that are currently transitioning,\n// mapped to a set of CSS properties that are transitioning for that element.\n// This is necessary rather than a simple count of transitions because of browser\n// bugs, e.g. Chrome sometimes fires both transitionend and transitioncancel rather\n// than one or the other. So we need to track what's actually transitioning so that\n// we can ignore these duplicate events.\nlet transitionsByElement = new Map>();\n\n// A list of callbacks to call once there are no transitioning elements.\nlet transitionCallbacks = new Set<() => void>();\n\nfunction setupGlobalEvents() {\n if (typeof window === 'undefined') {\n return;\n }\n\n function isTransitionEvent(event: Event): event is TransitionEvent {\n return 'propertyName' in event;\n }\n\n let onTransitionStart = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Add the transitioning property to the list for this element.\n let transitions = transitionsByElement.get(e.target);\n if (!transitions) {\n transitions = new Set();\n transitionsByElement.set(e.target, transitions);\n\n // The transitioncancel event must be registered on the element itself, rather than as a global\n // event. This enables us to handle when the node is deleted from the document while it is transitioning.\n // In that case, the cancel event would have nowhere to bubble to so we need to handle it directly.\n e.target.addEventListener('transitioncancel', onTransitionEnd, {\n once: true\n });\n }\n\n transitions.add(e.propertyName);\n };\n\n let onTransitionEnd = (e: Event) => {\n if (!isTransitionEvent(e) || !e.target) {\n return;\n }\n // Remove property from list of transitioning properties.\n let properties = transitionsByElement.get(e.target);\n if (!properties) {\n return;\n }\n\n properties.delete(e.propertyName);\n\n // If empty, remove transitioncancel event, and remove the element from the list of transitioning elements.\n if (properties.size === 0) {\n e.target.removeEventListener('transitioncancel', onTransitionEnd);\n transitionsByElement.delete(e.target);\n }\n\n // If no transitioning elements, call all of the queued callbacks.\n if (transitionsByElement.size === 0) {\n for (let cb of transitionCallbacks) {\n cb();\n }\n\n transitionCallbacks.clear();\n }\n };\n\n document.body.addEventListener('transitionrun', onTransitionStart);\n document.body.addEventListener('transitionend', onTransitionEnd);\n}\n\nif (typeof document !== 'undefined') {\n if (document.readyState !== 'loading') {\n setupGlobalEvents();\n } else {\n document.addEventListener('DOMContentLoaded', setupGlobalEvents);\n }\n}\n\nexport function runAfterTransition(fn: () => void) {\n // Wait one frame to see if an animation starts, e.g. a transition on mount.\n requestAnimationFrame(() => {\n // If no transitions are running, call the function immediately.\n // Otherwise, add it to a list of callbacks to run at the end of the animation.\n if (transitionsByElement.size === 0) {\n fn();\n } else {\n transitionCallbacks.add(fn);\n }\n });\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {focusWithoutScrolling, getOwnerDocument, runAfterTransition} from '@react-aria/utils';\nimport {getInteractionModality} from '@react-aria/interactions';\n\n/**\n * A utility function that focuses an element while avoiding undesired side effects such\n * as page scrolling and screen reader issues with CSS transitions.\n */\nexport function focusSafely(element: FocusableElement) {\n // If the user is interacting with a virtual cursor, e.g. screen reader, then\n // wait until after any animated transitions that are currently occurring on\n // the page before shifting focus. This avoids issues with VoiceOver on iOS\n // causing the page to scroll when moving focus if the element is transitioning\n // from off the screen.\n const ownerDocument = getOwnerDocument(element);\n if (getInteractionModality() === 'virtual') {\n let lastFocusedElement = ownerDocument.activeElement;\n runAfterTransition(() => {\n // If focus did not move and the element is still in the document, focus it.\n if (ownerDocument.activeElement === lastFocusedElement && element.isConnected) {\n focusWithoutScrolling(element);\n }\n });\n } else {\n focusWithoutScrolling(element);\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {MutableRefObject, RefObject} from 'react';\nimport {useLayoutEffect} from './';\n\ninterface ContextValue {\n ref?: MutableRefObject\n}\n\n// Syncs ref from context with ref passed to hook\nexport function useSyncRef(context?: ContextValue | null, ref?: RefObject) {\n useLayoutEffect(() => {\n if (context && context.ref && ref) {\n context.ref.current = ref.current;\n return () => {\n if (context.ref) {\n context.ref.current = null;\n }\n };\n }\n });\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BaseEvent} from '@react-types/shared';\nimport {SyntheticEvent} from 'react';\n\n/**\n * This function wraps a React event handler to make stopPropagation the default, and support continuePropagation instead.\n */\nexport function createEventHandler(handler?: (e: BaseEvent) => void): ((e: T) => void) | undefined {\n if (!handler) {\n return undefined;\n }\n\n let shouldStopPropagation = true;\n return (e: T) => {\n let event: BaseEvent = {\n ...e,\n preventDefault() {\n e.preventDefault();\n },\n isDefaultPrevented() {\n return e.isDefaultPrevented();\n },\n stopPropagation() {\n console.error('stopPropagation is now the default behavior for events in React Spectrum. You can use continuePropagation() to revert this behavior.');\n },\n continuePropagation() {\n shouldStopPropagation = false;\n }\n };\n\n handler(event);\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {createEventHandler} from './createEventHandler';\nimport {DOMAttributes, KeyboardEvents} from '@react-types/shared';\n\nexport interface KeyboardProps extends KeyboardEvents {\n /** Whether the keyboard events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface KeyboardResult {\n /** Props to spread onto the target element. */\n keyboardProps: DOMAttributes\n}\n\n/**\n * Handles keyboard interactions for a focusable element.\n */\nexport function useKeyboard(props: KeyboardProps): KeyboardResult {\n return {\n keyboardProps: props.isDisabled ? {} : {\n onKeyDown: createEventHandler(props.onKeyDown),\n onKeyUp: createEventHandler(props.onKeyUp)\n }\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {DOMAttributes, FocusableDOMProps, FocusableElement, FocusableProps} from '@react-types/shared';\nimport {focusSafely} from './';\nimport {mergeProps, useObjectRef, useSyncRef} from '@react-aria/utils';\nimport React, {ForwardedRef, MutableRefObject, ReactNode, RefObject, useContext, useEffect, useRef} from 'react';\nimport {useFocus, useKeyboard} from '@react-aria/interactions';\n\nexport interface FocusableOptions extends FocusableProps, FocusableDOMProps {\n /** Whether focus should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface FocusableProviderProps extends DOMAttributes {\n /** The child element to provide DOM props to. */\n children?: ReactNode\n}\n\ninterface FocusableContextValue extends FocusableProviderProps {\n ref?: MutableRefObject\n}\n\nlet FocusableContext = React.createContext(null);\n\nfunction useFocusableContext(ref: RefObject): FocusableContextValue {\n let context = useContext(FocusableContext) || {};\n useSyncRef(context, ref);\n\n // eslint-disable-next-line\n let {ref: _, ...otherProps} = context;\n return otherProps;\n}\n\n/**\n * Provides DOM props to the nearest focusable child.\n */\nfunction FocusableProvider(props: FocusableProviderProps, ref: ForwardedRef) {\n let {children, ...otherProps} = props;\n let objRef = useObjectRef(ref);\n let context = {\n ...otherProps,\n ref: objRef\n };\n\n return (\n \n {children}\n \n );\n}\n\nlet _FocusableProvider = React.forwardRef(FocusableProvider);\nexport {_FocusableProvider as FocusableProvider};\n\nexport interface FocusableAria {\n /** Props for the focusable element. */\n focusableProps: DOMAttributes\n}\n\n/**\n * Used to make an element focusable and capable of auto focus.\n */\nexport function useFocusable(props: FocusableOptions, domRef: RefObject): FocusableAria {\n let {focusProps} = useFocus(props);\n let {keyboardProps} = useKeyboard(props);\n let interactions = mergeProps(focusProps, keyboardProps);\n let domProps = useFocusableContext(domRef);\n let interactionProps = props.isDisabled ? {} : domProps;\n let autoFocusRef = useRef(props.autoFocus);\n\n useEffect(() => {\n if (autoFocusRef.current && domRef.current) {\n focusSafely(domRef.current);\n }\n autoFocusRef.current = false;\n }, [domRef]);\n\n return {\n focusableProps: mergeProps(\n {\n ...interactions,\n tabIndex: props.excludeFromTabOrder && !props.isDisabled ? -1 : undefined\n },\n interactionProps\n )\n };\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {getOwnerDocument, isIOS, runAfterTransition} from '@react-aria/utils';\n\n// Safari on iOS starts selecting text on long press. The only way to avoid this, it seems,\n// is to add user-select: none to the entire page. Adding it to the pressable element prevents\n// that element from being selected, but nearby elements may still receive selection. We add\n// user-select: none on touch start, and remove it again on touch end to prevent this.\n// This must be implemented using global state to avoid race conditions between multiple elements.\n\n// There are three possible states due to the delay before removing user-select: none after\n// pointer up. The 'default' state always transitions to the 'disabled' state, which transitions\n// to 'restoring'. The 'restoring' state can either transition back to 'disabled' or 'default'.\n\n// For non-iOS devices, we apply user-select: none to the pressed element instead to avoid possible\n// performance issues that arise from applying and removing user-select: none to the entire page\n// (see https://github.com/adobe/react-spectrum/issues/1609).\ntype State = 'default' | 'disabled' | 'restoring';\n\n// Note that state only matters here for iOS. Non-iOS gets user-select: none applied to the target element\n// rather than at the document level so we just need to apply/remove user-select: none for each pressed element individually\nlet state: State = 'default';\nlet savedUserSelect = '';\nlet modifiedElementMap = new WeakMap();\n\nexport function disableTextSelection(target?: Element) {\n if (isIOS()) {\n if (state === 'default') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n savedUserSelect = documentObject.documentElement.style.webkitUserSelect;\n documentObject.documentElement.style.webkitUserSelect = 'none';\n }\n\n state = 'disabled';\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, store the target's original user-select and change to user-select: none\n // Ignore state since it doesn't apply for non iOS\n modifiedElementMap.set(target, target.style.userSelect);\n target.style.userSelect = 'none';\n }\n}\n\nexport function restoreTextSelection(target?: Element) {\n if (isIOS()) {\n // If the state is already default, there's nothing to do.\n // If it is restoring, then there's no need to queue a second restore.\n if (state !== 'disabled') {\n return;\n }\n\n state = 'restoring';\n\n // There appears to be a delay on iOS where selection still might occur\n // after pointer up, so wait a bit before removing user-select.\n setTimeout(() => {\n // Wait for any CSS transitions to complete so we don't recompute style\n // for the whole page in the middle of the animation and cause jank.\n runAfterTransition(() => {\n // Avoid race conditions\n if (state === 'restoring') {\n // eslint-disable-next-line no-restricted-globals\n const documentObject = getOwnerDocument(target);\n if (documentObject.documentElement.style.webkitUserSelect === 'none') {\n documentObject.documentElement.style.webkitUserSelect = savedUserSelect || '';\n }\n\n savedUserSelect = '';\n state = 'default';\n }\n });\n }, 300);\n } else if (target instanceof HTMLElement || target instanceof SVGElement) {\n // If not iOS, restore the target's original user-select if any\n // Ignore state since it doesn't apply for non iOS\n if (target && modifiedElementMap.has(target)) {\n let targetOldUserSelect = modifiedElementMap.get(target) as string;\n\n if (target.style.userSelect === 'none') {\n target.style.userSelect = targetOldUserSelect;\n }\n\n if (target.getAttribute('style') === '') {\n target.removeAttribute('style');\n }\n modifiedElementMap.delete(target);\n }\n }\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {FocusableElement} from '@react-types/shared';\nimport {PressProps} from './usePress';\nimport React, {MutableRefObject} from 'react';\n\ninterface IPressResponderContext extends PressProps {\n register(): void,\n ref?: MutableRefObject\n}\n\nexport const PressResponderContext = React.createContext({register: () => {}});\nPressResponderContext.displayName = 'PressResponderContext';\n","function _class_extract_field_descriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n\n return privateMap.get(receiver);\n}\nexport { _class_extract_field_descriptor as _ };\n","import { _ as _check_private_redeclaration } from \"./_check_private_redeclaration.js\";\n\nfunction _class_private_field_init(obj, privateMap, value) {\n _check_private_redeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\nexport { _class_private_field_init as _ };\n","function _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nexport { _check_private_redeclaration as _ };\n","import { _ as _class_apply_descriptor_set } from \"./_class_apply_descriptor_set.js\";\nimport { _ as _class_extract_field_descriptor } from \"./_class_extract_field_descriptor.js\";\n\nfunction _class_private_field_set(receiver, privateMap, value) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"set\");\n _class_apply_descriptor_set(receiver, descriptor, value);\n return value;\n}\nexport { _class_private_field_set as _ };\n","function _class_apply_descriptor_set(receiver, descriptor, value) {\n if (descriptor.set) descriptor.set.call(receiver, value);\n else {\n if (!descriptor.writable) {\n // This should only throw in strict mode, but class bodies are\n // always strict and private fields can only be used inside\n // class bodies.\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}\nexport { _class_apply_descriptor_set as _ };\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {useCallback, useEffect, useRef} from 'react';\n\ninterface GlobalListeners {\n addGlobalListener(el: EventTarget, type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void,\n addGlobalListener(el: EventTarget, type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void,\n removeGlobalListener(el: EventTarget, type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void,\n removeGlobalListener(el: EventTarget, type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void,\n removeAllGlobalListeners(): void\n}\n\nexport function useGlobalListeners(): GlobalListeners {\n let globalListeners = useRef(new Map());\n let addGlobalListener = useCallback((eventTarget, type, listener, options) => {\n // Make sure we remove the listener after it is called with the `once` option.\n let fn = options?.once ? (...args) => {\n globalListeners.current.delete(listener);\n listener(...args);\n } : listener;\n globalListeners.current.set(listener, {type, eventTarget, fn, options});\n eventTarget.addEventListener(type, listener, options);\n }, []);\n let removeGlobalListener = useCallback((eventTarget, type, listener, options) => {\n let fn = globalListeners.current.get(listener)?.fn || listener;\n eventTarget.removeEventListener(type, fn, options);\n globalListeners.current.delete(listener);\n }, []);\n let removeAllGlobalListeners = useCallback(() => {\n globalListeners.current.forEach((value, key) => {\n removeGlobalListener(value.eventTarget, value.type, key, value.options);\n });\n }, [removeGlobalListener]);\n\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return removeAllGlobalListeners;\n }, [removeAllGlobalListeners]);\n\n return {addGlobalListener, removeGlobalListener, removeAllGlobalListeners};\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {chain, focusWithoutScrolling, getOwnerDocument, getOwnerWindow, isMac, isVirtualClick, isVirtualPointerEvent, mergeProps, openLink, useEffectEvent, useGlobalListeners, useSyncRef} from '@react-aria/utils';\nimport {disableTextSelection, restoreTextSelection} from './textSelection';\nimport {DOMAttributes, FocusableElement, PressEvent as IPressEvent, PointerType, PressEvents} from '@react-types/shared';\nimport {PressResponderContext} from './context';\nimport {RefObject, useContext, useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface PressProps extends PressEvents {\n /** Whether the target is in a controlled press state (e.g. an overlay it triggers is open). */\n isPressed?: boolean,\n /** Whether the press events should be disabled. */\n isDisabled?: boolean,\n /** Whether the target should not receive focus on press. */\n preventFocusOnPress?: boolean,\n /**\n * Whether press events should be canceled when the pointer leaves the target while pressed.\n * By default, this is `false`, which means if the pointer returns back over the target while\n * still pressed, onPressStart will be fired again. If set to `true`, the press is canceled\n * when the pointer leaves the target and onPressStart will not be fired if the pointer returns.\n */\n shouldCancelOnPointerExit?: boolean,\n /** Whether text selection should be enabled on the pressable element. */\n allowTextSelectionOnPress?: boolean\n}\n\nexport interface PressHookProps extends PressProps {\n /** A ref to the target element. */\n ref?: RefObject\n}\n\ninterface PressState {\n isPressed: boolean,\n ignoreEmulatedMouseEvents: boolean,\n ignoreClickAfterPress: boolean,\n didFirePressStart: boolean,\n isTriggeringEvent: boolean,\n activePointerId: any,\n target: FocusableElement | null,\n isOverTarget: boolean,\n pointerType: PointerType | null,\n userSelect?: string,\n metaKeyEvents?: Map\n}\n\ninterface EventBase {\n currentTarget: EventTarget | null,\n shiftKey: boolean,\n ctrlKey: boolean,\n metaKey: boolean,\n altKey: boolean\n}\n\nexport interface PressResult {\n /** Whether the target is currently pressed. */\n isPressed: boolean,\n /** Props to spread on the target element. */\n pressProps: DOMAttributes\n}\n\nfunction usePressResponderContext(props: PressHookProps): PressHookProps {\n // Consume context from and merge with props.\n let context = useContext(PressResponderContext);\n if (context) {\n let {register, ...contextProps} = context;\n props = mergeProps(contextProps, props) as PressHookProps;\n register();\n }\n useSyncRef(context, props.ref);\n\n return props;\n}\n\nclass PressEvent implements IPressEvent {\n type: IPressEvent['type'];\n pointerType: PointerType;\n target: Element;\n shiftKey: boolean;\n ctrlKey: boolean;\n metaKey: boolean;\n altKey: boolean;\n #shouldStopPropagation = true;\n\n constructor(type: IPressEvent['type'], pointerType: PointerType, originalEvent: EventBase) {\n this.type = type;\n this.pointerType = pointerType;\n this.target = originalEvent.currentTarget as Element;\n this.shiftKey = originalEvent.shiftKey;\n this.metaKey = originalEvent.metaKey;\n this.ctrlKey = originalEvent.ctrlKey;\n this.altKey = originalEvent.altKey;\n }\n\n continuePropagation() {\n this.#shouldStopPropagation = false;\n }\n\n get shouldStopPropagation() {\n return this.#shouldStopPropagation;\n }\n}\n\nconst LINK_CLICKED = Symbol('linkClicked');\n\n/**\n * Handles press interactions across mouse, touch, keyboard, and screen readers.\n * It normalizes behavior across browsers and platforms, and handles many nuances\n * of dealing with pointer and keyboard events.\n */\nexport function usePress(props: PressHookProps): PressResult {\n let {\n onPress,\n onPressChange,\n onPressStart,\n onPressEnd,\n onPressUp,\n isDisabled,\n isPressed: isPressedProp,\n preventFocusOnPress,\n shouldCancelOnPointerExit,\n allowTextSelectionOnPress,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ref: _, // Removing `ref` from `domProps` because TypeScript is dumb\n ...domProps\n } = usePressResponderContext(props);\n\n let [isPressed, setPressed] = useState(false);\n let ref = useRef({\n isPressed: false,\n ignoreEmulatedMouseEvents: false,\n ignoreClickAfterPress: false,\n didFirePressStart: false,\n isTriggeringEvent: false,\n activePointerId: null,\n target: null,\n isOverTarget: false,\n pointerType: null\n });\n\n let {addGlobalListener, removeAllGlobalListeners} = useGlobalListeners();\n\n let triggerPressStart = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled || state.didFirePressStart) {\n return false;\n }\n\n let shouldStopPropagation = true;\n state.isTriggeringEvent = true;\n if (onPressStart) {\n let event = new PressEvent('pressstart', pointerType, originalEvent);\n onPressStart(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(true);\n }\n\n state.isTriggeringEvent = false;\n state.didFirePressStart = true;\n setPressed(true);\n return shouldStopPropagation;\n });\n\n let triggerPressEnd = useEffectEvent((originalEvent: EventBase, pointerType: PointerType, wasPressed = true) => {\n let state = ref.current;\n if (!state.didFirePressStart) {\n return false;\n }\n\n state.ignoreClickAfterPress = true;\n state.didFirePressStart = false;\n state.isTriggeringEvent = true;\n\n let shouldStopPropagation = true;\n if (onPressEnd) {\n let event = new PressEvent('pressend', pointerType, originalEvent);\n onPressEnd(event);\n shouldStopPropagation = event.shouldStopPropagation;\n }\n\n if (onPressChange) {\n onPressChange(false);\n }\n\n setPressed(false);\n\n if (onPress && wasPressed && !isDisabled) {\n let event = new PressEvent('press', pointerType, originalEvent);\n onPress(event);\n shouldStopPropagation &&= event.shouldStopPropagation;\n }\n\n state.isTriggeringEvent = false;\n return shouldStopPropagation;\n });\n\n let triggerPressUp = useEffectEvent((originalEvent: EventBase, pointerType: PointerType) => {\n let state = ref.current;\n if (isDisabled) {\n return false;\n }\n\n if (onPressUp) {\n state.isTriggeringEvent = true;\n let event = new PressEvent('pressup', pointerType, originalEvent);\n onPressUp(event);\n state.isTriggeringEvent = false;\n return event.shouldStopPropagation;\n }\n\n return true;\n });\n\n let cancel = useEffectEvent((e: EventBase) => {\n let state = ref.current;\n if (state.isPressed && state.target) {\n if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n });\n\n let cancelOnPointerExit = useEffectEvent((e: EventBase) => {\n if (shouldCancelOnPointerExit) {\n cancel(e);\n }\n });\n\n let pressProps = useMemo(() => {\n let state = ref.current;\n let pressProps: DOMAttributes = {\n onKeyDown(e) {\n if (isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && e.currentTarget.contains(e.target as Element)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n // If the event is repeating, it may have started on a different element\n // after which focus moved to the current element. Ignore these events and\n // only handle the first key down event.\n let shouldStopPropagation = true;\n if (!state.isPressed && !e.repeat) {\n state.target = e.currentTarget;\n state.isPressed = true;\n shouldStopPropagation = triggerPressStart(e, 'keyboard');\n\n // Focus may move before the key up event, so register the event on the document\n // instead of the same element where the key down event occurred. Make it capturing so that it will trigger\n // before stopPropagation from useKeyboard on a child element may happen and thus we can still call triggerPress for the parent element.\n let originalTarget = e.currentTarget;\n let pressUp = (e) => {\n if (isValidKeyboardEvent(e, originalTarget) && !e.repeat && originalTarget.contains(e.target as Element) && state.target) {\n triggerPressUp(createEvent(state.target, e), 'keyboard');\n }\n };\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'keyup', chain(pressUp, onKeyUp), true);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n // Keep track of the keydown events that occur while the Meta (e.g. Command) key is held.\n // macOS has a bug where keyup events are not fired while the Meta key is down.\n // When the Meta key itself is released we will get an event for that, and we'll act as if\n // all of these other keys were released as well.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1393524\n // https://bugs.webkit.org/show_bug.cgi?id=55291\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1299553\n if (e.metaKey && isMac()) {\n state.metaKeyEvents?.set(e.key, e.nativeEvent);\n }\n } else if (e.key === 'Meta') {\n state.metaKeyEvents = new Map();\n }\n },\n onClick(e) {\n if (e && !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e && e.button === 0 && !state.isTriggeringEvent && !(openLink as any).isOpening) {\n let shouldStopPropagation = true;\n if (isDisabled) {\n e.preventDefault();\n }\n\n // If triggered from a screen reader or by using element.click(),\n // trigger as if it were a keyboard click.\n if (!state.ignoreClickAfterPress && !state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === 'virtual' || isVirtualClick(e.nativeEvent))) {\n // Ensure the element receives focus (VoiceOver on iOS does not do this)\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let stopPressStart = triggerPressStart(e, 'virtual');\n let stopPressUp = triggerPressUp(e, 'virtual');\n let stopPressEnd = triggerPressEnd(e, 'virtual');\n shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;\n }\n\n state.ignoreEmulatedMouseEvents = false;\n state.ignoreClickAfterPress = false;\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n }\n }\n };\n\n let onKeyUp = (e: KeyboardEvent) => {\n if (state.isPressed && state.target && isValidKeyboardEvent(e, state.target)) {\n if (shouldPreventDefaultKeyboard(e.target as Element, e.key)) {\n e.preventDefault();\n }\n\n let target = e.target as Element;\n triggerPressEnd(createEvent(state.target, e), 'keyboard', state.target.contains(target));\n removeAllGlobalListeners();\n\n // If a link was triggered with a key other than Enter, open the URL ourselves.\n // This means the link has a role override, and the default browser behavior\n // only applies when using the Enter key.\n if (e.key !== 'Enter' && isHTMLAnchorLink(state.target) && state.target.contains(target) && !e[LINK_CLICKED]) {\n // Store a hidden property on the event so we only trigger link click once,\n // even if there are multiple usePress instances attached to the element.\n e[LINK_CLICKED] = true;\n openLink(state.target, e, false);\n }\n\n state.isPressed = false;\n state.metaKeyEvents?.delete(e.key);\n } else if (e.key === 'Meta' && state.metaKeyEvents?.size) {\n // If we recorded keydown events that occurred while the Meta key was pressed,\n // and those haven't received keyup events already, fire keyup events ourselves.\n // See comment above for more info about the macOS bug causing this.\n let events = state.metaKeyEvents;\n state.metaKeyEvents = undefined;\n for (let event of events.values()) {\n state.target?.dispatchEvent(new KeyboardEvent('keyup', event));\n }\n }\n };\n\n if (typeof PointerEvent !== 'undefined') {\n pressProps.onPointerDown = (e) => {\n // Only handle left clicks, and ignore events that bubbled through portals.\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // iOS safari fires pointer events from VoiceOver with incorrect coordinates/target.\n // Ignore and let the onClick handler take care of it instead.\n // https://bugs.webkit.org/show_bug.cgi?id=222627\n // https://bugs.webkit.org/show_bug.cgi?id=223202\n if (isVirtualPointerEvent(e.nativeEvent)) {\n state.pointerType = 'virtual';\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on pointer down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n state.pointerType = e.pointerType;\n\n let shouldStopPropagation = true;\n if (!state.isPressed) {\n state.isPressed = true;\n state.isOverTarget = true;\n state.activePointerId = e.pointerId;\n state.target = e.currentTarget;\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointermove', onPointerMove, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointerup', onPointerUp, false);\n addGlobalListener(getOwnerDocument(e.currentTarget), 'pointercancel', onPointerCancel, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseDown = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (e.button === 0) {\n // Chrome and Firefox on touch Windows devices require mouse down events\n // to be canceled in addition to pointer events, or an extra asynchronous\n // focus event will be fired.\n if (shouldPreventDefault(e.currentTarget as Element)) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n }\n };\n\n pressProps.onPointerUp = (e) => {\n // iOS fires pointerup with zero width and height, so check the pointerType recorded during pointerdown.\n if (!e.currentTarget.contains(e.target as Element) || state.pointerType === 'virtual') {\n return;\n }\n\n // Only handle left clicks\n // Safari on iOS sometimes fires pointerup events, even\n // when the touch isn't over the target, so double check.\n if (e.button === 0 && isOverTarget(e, e.currentTarget)) {\n triggerPressUp(e, state.pointerType || e.pointerType);\n }\n };\n\n // Safari on iOS < 13.2 does not implement pointerenter/pointerleave events correctly.\n // Use pointer move events instead to implement our own hit testing.\n // See https://bugs.webkit.org/show_bug.cgi?id=199803\n let onPointerMove = (e: PointerEvent) => {\n if (e.pointerId !== state.activePointerId) {\n return;\n }\n\n if (state.target && isOverTarget(e, state.target)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n triggerPressStart(createEvent(state.target, e), state.pointerType);\n }\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n cancelOnPointerExit(e);\n }\n };\n\n let onPointerUp = (e: PointerEvent) => {\n if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {\n if (isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isPressed = false;\n state.isOverTarget = false;\n state.activePointerId = null;\n state.pointerType = null;\n removeAllGlobalListeners();\n if (!allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n }\n };\n\n let onPointerCancel = (e: PointerEvent) => {\n cancel(e);\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Safari does not call onPointerCancel when a drag starts, whereas Chrome and Firefox do.\n cancel(e);\n };\n } else {\n pressProps.onMouseDown = (e) => {\n // Only handle left clicks\n if (e.button !== 0 || !e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent\n // default on mouse down and handle focusing the pressable element ourselves.\n if (shouldPreventDefault(e.currentTarget)) {\n e.preventDefault();\n }\n\n if (state.ignoreEmulatedMouseEvents) {\n e.stopPropagation();\n return;\n }\n\n state.isPressed = true;\n state.isOverTarget = true;\n state.target = e.currentTarget;\n state.pointerType = isVirtualClick(e.nativeEvent) ? 'virtual' : 'mouse';\n\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerDocument(e.currentTarget), 'mouseup', onMouseUp, false);\n };\n\n pressProps.onMouseEnter = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseLeave = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let shouldStopPropagation = true;\n if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onMouseUp = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.ignoreEmulatedMouseEvents && e.button === 0) {\n triggerPressUp(e, state.pointerType || 'mouse');\n }\n };\n\n let onMouseUp = (e: MouseEvent) => {\n // Only handle left clicks\n if (e.button !== 0) {\n return;\n }\n\n state.isPressed = false;\n removeAllGlobalListeners();\n\n if (state.ignoreEmulatedMouseEvents) {\n state.ignoreEmulatedMouseEvents = false;\n return;\n }\n\n if (state.target && isOverTarget(e, state.target) && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType);\n } else if (state.target && state.isOverTarget && state.pointerType != null) {\n triggerPressEnd(createEvent(state.target, e), state.pointerType, false);\n }\n\n state.isOverTarget = false;\n };\n\n pressProps.onTouchStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n let touch = getTouchFromEvent(e.nativeEvent);\n if (!touch) {\n return;\n }\n state.activePointerId = touch.identifier;\n state.ignoreEmulatedMouseEvents = true;\n state.isOverTarget = true;\n state.isPressed = true;\n state.target = e.currentTarget;\n state.pointerType = 'touch';\n\n // Due to browser inconsistencies, especially on mobile browsers, we prevent default\n // on the emulated mouse event and handle focusing the pressable element ourselves.\n if (!isDisabled && !preventFocusOnPress) {\n focusWithoutScrolling(e.currentTarget);\n }\n\n if (!allowTextSelectionOnPress) {\n disableTextSelection(state.target);\n }\n\n let shouldStopPropagation = triggerPressStart(e, state.pointerType);\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n addGlobalListener(getOwnerWindow(e.currentTarget), 'scroll', onScroll, true);\n };\n\n pressProps.onTouchMove = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget)) {\n if (!state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = true;\n shouldStopPropagation = triggerPressStart(e, state.pointerType);\n }\n } else if (state.isOverTarget && state.pointerType != null) {\n state.isOverTarget = false;\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n cancelOnPointerExit(e);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n };\n\n pressProps.onTouchEnd = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n if (!state.isPressed) {\n e.stopPropagation();\n return;\n }\n\n let touch = getTouchById(e.nativeEvent, state.activePointerId);\n let shouldStopPropagation = true;\n if (touch && isOverTarget(touch, e.currentTarget) && state.pointerType != null) {\n triggerPressUp(e, state.pointerType);\n shouldStopPropagation = triggerPressEnd(e, state.pointerType);\n } else if (state.isOverTarget && state.pointerType != null) {\n shouldStopPropagation = triggerPressEnd(e, state.pointerType, false);\n }\n\n if (shouldStopPropagation) {\n e.stopPropagation();\n }\n\n state.isPressed = false;\n state.activePointerId = null;\n state.isOverTarget = false;\n state.ignoreEmulatedMouseEvents = true;\n if (state.target && !allowTextSelectionOnPress) {\n restoreTextSelection(state.target);\n }\n removeAllGlobalListeners();\n };\n\n pressProps.onTouchCancel = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n e.stopPropagation();\n if (state.isPressed) {\n cancel(e);\n }\n };\n\n let onScroll = (e: Event) => {\n if (state.isPressed && (e.target as Element).contains(state.target)) {\n cancel({\n currentTarget: state.target,\n shiftKey: false,\n ctrlKey: false,\n metaKey: false,\n altKey: false\n });\n }\n };\n\n pressProps.onDragStart = (e) => {\n if (!e.currentTarget.contains(e.target as Element)) {\n return;\n }\n\n cancel(e);\n };\n }\n\n return pressProps;\n }, [\n addGlobalListener,\n isDisabled,\n preventFocusOnPress,\n removeAllGlobalListeners,\n allowTextSelectionOnPress,\n cancel,\n cancelOnPointerExit,\n triggerPressEnd,\n triggerPressStart,\n triggerPressUp\n ]);\n\n // Remove user-select: none in case component unmounts immediately after pressStart\n // eslint-disable-next-line arrow-body-style\n useEffect(() => {\n return () => {\n if (!allowTextSelectionOnPress) {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n restoreTextSelection(ref.current.target ?? undefined);\n }\n };\n }, [allowTextSelectionOnPress]);\n\n return {\n isPressed: isPressedProp || isPressed,\n pressProps: mergeProps(domProps, pressProps)\n };\n}\n\nfunction isHTMLAnchorLink(target: Element): target is HTMLAnchorElement {\n return target.tagName === 'A' && target.hasAttribute('href');\n}\n\nfunction isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Element): boolean {\n const {key, code} = event;\n const element = currentTarget as HTMLElement;\n const role = element.getAttribute('role');\n // Accessibility for keyboards. Space and Enter only.\n // \"Spacebar\" is for IE 11\n return (\n (key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space') &&\n !((element instanceof getOwnerWindow(element).HTMLInputElement && !isValidInputKey(element, key)) ||\n element instanceof getOwnerWindow(element).HTMLTextAreaElement ||\n element.isContentEditable) &&\n // Links should only trigger with Enter key\n !((role === 'link' || (!role && isHTMLAnchorLink(element))) && key !== 'Enter')\n );\n}\n\nfunction getTouchFromEvent(event: TouchEvent): Touch | null {\n const {targetTouches} = event;\n if (targetTouches.length > 0) {\n return targetTouches[0];\n }\n return null;\n}\n\nfunction getTouchById(\n event: TouchEvent,\n pointerId: null | number\n): null | Touch {\n const changedTouches = event.changedTouches;\n for (let i = 0; i < changedTouches.length; i++) {\n const touch = changedTouches[i];\n if (touch.identifier === pointerId) {\n return touch;\n }\n }\n return null;\n}\n\nfunction createEvent(target: FocusableElement, e: EventBase): EventBase {\n return {\n currentTarget: target,\n shiftKey: e.shiftKey,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n altKey: e.altKey\n };\n}\n\ninterface Rect {\n top: number,\n right: number,\n bottom: number,\n left: number\n}\n\ninterface EventPoint {\n clientX: number,\n clientY: number,\n width?: number,\n height?: number,\n radiusX?: number,\n radiusY?: number\n}\n\nfunction getPointClientRect(point: EventPoint): Rect {\n let offsetX = 0;\n let offsetY = 0;\n if (point.width !== undefined) {\n offsetX = (point.width / 2);\n } else if (point.radiusX !== undefined) {\n offsetX = point.radiusX;\n }\n if (point.height !== undefined) {\n offsetY = (point.height / 2);\n } else if (point.radiusY !== undefined) {\n offsetY = point.radiusY;\n }\n\n return {\n top: point.clientY - offsetY,\n right: point.clientX + offsetX,\n bottom: point.clientY + offsetY,\n left: point.clientX - offsetX\n };\n}\n\nfunction areRectanglesOverlapping(a: Rect, b: Rect) {\n // check if they cannot overlap on x axis\n if (a.left > b.right || b.left > a.right) {\n return false;\n }\n // check if they cannot overlap on y axis\n if (a.top > b.bottom || b.top > a.bottom) {\n return false;\n }\n return true;\n}\n\nfunction isOverTarget(point: EventPoint, target: Element) {\n let rect = target.getBoundingClientRect();\n let pointRect = getPointClientRect(point);\n return areRectanglesOverlapping(rect, pointRect);\n}\n\nfunction shouldPreventDefault(target: Element) {\n // We cannot prevent default if the target is a draggable element.\n return !(target instanceof HTMLElement) || !target.hasAttribute('draggable');\n}\n\nfunction shouldPreventDefaultKeyboard(target: Element, key: string) {\n if (target instanceof HTMLInputElement) {\n return !isValidInputKey(target, key);\n }\n\n if (target instanceof HTMLButtonElement) {\n return target.type !== 'submit' && target.type !== 'reset';\n }\n\n if (isHTMLAnchorLink(target)) {\n return false;\n }\n\n return true;\n}\n\nconst nonTextInputTypes = new Set([\n 'checkbox',\n 'radio',\n 'range',\n 'color',\n 'file',\n 'image',\n 'button',\n 'submit',\n 'reset'\n]);\n\nfunction isValidInputKey(target: HTMLInputElement, key: string) {\n // Only space should toggle checkboxes and radios, not enter.\n return target.type === 'checkbox' || target.type === 'radio'\n ? key === ' '\n : nonTextInputTypes.has(target.type);\n}\n","function _class_apply_descriptor_get(receiver, descriptor) {\n if (descriptor.get) return descriptor.get.call(receiver);\n\n return descriptor.value;\n}\nexport { _class_apply_descriptor_get as _ };\n","import { _ as _class_apply_descriptor_get } from \"./_class_apply_descriptor_get.js\";\nimport { _ as _class_extract_field_descriptor } from \"./_class_extract_field_descriptor.js\";\n\nfunction _class_private_field_get(receiver, privateMap) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"get\");\n return _class_apply_descriptor_get(receiver, descriptor);\n}\nexport { _class_private_field_get as _ };\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Portions of the code in this file are based on code from react.\n// Original licensing for the following can be found in the\n// NOTICE file in the root directory of this source tree.\n// See https://github.com/facebook/react/tree/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions\n\nimport {DOMAttributes, HoverEvents} from '@react-types/shared';\nimport {useEffect, useMemo, useRef, useState} from 'react';\n\nexport interface HoverProps extends HoverEvents {\n /** Whether the hover events should be disabled. */\n isDisabled?: boolean\n}\n\nexport interface HoverResult {\n /** Props to spread on the target element. */\n hoverProps: DOMAttributes,\n isHovered: boolean\n}\n\n// iOS fires onPointerEnter twice: once with pointerType=\"touch\" and again with pointerType=\"mouse\".\n// We want to ignore these emulated events so they do not trigger hover behavior.\n// See https://bugs.webkit.org/show_bug.cgi?id=214609.\nlet globalIgnoreEmulatedMouseEvents = false;\nlet hoverCount = 0;\n\nfunction setGlobalIgnoreEmulatedMouseEvents() {\n globalIgnoreEmulatedMouseEvents = true;\n\n // Clear globalIgnoreEmulatedMouseEvents after a short timeout. iOS fires onPointerEnter\n // with pointerType=\"mouse\" immediately after onPointerUp and before onFocus. On other\n // devices that don't have this quirk, we don't want to ignore a mouse hover sometime in\n // the distant future because a user previously touched the element.\n setTimeout(() => {\n globalIgnoreEmulatedMouseEvents = false;\n }, 50);\n}\n\nfunction handleGlobalPointerEvent(e) {\n if (e.pointerType === 'touch') {\n setGlobalIgnoreEmulatedMouseEvents();\n }\n}\n\nfunction setupGlobalTouchEvents() {\n if (typeof document === 'undefined') {\n return;\n }\n\n if (typeof PointerEvent !== 'undefined') {\n document.addEventListener('pointerup', handleGlobalPointerEvent);\n } else {\n document.addEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n }\n\n hoverCount++;\n return () => {\n hoverCount--;\n if (hoverCount > 0) {\n return;\n }\n\n if (typeof PointerEvent !== 'undefined') {\n document.removeEventListener('pointerup', handleGlobalPointerEvent);\n } else {\n document.removeEventListener('touchend', setGlobalIgnoreEmulatedMouseEvents);\n }\n };\n}\n\n/**\n * Handles pointer hover interactions for an element. Normalizes behavior\n * across browsers and platforms, and ignores emulated mouse events on touch devices.\n */\nexport function useHover(props: HoverProps): HoverResult {\n let {\n onHoverStart,\n onHoverChange,\n onHoverEnd,\n isDisabled\n } = props;\n\n let [isHovered, setHovered] = useState(false);\n let state = useRef({\n isHovered: false,\n ignoreEmulatedMouseEvents: false,\n pointerType: '',\n target: null\n }).current;\n\n useEffect(setupGlobalTouchEvents, []);\n\n let {hoverProps, triggerHoverEnd} = useMemo(() => {\n let triggerHoverStart = (event, pointerType) => {\n state.pointerType = pointerType;\n if (isDisabled || pointerType === 'touch' || state.isHovered || !event.currentTarget.contains(event.target)) {\n return;\n }\n\n state.isHovered = true;\n let target = event.currentTarget;\n state.target = target;\n\n if (onHoverStart) {\n onHoverStart({\n type: 'hoverstart',\n target,\n pointerType\n });\n }\n\n if (onHoverChange) {\n onHoverChange(true);\n }\n\n setHovered(true);\n };\n\n let triggerHoverEnd = (event, pointerType) => {\n state.pointerType = '';\n state.target = null;\n\n if (pointerType === 'touch' || !state.isHovered) {\n return;\n }\n\n state.isHovered = false;\n let target = event.currentTarget;\n if (onHoverEnd) {\n onHoverEnd({\n type: 'hoverend',\n target,\n pointerType\n });\n }\n\n if (onHoverChange) {\n onHoverChange(false);\n }\n\n setHovered(false);\n };\n\n let hoverProps: DOMAttributes = {};\n\n if (typeof PointerEvent !== 'undefined') {\n hoverProps.onPointerEnter = (e) => {\n if (globalIgnoreEmulatedMouseEvents && e.pointerType === 'mouse') {\n return;\n }\n\n triggerHoverStart(e, e.pointerType);\n };\n\n hoverProps.onPointerLeave = (e) => {\n if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n triggerHoverEnd(e, e.pointerType);\n }\n };\n } else {\n hoverProps.onTouchStart = () => {\n state.ignoreEmulatedMouseEvents = true;\n };\n\n hoverProps.onMouseEnter = (e) => {\n if (!state.ignoreEmulatedMouseEvents && !globalIgnoreEmulatedMouseEvents) {\n triggerHoverStart(e, 'mouse');\n }\n\n state.ignoreEmulatedMouseEvents = false;\n };\n\n hoverProps.onMouseLeave = (e) => {\n if (!isDisabled && e.currentTarget.contains(e.target as Element)) {\n triggerHoverEnd(e, 'mouse');\n }\n };\n }\n return {hoverProps, triggerHoverEnd};\n }, [onHoverStart, onHoverChange, onHoverEnd, isDisabled, state]);\n\n useEffect(() => {\n // Call the triggerHoverEnd as soon as isDisabled changes to true\n // Safe to call triggerHoverEnd, it will early return if we aren't currently hovering\n if (isDisabled) {\n triggerHoverEnd({currentTarget: state.target}, state.pointerType);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isDisabled]);\n\n return {\n hoverProps,\n isHovered\n };\n}\n\n","// src/functions.ts\nvar capitalize = (text) => {\n return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction callAllHandlers(...fns) {\n return function func(event) {\n fns.some((fn) => {\n fn == null ? void 0 : fn(event);\n return event == null ? void 0 : event.defaultPrevented;\n });\n };\n}\nfunction callAll(...fns) {\n return function mergedFn(arg) {\n fns.forEach((fn) => {\n fn == null ? void 0 : fn(arg);\n });\n };\n}\nfunction extractProperty(key, defaultValue, ...objs) {\n let result = defaultValue;\n for (const obj of objs) {\n if (obj && key in obj && !!obj[key]) {\n result = obj[key];\n }\n }\n return result;\n}\nfunction getUniqueID(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 1e6)}`;\n}\nfunction removeEvents(input) {\n for (const key in input) {\n if (key.startsWith(\"on\")) {\n delete input[key];\n }\n }\n return input;\n}\nfunction objectToDeps(obj) {\n if (!obj || typeof obj !== \"object\") {\n return \"\";\n }\n try {\n return JSON.stringify(obj);\n } catch (e) {\n return \"\";\n }\n}\n\nexport {\n capitalize,\n callAllHandlers,\n callAll,\n extractProperty,\n getUniqueID,\n removeEvents,\n objectToDeps\n};\n","\"use client\";\nimport {\n useButtonGroupContext\n} from \"./chunk-BOMWXXSL.mjs\";\n\n// src/use-button.ts\nimport { useProviderContext } from \"@nextui-org/system\";\nimport { dataAttr } from \"@nextui-org/shared-utils\";\nimport { useCallback } from \"react\";\nimport { useFocusRing } from \"@react-aria/focus\";\nimport { chain, mergeProps } from \"@react-aria/utils\";\nimport { useDOMRef, filterDOMProps } from \"@nextui-org/react-utils\";\nimport { button } from \"@nextui-org/theme\";\nimport { isValidElement, cloneElement, useMemo } from \"react\";\nimport { useAriaButton } from \"@nextui-org/use-aria-button\";\nimport { useHover } from \"@react-aria/interactions\";\nimport { useRipple } from \"@nextui-org/ripple\";\nfunction useButton(props) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i;\n const groupContext = useButtonGroupContext();\n const globalContext = useProviderContext();\n const isInGroup = !!groupContext;\n const {\n ref,\n as,\n children,\n startContent: startContentProp,\n endContent: endContentProp,\n autoFocus,\n className,\n spinner,\n isLoading = false,\n disableRipple: disableRippleProp = false,\n fullWidth = (_a = groupContext == null ? void 0 : groupContext.fullWidth) != null ? _a : false,\n radius = groupContext == null ? void 0 : groupContext.radius,\n size = (_b = groupContext == null ? void 0 : groupContext.size) != null ? _b : \"md\",\n color = (_c = groupContext == null ? void 0 : groupContext.color) != null ? _c : \"default\",\n variant = (_d = groupContext == null ? void 0 : groupContext.variant) != null ? _d : \"solid\",\n disableAnimation = (_f = (_e = groupContext == null ? void 0 : groupContext.disableAnimation) != null ? _e : globalContext == null ? void 0 : globalContext.disableAnimation) != null ? _f : false,\n isDisabled: isDisabledProp = (_g = groupContext == null ? void 0 : groupContext.isDisabled) != null ? _g : false,\n isIconOnly = (_h = groupContext == null ? void 0 : groupContext.isIconOnly) != null ? _h : false,\n spinnerPlacement = \"start\",\n onPress,\n onClick,\n ...otherProps\n } = props;\n const Component = as || \"button\";\n const shouldFilterDOMProps = typeof Component === \"string\";\n const domRef = useDOMRef(ref);\n const disableRipple = (_i = disableRippleProp || (globalContext == null ? void 0 : globalContext.disableRipple)) != null ? _i : disableAnimation;\n const { isFocusVisible, isFocused, focusProps } = useFocusRing({\n autoFocus\n });\n const isDisabled = isDisabledProp || isLoading;\n const styles = useMemo(\n () => button({\n size,\n color,\n variant,\n radius,\n fullWidth,\n isDisabled,\n isInGroup,\n disableAnimation,\n isIconOnly,\n className\n }),\n [\n size,\n color,\n variant,\n radius,\n fullWidth,\n isDisabled,\n isInGroup,\n isIconOnly,\n disableAnimation,\n className\n ]\n );\n const { onClick: onRippleClickHandler, onClear: onClearRipple, ripples } = useRipple();\n const handleClick = useCallback(\n (e) => {\n if (disableRipple || isDisabled || disableAnimation)\n return;\n domRef.current && onRippleClickHandler(e);\n },\n [disableRipple, isDisabled, disableAnimation, domRef, onRippleClickHandler]\n );\n const { buttonProps: ariaButtonProps, isPressed } = useAriaButton(\n {\n elementType: as,\n isDisabled,\n onPress,\n onClick: chain(onClick, handleClick),\n ...otherProps\n },\n domRef\n );\n const { isHovered, hoverProps } = useHover({ isDisabled });\n const getButtonProps = useCallback(\n (props2 = {}) => ({\n \"data-disabled\": dataAttr(isDisabled),\n \"data-focus\": dataAttr(isFocused),\n \"data-pressed\": dataAttr(isPressed),\n \"data-focus-visible\": dataAttr(isFocusVisible),\n \"data-hover\": dataAttr(isHovered),\n \"data-loading\": dataAttr(isLoading),\n ...mergeProps(\n ariaButtonProps,\n focusProps,\n hoverProps,\n filterDOMProps(otherProps, {\n enabled: shouldFilterDOMProps\n }),\n filterDOMProps(props2)\n )\n }),\n [\n isLoading,\n isDisabled,\n isFocused,\n isPressed,\n shouldFilterDOMProps,\n isFocusVisible,\n isHovered,\n ariaButtonProps,\n focusProps,\n hoverProps,\n otherProps\n ]\n );\n const getIconClone = (icon) => isValidElement(icon) ? cloneElement(icon, {\n \"aria-hidden\": true,\n focusable: false,\n tabIndex: -1\n }) : null;\n const startContent = getIconClone(startContentProp);\n const endContent = getIconClone(endContentProp);\n const spinnerSize = useMemo(() => {\n const buttonSpinnerSizeMap = {\n sm: \"sm\",\n md: \"sm\",\n lg: \"md\"\n };\n return buttonSpinnerSizeMap[size];\n }, [size]);\n const getRippleProps = useCallback(\n () => ({ ripples, onClear: onClearRipple }),\n [ripples, onClearRipple]\n );\n return {\n Component,\n children,\n domRef,\n spinner,\n styles,\n startContent,\n endContent,\n isLoading,\n spinnerPlacement,\n spinnerSize,\n disableRipple,\n getButtonProps,\n getRippleProps,\n isIconOnly\n };\n}\n\nexport {\n useButton\n};\n","\"use client\";\n\n// src/use-ripple.ts\nimport { getUniqueID } from \"@nextui-org/shared-utils\";\nimport { useCallback, useState } from \"react\";\nfunction useRipple(props = {}) {\n const [ripples, setRipples] = useState([]);\n const onClick = useCallback((event) => {\n const trigger = event.currentTarget;\n const size = Math.max(trigger.clientWidth, trigger.clientHeight);\n const rect = trigger.getBoundingClientRect();\n setRipples((prevRipples) => [\n ...prevRipples,\n {\n key: getUniqueID(prevRipples.length.toString()),\n size,\n x: event.clientX - rect.left - size / 2,\n y: event.clientY - rect.top - size / 2\n }\n ]);\n }, []);\n const onClear = useCallback((key) => {\n setRipples((prevState) => prevState.filter((ripple) => ripple.key !== key));\n }, []);\n return { ripples, onClick, onClear, ...props };\n}\n\nexport {\n useRipple\n};\n","// src/index.ts\nimport { filterDOMProps, mergeProps } from \"@react-aria/utils\";\nimport { useFocusable } from \"@react-aria/focus\";\nimport { usePress } from \"@react-aria/interactions\";\nfunction useAriaButton(props, ref) {\n let {\n elementType = \"button\",\n isDisabled,\n onPress,\n onPressStart,\n onPressEnd,\n onPressChange,\n preventFocusOnPress,\n allowFocusWhenDisabled,\n onClick: deprecatedOnClick,\n href,\n target,\n rel,\n type = \"button\",\n allowTextSelectionOnPress\n } = props;\n let additionalProps;\n if (elementType === \"button\") {\n additionalProps = {\n type,\n disabled: isDisabled\n };\n } else {\n additionalProps = {\n role: \"button\",\n tabIndex: isDisabled ? void 0 : 0,\n href: elementType === \"a\" && isDisabled ? void 0 : href,\n target: elementType === \"a\" ? target : void 0,\n type: elementType === \"input\" ? type : void 0,\n disabled: elementType === \"input\" ? isDisabled : void 0,\n \"aria-disabled\": !isDisabled || elementType === \"input\" ? void 0 : isDisabled,\n rel: elementType === \"a\" ? rel : void 0\n };\n }\n let { pressProps, isPressed } = usePress({\n onPressStart,\n onPressEnd,\n onPressChange,\n onPress,\n isDisabled,\n preventFocusOnPress,\n allowTextSelectionOnPress,\n ref\n });\n let { focusableProps } = useFocusable(props, ref);\n if (allowFocusWhenDisabled) {\n focusableProps.tabIndex = isDisabled ? -1 : focusableProps.tabIndex;\n }\n let buttonProps = mergeProps(\n focusableProps,\n pressProps,\n filterDOMProps(props, { labelable: true })\n );\n return {\n isPressed,\n buttonProps: mergeProps(additionalProps, buttonProps, {\n \"aria-haspopup\": props[\"aria-haspopup\"],\n \"aria-expanded\": props[\"aria-expanded\"],\n \"aria-controls\": props[\"aria-controls\"],\n \"aria-pressed\": props[\"aria-pressed\"],\n onClick: (e) => {\n deprecatedOnClick == null ? void 0 : deprecatedOnClick(e);\n }\n })\n };\n}\nexport {\n useAriaButton\n};\n","// src/utils.ts\nimport { forwardRef as baseForwardRef } from \"react\";\nfunction forwardRef(component) {\n return baseForwardRef(component);\n}\nvar toIterator = (obj) => {\n return {\n ...obj,\n [Symbol.iterator]: function() {\n const keys = Object.keys(this);\n let index = 0;\n return {\n next: () => {\n if (index >= keys.length) {\n return { done: true };\n }\n const key = keys[index];\n const value = this[key];\n index++;\n return { value: { key, value }, done: false };\n }\n };\n }\n };\n};\nvar mapPropsVariants = (props, variantKeys, removeVariantProps = true) => {\n if (!variantKeys) {\n return [props, {}];\n }\n const picked = variantKeys.reduce((acc, key) => {\n if (key in props) {\n return { ...acc, [key]: props[key] };\n } else {\n return acc;\n }\n }, {});\n if (removeVariantProps) {\n const omitted = Object.keys(props).filter((key) => !variantKeys.includes(key)).reduce((acc, key) => ({ ...acc, [key]: props[key] }), {});\n return [omitted, picked];\n } else {\n return [props, picked];\n }\n};\nvar mapPropsVariantsWithCommon = (originalProps, variantKeys, commonKeys) => {\n const props = Object.keys(originalProps).filter((key) => !variantKeys.includes(key) || (commonKeys == null ? void 0 : commonKeys.includes(key))).reduce((acc, key) => ({ ...acc, [key]: originalProps[key] }), {});\n const variants = variantKeys.reduce(\n (acc, key) => ({ ...acc, [key]: originalProps[key] }),\n {}\n );\n return [props, variants];\n};\nvar isNextUIEl = (component) => {\n var _a, _b, _c;\n return !!((_c = (_b = (_a = component.type) == null ? void 0 : _a.render) == null ? void 0 : _b.displayName) == null ? void 0 : _c.includes(\"NextUI\"));\n};\n\nexport {\n forwardRef,\n toIterator,\n mapPropsVariants,\n mapPropsVariantsWithCommon,\n isNextUIEl\n};\n","import {\n tv\n} from \"./chunk-N2KXC5ZE.mjs\";\n\n// src/components/spinner.ts\nvar spinner = tv({\n slots: {\n base: \"relative inline-flex flex-col gap-2 items-center justify-center\",\n wrapper: \"relative flex\",\n circle1: [\n \"absolute\",\n \"w-full\",\n \"h-full\",\n \"rounded-full\",\n \"animate-spinner-ease-spin\",\n \"border-2\",\n \"border-solid\",\n \"border-t-transparent\",\n \"border-l-transparent\",\n \"border-r-transparent\"\n ],\n circle2: [\n \"absolute\",\n \"w-full\",\n \"h-full\",\n \"rounded-full\",\n \"opacity-75\",\n \"animate-spinner-linear-spin\",\n \"border-2\",\n \"border-dotted\",\n \"border-t-transparent\",\n \"border-l-transparent\",\n \"border-r-transparent\"\n ],\n label: \"text-foreground dark:text-foreground-dark font-regular\"\n },\n variants: {\n size: {\n sm: {\n wrapper: \"w-5 h-5\",\n circle1: \"border-2\",\n circle2: \"border-2\",\n label: \"text-small\"\n },\n md: {\n wrapper: \"w-8 h-8\",\n circle1: \"border-3\",\n circle2: \"border-3\",\n label: \"text-medium\"\n },\n lg: {\n wrapper: \"w-10 h-10\",\n circle1: \"border-3\",\n circle2: \"border-3\",\n label: \"text-large\"\n }\n },\n color: {\n current: {\n circle1: \"border-b-current\",\n circle2: \"border-b-current\"\n },\n white: {\n circle1: \"border-b-white\",\n circle2: \"border-b-white\"\n },\n default: {\n circle1: \"border-b-default\",\n circle2: \"border-b-default\"\n },\n primary: {\n circle1: \"border-b-primary\",\n circle2: \"border-b-primary\"\n },\n secondary: {\n circle1: \"border-b-secondary\",\n circle2: \"border-b-secondary\"\n },\n success: {\n circle1: \"border-b-success\",\n circle2: \"border-b-success\"\n },\n warning: {\n circle1: \"border-b-warning\",\n circle2: \"border-b-warning\"\n },\n danger: {\n circle1: \"border-b-danger\",\n circle2: \"border-b-danger\"\n }\n },\n labelColor: {\n foreground: {\n label: \"text-foreground\"\n },\n primary: {\n label: \"text-primary\"\n },\n secondary: {\n label: \"text-secondary\"\n },\n success: {\n label: \"text-success\"\n },\n warning: {\n label: \"text-warning\"\n },\n danger: {\n label: \"text-danger\"\n }\n }\n },\n defaultVariants: {\n size: \"md\",\n color: \"primary\",\n labelColor: \"foreground\"\n }\n});\n\nexport {\n spinner\n};\n","// src/clsx.ts\nfunction toVal(mix) {\n var k, y, str = \"\";\n if (typeof mix === \"string\" || typeof mix === \"number\") {\n str += mix;\n } else if (typeof mix === \"object\") {\n if (Array.isArray(mix)) {\n for (k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (y = toVal(mix[k])) {\n str && (str += \" \");\n str += y;\n }\n }\n }\n } else {\n for (k in mix) {\n if (mix[k]) {\n str && (str += \" \");\n str += k;\n }\n }\n }\n }\n return str;\n}\nfunction clsx(...args) {\n var i = 0, tmp, x, str = \"\";\n while (i < args.length) {\n if (tmp = args[i++]) {\n if (x = toVal(tmp)) {\n str && (str += \" \");\n str += x;\n }\n }\n }\n return str;\n}\n\nexport {\n clsx\n};\n","import {\n useSpinner\n} from \"./chunk-GF2IUMUE.mjs\";\n\n// src/spinner.tsx\nimport { forwardRef } from \"@nextui-org/system-rsc\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar Spinner = forwardRef((props, ref) => {\n const { slots, classNames, label, getSpinnerProps } = useSpinner({ ...props });\n return /* @__PURE__ */ jsxs(\"div\", { ref, ...getSpinnerProps(), children: [\n /* @__PURE__ */ jsxs(\"div\", { className: slots.wrapper({ class: classNames == null ? void 0 : classNames.wrapper }), children: [\n /* @__PURE__ */ jsx(\"i\", { className: slots.circle1({ class: classNames == null ? void 0 : classNames.circle1 }) }),\n /* @__PURE__ */ jsx(\"i\", { className: slots.circle2({ class: classNames == null ? void 0 : classNames.circle2 }) })\n ] }),\n label && /* @__PURE__ */ jsx(\"span\", { className: slots.label({ class: classNames == null ? void 0 : classNames.label }), children: label })\n ] });\n});\nSpinner.displayName = \"NextUI.Spinner\";\nvar spinner_default = Spinner;\n\nexport {\n spinner_default\n};\n","// src/use-spinner.ts\nimport { mapPropsVariants } from \"@nextui-org/system-rsc\";\nimport { spinner } from \"@nextui-org/theme\";\nimport { clsx, objectToDeps } from \"@nextui-org/shared-utils\";\nimport { useMemo, useCallback } from \"react\";\nfunction useSpinner(originalProps) {\n const [props, variantProps] = mapPropsVariants(originalProps, spinner.variantKeys);\n const { children, className, classNames, label: labelProp, ...otherProps } = props;\n const slots = useMemo(() => spinner({ ...variantProps }), [objectToDeps(variantProps)]);\n const baseStyles = clsx(classNames == null ? void 0 : classNames.base, className);\n const label = labelProp || children;\n const ariaLabel = useMemo(() => {\n if (label && typeof label === \"string\") {\n return label;\n }\n return !otherProps[\"aria-label\"] ? \"Loading\" : \"\";\n }, [children, label, otherProps[\"aria-label\"]]);\n const getSpinnerProps = useCallback(\n () => ({\n \"aria-label\": ariaLabel,\n className: slots.base({\n class: baseStyles\n }),\n ...otherProps\n }),\n [ariaLabel, slots, baseStyles, otherProps]\n );\n return { label, slots, classNames, getSpinnerProps };\n}\n\nexport {\n useSpinner\n};\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\n","const 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};\nconst featureDefinitions = {};\nfor (const key in featureProps) {\n featureDefinitions[key] = {\n isEnabled: (props) => featureProps[key].some((name) => !!props[name]),\n };\n}\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n featureDefinitions[key] = {\n ...featureDefinitions[key],\n ...features[key],\n };\n }\n}\n\nexport { loadFeatures };\n","import { jsx } from 'react/jsx-runtime';\nimport { useState, useRef, useEffect } from 'react';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { loadFeatures } from '../../motion/features/load-features.mjs';\n\n/**\n * Used in conjunction with the `m` component to reduce bundle size.\n *\n * `m` is a version of the `motion` component that only loads functionality\n * critical for the initial render.\n *\n * `LazyMotion` can then be used to either synchronously or asynchronously\n * load animation and gesture support.\n *\n * ```jsx\n * // Synchronous loading\n * import { LazyMotion, m, domAnimation } from \"framer-motion\"\n *\n * function App() {\n * return (\n * \n * \n * \n * )\n * }\n *\n * // Asynchronous loading\n * import { LazyMotion, m } from \"framer-motion\"\n *\n * function App() {\n * return (\n * import('./path/to/domAnimation')}>\n * \n * \n * )\n * }\n * ```\n *\n * @public\n */\nfunction LazyMotion({ children, features, strict = false }) {\n const [, setIsLoaded] = useState(!isLazyBundle(features));\n const loadedRenderer = useRef(undefined);\n /**\n * If this is a synchronous load, load features immediately\n */\n if (!isLazyBundle(features)) {\n const { renderer, ...loadedFeatures } = features;\n loadedRenderer.current = renderer;\n loadFeatures(loadedFeatures);\n }\n useEffect(() => {\n if (isLazyBundle(features)) {\n features().then(({ renderer, ...loadedFeatures }) => {\n loadFeatures(loadedFeatures);\n loadedRenderer.current = renderer;\n setIsLoaded(true);\n });\n }\n }, []);\n return (jsx(LazyContext.Provider, { value: { renderer: loadedRenderer.current, strict }, children: children }));\n}\nfunction isLazyBundle(features) {\n return typeof features === \"function\";\n}\n\nexport { LazyMotion };\n","function isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\n","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\n","function 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\nexport { shallowCompare };\n","/**\n * Decides if the supplied variable is variant label\n */\nfunction isVariantLabel(v) {\n return typeof v === \"string\" || Array.isArray(v);\n}\n\nexport { isVariantLabel };\n","function resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n const current = {};\n visualElement.values.forEach((value, key) => (current[key] = value.get()));\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\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 !== undefined ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\nexport { resolveVariant };\n","const variantPriorityOrder = [\n \"animate\",\n \"whileInView\",\n \"whileFocus\",\n \"whileHover\",\n \"whileTap\",\n \"whileDrag\",\n \"exit\",\n];\nconst variantProps = [\"initial\", ...variantPriorityOrder];\n\nexport { variantPriorityOrder, variantProps };\n","/**\n * Generate a list of every possible transform key.\n */\nconst 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];\n/**\n * A quick lookup for transform props.\n */\nconst transformProps = new Set(transformPropOrder);\n\nexport { transformPropOrder, transformProps };\n","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/gu, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nconst secondsToMilliseconds = (seconds) => seconds * 1000;\nconst millisecondsToSeconds = (milliseconds) => milliseconds / 1000;\n\nexport { millisecondsToSeconds, secondsToMilliseconds };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\n\nconst underDampedSpring = {\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restSpeed: 10,\n};\nconst criticallyDampedSpring = (target) => ({\n type: \"spring\",\n stiffness: 550,\n damping: target === 0 ? 2 * Math.sqrt(550) : 30,\n restSpeed: 10,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\n/**\n * Default easing curve is a slightly shallower version of\n * the default browser easing curve.\n */\nconst ease = {\n type: \"keyframes\",\n ease: [0.25, 0.1, 0.35, 1],\n duration: 0.3,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else if (transformProps.has(valueKey)) {\n return valueKey.startsWith(\"scale\")\n ? criticallyDampedSpring(keyframes[1])\n : underDampedSpring;\n }\n return ease;\n};\n\nexport { getDefaultTransition };\n","/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\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] ||\n transition[\"default\"] ||\n transition);\n}\n\nexport { getValueTransition, isTransitionDefined };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\n","const isNotNull = (value) => value !== null;\nfunction getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }, finalKeyframe) {\n const resolvedKeyframes = keyframes.filter(isNotNull);\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : resolvedKeyframes.length - 1;\n return !index || finalKeyframe === undefined\n ? resolvedKeyframes[index]\n : finalKeyframe;\n}\n\nexport { getFinalKeyframe };\n","const noop = (any) => any;\n\nexport { noop };\n","class Queue {\n constructor() {\n this.order = [];\n this.scheduled = new Set();\n }\n add(process) {\n if (!this.scheduled.has(process)) {\n this.scheduled.add(process);\n this.order.push(process);\n return true;\n }\n }\n remove(process) {\n const index = this.order.indexOf(process);\n if (index !== -1) {\n this.order.splice(index, 1);\n this.scheduled.delete(process);\n }\n }\n clear() {\n this.order.length = 0;\n this.scheduled.clear();\n }\n}\nfunction createRenderStep(runNextFrame) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Queue();\n let nextFrame = new Queue();\n let numToRun = 0;\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (queue.add(callback) && addToCurrentFrame && isProcessing) {\n // If we're adding it to the currently running queue, update its measured size\n numToRun = thisFrame.order.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.remove(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Clear the next frame queue\n nextFrame.clear();\n // Execute this frame\n numToRun = thisFrame.order.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = thisFrame.order[i];\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n callback(frameData);\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n \"read\", // Read\n \"resolveKeyframes\", // Write/Read/Write/Read\n \"update\", // Compute\n \"preRender\", // Compute\n \"render\", // Write\n \"postRender\", // Compute\n];\nconst 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 steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n }, {});\n const processStep = (stepId) => {\n steps[stepId].process(state);\n };\n const processBatch = () => {\n const timestamp = MotionGlobalConfig.useManualTiming\n ? state.timestamp\n : performance.now();\n runNextFrame = false;\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n state.timestamp = timestamp;\n state.isProcessing = true;\n stepsOrder.forEach(processStep);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => stepsOrder.forEach((key) => steps[key].cancel(process));\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\n","import { MotionGlobalConfig } from '../utils/GlobalConfig.mjs';\nimport { frameData } from './frame.mjs';\n\nlet now;\nfunction clearTime() {\n now = undefined;\n}\n/**\n * An eventloop-synchronous alternative to performance.now().\n *\n * Ensures that time measurements remain consistent within a synchronous context.\n * Usually calling performance.now() twice within the same synchronous context\n * will return different values which isn't useful for animations when we're usually\n * trying to sync animations to the same frame.\n */\nconst time = {\n now: () => {\n if (now === undefined) {\n time.set(frameData.isProcessing || MotionGlobalConfig.useManualTiming\n ? frameData.timestamp\n : performance.now());\n }\n return now;\n },\n set: (newTime) => {\n now = newTime;\n queueMicrotask(clearTime);\n },\n};\n\nexport { time };\n","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/u.test(v);\n\nexport { isZeroValueString };\n","import { noop } from './noop.mjs';\n\nlet warning = noop;\nlet invariant = noop;\nif (process.env.NODE_ENV !== \"production\") {\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\nexport { invariant, warning };\n","/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nconst isNumericalString = (v) => /^-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)$/u.test(v);\n\nexport { isNumericalString };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = checkStringStartsWith(\"--\");\nconst startsAsVariableToken = checkStringStartsWith(\"var(--\");\nconst isCSSVariableToken = (value) => {\n const startsWithToken = startsAsVariableToken(value);\n if (!startsWithToken)\n return false;\n // Ensure any comments are stripped from the value as this can harm performance of the regex.\n return singleCssVariableRegex.test(value.split(\"/*\")[0].trim());\n};\nconst singleCssVariableRegex = /var\\(--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)$/iu;\n\nexport { isCSSVariableName, isCSSVariableToken };\n","import { invariant } from '../../../utils/errors.mjs';\nimport { isNumericalString } from '../../../utils/is-numerical-string.mjs';\nimport { isCSSVariableToken } from './is-css-variable.mjs';\n\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nconst splitCSSVariableRegex = \n// eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words\n/^var\\(--(?:([\\w-]+)|([\\w-]+), ?([a-zA-Z\\d ()%#.,-]+))\\)/u;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token1, token2, fallback] = match;\n return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];\n}\nconst 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 // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n const resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n const trimmed = resolved.trim();\n return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;\n }\n return isCSSVariableToken(fallback)\n ? getVariableValue(fallback, element, depth + 1)\n : fallback;\n}\n\nexport { getVariableValue, parseCSSVariable };\n","const clamp = (min, max, v) => {\n if (v > max)\n return max;\n if (v < min)\n return min;\n return v;\n};\n\nexport { clamp };\n","import { clamp } from '../../../utils/clamp.mjs';\n\nconst number = {\n test: (v) => typeof v === \"number\",\n parse: parseFloat,\n transform: (v) => v,\n};\nconst alpha = {\n ...number,\n transform: (v) => clamp(0, 1, v),\n};\nconst scale = {\n ...number,\n default: 1,\n};\n\nexport { alpha, number, scale };\n","/**\n * TODO: When we move from string as a source of truth to data models\n * everything in this folder should probably be referred to as models vs types\n */\n// If this number is a decimal, make it just five decimal places\n// to avoid exponents\nconst sanitize = (v) => Math.round(v * 100000) / 100000;\nconst floatRegex = /-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/gu;\nconst colorRegex = /(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))/giu;\nconst singleColorRegex = /^(?:#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\))$/iu;\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nexport { colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType(\"deg\");\nconst percent = createUnitType(\"%\");\nconst px = createUnitType(\"px\");\nconst vh = createUnitType(\"vh\");\nconst vw = createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { number } from '../../../value/types/numbers/index.mjs';\nimport { px } from '../../../value/types/numbers/units.mjs';\n\nconst positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n \"translateX\",\n \"translateY\",\n]);\nconst isNumOrPxType = (v) => v === number || v === px;\nconst getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(\", \")[pos]);\nconst getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {\n if (transform === \"none\" || !transform)\n return 0;\n const matrix3d = transform.match(/^matrix3d\\((.+)\\)$/u);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/u);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n};\nconst transformKeys = new Set([\"x\", \"y\", \"z\"]);\nconst 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 !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n return removedTransforms;\n}\nconst 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};\n// Alias translate longform names\npositionalValues.translateX = positionalValues.x;\npositionalValues.translateY = positionalValues.y;\n\nexport { isNumOrPxType, positionalKeys, positionalValues, removeNonTranslationalTransform };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","import { number } from '../../../value/types/numbers/index.mjs';\nimport { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';\nimport { testValueType } from './test.mjs';\nimport { auto } from './type-auto.mjs';\n\n/**\n * A list of value types commonly used for dimensions\n */\nconst dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nconst findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));\n\nexport { dimensionValueTypes, findDimensionValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\n","import { removeNonTranslationalTransform } from '../dom/utils/unit-conversion.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst toResolve = new Set();\nlet isScheduled = false;\nlet anyNeedsMeasurement = false;\nfunction measureAllKeyframes() {\n if (anyNeedsMeasurement) {\n const resolversToMeasure = Array.from(toResolve).filter((resolver) => resolver.needsMeasurement);\n const elementsToMeasure = new Set(resolversToMeasure.map((resolver) => resolver.element));\n const transformsToRestore = new Map();\n /**\n * Write pass\n * If we're measuring elements we want to remove bounding box-changing transforms.\n */\n elementsToMeasure.forEach((element) => {\n const removedTransforms = removeNonTranslationalTransform(element);\n if (!removedTransforms.length)\n return;\n transformsToRestore.set(element, removedTransforms);\n element.render();\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureInitialState());\n // Write\n elementsToMeasure.forEach((element) => {\n element.render();\n const restore = transformsToRestore.get(element);\n if (restore) {\n restore.forEach(([key, value]) => {\n var _a;\n (_a = element.getValue(key)) === null || _a === void 0 ? void 0 : _a.set(value);\n });\n }\n });\n // Read\n resolversToMeasure.forEach((resolver) => resolver.measureEndState());\n // Write\n resolversToMeasure.forEach((resolver) => {\n if (resolver.suspendedScrollY !== undefined) {\n window.scrollTo(0, resolver.suspendedScrollY);\n }\n });\n }\n anyNeedsMeasurement = false;\n isScheduled = false;\n toResolve.forEach((resolver) => resolver.complete());\n toResolve.clear();\n}\nfunction readAllKeyframes() {\n toResolve.forEach((resolver) => {\n resolver.readKeyframes();\n if (resolver.needsMeasurement) {\n anyNeedsMeasurement = true;\n }\n });\n}\nfunction flushKeyframeResolvers() {\n readAllKeyframes();\n measureAllKeyframes();\n}\nclass KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue, element, isAsync = false) {\n /**\n * Track whether this resolver has completed. Once complete, it never\n * needs to attempt keyframe resolution again.\n */\n this.isComplete = false;\n /**\n * Track whether this resolver is async. If it is, it'll be added to the\n * resolver queue and flushed in the next frame. Resolvers that aren't going\n * to trigger read/write thrashing don't need to be async.\n */\n this.isAsync = false;\n /**\n * Track whether this resolver needs to perform a measurement\n * to resolve its keyframes.\n */\n this.needsMeasurement = false;\n /**\n * Track whether this resolver is currently scheduled to resolve\n * to allow it to be cancelled and resumed externally.\n */\n this.isScheduled = false;\n this.unresolvedKeyframes = [...unresolvedKeyframes];\n this.onComplete = onComplete;\n this.name = name;\n this.motionValue = motionValue;\n this.element = element;\n this.isAsync = isAsync;\n }\n scheduleResolve() {\n this.isScheduled = true;\n if (this.isAsync) {\n toResolve.add(this);\n if (!isScheduled) {\n isScheduled = true;\n frame.read(readAllKeyframes);\n frame.resolveKeyframes(measureAllKeyframes);\n }\n }\n else {\n this.readKeyframes();\n this.complete();\n }\n }\n readKeyframes() {\n const { unresolvedKeyframes, name, element, motionValue } = this;\n /**\n * If a keyframe is null, we hydrate it either by reading it from\n * the instance, or propagating from previous keyframes.\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (unresolvedKeyframes[i] === null) {\n /**\n * If the first keyframe is null, we need to find its value by sampling the element\n */\n if (i === 0) {\n const currentValue = motionValue === null || motionValue === void 0 ? void 0 : motionValue.get();\n const finalKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (currentValue !== undefined) {\n unresolvedKeyframes[0] = currentValue;\n }\n else if (element && name) {\n const valueAsRead = element.readValue(name, finalKeyframe);\n if (valueAsRead !== undefined && valueAsRead !== null) {\n unresolvedKeyframes[0] = valueAsRead;\n }\n }\n if (unresolvedKeyframes[0] === undefined) {\n unresolvedKeyframes[0] = finalKeyframe;\n }\n if (motionValue && currentValue === undefined) {\n motionValue.set(unresolvedKeyframes[0]);\n }\n }\n else {\n unresolvedKeyframes[i] = unresolvedKeyframes[i - 1];\n }\n }\n }\n }\n setFinalKeyframe() { }\n measureInitialState() { }\n renderEndStyles() { }\n measureEndState() { }\n complete() {\n this.isComplete = true;\n this.onComplete(this.unresolvedKeyframes, this.finalKeyframe);\n toResolve.delete(this);\n }\n cancel() {\n if (!this.isComplete) {\n this.isScheduled = false;\n toResolve.delete(this);\n }\n }\n resume() {\n if (!this.isComplete)\n this.scheduleResolve();\n }\n}\n\nexport { KeyframeResolver, flushKeyframeResolvers };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\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 // Or we have 3 characters, ie #F00\n }\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}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst 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 }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nfunction test(v) {\n var _a, _b;\n return (isNaN(v) &&\n isString(v) &&\n (((_a = v.match(floatRegex)) === null || _a === void 0 ? void 0 : _a.length) || 0) +\n (((_b = v.match(colorRegex)) === null || _b === void 0 ? void 0 : _b.length) || 0) >\n 0);\n}\nconst NUMBER_TOKEN = \"number\";\nconst COLOR_TOKEN = \"color\";\nconst VAR_TOKEN = \"var\";\nconst VAR_FUNCTION_TOKEN = \"var(\";\nconst SPLIT_TOKEN = \"${}\";\n// this regex consists of the `singleCssVariableRegex|rgbHSLValueRegex|digitRegex`\nconst complexRegex = /var\\s*\\(\\s*--(?:[\\w-]+\\s*|[\\w-]+\\s*,(?:\\s*[^)(\\s]|\\s*\\((?:[^)(]|\\([^)(]*\\))*\\))+\\s*)\\)|#[\\da-f]{3,8}|(?:rgb|hsl)a?\\((?:-?[\\d.]+%?[,\\s]+){2}-?[\\d.]+%?\\s*(?:[,/]\\s*)?(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)?%?\\)|-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/giu;\nfunction analyseComplexValue(value) {\n const originalValue = value.toString();\n const values = [];\n const indexes = {\n color: [],\n number: [],\n var: [],\n };\n const types = [];\n let i = 0;\n const tokenised = originalValue.replace(complexRegex, (parsedValue) => {\n if (color.test(parsedValue)) {\n indexes.color.push(i);\n types.push(COLOR_TOKEN);\n values.push(color.parse(parsedValue));\n }\n else if (parsedValue.startsWith(VAR_FUNCTION_TOKEN)) {\n indexes.var.push(i);\n types.push(VAR_TOKEN);\n values.push(parsedValue);\n }\n else {\n indexes.number.push(i);\n types.push(NUMBER_TOKEN);\n values.push(parseFloat(parsedValue));\n }\n ++i;\n return SPLIT_TOKEN;\n });\n const split = tokenised.split(SPLIT_TOKEN);\n return { values, split, indexes, types };\n}\nfunction parseComplexValue(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { split, types } = analyseComplexValue(source);\n const numSections = split.length;\n return (v) => {\n let output = \"\";\n for (let i = 0; i < numSections; i++) {\n output += split[i];\n if (v[i] !== undefined) {\n const type = types[i];\n if (type === NUMBER_TOKEN) {\n output += sanitize(v[i]);\n }\n else if (type === COLOR_TOKEN) {\n output += color.transform(v[i]);\n }\n else {\n output += v[i];\n }\n }\n }\n return output;\n };\n}\nconst 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}\nconst complex = {\n test,\n parse: parseComplexValue,\n createTransformer,\n getAnimatableNone,\n};\n\nexport { analyseComplexValue, complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = 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 [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /\\b([a-z-]*)\\(.*?\\)/gu;\nconst filter = {\n ...complex,\n getAnimatableNone: (v) => {\n const functions = v.match(functionRegex);\n return functions ? functions.map(applyDefaultFilter).join(\" \") : v;\n },\n};\n\nexport { filter };\n","import { number } from '../../../value/types/numbers/index.mjs';\n\nconst int = {\n ...number,\n transform: Math.round,\n};\n\nexport { int };\n","import { scale, alpha } from '../../../value/types/numbers/index.mjs';\nimport { px, degrees, progressPercentage } from '../../../value/types/numbers/units.mjs';\nimport { int } from './type-int.mjs';\n\nconst 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 backgroundPositionX: px,\n backgroundPositionY: px,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { numberValueTypes } from './number.mjs';\n\n/**\n * A map of default value types for common values\n */\nconst 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};\n/**\n * Gets the default ValueType for the provided value key\n */\nconst getDefaultValueType = (key) => defaultValueTypes[key];\n\nexport { defaultValueTypes, getDefaultValueType };\n","import { complex } from '../../../value/types/complex/index.mjs';\nimport { filter } from '../../../value/types/complex/filter.mjs';\nimport { getDefaultValueType } from './defaults.mjs';\n\nfunction getAnimatableNone(key, value) {\n let defaultValueType = getDefaultValueType(key);\n if (defaultValueType !== filter)\n defaultValueType = complex;\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n return defaultValueType.getAnimatableNone\n ? defaultValueType.getAnimatableNone(value)\n : undefined;\n}\n\nexport { getAnimatableNone };\n","import { isNone } from '../../animation/utils/is-none.mjs';\nimport { getVariableValue } from './utils/css-variables-conversion.mjs';\nimport { isCSSVariableToken } from './utils/is-css-variable.mjs';\nimport { positionalKeys, isNumOrPxType, positionalValues } from './utils/unit-conversion.mjs';\nimport { findDimensionValueType } from './value-types/dimensions.mjs';\nimport { KeyframeResolver } from '../utils/KeyframesResolver.mjs';\nimport { makeNoneKeyframesAnimatable } from '../html/utils/make-none-animatable.mjs';\n\nclass DOMKeyframesResolver extends KeyframeResolver {\n constructor(unresolvedKeyframes, onComplete, name, motionValue) {\n super(unresolvedKeyframes, onComplete, name, motionValue, motionValue === null || motionValue === void 0 ? void 0 : motionValue.owner, true);\n }\n readKeyframes() {\n const { unresolvedKeyframes, element, name } = this;\n if (!element.current)\n return;\n super.readKeyframes();\n /**\n * If any keyframe is a CSS variable, we need to find its value by sampling the element\n */\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" && isCSSVariableToken(keyframe)) {\n const resolved = getVariableValue(keyframe, element.current);\n if (resolved !== undefined) {\n unresolvedKeyframes[i] = resolved;\n }\n if (i === unresolvedKeyframes.length - 1) {\n this.finalKeyframe = keyframe;\n }\n }\n }\n /**\n * Check to see if unit type has changed. If so schedule jobs that will\n * temporarily set styles to the destination keyframes.\n * Skip if we have more than two keyframes or this isn't a positional value.\n * TODO: We can throw if there are multiple keyframes and the value type changes.\n */\n if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {\n return this.resolveNoneKeyframes();\n }\n const [origin, target] = unresolvedKeyframes;\n const originType = findDimensionValueType(origin);\n const targetType = findDimensionValueType(target);\n /**\n * Either we don't recognise these value types or we can animate between them.\n */\n if (originType === targetType)\n return;\n /**\n * If both values are numbers or pixels, we can animate between them by\n * converting them to numbers.\n */\n if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n const value = unresolvedKeyframes[i];\n if (typeof value === \"string\") {\n unresolvedKeyframes[i] = parseFloat(value);\n }\n }\n }\n else {\n /**\n * Else, the only way to resolve this is by measuring the element.\n */\n this.needsMeasurement = true;\n }\n }\n resolveNoneKeyframes() {\n const { unresolvedKeyframes, name } = this;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < unresolvedKeyframes.length; i++) {\n if (isNone(unresolvedKeyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n }\n if (noneKeyframeIndexes.length) {\n makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);\n }\n }\n measureInitialState() {\n const { element, unresolvedKeyframes, name } = this;\n if (!element.current)\n return;\n if (name === \"height\") {\n this.suspendedScrollY = window.pageYOffset;\n }\n this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n unresolvedKeyframes[0] = this.measuredOrigin;\n // Set final key frame to measure after next render\n const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];\n if (measureKeyframe !== undefined) {\n element.getValue(name, measureKeyframe).jump(measureKeyframe, false);\n }\n }\n measureEndState() {\n var _a;\n const { element, name, unresolvedKeyframes } = this;\n if (!element.current)\n return;\n const value = element.getValue(name);\n value && value.jump(this.measuredOrigin, false);\n const finalKeyframeIndex = unresolvedKeyframes.length - 1;\n const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];\n unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));\n if (finalKeyframe !== null && this.finalKeyframe === undefined) {\n this.finalKeyframe = finalKeyframe;\n }\n // If we removed transform values, reapply them before the next render\n if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {\n this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {\n element\n .getValue(unsetTransformName)\n .set(unsetTransformValue);\n });\n }\n this.resolveNoneKeyframes();\n }\n}\n\nexport { DOMKeyframesResolver };\n","import { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\n\nfunction isNone(value) {\n if (typeof value === \"number\") {\n return value === 0;\n }\n else if (value !== null) {\n return value === \"none\" || value === \"0\" || isZeroValueString(value);\n }\n else {\n return true;\n }\n}\n\nexport { isNone };\n","import { getAnimatableNone } from '../../dom/value-types/animatable-none.mjs';\n\n/**\n * If we encounter keyframes like \"none\" or \"0\" and we also have keyframes like\n * \"#fff\" or \"200px 200px\" we want to find a keyframe to serve as a template for\n * the \"none\" keyframes. In this case \"#fff\" or \"200px 200px\" - then these get turned into\n * zero equivalents, i.e. \"#fff0\" or \"0px 0px\".\n */\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n if (typeof unresolvedKeyframes[i] === \"string\" &&\n unresolvedKeyframes[i] !== \"none\" &&\n unresolvedKeyframes[i] !== \"0\") {\n animatableTemplate = unresolvedKeyframes[i];\n }\n i++;\n }\n if (animatableTemplate && name) {\n for (const noneIndex of noneKeyframeIndexes) {\n unresolvedKeyframes[noneIndex] = getAnimatableNone(name, animatableTemplate);\n }\n }\n}\n\nexport { makeNoneKeyframesAnimatable };\n","import { complex } from '../../value/types/complex/index.mjs';\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nconst isAnimatable = (value, name) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (name === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\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(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nexport { isAnimatable };\n","import { flushKeyframeResolvers } from '../../render/utils/KeyframesResolver.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { canAnimate } from './utils/can-animate.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nclass BaseAnimation {\n constructor({ autoplay = true, delay = 0, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", ...options }) {\n // Track whether the animation has been stopped. Stopped animations won't restart.\n this.isStopped = false;\n this.hasAttemptedResolve = false;\n this.options = {\n autoplay,\n delay,\n type,\n repeat,\n repeatDelay,\n repeatType,\n ...options,\n };\n this.updateFinishedPromise();\n }\n /**\n * A getter for resolved data. If keyframes are not yet resolved, accessing\n * this.resolved will synchronously flush all pending keyframe resolvers.\n * This is a deoptimisation, but at its worst still batches read/writes.\n */\n get resolved() {\n if (!this._resolved && !this.hasAttemptedResolve) {\n flushKeyframeResolvers();\n }\n return this._resolved;\n }\n /**\n * A method to be called when the keyframes resolver completes. This method\n * will check if its possible to run the animation and, if not, skip it.\n * Otherwise, it will call initPlayback on the implementing class.\n */\n onKeyframesResolved(keyframes, finalKeyframe) {\n this.hasAttemptedResolve = true;\n const { name, type, velocity, delay, onComplete, onUpdate, isGenerator, } = this.options;\n /**\n * If we can't animate this value with the resolved keyframes\n * then we should complete it immediately.\n */\n if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {\n // Finish immediately\n if (instantAnimationState.current || !delay) {\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete === null || onComplete === void 0 ? void 0 : onComplete();\n this.resolveFinishedPromise();\n return;\n }\n // Finish after a delay\n else {\n this.options.duration = 0;\n }\n }\n const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);\n if (resolvedAnimation === false)\n return;\n this._resolved = {\n keyframes,\n finalKeyframe,\n ...resolvedAnimation,\n };\n this.onPostResolved();\n }\n onPostResolved() { }\n /**\n * Allows the returned animation to be awaited or promise-chained. Currently\n * resolves when the animation finishes at all but in a future update could/should\n * reject if its cancels.\n */\n then(resolve, reject) {\n return this.currentFinishedPromise.then(resolve, reject);\n }\n updateFinishedPromise() {\n this.currentFinishedPromise = new Promise((resolve) => {\n this.resolveFinishedPromise = resolve;\n });\n }\n}\n\nexport { BaseAnimation };\n","import { warning } from '../../../utils/errors.mjs';\nimport { isAnimatable } from '../../utils/is-animatable.mjs';\n\nfunction hasKeyframesChanged(keyframes) {\n const current = keyframes[0];\n if (keyframes.length === 1)\n return true;\n for (let i = 0; i < keyframes.length; i++) {\n if (keyframes[i] !== current)\n return true;\n }\n}\nfunction canAnimate(keyframes, name, type, velocity) {\n /**\n * Check if we're able to animate between the start and end keyframes,\n * and throw a warning if we're attempting to animate between one that's\n * animatable and another that isn't.\n */\n const originKeyframe = keyframes[0];\n if (originKeyframe === null)\n return false;\n const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(originKeyframe, name);\n const isTargetAnimatable = isAnimatable(targetKeyframe, name);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} 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 // Always skip if any of these are true\n if (!isOriginAnimatable || !isTargetAnimatable) {\n return false;\n }\n return hasKeyframesChanged(keyframes) || (type === \"spring\" && velocity);\n}\n\nexport { canAnimate };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst 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 /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (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 }\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}\nconst 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\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n mass: 1.0,\n };\n springOptions.isResolvedFromDuration = true;\n }\n return springOptions;\n}\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n const origin = keyframes[0];\n const target = keyframes[keyframes.length - 1];\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = { done: false, value: origin };\n const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration, } = getSpringOptions({\n ...options,\n velocity: -millisecondsToSeconds(options.velocity || 0),\n });\n const initialVelocity = velocity || 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n 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 /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n }\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 =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\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 === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\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 /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\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), // TODO: This should be passing * 1000\n damping: bounceDamping,\n stiffness: bounceStiffness,\n restDelta,\n restSpeed,\n });\n };\n checkCatchBoundary(0);\n return {\n calculatedDuration: null,\n next: (t) => {\n /**\n * We need to resolve the friction to figure out if we need a\n * spring but we don't want to do this twice per frame. So here\n * we flag if we updated for this frame and later if we did\n * we can skip doing it again.\n */\n let hasUpdatedFrame = false;\n if (!spring$1 && timeReachedBoundary === undefined) {\n hasUpdatedFrame = true;\n applyFriction(t);\n checkCatchBoundary(t);\n }\n /**\n * If we have a spring and the provided t is beyond the moment the friction\n * animation crossed the min/max boundary, use the spring.\n */\n if (timeReachedBoundary !== undefined && t >= timeReachedBoundary) {\n return spring$1.next(t - timeReachedBoundary);\n }\n else {\n !hasUpdatedFrame && applyFriction(t);\n return state;\n }\n },\n };\n}\n\nexport { inertia };\n","import { noop } from '../utils/noop.mjs';\n\n/*\n Bezier function generator\n This has been modified from Gaëtan Renaudeau's BezierEasing\n https://github.com/gre/bezier-easing/blob/master/src/index.js\n https://github.com/gre/bezier-easing/blob/master/LICENSE\n \n I've removed the newtonRaphsonIterate algo because in benchmarking it\n wasn't noticiably faster than binarySubdivision, indeed removing it\n usually improved times, depending on the curve.\n I also removed the lookup table, as for the added bundle size and loop we're\n only cutting ~4 or so subdivision iterations. I bumped the max iterations up\n to 12 to compensate and this still tended to be faster for no perceivable\n loss in accuracy.\n Usage\n const easeOut = cubicBezier(.17,.67,.83,.67);\n const x = easeOut(0.5); // returns 0.627...\n*/\n// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\nconst calcBezier = (t, a1, a2) => (((1.0 - 3.0 * a2 + 3.0 * a1) * t + (3.0 * a2 - 6.0 * a1)) * t + 3.0 * a1) *\n t;\nconst subdivisionPrecision = 0.0000001;\nconst 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.0;\n currentX = calcBezier(currentT, mX1, mX2) - x;\n if (currentX > 0.0) {\n upperBound = currentT;\n }\n else {\n lowerBound = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision &&\n ++i < subdivisionMaxIterations);\n return currentT;\n}\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n // If this is a linear gradient, return linear easing\n if (mX1 === mY1 && mX2 === mY2)\n return noop;\n const getTForX = (aX) => binarySubdivide(aX, 0, 1, mX1, mX2);\n // If animation is at start/end, return t without easing\n return (t) => t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n}\n\nexport { cubicBezier };\n","import { cubicBezier } from './cubic-bezier.mjs';\n\nconst easeIn = cubicBezier(0.42, 0, 1, 1);\nconst easeOut = cubicBezier(0, 0, 0.58, 1);\nconst easeInOut = cubicBezier(0.42, 0, 0.58, 1);\n\nexport { easeIn, easeInOut, easeOut };\n","// Accepts an easing function and returns a new one that outputs mirrored values for\n// the second half of the animation. Turns easeIn into easeInOut.\nconst mirrorEasing = (easing) => (p) => p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n\nexport { mirrorEasing };\n","// Accepts an easing function and returns a new one that outputs reversed values.\n// Turns easeIn into easeOut.\nconst reverseEasing = (easing) => (p) => 1 - easing(1 - p);\n\nexport { reverseEasing };\n","import { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst circIn = (p) => 1 - Math.sin(Math.acos(p));\nconst circOut = reverseEasing(circIn);\nconst circInOut = mirrorEasing(circIn);\n\nexport { circIn, circInOut, circOut };\n","import { cubicBezier } from './cubic-bezier.mjs';\nimport { mirrorEasing } from './modifiers/mirror.mjs';\nimport { reverseEasing } from './modifiers/reverse.mjs';\n\nconst backOut = cubicBezier(0.33, 1.53, 0.69, 0.99);\nconst backIn = reverseEasing(backOut);\nconst backInOut = mirrorEasing(backIn);\n\nexport { backIn, backInOut, backOut };\n","import { invariant } from '../../utils/errors.mjs';\nimport { cubicBezier } from '../cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../ease.mjs';\nimport { circIn, circInOut, circOut } from '../circ.mjs';\nimport { backIn, backInOut, backOut } from '../back.mjs';\nimport { anticipate } from '../anticipate.mjs';\n\nconst 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};\nconst easingDefinitionToFunction = (definition) => {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\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 }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, `Invalid easing type '${definition}'`);\n return easingLookup[definition];\n }\n return definition;\n};\n\nexport { easingDefinitionToFunction };\n","import { backIn } from './back.mjs';\n\nconst anticipate = (p) => (p *= 2) < 1 ? 0.5 * backIn(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n\nexport { anticipate };\n","/**\n * Pipe\n * Compose other transformers to run linearily\n * pipe(min(20), max(40))\n * @param {...functions} transformers\n * @return {function}\n */\nconst combineFunctions = (a, b) => (v) => b(a(v));\nconst pipe = (...transformers) => transformers.reduce(combineFunctions);\n\nexport { pipe };\n","/*\n Progress within given range\n\n Given a lower limit and an upper limit, we return the progress\n (expressed as a number 0-1) represented by the given value, and\n limit that progress to within 0-1.\n\n @param [number]: Lower limit\n @param [number]: Upper limit\n @param [number]: Value to find progress within given range\n @return [number]: Progress of value within range as expressed 0-1\n*/\nconst progress = (from, to, value) => {\n const toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nexport { progress };\n","/*\n Value in range from progress\n\n Given a lower limit and an upper limit, we return the value within\n that range as expressed by progress (usually a number from 0 to 1)\n\n So progress = 0.5 would change\n\n from -------- to\n\n to\n\n from ---- to\n\n E.g. from = 10, to = 20, progress = 0.5 => 15\n\n @param [number]: Lower limit of range\n @param [number]: Upper limit of range\n @param [number]: The progress between lower and upper limits expressed 0-1\n @return [number]: Value as calculated from progress within range (not limited within range)\n*/\nconst mixNumber = (from, to, progress) => {\n return from + (to - from) * progress;\n};\n\nexport { mixNumber };\n","// Adapted from https://gist.github.com/mjackson/5311256\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 }) {\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 }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : 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,\n };\n}\n\nexport { hslaToRgba };\n","import { mixNumber } from './number.mjs';\nimport { invariant } from '../errors.mjs';\nimport { hslaToRgba } from '../hsla-to-rgba.mjs';\nimport { hex } from '../../value/types/color/hex.mjs';\nimport { rgba } from '../../value/types/color/rgba.mjs';\nimport { hsla } from '../../value/types/color/hsla.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n const expo = v * (to * to - fromExpo) + fromExpo;\n return expo < 0 ? 0 : Math.sqrt(expo);\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n invariant(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Framer Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst 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 = mixNumber(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","import { mixNumber as mixNumber$1 } from './number.mjs';\nimport { mixColor } from './color.mjs';\nimport { pipe } from '../pipe.mjs';\nimport { warning } from '../errors.mjs';\nimport { color } from '../../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../../value/types/complex/index.mjs';\nimport { isCSSVariableToken } from '../../render/dom/utils/is-css-variable.mjs';\n\nfunction mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\nfunction mixNumber(a, b) {\n return (p) => mixNumber$1(a, b, p);\n}\nfunction getMixer(a) {\n if (typeof a === \"number\") {\n return mixNumber;\n }\n else if (typeof a === \"string\") {\n return isCSSVariableToken(a)\n ? mixImmediate\n : color.test(a)\n ? mixColor\n : mixComplex;\n }\n else if (Array.isArray(a)) {\n return mixArray;\n }\n else if (typeof a === \"object\") {\n return color.test(a) ? mixColor : mixObject;\n }\n return mixImmediate;\n}\nfunction mixArray(a, b) {\n const output = [...a];\n const numValues = output.length;\n const blendValue = a.map((v, i) => getMixer(v)(v, b[i]));\n return (p) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](p);\n }\n return output;\n };\n}\nfunction mixObject(a, b) {\n const output = { ...a, ...b };\n const blendValue = {};\n for (const key in output) {\n if (a[key] !== undefined && b[key] !== undefined) {\n blendValue[key] = getMixer(a[key])(a[key], b[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n}\nfunction matchOrder(origin, target) {\n var _a;\n const orderedOrigin = [];\n const pointers = { color: 0, var: 0, number: 0 };\n for (let i = 0; i < target.values.length; i++) {\n const type = target.types[i];\n const originIndex = origin.indexes[type][pointers[type]];\n const originValue = (_a = origin.values[originIndex]) !== null && _a !== void 0 ? _a : 0;\n orderedOrigin[i] = originValue;\n pointers[type]++;\n }\n return orderedOrigin;\n}\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.indexes.var.length === targetStats.indexes.var.length &&\n originStats.indexes.color.length === targetStats.indexes.color.length &&\n originStats.indexes.number.length >= targetStats.indexes.number.length;\n if (canInterpolate) {\n return pipe(mixArray(matchOrder(originStats, targetStats), targetStats.values), template);\n }\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\nexport { getMixer, mixArray, mixComplex, mixObject };\n","import { getMixer } from './complex.mjs';\nimport { mixNumber } from './number.mjs';\n\nfunction mix(from, to, p) {\n if (typeof from === \"number\" &&\n typeof to === \"number\" &&\n typeof p === \"number\") {\n return mixNumber(from, to, p);\n }\n const mixer = getMixer(from);\n return mixer(from, to);\n}\n\nexport { mix };\n","import { invariant } from './errors.mjs';\nimport { clamp } from './clamp.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\nimport { noop } from './noop.mjs';\nimport { mix } from './mix/index.mjs';\n\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || mix;\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 (ease) {\n const easingFunction = Array.isArray(ease) ? ease[i] || noop : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\n/**\n * Create a function that maps from a numerical input array to a generic output array.\n *\n * Accepts:\n * - Numbers\n * - Colors (hex, hsl, hsla, rgb, rgba)\n * - Complex (combinations of one or more numbers or strings)\n *\n * ```jsx\n * const mixColor = interpolate([0, 1], ['#fff', '#000'])\n *\n * mixColor(0.5) // 'rgba(128, 128, 128, 1)'\n * ```\n *\n * TODO Revist this approach once we've moved to data models for values,\n * probably not needed to pregenerate mixer functions.\n *\n * @public\n */\nfunction interpolate(input, output, { clamp: isClamp = true, ease, mixer } = {}) {\n const inputLength = input.length;\n invariant(inputLength === output.length, \"Both input and output ranges must be the same length\");\n /**\n * If we're only provided a single input, we can just make a function\n * that returns the output.\n */\n if (inputLength === 1)\n return () => output[0];\n if (inputLength === 2 && input[0] === input[1])\n return () => output[1];\n // If input runs highest -> lowest, reverse both arrays\n if (input[0] > input[inputLength - 1]) {\n input = [...input].reverse();\n output = [...output].reverse();\n }\n const mixers = createMixers(output, ease, 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\n ? (v) => interpolator(clamp(input[0], input[inputLength - 1], v))\n : interpolator;\n}\n\nexport { interpolate };\n","import { fillOffset } from './fill.mjs';\n\nfunction defaultOffset(arr) {\n const offset = [0];\n fillOffset(offset, arr.length - 1);\n return offset;\n}\n\nexport { defaultOffset };\n","import { mixNumber } from '../mix/number.mjs';\nimport { progress } from '../progress.mjs';\n\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(mixNumber(min, 1, offsetProgress));\n }\n}\n\nexport { fillOffset };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { isEasingArray } from '../../easing/utils/is-easing-array.mjs';\nimport { easingDefinitionToFunction } from '../../easing/utils/map.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { defaultOffset } from '../../utils/offsets/default.mjs';\nimport { convertOffsetToTimes } from '../../utils/offsets/time.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction keyframes({ duration = 300, keyframes: keyframeValues, times, ease = \"easeInOut\", }) {\n /**\n * Easing functions can be externally defined as strings. Here we convert them\n * into actual functions.\n */\n const easingFunctions = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n /**\n * This is the Iterator-spec return value. We ensure it's mutable rather than using a generator\n * to reduce GC during animation.\n */\n const state = {\n done: false,\n value: keyframeValues[0],\n };\n /**\n * Create a times array based on the provided 0-1 offsets\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\n ? times\n : defaultOffset(keyframeValues), duration);\n const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : 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\nexport { defaultEasing, keyframes };\n","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\n","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","import { time } from '../../../frameloop/sync-time.mjs';\nimport { frame, cancelFrame, frameData } from '../../../frameloop/frame.mjs';\n\nconst 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 : time.now()),\n };\n};\n\nexport { frameloopDriver };\n","import { KeyframeResolver } from '../../render/utils/KeyframesResolver.mjs';\nimport { spring } from '../generators/spring/index.mjs';\nimport { inertia } from '../generators/inertia.mjs';\nimport { keyframes } from '../generators/keyframes.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { mix } from '../../utils/mix/index.mjs';\nimport { calcGeneratorDuration } from '../generators/utils/calc-duration.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { invariant } from '../../utils/errors.mjs';\nimport { frameloopDriver } from './drivers/driver-frameloop.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nconst generators = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\nconst percentToProgress = (percent) => percent / 100;\n/**\n * Animation that runs on the main thread. Designed to be WAAPI-spec in the subset of\n * features we expose publically. Mostly the compatibility is to ensure visual identity\n * between both WAAPI and main thread animations.\n */\nclass MainThreadAnimation extends BaseAnimation {\n constructor({ KeyframeResolver: KeyframeResolver$1 = KeyframeResolver, ...options }) {\n super(options);\n /**\n * The time at which the animation was paused.\n */\n this.holdTime = null;\n /**\n * The time at which the animation was started.\n */\n this.startTime = null;\n /**\n * The time at which the animation was cancelled.\n */\n this.cancelTime = null;\n /**\n * The current time of the animation.\n */\n this.currentTime = 0;\n /**\n * Playback speed as a factor. 0 would be stopped, -1 reverse and 2 double speed.\n */\n this.playbackSpeed = 1;\n /**\n * The state of the animation to apply when the animation is resolved. This\n * allows calls to the public API to control the animation before it is resolved,\n * without us having to resolve it first.\n */\n this.pendingPlayState = \"running\";\n this.state = \"idle\";\n /**\n * This method is bound to the instance to fix a pattern where\n * animation.stop is returned as a reference from a useEffect.\n */\n this.stop = () => {\n this.resolver.cancel();\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n this.teardown();\n const { onStop } = this.options;\n onStop && onStop();\n };\n const { name, motionValue, keyframes } = this.options;\n const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);\n if (name && motionValue && motionValue.owner) {\n this.resolver = motionValue.owner.resolveKeyframes(keyframes, onResolved, name, motionValue);\n }\n else {\n this.resolver = new KeyframeResolver$1(keyframes, onResolved, name, motionValue);\n }\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes$1) {\n const { type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType, velocity = 0, } = this.options;\n const generatorFactory = generators[type] || keyframes;\n /**\n * If our generator doesn't support mixing numbers, we need to replace keyframes with\n * [0, 100] and then make a function that maps that to the actual keyframes.\n *\n * 100 is chosen instead of 1 as it works nicer with spring animations.\n */\n let mapPercentToKeyframes;\n let mirroredGenerator;\n if (generatorFactory !== keyframes &&\n typeof keyframes$1[0] !== \"number\") {\n if (process.env.NODE_ENV !== \"production\") {\n invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);\n }\n mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });\n /**\n * If we have a mirror repeat type we need to create a second generator that outputs the\n * mirrored (not reversed) animation and later ping pong between the two generators.\n */\n if (repeatType === \"mirror\") {\n mirroredGenerator = generatorFactory({\n ...this.options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -velocity,\n });\n }\n /**\n * If duration is undefined and we have repeat options,\n * we need to calculate a duration from the generator.\n *\n * We set it to the generator itself to cache the duration.\n * Any timeline resolver will need to have already precalculated\n * the duration by this step.\n */\n if (generator.calculatedDuration === null) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n const resolvedDuration = calculatedDuration + repeatDelay;\n const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n return {\n generator,\n mirroredGenerator,\n mapPercentToKeyframes,\n calculatedDuration,\n resolvedDuration,\n totalDuration,\n };\n }\n onPostResolved() {\n const { autoplay = true } = this.options;\n this.play();\n if (this.pendingPlayState === \"paused\" || !autoplay) {\n this.pause();\n }\n else {\n this.state = this.pendingPlayState;\n }\n }\n tick(timestamp, sample = false) {\n const { resolved } = this;\n // If the animations has failed to resolve, return the final keyframe.\n if (!resolved) {\n const { keyframes } = this.options;\n return { done: true, value: keyframes[keyframes.length - 1] };\n }\n const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes, calculatedDuration, totalDuration, resolvedDuration, } = resolved;\n if (this.startTime === null)\n return generator.next(0);\n const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;\n /**\n * requestAnimationFrame timestamps can come through as lower than\n * the startTime as set by performance.now(). Here we prevent this,\n * though in the future it could be possible to make setting startTime\n * a pending operation that gets resolved here.\n */\n if (this.speed > 0) {\n this.startTime = Math.min(this.startTime, timestamp);\n }\n else if (this.speed < 0) {\n this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);\n }\n // Update currentTime\n if (sample) {\n this.currentTime = timestamp;\n }\n else if (this.holdTime !== null) {\n this.currentTime = this.holdTime;\n }\n else {\n // Rounding the time because floating point arithmetic is not always accurate, e.g. 3000.367 - 1000.367 =\n // 2000.0000000000002. This is a problem when we are comparing the currentTime with the duration, for\n // example.\n this.currentTime =\n Math.round(timestamp - this.startTime) * this.speed;\n }\n // Rebase on delay\n const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);\n const isInDelayPhase = this.speed >= 0\n ? timeWithoutDelay < 0\n : timeWithoutDelay > totalDuration;\n this.currentTime = Math.max(timeWithoutDelay, 0);\n // If this animation has finished, set the current time to the total duration.\n if (this.state === \"finished\" && this.holdTime === null) {\n this.currentTime = totalDuration;\n }\n let elapsed = this.currentTime;\n let frameGenerator = generator;\n if (repeat) {\n /**\n * Get the current progress (0-1) of the animation. If t is >\n * than duration we'll get values like 2.5 (midway through the\n * third iteration)\n */\n const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;\n /**\n * Get the current iteration (0 indexed). For instance the floor of\n * 2.5 is 2.\n */\n let currentIteration = Math.floor(progress);\n /**\n * Get the current progress of the iteration by taking the remainder\n * so 2.5 is 0.5 through iteration 2\n */\n let iterationProgress = progress % 1.0;\n /**\n * If iteration progress is 1 we count that as the end\n * of the previous iteration.\n */\n if (!iterationProgress && progress >= 1) {\n iterationProgress = 1;\n }\n iterationProgress === 1 && currentIteration--;\n currentIteration = Math.min(currentIteration, repeat + 1);\n /**\n * Reverse progress if we're not running in \"normal\" direction\n */\n const isOddIteration = Boolean(currentIteration % 2);\n if (isOddIteration) {\n if (repeatType === \"reverse\") {\n iterationProgress = 1 - iterationProgress;\n if (repeatDelay) {\n iterationProgress -= repeatDelay / resolvedDuration;\n }\n }\n else if (repeatType === \"mirror\") {\n frameGenerator = mirroredGenerator;\n }\n }\n elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;\n }\n /**\n * If we're in negative time, set state as the initial keyframe.\n * This prevents delay: x, duration: 0 animations from finishing\n * instantly.\n */\n const state = isInDelayPhase\n ? { done: false, value: keyframes[0] }\n : frameGenerator.next(elapsed);\n if (mapPercentToKeyframes) {\n state.value = mapPercentToKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done =\n this.speed >= 0\n ? this.currentTime >= totalDuration\n : this.currentTime <= 0;\n }\n const isAnimationFinished = this.holdTime === null &&\n (this.state === \"finished\" || (this.state === \"running\" && done));\n if (isAnimationFinished && finalKeyframe !== undefined) {\n state.value = getFinalKeyframe(keyframes, this.options, finalKeyframe);\n }\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n this.finish();\n }\n return state;\n }\n get duration() {\n const { resolved } = this;\n return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;\n }\n get time() {\n return millisecondsToSeconds(this.currentTime);\n }\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n this.currentTime = newTime;\n if (this.holdTime !== null || this.speed === 0) {\n this.holdTime = newTime;\n }\n else if (this.driver) {\n this.startTime = this.driver.now() - newTime / this.speed;\n }\n }\n get speed() {\n return this.playbackSpeed;\n }\n set speed(newSpeed) {\n const hasChanged = this.playbackSpeed !== newSpeed;\n this.playbackSpeed = newSpeed;\n if (hasChanged) {\n this.time = millisecondsToSeconds(this.currentTime);\n }\n }\n play() {\n if (!this.resolver.isScheduled) {\n this.resolver.resume();\n }\n if (!this._resolved) {\n this.pendingPlayState = \"running\";\n return;\n }\n if (this.isStopped)\n return;\n const { driver = frameloopDriver, onPlay } = this.options;\n if (!this.driver) {\n this.driver = driver((timestamp) => this.tick(timestamp));\n }\n onPlay && onPlay();\n const now = this.driver.now();\n if (this.holdTime !== null) {\n this.startTime = now - this.holdTime;\n }\n else if (!this.startTime || this.state === \"finished\") {\n this.startTime = now;\n }\n if (this.state === \"finished\") {\n this.updateFinishedPromise();\n }\n this.cancelTime = this.startTime;\n this.holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n this.state = \"running\";\n this.driver.start();\n }\n pause() {\n var _a;\n if (!this._resolved) {\n this.pendingPlayState = \"paused\";\n return;\n }\n this.state = \"paused\";\n this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;\n }\n complete() {\n if (this.state !== \"running\") {\n this.play();\n }\n this.pendingPlayState = this.state = \"finished\";\n this.holdTime = null;\n }\n finish() {\n this.teardown();\n this.state = \"finished\";\n const { onComplete } = this.options;\n onComplete && onComplete();\n }\n cancel() {\n if (this.cancelTime !== null) {\n this.tick(this.cancelTime);\n }\n this.teardown();\n this.updateFinishedPromise();\n }\n teardown() {\n this.state = \"idle\";\n this.stopDriver();\n this.resolveFinishedPromise();\n this.updateFinishedPromise();\n this.startTime = this.cancelTime = null;\n this.resolver.cancel();\n }\n stopDriver() {\n if (!this.driver)\n return;\n this.driver.stop();\n this.driver = undefined;\n }\n sample(time) {\n this.startTime = 0;\n return this.tick(time, true);\n }\n}\n// Legacy interface\nfunction animateValue(options) {\n return new MainThreadAnimation(options);\n}\n\nexport { MainThreadAnimation, animateValue };\n","/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxGeneratorDuration = 20000;\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\nexport { calcGeneratorDuration, maxGeneratorDuration };\n","const isBezierDefinition = (easing) => Array.isArray(easing) && typeof easing[0] === \"number\";\n\nexport { isBezierDefinition };\n","import { isBezierDefinition } from '../../../easing/utils/is-bezier-definition.mjs';\n\nfunction isWaapiSupportedEasing(easing) {\n return Boolean(!easing ||\n (typeof easing === \"string\" && easing in supportedWaapiEasing) ||\n isBezierDefinition(easing) ||\n (Array.isArray(easing) && easing.every(isWaapiSupportedEasing)));\n}\nconst cubicBezierAsString = ([a, b, c, d]) => `cubic-bezier(${a}, ${b}, ${c}, ${d})`;\nconst 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 mapEasingToNativeEasingWithDefault(easing) {\n return (mapEasingToNativeEasing(easing) ||\n supportedWaapiEasing.easeOut);\n}\nfunction mapEasingToNativeEasing(easing) {\n if (!easing) {\n return undefined;\n }\n else if (isBezierDefinition(easing)) {\n return cubicBezierAsString(easing);\n }\n else if (Array.isArray(easing)) {\n return easing.map(mapEasingToNativeEasingWithDefault);\n }\n else {\n return supportedWaapiEasing[easing];\n }\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { time } from '../../frameloop/sync-time.mjs';\nimport { DOMKeyframesResolver } from '../../render/dom/DOMKeyframesResolver.mjs';\nimport { memo } from '../../utils/memo.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { BaseAnimation } from './BaseAnimation.mjs';\nimport { MainThreadAnimation } from './MainThreadAnimation.mjs';\nimport { animateStyle } from './waapi/index.mjs';\nimport { isWaapiSupportedEasing } from './waapi/easing.mjs';\nimport { getFinalKeyframe } from './waapi/utils/get-final-keyframe.mjs';\n\nconst supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved\n // or until we implement support for linear() easing.\n // \"background-color\"\n]);\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\n/**\n * Check if an animation can run natively via WAAPI or requires pregenerated keyframes.\n * WAAPI doesn't support spring or function easings so we run these as JS animation before\n * handing off.\n */\nfunction requiresPregeneratedKeyframes(options) {\n return (options.type === \"spring\" ||\n options.name === \"backgroundColor\" ||\n !isWaapiSupportedEasing(options.ease));\n}\nfunction pregenerateKeyframes(keyframes, options) {\n /**\n * Create a main-thread animation to pregenerate keyframes.\n * We sample this at regular intervals to generate keyframes that we then\n * linearly interpolate between.\n */\n const sampleAnimation = new MainThreadAnimation({\n ...options,\n keyframes,\n repeat: 0,\n delay: 0,\n isGenerator: true,\n });\n let state = { done: false, value: keyframes[0] };\n const pregeneratedKeyframes = [];\n /**\n * Bail after 20 seconds of pre-generated keyframes as it's likely\n * we're heading for an infinite loop.\n */\n let t = 0;\n while (!state.done && t < maxDuration) {\n state = sampleAnimation.sample(t);\n pregeneratedKeyframes.push(state.value);\n t += sampleDelta;\n }\n return {\n times: undefined,\n keyframes: pregeneratedKeyframes,\n duration: t - sampleDelta,\n ease: \"linear\",\n };\n}\nclass AcceleratedAnimation extends BaseAnimation {\n constructor(options) {\n super(options);\n const { name, motionValue, keyframes } = this.options;\n this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue);\n this.resolver.scheduleResolve();\n }\n initPlayback(keyframes, finalKeyframe) {\n var _a;\n let { duration = 300, times, ease, type, motionValue, name, } = this.options;\n /**\n * If element has since been unmounted, return false to indicate\n * the animation failed to initialised.\n */\n if (!((_a = motionValue.owner) === null || _a === void 0 ? void 0 : _a.current)) {\n return false;\n }\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(this.options)) {\n const { onComplete, onUpdate, motionValue, ...options } = this.options;\n const pregeneratedAnimation = pregenerateKeyframes(keyframes, options);\n keyframes = pregeneratedAnimation.keyframes;\n // If this is a very short animation, ensure we have\n // at least two keyframes to animate between as older browsers\n // can't animate between a single keyframe.\n if (keyframes.length === 1) {\n keyframes[1] = keyframes[0];\n }\n duration = pregeneratedAnimation.duration;\n times = pregeneratedAnimation.times;\n ease = pregeneratedAnimation.ease;\n type = \"keyframes\";\n }\n const animation = animateStyle(motionValue.owner.current, name, keyframes, { ...this.options, duration, times, ease });\n // Override the browser calculated startTime with one synchronised to other JS\n // and WAAPI animations starting this event loop.\n animation.startTime = time.now();\n if (this.pendingTimeline) {\n animation.timeline = this.pendingTimeline;\n this.pendingTimeline = undefined;\n }\n else {\n /**\n * Prefer the `onfinish` prop as it's more widely supported than\n * the `finished` promise.\n *\n * Here, we synchronously set the provided MotionValue to the end\n * keyframe. If we didn't, when the WAAPI animation is finished it would\n * be removed from the element which would then revert to its old styles.\n */\n animation.onfinish = () => {\n const { onComplete } = this.options;\n motionValue.set(getFinalKeyframe(keyframes, this.options, finalKeyframe));\n onComplete && onComplete();\n this.cancel();\n this.resolveFinishedPromise();\n };\n }\n return {\n animation,\n duration,\n times,\n type,\n ease,\n keyframes: keyframes,\n };\n }\n get duration() {\n const { resolved } = this;\n if (!resolved)\n return 0;\n const { duration } = resolved;\n return millisecondsToSeconds(duration);\n }\n get time() {\n const { resolved } = this;\n if (!resolved)\n return 0;\n const { animation } = resolved;\n return millisecondsToSeconds(animation.currentTime || 0);\n }\n set time(newTime) {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.currentTime = secondsToMilliseconds(newTime);\n }\n get speed() {\n const { resolved } = this;\n if (!resolved)\n return 1;\n const { animation } = resolved;\n return animation.playbackRate;\n }\n set speed(newSpeed) {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.playbackRate = newSpeed;\n }\n get state() {\n const { resolved } = this;\n if (!resolved)\n return \"idle\";\n const { animation } = resolved;\n return animation.playState;\n }\n /**\n * Replace the default DocumentTimeline with another AnimationTimeline.\n * Currently used for scroll animations.\n */\n attachTimeline(timeline) {\n if (!this._resolved) {\n this.pendingTimeline = timeline;\n }\n else {\n const { resolved } = this;\n if (!resolved)\n return noop;\n const { animation } = resolved;\n animation.timeline = timeline;\n animation.onfinish = null;\n }\n return noop;\n }\n play() {\n if (this.isStopped)\n return;\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n if (animation.playState === \"finished\") {\n this.updateFinishedPromise();\n }\n animation.play();\n }\n pause() {\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation } = resolved;\n animation.pause();\n }\n stop() {\n this.resolver.cancel();\n this.isStopped = true;\n if (this.state === \"idle\")\n return;\n const { resolved } = this;\n if (!resolved)\n return;\n const { animation, keyframes, duration, type, ease, times } = resolved;\n if (animation.playState === \"idle\" ||\n animation.playState === \"finished\") {\n return;\n }\n /**\n * WAAPI doesn't natively have any interruption capabilities.\n *\n * Rather than read commited styles back out of the DOM, we can\n * create a renderless JS animation and sample it twice to calculate\n * its current value, \"previous\" value, and therefore allow\n * Motion to calculate velocity for any subsequent animation.\n */\n if (this.time) {\n const { motionValue, onUpdate, onComplete, ...options } = this.options;\n const sampleAnimation = new MainThreadAnimation({\n ...options,\n keyframes,\n duration,\n type,\n ease,\n times,\n isGenerator: true,\n });\n const sampleTime = secondsToMilliseconds(this.time);\n motionValue.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);\n }\n this.cancel();\n }\n complete() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.finish();\n }\n cancel() {\n const { resolved } = this;\n if (!resolved)\n return;\n resolved.animation.cancel();\n }\n static supports(options) {\n const { motionValue, name, repeatDelay, repeatType, damping, type } = options;\n return (supportsWaapi() &&\n name &&\n acceleratedValues.has(name) &&\n motionValue &&\n motionValue.owner &&\n motionValue.owner.current instanceof HTMLElement &&\n /**\n * If we're outputting values to onUpdate then we can't use WAAPI as there's\n * no way to read the value from WAAPI every frame.\n */\n !motionValue.owner.getProps().onUpdate &&\n !repeatDelay &&\n repeatType !== \"mirror\" &&\n damping !== 0 &&\n type !== \"inertia\");\n }\n}\n\nexport { AcceleratedAnimation };\n","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration = 300, repeat = 0, repeatType = \"loop\", ease, times, } = {}) {\n const keyframeOptions = { [valueName]: keyframes };\n if (times)\n keyframeOptions.offset = times;\n const easing = mapEasingToNativeEasing(ease);\n /**\n * If this is an easing array, apply to keyframes, not animation as a whole\n */\n if (Array.isArray(easing))\n keyframeOptions.easing = easing;\n return element.animate(keyframeOptions, {\n delay,\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\nexport { animateStyle };\n","import { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { getValueTransition, isTransitionDefined } from '../utils/transitions.mjs';\nimport { MotionGlobalConfig } from '../../utils/GlobalConfig.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { getFinalKeyframe } from '../animators/waapi/utils/get-final-keyframe.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\nimport { AcceleratedAnimation } from '../animators/AcceleratedAnimation.mjs';\nimport { MainThreadAnimation } from '../animators/MainThreadAnimation.mjs';\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {\n const valueTransition = getValueTransition(transition, name) || {};\n /**\n * Most transition values are currently completely overwritten by value-specific\n * transitions. In the future it'd be nicer to blend these transitions. But for now\n * delay actually does inherit from the root transition if not value-specific.\n */\n const delay = valueTransition.delay || transition.delay || 0;\n /**\n * Elapsed isn't a public transition option but can be passed through from\n * optimized appear effects in milliseconds.\n */\n let { elapsed = 0 } = transition;\n elapsed = elapsed - secondsToMilliseconds(delay);\n let options = {\n keyframes: Array.isArray(target) ? target : [null, target],\n ease: \"easeOut\",\n velocity: value.getVelocity(),\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 name,\n motionValue: value,\n element: isHandoff ? undefined : element,\n };\n /**\n * If there's no transition defined for this value, we can generate\n * unqiue transition settings for this value.\n */\n if (!isTransitionDefined(valueTransition)) {\n options = {\n ...options,\n ...getDefaultTransition(name, options),\n };\n }\n /**\n * Both WAAPI and our internal animation functions use durations\n * as defined by milliseconds, while our external API defines them\n * as seconds.\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 (options.from !== undefined) {\n options.keyframes[0] = options.from;\n }\n let shouldSkip = false;\n if (options.type === false ||\n (options.duration === 0 && !options.repeatDelay)) {\n options.duration = 0;\n if (options.delay === 0) {\n shouldSkip = true;\n }\n }\n if (instantAnimationState.current ||\n MotionGlobalConfig.skipAnimations) {\n shouldSkip = true;\n options.duration = 0;\n options.delay = 0;\n }\n /**\n * If we can or must skip creating the animation, and apply only\n * the final keyframe, do so. We also check once keyframes are resolved but\n * this early check prevents the need to create an animation at all.\n */\n if (shouldSkip && !isHandoff && value.get() !== undefined) {\n const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);\n if (finalKeyframe !== undefined) {\n frame.update(() => {\n options.onUpdate(finalKeyframe);\n options.onComplete();\n });\n return;\n }\n }\n /**\n * Animate via WAAPI if possible. If this is a handoff animation, the optimised animation will be running via\n * WAAPI. Therefore, this animation must be JS to ensure it runs \"under\" the\n * optimised animation.\n */\n if (!isHandoff && AcceleratedAnimation.supports(options)) {\n return new AcceleratedAnimation(options);\n }\n else {\n return new MainThreadAnimation(options);\n }\n};\n\nexport { animateMotionValue };\n","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","import { addUniqueItem, removeItem } from './array.mjs';\n\nclass SubscriptionManager {\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 /**\n * If there's only a single handler we can just call it without invoking a loop.\n */\n this.subscriptions[0](a, b, c);\n }\n else {\n for (let i = 0; i < numSubscriptions; i++) {\n /**\n * Check whether the handler exists before firing as it's possible\n * the subscriptions were modified during this loop running.\n */\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\nexport { SubscriptionManager };\n","function 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}\n// Adapted from array-move\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\nexport { addUniqueItem, moveItem, removeItem };\n","import { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { time } from '../frameloop/sync-time.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\n/**\n * Maximum time between the value of two frames, beyond which we\n * assume the velocity has since been 0.\n */\nconst MAX_VELOCITY_DELTA = 30;\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\n};\nconst collectMotionValues = {\n current: undefined,\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nclass MotionValue {\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 /**\n * This will be replaced by the build step with the latest version number.\n * When MotionValues are provided to motion components, warn if versions are mixed.\n */\n this.version = \"11.1.7\";\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v, render = true) => {\n const currentTime = time.now();\n /**\n * If we're updating the value during another frame or eventloop\n * than the previous frame, then the we set the previous frame value\n * to current.\n */\n if (this.updatedAt !== currentTime) {\n this.setPrevFrameValue();\n }\n this.prev = this.current;\n this.setCurrent(v);\n // Update update subscribers\n if (this.current !== this.prev && this.events.change) {\n this.events.change.notify(this.current);\n }\n // Update render subscribers\n if (render && this.events.renderRequest) {\n this.events.renderRequest.notify(this.current);\n }\n };\n this.hasAnimated = false;\n this.setCurrent(init);\n this.canTrackVelocity = isFloat(this.current);\n this.owner = options.owner;\n }\n setCurrent(current) {\n this.current = current;\n this.updatedAt = time.now();\n }\n setPrevFrameValue(prevFrameValue = this.current) {\n this.prevFrameValue = prevFrameValue;\n this.prevUpdatedAt = this.updatedAt;\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 \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 (process.env.NODE_ENV !== \"production\") {\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 /**\n * If we have no more change listeners by the start\n * of the next frame, stop active animations.\n */\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 }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n }\n setWithVelocity(prev, current, delta) {\n this.set(current);\n this.prev = undefined;\n this.prevFrameValue = prev;\n this.prevUpdatedAt = this.updatedAt - 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, endAnimation = true) {\n this.updateAndNotify(v);\n this.prev = v;\n this.prevUpdatedAt = this.prevFrameValue = undefined;\n endAnimation && this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n if (collectMotionValues.current) {\n collectMotionValues.current.push(this);\n }\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n const currentTime = time.now();\n if (!this.canTrackVelocity ||\n this.prevFrameValue === undefined ||\n currentTime - this.updatedAt > MAX_VELOCITY_DELTA) {\n return 0;\n }\n const delta = Math.min(this.updatedAt - this.prevUpdatedAt, MAX_VELOCITY_DELTA);\n // Casts because of parseFloat's poor typing\n return velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prevFrameValue), delta);\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\nexport { MotionValue, collectMotionValues, motionValue };\n","import { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\n/**\n * Set VisualElement's MotionValue, creating a new MotionValue for it if\n * it doesn't exist.\n */\nfunction setMotionValue(visualElement, key, value) {\n if (visualElement.hasValue(key)) {\n visualElement.getValue(key).set(value);\n }\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 || {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\n\nexport { setTarget };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { optimizedAppearDataAttribute } from '../optimized-appear/data-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { getValueTransition } from '../utils/transitions.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\n/**\n * Decide whether we should block this animation. Previously, we achieved this\n * just by checking whether the key was listed in protectedKeys, but this\n * posed problems if an animation was triggered by afterChildren and protectedKeys\n * had been set to true in the meantime.\n */\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, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {\n var _a;\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const animations = [];\n const animationTypeState = type &&\n visualElement.animationState &&\n visualElement.animationState.getState()[type];\n for (const key in target) {\n const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);\n const valueTarget = target[key];\n if (valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n elapsed: 0,\n ...getValueTransition(transition || {}, key),\n };\n /**\n * If this is the first time a value is being animated, check\n * to see if we're handling off from an existing animation.\n */\n let isHandoff = false;\n if (window.HandoffAppearAnimations) {\n const props = visualElement.getProps();\n const appearId = props[optimizedAppearDataAttribute];\n if (appearId) {\n const elapsed = window.HandoffAppearAnimations(appearId, key);\n if (elapsed !== null) {\n valueTransition.elapsed = elapsed;\n isHandoff = true;\n }\n }\n }\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition, visualElement, isHandoff));\n const animation = value.animation;\n if (animation) {\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n frame.update(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\n });\n });\n }\n return animations;\n}\n\nexport { animateTarget };\n","import { isKeyframesTarget } from '../animation/utils/is-keyframes-target.mjs';\n\nconst isCustomValue = (v) => {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nconst resolveFinalValueInKeyframes = (v) => {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\nexport { isCustomValue, resolveFinalValueInKeyframes };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\n\nfunction animateVariant(visualElement, variant, options = {}) {\n var _a;\n const resolved = resolveVariant(visualElement, variant, options.type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => Promise.all(animateTarget(visualElement, resolved, options))\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(() => last());\n }\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 animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (type) => (acc, definition) => {\n var _a;\n const resolved = resolveVariant(visualElement, definition, type === \"exit\"\n ? (_a = visualElement.presenceContext) === null || _a === void 0 ? void 0 : _a.custom\n : undefined);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\n * This just allows us to inject mocked animation functions\n * @internal\n */\n function setAnimateFunction(makeAnimator) {\n animate = makeAnimator(visualElement);\n }\n /**\n * When we receive new props, we need to:\n * 1. Create a list of protected keys for each type. This is a directory of\n * value keys that are currently being \"handled\" by types of a higher priority\n * so that whenever an animation is played of a given type, these values are\n * protected from being animated.\n * 2. Determine if an animation type needs animating.\n * 3. Determine if any values have been removed from a type and figure out\n * what to animate those to.\n */\n function animateChanges(changedActiveType) {\n const props = visualElement.getProps();\n const context = visualElement.getVariantContext(true) || {};\n /**\n * A list of animations that we'll build into as we iterate through the animation\n * types. This will get executed at the end of the function.\n */\n const animations = [];\n /**\n * Keep track of which values have been removed. Then, as we hit lower priority\n * animation types, we can check if they contain removed values and animate to that.\n */\n const removedKeys = new Set();\n /**\n * A dictionary of all encountered keys. This is an object to let us build into and\n * copy it without iteration. Each time we hit an animation type we set its protected\n * keys - the keys its not allowed to animate - to the latest version of this object.\n */\n let encounteredKeys = {};\n /**\n * If a variant has been removed at a given index, and this component is controlling\n * variant animations, we want to ensure lower-priority variants are forced to animate.\n */\n let removedVariantIndex = Infinity;\n /**\n * Iterate through all animation types in reverse priority order. For each, we want to\n * detect which values it's handling and whether or not they've changed (and therefore\n * need to be animated). If any values have been removed, we want to detect those in\n * lower priority props and flag for animation.\n */\n for (let i = 0; i < numAnimationTypes; i++) {\n const type = reversePriorityOrder[i];\n const typeState = state[type];\n const prop = props[type] !== undefined\n ? props[type]\n : context[type];\n const propIsVariant = isVariantLabel(prop);\n /**\n * If this type has *just* changed isActive status, set activeDelta\n * to that status. Otherwise set to null.\n */\n const activeDelta = type === changedActiveType ? typeState.isActive : null;\n if (activeDelta === false)\n removedVariantIndex = i;\n /**\n * If this prop is an inherited variant, rather than been set directly on the\n * component itself, we want to make sure we allow the parent to trigger animations.\n *\n * TODO: Can probably change this to a !isControllingVariants check\n */\n let isInherited = prop === context[type] &&\n prop !== props[type] &&\n propIsVariant;\n /**\n *\n */\n if (isInherited &&\n isInitialRender &&\n visualElement.manuallyAnimateOnMount) {\n isInherited = false;\n }\n /**\n * Set all encountered keys so far as the protected keys for this type. This will\n * be any key that has been animated or otherwise handled by active, higher-priortiy types.\n */\n typeState.protectedKeys = { ...encounteredKeys };\n // Check if we can skip analysing this prop early\n if (\n // If it isn't active and hasn't *just* been set as inactive\n (!typeState.isActive && activeDelta === null) ||\n // If we didn't and don't have any defined prop for this animation type\n (!prop && !typeState.prevProp) ||\n // Or if the prop doesn't define an animation\n isAnimationControls(prop) ||\n typeof prop === \"boolean\") {\n continue;\n }\n /**\n * As we go look through the values defined on this type, if we detect\n * a changed value or a value that was removed in a higher priority, we set\n * this to true and add this prop to the animation list.\n */\n const variantDidChange = checkVariantsDidChange(typeState.prevProp, prop);\n let shouldAnimateType = variantDidChange ||\n // If we're making this variant active, we want to always make it active\n (type === changedActiveType &&\n typeState.isActive &&\n !isInherited &&\n propIsVariant) ||\n // If we removed a higher-priority variant (i is in reverse order)\n (i > removedVariantIndex && propIsVariant);\n let handledRemovedValues = false;\n /**\n * As animations can be set as variant lists, variants or target objects, we\n * coerce everything to an array if it isn't one already\n */\n const definitionList = Array.isArray(prop) ? prop : [prop];\n /**\n * Build an object of all the resolved values. We'll use this in the subsequent\n * animateChanges calls to determine whether a value has changed.\n */\n let resolvedValues = definitionList.reduce(buildResolvedTypeValues(type), {});\n if (activeDelta === false)\n resolvedValues = {};\n /**\n * Now we need to loop through all the keys in the prev prop and this prop,\n * and decide:\n * 1. If the value has changed, and needs animating\n * 2. If it has been removed, and needs adding to the removedKeys set\n * 3. If it has been removed in a higher priority type and needs animating\n * 4. If it hasn't been removed in a higher priority but hasn't changed, and\n * needs adding to the type's protectedKeys list.\n */\n const { prevResolvedValues = {} } = typeState;\n const allKeys = {\n ...prevResolvedValues,\n ...resolvedValues,\n };\n const markToAnimate = (key) => {\n shouldAnimateType = true;\n if (removedKeys.has(key)) {\n handledRemovedValues = true;\n removedKeys.delete(key);\n }\n typeState.needsAnimating[key] = true;\n const motionValue = visualElement.getValue(key);\n if (motionValue)\n motionValue.liveStyle = false;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If we've already handled this we can just skip ahead\n if (encounteredKeys.hasOwnProperty(key))\n continue;\n /**\n * If the value has changed, we probably want to animate it.\n */\n let valueHasChanged = false;\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n valueHasChanged = !shallowCompare(next, prev);\n }\n else {\n valueHasChanged = next !== prev;\n }\n if (valueHasChanged) {\n if (next !== undefined && next !== null) {\n // If next is defined and doesn't equal prev, it needs animating\n markToAnimate(key);\n }\n else {\n // If it's undefined, it's been removed.\n removedKeys.add(key);\n }\n }\n else if (next !== undefined && removedKeys.has(key)) {\n /**\n * If next hasn't changed and it isn't undefined, we want to check if it's\n * been removed by a higher priority\n */\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we add it to the list of protected values\n * to ensure it doesn't get animated.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n /**\n * Update the typeState so next time animateChanges is called we can compare the\n * latest prop and resolvedValues to these.\n */\n typeState.prevProp = prop;\n typeState.prevResolvedValues = resolvedValues;\n /**\n *\n */\n if (typeState.isActive) {\n encounteredKeys = { ...encounteredKeys, ...resolvedValues };\n }\n if (isInitialRender && visualElement.blockInitialAnimation) {\n shouldAnimateType = false;\n }\n /**\n * If this is an inherited prop we want to hard-block animations\n */\n if (shouldAnimateType && (!isInherited || handledRemovedValues)) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type },\n })));\n }\n }\n /**\n * If there are some removed value that haven't been dealt with,\n * we need to create a new animation that falls back either to the value\n * defined in the style prop, or the last read value.\n */\n if (removedKeys.size) {\n const fallbackAnimation = {};\n removedKeys.forEach((key) => {\n const fallbackTarget = visualElement.getBaseTarget(key);\n const motionValue = visualElement.getValue(key);\n if (motionValue)\n motionValue.liveStyle = true;\n // @ts-expect-error - @mattgperry to figure if we should do something here\n fallbackAnimation[key] = fallbackTarget !== null && fallbackTarget !== void 0 ? fallbackTarget : null;\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n (props.initial === false || props.initial === props.animate) &&\n !visualElement.manuallyAnimateOnMount) {\n shouldAnimate = false;\n }\n isInitialRender = false;\n return shouldAnimate ? animate(animations) : Promise.resolve();\n }\n /**\n * Change whether a certain animation type is active.\n */\n function setActive(type, isActive) {\n var _a;\n // If the active state hasn't changed, we can safely do nothing here\n if (state[type].isActive === isActive)\n return Promise.resolve();\n // Propagate active change to children\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => { var _a; return (_a = child.animationState) === null || _a === void 0 ? void 0 : _a.setActive(type, isActive); });\n state[type].isActive = isActive;\n const animations = animateChanges(type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\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 }\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\nexport { checkVariantsDidChange, createAnimationState };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nfunction animateVisualElement(visualElement, definition, options = {}) {\n visualElement.notify(\"AnimationStart\", definition);\n let animation;\n if (Array.isArray(definition)) {\n const animations = definition.map((variant) => animateVariant(visualElement, variant, options));\n animation = Promise.all(animations);\n }\n else if (typeof definition === \"string\") {\n animation = animateVariant(visualElement, definition, options);\n }\n else {\n const resolvedDefinition = typeof definition === \"function\"\n ? resolveVariant(visualElement, definition, options.custom)\n : definition;\n animation = Promise.all(animateTarget(visualElement, resolvedDefinition, options));\n }\n return animation.then(() => {\n frame.postRender(() => {\n visualElement.notify(\"AnimationComplete\", definition);\n });\n });\n}\n\nexport { animateVisualElement };\n","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\n","import { Feature } from '../Feature.mjs';\n\nlet id = 0;\nclass ExitAnimationFeature extends Feature {\n constructor() {\n super(...arguments);\n this.id = id++;\n }\n update() {\n if (!this.node.presenceContext)\n return;\n const { isPresent, onExitComplete } = this.node.presenceContext;\n const { isPresent: prevIsPresent } = this.node.prevPresenceContext || {};\n if (!this.node.animationState || isPresent === prevIsPresent) {\n return;\n }\n const exitAnimation = this.node.animationState.setActive(\"exit\", !isPresent);\n if (onExitComplete && !isPresent) {\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\nexport { ExitAnimationFeature };\n","import { AnimationFeature } from './animation/index.mjs';\nimport { ExitAnimationFeature } from './animation/exit.mjs';\n\nconst animations = {\n animation: {\n Feature: AnimationFeature,\n },\n exit: {\n Feature: ExitAnimationFeature,\n },\n};\n\nexport { animations };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature 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 } = this.node.getProps();\n this.unmount();\n if (isAnimationControls(animate)) {\n this.unmount = animate.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 } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() { }\n}\n\nexport { AnimationFeature };\n","function addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n\nexport { addDomEvent };\n","import { isPrimaryPointer } from './utils/is-primary-pointer.mjs';\n\nfunction extractEventInfo(event, pointType = \"page\") {\n return {\n point: {\n x: event[`${pointType}X`],\n y: event[`${pointType}Y`],\n },\n };\n}\nconst addPointerInfo = (handler) => {\n return (event) => isPrimaryPointer(event) && handler(event, extractEventInfo(event));\n};\n\nexport { addPointerInfo, extractEventInfo };\n","import { addDomEvent } from './add-dom-event.mjs';\nimport { addPointerInfo } from './event-info.mjs';\n\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, eventName, addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent };\n","const isPrimaryPointer = (event) => {\n if (event.pointerType === \"mouse\") {\n return typeof event.button !== \"number\" || event.button <= 0;\n }\n else {\n /**\n * isPrimary is true for all mice buttons, whereas every touch point\n * is regarded as its own input. So subsequent concurrent touch points\n * will be false.\n *\n * Specifically match against false here as incomplete versions of\n * PointerEvents in very old browser might have it set as undefined.\n */\n return event.isPrimary !== false;\n }\n};\n\nexport { isPrimaryPointer };\n","function 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}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","import { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\n\nfunction addHoverEvent(node, isActive) {\n const eventName = isActive ? \"pointerenter\" : \"pointerleave\";\n const callbackName = isActive ? \"onHoverStart\" : \"onHoverEnd\";\n const handleEvent = (event, info) => {\n if (event.pointerType === \"touch\" || isDragActive())\n return;\n const props = node.getProps();\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", isActive);\n }\n const callback = props[callbackName];\n if (callback)\n callback(event, info);\n };\n return addPointerEvent(node.current, eventName, handleEvent, {\n passive: !node.getProps()[callbackName],\n });\n}\nclass HoverGesture extends Feature {\n mount() {\n this.unmount = pipe(addHoverEvent(this.node, true), addHoverEvent(this.node, false));\n }\n unmount() { }\n}\n\nexport { HoverGesture };\n","/**\n * Recursively traverse up the tree to check whether the provided child node\n * is the parent or a descendant of it.\n *\n * @param parent - Element to find\n * @param child - Element to test against parent\n */\nconst isNodeOrChild = (parent, child) => {\n if (!child) {\n return false;\n }\n else if (parent === child) {\n return true;\n }\n else {\n return isNodeOrChild(parent, child.parentElement);\n }\n};\n\nexport { isNodeOrChild };\n","import { extractEventInfo } from '../events/event-info.mjs';\nimport { addDomEvent } from '../events/add-dom-event.mjs';\nimport { addPointerEvent } from '../events/add-pointer-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { noop } from '../utils/noop.mjs';\n\nfunction fireSyntheticPointerEvent(name, handler) {\n if (!handler)\n return;\n const syntheticPointerEvent = new PointerEvent(\"pointer\" + name);\n handler(syntheticPointerEvent, extractEventInfo(syntheticPointerEvent));\n}\nclass PressGesture 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 if (this.isPressing)\n return;\n this.removeEndListeners();\n const props = this.node.getProps();\n const endPointerPress = (endEvent, endInfo) => {\n if (!this.checkPressEnd())\n return;\n const { onTap, onTapCancel, globalTapTarget } = this.node.getProps();\n /**\n * We only count this as a tap gesture if the event.target is the same\n * as, or a child of, this component's element\n */\n !globalTapTarget &&\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel && onTapCancel(endEvent, endInfo)\n : onTap && onTap(endEvent, endInfo);\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, {\n passive: !(props.onTap || props[\"onPointerUp\"]),\n });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), {\n passive: !(props.onTapCancel ||\n props[\"onPointerCancel\"]),\n });\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 onTap(event, info);\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 /**\n * Ensure we trigger animations before firing event callback\n */\n if (whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", true);\n }\n if (onTapStart) {\n 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 onTapCancel(event, info);\n }\n mount() {\n const props = this.node.getProps();\n const removePointerListener = addPointerEvent(props.globalTapTarget ? window : this.node.current, \"pointerdown\", this.startPointerPress, {\n passive: !(props.onTapStart ||\n props[\"onPointerStart\"]),\n });\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\nexport { PressGesture };\n","/**\n * Map an IntersectionHandler callback to an element. We only ever make one handler for one\n * element, so even though these handlers might all be triggered by different\n * observers, we can keep them in the same map.\n */\nconst observerCallbacks = new WeakMap();\n/**\n * Multiple observers can be created for multiple element/document roots. Each with\n * different settings. So here we store dictionaries of observers to each root,\n * using serialised settings (threshold/margin) as lookup keys.\n */\nconst observers = new WeakMap();\nconst fireObserverCallback = (entry) => {\n const callback = observerCallbacks.get(entry.target);\n callback && callback(entry);\n};\nconst fireAllObserverCallbacks = (entries) => {\n entries.forEach(fireObserverCallback);\n};\nfunction initIntersectionObserver({ root, ...options }) {\n const lookupRoot = root || document;\n /**\n * If we don't have an observer lookup map for this root, create one.\n */\n if (!observers.has(lookupRoot)) {\n observers.set(lookupRoot, {});\n }\n const rootObservers = observers.get(lookupRoot);\n const key = JSON.stringify(options);\n /**\n * If we don't have an observer for this combination of root and settings,\n * create one.\n */\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\nexport { observeIntersection };\n","import { Feature } from '../Feature.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nclass InViewFeature 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 : undefined,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const onIntersectionUpdate = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (this.isInView === isIntersecting)\n return;\n this.isInView = isIntersecting;\n /**\n * Handle hasEnteredView. If this is only meant to run once, and\n * element isn't visible, early return. Otherwise set hasEnteredView to true.\n */\n if (once && !isIntersecting && this.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n this.hasEnteredView = true;\n }\n if (this.node.animationState) {\n this.node.animationState.setActive(\"whileInView\", isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\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}\nfunction hasViewportOptionChanged({ viewport = {} }, { viewport: prevViewport = {} } = {}) {\n return (name) => viewport[name] !== prevViewport[name];\n}\n\nexport { InViewFeature };\n","import { HoverGesture } from '../../gestures/hover.mjs';\nimport { FocusGesture } from '../../gestures/focus.mjs';\nimport { PressGesture } from '../../gestures/press.mjs';\nimport { InViewFeature } from './viewport/index.mjs';\n\nconst 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\nexport { gestureAnimations };\n","import { addDomEvent } from '../events/add-dom-event.mjs';\nimport { Feature } from '../motion/features/Feature.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\nclass FocusGesture extends Feature {\n constructor() {\n super(...arguments);\n this.isActive = false;\n }\n onFocus() {\n let isFocusVisible = false;\n /**\n * If this element doesn't match focus-visible then don't\n * apply whileHover. But, if matches throws that focus-visible\n * is not a valid selector then in that browser outline styles will be applied\n * to the element by default and we want to match that behaviour with whileFocus.\n */\n try {\n isFocusVisible = this.node.current.matches(\":focus-visible\");\n }\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\nexport { FocusGesture };\n","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(transform, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n if (transform[key] !== undefined) {\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${transform[key]}) `;\n }\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nconst getValueAsType = (value, type) => {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\nexport { getValueAsType };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state.transform, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\n","import { scaleCorrectors } from '../../projection/styles/scale-correction.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction isForcedMotionValue(key, { layout, layoutId }) {\n return (transformProps.has(key) ||\n key.startsWith(\"origin\") ||\n ((layout || layoutId !== undefined) &&\n (!!scaleCorrectors[key] || key === \"opacity\")));\n}\n\nexport { isForcedMotionValue };\n","import { isForcedMotionValue } from '../../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n var _a;\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style &&\n isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props) ||\n ((_a = visualElement === null || visualElement === void 0 ? void 0 : visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.liveStyle) !== undefined) {\n newValues[key] = style[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","function renderHTML(element, { style, vars }, styleProp, projection) {\n Object.assign(element.style, style, projection && projection.getProjectionStyles(styleProp));\n // Loop over any CSS variables and assign those.\n for (const key in vars) {\n element.style.setProperty(key, vars[key]);\n }\n}\n\nexport { renderHTML };\n","import { convertBoundingBoxToBox, transformBoxPoints } from '../geometry/conversion.mjs';\nimport { translateAxis } from '../geometry/delta-apply.mjs';\n\nfunction measureViewportBox(instance, transformPoint) {\n return convertBoundingBoxToBox(transformBoxPoints(instance.getBoundingClientRect(), transformPoint));\n}\nfunction measurePageBox(element, rootProjectionNode, transformPagePoint) {\n const viewportBox = measureViewportBox(element, transformPagePoint);\n const { scroll } = rootProjectionNode;\n if (scroll) {\n translateAxis(viewportBox.x, scroll.offset.x);\n translateAxis(viewportBox.y, scroll.offset.y);\n }\n return viewportBox;\n}\n\nexport { measurePageBox, measureViewportBox };\n","/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\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}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoxPoints(point, transformPoint) {\n if (!transformPoint)\n return point;\n const topLeft = transformPoint({ x: point.left, y: point.top });\n const bottomRight = transformPoint({ x: point.right, y: point.bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n\nexport { convertBoundingBoxToBox, convertBoxToBoundingBox, transformBoxPoints };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","const isBrowser = typeof document !== \"undefined\";\n\nexport { isBrowser };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { variantProps } from './variant-props.mjs';\n\nfunction isControllingVariants(props) {\n return (isAnimationControls(props.animate) ||\n variantProps.some((name) => isVariantLabel(props[name])));\n}\nfunction isVariantNode(props) {\n return Boolean(isControllingVariants(props) || props.variants);\n}\n\nexport { isControllingVariants, isVariantNode };\n","const visualElementStore = new WeakMap();\n\nexport { visualElementStore };\n","import { color } from '../../../value/types/color/index.mjs';\nimport { complex } from '../../../value/types/complex/index.mjs';\nimport { dimensionValueTypes } from './dimensions.mjs';\nimport { testValueType } from './test.mjs';\n\n/**\n * A list of all ValueTypes\n */\nconst valueTypes = [...dimensionValueTypes, color, complex];\n/**\n * Tests a value against the list of ValueTypes\n */\nconst findValueType = (v) => valueTypes.find(testValueType(v));\n\nexport { findValueType };\n","import { warning, invariant } from '../utils/errors.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { variantProps } from './utils/variant-props.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { KeyframeResolver } from './utils/KeyframesResolver.mjs';\nimport { isNumericalString } from '../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../utils/is-zero-value-string.mjs';\nimport { findValueType } from './dom/value-types/find.mjs';\nimport { complex } from '../value/types/complex/index.mjs';\nimport { getAnimatableNone } from './dom/value-types/animatable-none.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\nfunction getClosestProjectingNode(visualElement) {\n if (!visualElement)\n return undefined;\n return visualElement.options.allowProjection !== false\n ? visualElement.projection\n : getClosestProjectingNode(visualElement.parent);\n}\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\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, _visualElement) {\n return {};\n }\n constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState, }, options = {}) {\n this.resolveKeyframes = (keyframes, \n // We use an onComplete callback here rather than a Promise as a Promise\n // resolution is a microtask and we want to retain the ability to force\n // the resolution of keyframes synchronously.\n onComplete, name, value) => {\n return new this.KeyframeResolver(keyframes, onComplete, name, value, this);\n };\n /**\n * A reference to the current underlying Instance, e.g. a HTMLElement\n * or Three.Mesh etc.\n */\n this.current = null;\n /**\n * A set containing references to this VisualElement's children.\n */\n this.children = new Set();\n /**\n * Determine what role this visual element should take in the variant tree.\n */\n this.isVariantNode = false;\n this.isControllingVariants = false;\n /**\n * Decides whether this VisualElement should animate in reduced motion\n * mode.\n *\n * TODO: This is currently set on every individual VisualElement but feels\n * like it could be set globally.\n */\n this.shouldReduceMotion = null;\n /**\n * A map of all motion values attached to this visual element. Motion\n * values are source of truth for any given animated value. A motion\n * value might be provided externally by the component via props.\n */\n this.values = new Map();\n this.KeyframeResolver = KeyframeResolver;\n /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\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.blockInitialAnimation = Boolean(blockInitialAnimation);\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\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 =\n this.reducedMotionConfig === \"never\"\n ? false\n : this.reducedMotionConfig === \"always\"\n ? true\n : prefersReducedMotion.current;\n if (process.env.NODE_ENV !== \"production\") {\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 var _a;\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 (_a = this.features[key]) === null || _a === void 0 ? void 0 : _a.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.preRender(this.notifyUpdate);\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 if (value.owner)\n value.stop();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, initialLayoutGroupConfig) {\n let ProjectionNodeConstructor;\n let MeasureLayout;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\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\n ? warning(false, strictMessage)\n : 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 MeasureLayout = MeasureLayoutComponent;\n }\n }\n }\n if ((this.type === \"html\" || this.type === \"svg\") &&\n !this.projection &&\n ProjectionNodeConstructor) {\n this.projection = new ProjectionNodeConstructor(this.latestValues, getClosestProjectingNode(this.parent));\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;\n this.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (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 layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n layoutRoot,\n });\n }\n return MeasureLayout;\n }\n updateFeatures() {\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\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\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\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 /**\n * Update prop event handlers ie onAnimationStart, onAnimationComplete\n */\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 listenerName = (\"on\" + key);\n const listener = props[listenerName];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), 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] : undefined;\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\n ? this\n : this.parent\n ? this.parent.getClosestVariantNode()\n : undefined;\n }\n getVariantContext(startAtParent = false) {\n if (startAtParent) {\n return this.parent ? this.parent.getVariantContext() : undefined;\n }\n if (!this.isControllingVariants) {\n const context = this.parent\n ? this.parent.getVariantContext() || {}\n : {};\n if (this.props.initial !== undefined) {\n context.initial = this.props.initial;\n }\n return context;\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 &&\n 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 // Remove existing value if it exists\n const existingValue = this.values.get(key);\n if (value !== existingValue) {\n if (existingValue)\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\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 === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue === null ? undefined : 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, target) {\n var _a;\n let value = this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);\n if (value !== undefined && value !== null) {\n if (typeof value === \"string\" &&\n (isNumericalString(value) || isZeroValueString(value))) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(target)) {\n value = getAnimatableNone(key, target);\n }\n this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);\n }\n return isMotionValue(value) ? value.get() : value;\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 let valueFromInitial;\n if (typeof initial === \"string\" || typeof initial === \"object\") {\n const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);\n if (variant) {\n valueFromInitial = variant[key];\n }\n }\n /**\n * If this value still exists in the current initial variant, read that.\n */\n if (initial && valueFromInitial !== undefined) {\n return valueFromInitial;\n }\n /**\n * Alternatively, if this VisualElement config has defined a getBaseTarget\n * so we can read the value from an alternative source, try that.\n */\n const target = this.getBaseTargetFromProps(this.props, key);\n if (target !== undefined && !isMotionValue(target))\n return target;\n /**\n * If the value was initially defined on initial, but it doesn't any more,\n * return undefined. Otherwise return the value as initially read from the DOM.\n */\n return this.initialValues[key] !== undefined &&\n valueFromInitial === undefined\n ? undefined\n : 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\nexport { VisualElement };\n","import { isBrowser } from '../is-browser.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from './state.mjs';\n\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 }\n else {\n prefersReducedMotion.current = false;\n }\n}\n\nexport { initPrefersReducedMotion };\n","const createAxisDelta = () => ({\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n});\nconst createDelta = () => ({\n x: createAxisDelta(),\n y: createAxisDelta(),\n});\nconst createAxis = () => ({ min: 0, max: 0 });\nconst createBox = () => ({\n x: createAxis(),\n y: createAxis(),\n});\n\nexport { createAxis, createAxisDelta, createBox, createDelta };\n","import { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\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 /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"11.1.7\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.1.7 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n if (existingValue.liveStyle === true) {\n existingValue.jump(nextValue);\n }\n else if (!existingValue.hasAnimated) {\n existingValue.set(nextValue);\n }\n }\n else {\n const latestValue = element.getStaticValue(key);\n element.addValue(key, motionValue(latestValue !== undefined ? latestValue : nextValue, { owner: element }));\n }\n }\n }\n // Handle removed values\n for (const key in prev) {\n if (next[key] === undefined)\n element.removeValue(key);\n }\n return next;\n}\n\nexport { updateMotionValuesFromProps };\n","import { VisualElement } from '../VisualElement.mjs';\nimport { DOMKeyframesResolver } from './DOMKeyframesResolver.mjs';\n\nclass DOMVisualElement extends VisualElement {\n constructor() {\n super(...arguments);\n this.KeyframeResolver = DOMKeyframesResolver;\n }\n sortInstanceNodePosition(a, b) {\n /**\n * compareDocumentPosition returns a bitmask, by using the bitwise &\n * we're returning true if 2 in that bitmask is set to true. 2 is set\n * to true if b preceeds a.\n */\n return a.compareDocumentPosition(b) & 2 ? 1 : -1;\n }\n getBaseTargetFromProps(props, key) {\n return props.style\n ? props.style[key]\n : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n}\n\nexport { DOMVisualElement };\n","import { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './utils/transform.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { renderHTML } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { measureViewportBox } from '../../projection/utils/measure.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction getComputedStyle(element) {\n return window.getComputedStyle(element);\n}\nclass HTMLVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"html\";\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : 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, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\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\nexport { HTMLVisualElement, getComputedStyle };\n","import { isMotionValue } from '../../../value/utils/is-motion-value.mjs';\nimport { scrapeMotionValuesFromProps as scrapeMotionValuesFromProps$1 } from '../../html/utils/scrape-motion-values.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\n\nfunction scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps, visualElement);\n for (const key in props) {\n if (isMotionValue(props[key]) ||\n isMotionValue(prevProps[key])) {\n const targetKey = transformPropOrder.indexOf(key) !== -1\n ? \"attr\" + key.charAt(0).toUpperCase() + key.substring(1)\n : key;\n newValues[targetKey] = props[key];\n }\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\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\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\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 /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","/**\n * A set of attribute names that are always read/written as camel case.\n */\nconst camelCaseAttributes = 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\nexport { camelCaseAttributes };\n","import { camelToDash } from '../../dom/utils/camel-to-dash.mjs';\nimport { renderHTML } from '../../html/utils/render.mjs';\nimport { camelCaseAttributes } from './camel-case-attrs.mjs';\n\nfunction renderSVG(element, renderState, _styleProp, projection) {\n renderHTML(element, renderState, undefined, projection);\n for (const key in renderState.attrs) {\n element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, renderState.attrs[key]);\n }\n}\n\nexport { renderSVG };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\n","import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { DOMVisualElement } from '../dom/DOMVisualElement.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { camelToDash } from '../dom/utils/camel-to-dash.mjs';\nimport { camelCaseAttributes } from './utils/camel-case-attrs.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { renderSVG } from './utils/render.mjs';\nimport { getDefaultValueType } from '../dom/value-types/defaults.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nclass SVGVisualElement extends DOMVisualElement {\n constructor() {\n super(...arguments);\n this.type = \"svg\";\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, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\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\nexport { SVGVisualElement };\n","/**\n * We keep these listed seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst 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\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\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 Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/u.test(Component)) {\n return true;\n }\n return false;\n}\n\nexport { isSVGComponent };\n","import { Fragment } from 'react';\nimport { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, {\n allowProjection: Component !== Fragment,\n enableHardwareAcceleration: true,\n });\n};\n\nexport { createDomVisualElement };\n","import { animations } from '../../motion/features/animations.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\n\n/**\n * @public\n */\nconst domAnimation = {\n renderer: createDomVisualElement,\n ...animations,\n ...gestureAnimations,\n};\n\nexport { domAnimation };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { useRef } from 'react';\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n const ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nexport { useConstant };\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst MotionConfigContext = createContext({\n transformPagePoint: (p) => p,\n isStatic: false,\n reducedMotion: \"never\",\n});\n\nexport { MotionConfigContext };\n","import { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useRef, useContext, useInsertionEffect } from 'react';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.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 render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n const { nonce } = useContext(MotionConfigContext);\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n if (nonce)\n style.nonce = nonce;\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\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 }, [isPresent]);\n return (jsx(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size, children: React.cloneElement(children, { ref }) }));\n}\n\nexport { PopChild };\n","import { jsx } from 'react/jsx-runtime';\nimport * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\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 ? [Math.random()] : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = jsx(PopChild, { isPresent: isPresent, children: children });\n }\n return (jsx(PresenceContext.Provider, { value: context, children: children }));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import { jsx, Fragment } from 'react/jsx-runtime';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst 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 // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exitingChildren = useRef(new Map()).current;\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(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 (jsx(Fragment, { children: childrenToRender.map((child) => (jsx(PresenceChild, { isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)))) }));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\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, undefined);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exitingChildren.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exitingChildren.forEach((component, key) => {\n // If this component is actually entering again, early return\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 // clean up the exiting children map\n exitingChildren.delete(key);\n // compute the keys of children that were rendered once but are no longer present\n // this could happen in case of too many fast consequent renderings\n // @link https://github.com/framer/motion/issues/2023\n const leftOverKeys = Array.from(allChildren.keys()).filter((childKey) => !targetKeys.includes(childKey));\n // clean up the all children map\n leftOverKeys.forEach((leftOverKey) => allChildren.delete(leftOverKey));\n // make sure to render only the children that are actually visible\n presentChildren.current = filteredChildren.filter((presentChild) => {\n const presentChildKey = getChildKey(presentChild);\n return (\n // filter out the node exiting\n presentChildKey === key ||\n // filter out the leftover children\n leftOverKeys.includes(presentChildKey));\n });\n // Defer re-rendering until all exiting children have indeed left\n if (!exitingChildren.size) {\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n exitingComponent = (jsx(PresenceChild, { isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)));\n exitingChildren.set(key, exitingComponent);\n }\n childrenToRender.splice(insertionIndex, 0, exitingComponent);\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exitingChildren.has(key) ? (child) : (jsx(PresenceChild, { isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode, children: child }, getChildKey(child)));\n });\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\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 (jsx(Fragment, { children: exitingChildren.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child)) }));\n};\n\nexport { AnimatePresence };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","import { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","import { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","import { useCallback } from 'react';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\n\n/**\n * Creates a ref function that, when called, hydrates the provided\n * external ref and VisualElement.\n */\nfunction useMotionRef(visualState, visualElement, externalRef) {\n return useCallback((instance) => {\n instance && visualState.mount && visualState.mount(instance);\n if (visualElement) {\n instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\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\nexport { useMotionRef };\n","import { useContext, useMemo } from 'react';\nimport { MotionContext } from './index.mjs';\nimport { getCurrentTreeVariants } from './utils.mjs';\n\nfunction useCreateMotionContext(props) {\n const { initial, animate } = getCurrentTreeVariants(props, useContext(MotionContext));\n return useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);\n}\nfunction variantLabelsAsDependency(prop) {\n return Array.isArray(prop) ? prop.join(\" \") : prop;\n}\n\nexport { useCreateMotionContext };\n","import { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import { jsxs, jsx } from 'react/jsx-runtime';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n const isStrict = useContext(LazyContext).strict;\n if (context.visualElement) {\n MeasureLayout = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, isStrict, preloadedFeatures, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (jsxs(MotionContext.Provider, { value: context, children: [MeasureLayout && context.visualElement ? (jsx(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null, useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)] }));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { useContext, useRef, useInsertionEffect, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { LazyContext } from '../../context/LazyContext.mjs';\nimport { MotionConfigContext } from '../../context/MotionConfigContext.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\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 /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useInsertionEffect(() => {\n visualElement && visualElement.update(props, presenceContext);\n });\n /**\n * Cache this value as we want to know whether HandoffAppearAnimations\n * was present on initial render - it will be deleted after this.\n */\n const wantsHandoff = useRef(Boolean(props[optimizedAppearDataAttribute] &&\n !window.HandoffComplete));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\n microtask.postRender(visualElement.render);\n /**\n * Ideally this function would always run in a useEffect.\n *\n * However, if we have optimised appear animations to handoff from,\n * it needs to happen synchronously to ensure there's no flash of\n * incorrect styles in the event of a hydration error.\n *\n * So if we detect a situtation where optimised appear animations\n * are running, we use useLayoutEffect to trigger animations.\n */\n if (wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useEffect(() => {\n if (!visualElement)\n return;\n visualElement.updateFeatures();\n if (!wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n if (wantsHandoff.current) {\n wantsHandoff.current = false;\n // This ensures all future calls to animateChanges() will run in useEffect\n window.HandoffComplete = true;\n }\n });\n return visualElement;\n}\n\nexport { useVisualElement };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\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 useMemo(() => {\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 /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n if (props.tabIndex === undefined &&\n (props.onTap || props.onTapStart || props.whileTap)) {\n htmlProps.tabIndex = 0;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"custom\",\n \"inherit\",\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 \"globalTapTarget\",\n \"ignoreStrict\",\n \"viewport\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return (key.startsWith(\"while\") ||\n (key.startsWith(\"drag\") && key !== \"draggable\") ||\n key.startsWith(\"layout\") ||\n key.startsWith(\"onTap\") ||\n key.startsWith(\"onPan\") ||\n key.startsWith(\"onLayout\") ||\n validMotionProps.has(key));\n}\n\nexport { isValidMotionProp };\n","import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';\n\nlet shouldForward = (key) => !isValidMotionProp(key);\nfunction loadExternalIsValidProp(isValidProp) {\n if (!isValidProp)\n return;\n // Explicitly filter our events\n shouldForward = (key) => key.startsWith(\"on\") ? !isValidMotionProp(key) : isValidProp(key);\n}\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n /**\n * We attempt to import this package but require won't be defined in esm environments, in that case\n * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed\n * in favour of explicit injection.\n */\n loadExternalIsValidProp(require(\"@emotion/is-prop-valid\").default);\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props, isDom, forwardMotionProps) {\n const filteredProps = {};\n for (const key in props) {\n /**\n * values is considered a valid prop by Emotion, so if it's present\n * this will be rendered out to the DOM unless explicitly filtered.\n *\n * We check the type as it could be used with the `feColorMatrix`\n * element, which we support.\n */\n if (key === \"values\" && typeof props.values === \"object\")\n continue;\n if (shouldForward(key) ||\n (forwardMotionProps === true && isValidMotionProp(key)) ||\n (!isDom && !isValidMotionProp(key)) ||\n // If trying to use native HTML drag events, forward drag listeners\n (props[\"draggable\"] &&\n key.startsWith(\"onDrag\"))) {\n filteredProps[key] =\n props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","import { useMemo } from 'react';\nimport { copyRawValuesOnly } from '../html/use-props.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\n\nfunction useSVGProps(props, visualState, _isStatic, Component) {\n const visualProps = useMemo(() => {\n const state = createSvgRenderState();\n buildSVGAttrs(state, visualState, { enableHardwareAcceleration: false }, isSVGTag(Component), 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\nexport { useSVGProps };\n","import { Fragment, useMemo, createElement } from 'react';\nimport { useHTMLProps } from '../html/use-props.mjs';\nimport { filterProps } from './utils/filter-props.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\nimport { useSVGProps } from '../svg/use-props.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction createUseRender(forwardMotionProps = false) {\n const useRender = (Component, props, ref, { latestValues }, isStatic) => {\n const useVisualProps = isSVGComponent(Component)\n ? useSVGProps\n : useHTMLProps;\n const visualProps = useVisualProps(props, latestValues, isStatic, Component);\n const filteredProps = filterProps(props, typeof Component === \"string\", forwardMotionProps);\n const elementProps = Component !== Fragment\n ? { ...filteredProps, ...visualProps, ref }\n : {};\n /**\n * If component has been handed a motion value as its child,\n * memoise its initial value and render that. Subsequent updates\n * will be handled by the onChange handler\n */\n const { children } = props;\n const renderedChildren = useMemo(() => (isMotionValue(children) ? children.get() : children), [children]);\n return createElement(Component, {\n ...elementProps,\n children: renderedChildren,\n });\n };\n return useRender;\n}\n\nexport { createUseRender };\n","import { isCustomValue } from '../../utils/resolve-value.mjs';\nimport { isMotionValue } from './is-motion-value.mjs';\n\n/**\n * If the provided value is a MotionValue, this returns the actual value, otherwise just the value itself\n *\n * TODO: Remove and move to library\n */\nfunction resolveMotionValue(value) {\n const unwrappedValue = isMotionValue(value) ? value.get() : value;\n return isCustomValue(unwrappedValue)\n ? unwrappedValue.toValue()\n : unwrappedValue;\n}\n\nexport { resolveMotionValue };\n","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(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 } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !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 /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 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\nexport { makeUseVisualState };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n frame.read(() => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n });\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n });\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\n\n/**\n * @public\n */\nconst m = createMotionProxy(createDomMotionConfig);\n\nexport { m };\n","import { createMotionComponent } from '../../motion/index.mjs';\n\n/**\n * Convert any React component into a `motion` component. The provided component\n * **must** use `React.forwardRef` to the underlying DOM component you want to animate.\n *\n * ```jsx\n * const Component = React.forwardRef((props, ref) => {\n * return
\n * })\n *\n * const MotionComponent = motion(Component)\n * ```\n *\n * @public\n */\nfunction createMotionProxy(createConfig) {\n function custom(Component, customMotionComponentConfig = {}) {\n return createMotionComponent(createConfig(Component, customMotionComponentConfig));\n }\n if (typeof Proxy === \"undefined\") {\n return custom;\n }\n /**\n * A cache of generated `motion` components, e.g `motion.div`, `motion.input` etc.\n * Rather than generating them anew every render.\n */\n const componentCache = 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 /**\n * If this element doesn't exist in the component cache, create it and cache.\n */\n if (!componentCache.has(key)) {\n componentCache.set(key, custom(key));\n }\n return componentCache.get(key);\n },\n });\n}\n\nexport { createMotionProxy };\n","import { isSVGComponent } from './is-svg-component.mjs';\nimport { createUseRender } from '../use-render.mjs';\nimport { svgMotionConfig } from '../../svg/config-motion.mjs';\nimport { htmlMotionConfig } from '../../html/config-motion.mjs';\n\nfunction createDomMotionConfig(Component, { forwardMotionProps = false }, preloadedFeatures, createVisualElement) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","\"use client\";\n\n// src/ripple.tsx\nimport { AnimatePresence, m, LazyMotion, domAnimation } from \"framer-motion\";\nimport { clamp } from \"@nextui-org/shared-utils\";\nimport { Fragment, jsx } from \"react/jsx-runtime\";\nvar Ripple = (props) => {\n const { ripples = [], motionProps, color = \"currentColor\", style, onClear } = props;\n return /* @__PURE__ */ jsx(Fragment, { children: ripples.map((ripple) => {\n const duration = clamp(0.01 * ripple.size, 0.2, ripple.size > 100 ? 0.75 : 0.5);\n return /* @__PURE__ */ jsx(LazyMotion, { features: domAnimation, children: /* @__PURE__ */ jsx(AnimatePresence, { mode: \"popLayout\", children: /* @__PURE__ */ jsx(\n m.span,\n {\n animate: { transform: \"scale(2)\", opacity: 0 },\n className: \"nextui-ripple\",\n exit: { opacity: 0 },\n initial: { transform: \"scale(0)\", opacity: 0.35 },\n style: {\n position: \"absolute\",\n backgroundColor: color,\n borderRadius: \"100%\",\n transformOrigin: \"center\",\n pointerEvents: \"none\",\n overflow: \"hidden\",\n inset: 0,\n zIndex: 0,\n top: ripple.y,\n left: ripple.x,\n width: `${ripple.size}px`,\n height: `${ripple.size}px`,\n ...style\n },\n transition: { duration },\n onAnimationComplete: () => {\n onClear(ripple.key);\n },\n ...motionProps\n }\n ) }) }, ripple.key);\n }) });\n};\nRipple.displayName = \"NextUI.Ripple\";\nvar ripple_default = Ripple;\n\nexport {\n ripple_default\n};\n","// src/numbers.ts\nfunction range(start, end) {\n const length = end - start + 1;\n return Array.from({ length }, (_, index) => index + start);\n}\nfunction clamp(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\nfunction clampPercentage(value, max = 100) {\n return Math.min(Math.max(value, 0), max);\n}\n\nexport {\n range,\n clamp,\n clampPercentage\n};\n","\"use client\";\nimport {\n useButton\n} from \"./chunk-P5GIOWF5.mjs\";\n\n// src/button.tsx\nimport { Spinner } from \"@nextui-org/spinner\";\nimport { Ripple } from \"@nextui-org/ripple\";\nimport { forwardRef } from \"@nextui-org/system\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar Button = forwardRef((props, ref) => {\n const {\n Component,\n domRef,\n children,\n styles,\n spinnerSize,\n spinner = /* @__PURE__ */ jsx(Spinner, { color: \"current\", size: spinnerSize }),\n spinnerPlacement,\n startContent,\n endContent,\n isLoading,\n disableRipple,\n getButtonProps,\n getRippleProps,\n isIconOnly\n } = useButton({ ...props, ref });\n return /* @__PURE__ */ jsxs(Component, { ref: domRef, className: styles, ...getButtonProps(), children: [\n startContent,\n isLoading && spinnerPlacement === \"start\" && spinner,\n isLoading && isIconOnly ? null : children,\n isLoading && spinnerPlacement === \"end\" && spinner,\n endContent,\n !disableRipple && /* @__PURE__ */ jsx(Ripple, { ...getRippleProps() })\n ] });\n});\nButton.displayName = \"NextUI.Button\";\nvar button_default = Button;\n\nexport {\n button_default\n};\n","import {\n tv\n} from \"./chunk-N2KXC5ZE.mjs\";\n\n// src/components/image.ts\nvar image = tv({\n slots: {\n wrapper: \"relative shadow-black/5\",\n zoomedWrapper: \"relative overflow-hidden rounded-inherit\",\n img: \"relative z-10 opacity-0 shadow-black/5 data-[loaded=true]:opacity-100\",\n blurredImg: [\n \"absolute\",\n \"z-0\",\n \"inset-0\",\n \"w-full\",\n \"h-full\",\n \"object-cover\",\n \"filter\",\n \"blur-lg\",\n \"scale-105\",\n \"saturate-150\",\n \"opacity-30\",\n \"translate-y-1\"\n ]\n },\n variants: {\n radius: {\n none: {},\n sm: {},\n md: {},\n lg: {},\n full: {}\n },\n shadow: {\n none: {\n wrapper: \"shadow-none\",\n img: \"shadow-none\"\n },\n sm: {\n wrapper: \"shadow-small\",\n img: \"shadow-small\"\n },\n md: {\n wrapper: \"shadow-medium\",\n img: \"shadow-medium\"\n },\n lg: {\n wrapper: \"shadow-large\",\n img: \"shadow-large\"\n }\n },\n isZoomed: {\n true: {\n img: [\"object-cover\", \"transform\", \"hover:scale-125\"]\n }\n },\n showSkeleton: {\n true: {\n wrapper: [\"group\", \"relative\", \"overflow-hidden\", \"bg-content3 dark:bg-content2\"],\n img: \"opacity-0\"\n }\n },\n disableAnimation: {\n true: {\n img: \"transition-none\"\n },\n false: {\n img: \"transition-transform-opacity motion-reduce:transition-none !duration-300\"\n }\n }\n },\n defaultVariants: {\n radius: \"lg\",\n shadow: \"none\",\n isZoomed: false,\n isBlurred: false,\n showSkeleton: false\n },\n compoundVariants: [\n {\n showSkeleton: true,\n disableAnimation: false,\n class: {\n wrapper: [\n \"before:opacity-100\",\n \"before:absolute\",\n \"before:inset-0\",\n \"before:-translate-x-full\",\n \"before:animate-[shimmer_2s_infinite]\",\n \"before:border-t\",\n \"before:border-content4/30\",\n \"before:bg-gradient-to-r\",\n \"before:from-transparent\",\n \"before:via-content4\",\n \"dark:before:via-default-700/10\",\n \"before:to-transparent\",\n \"after:opacity-100\",\n \"after:absolute\",\n \"after:inset-0\",\n \"after:-z-10\",\n \"after:bg-content3\",\n \"dark:after:bg-content2\"\n ]\n }\n }\n ],\n compoundSlots: [\n {\n slots: [\"wrapper\", \"img\", \"blurredImg\", \"zoomedWrapper\"],\n radius: \"none\",\n class: \"rounded-none\"\n },\n {\n slots: [\"wrapper\", \"img\", \"blurredImg\", \"zoomedWrapper\"],\n radius: \"full\",\n class: \"rounded-full\"\n },\n {\n slots: [\"wrapper\", \"img\", \"blurredImg\", \"zoomedWrapper\"],\n radius: \"sm\",\n class: \"rounded-small\"\n },\n {\n slots: [\"wrapper\", \"img\", \"blurredImg\", \"zoomedWrapper\"],\n radius: \"md\",\n class: \"rounded-md\"\n },\n {\n slots: [\"wrapper\", \"img\", \"blurredImg\", \"zoomedWrapper\"],\n radius: \"lg\",\n class: \"rounded-large\"\n }\n ]\n});\n\nexport {\n image\n};\n","// src/index.ts\nimport { useEffect, useLayoutEffect } from \"react\";\nvar useSafeLayoutEffect = Boolean(globalThis == null ? void 0 : globalThis.document) ? useLayoutEffect : useEffect;\nexport {\n useSafeLayoutEffect\n};\n","\"use client\";\n\n// src/use-image.ts\nimport { useCallback } from \"react\";\nimport {\n mapPropsVariants,\n useProviderContext\n} from \"@nextui-org/system\";\nimport { image } from \"@nextui-org/theme\";\nimport { useDOMRef } from \"@nextui-org/react-utils\";\nimport { clsx, dataAttr, objectToDeps } from \"@nextui-org/shared-utils\";\nimport { useImage as useImageBase } from \"@nextui-org/use-image\";\nimport { useMemo } from \"react\";\nfunction useImage(originalProps) {\n var _a, _b;\n const globalContext = useProviderContext();\n const [props, variantProps] = mapPropsVariants(originalProps, image.variantKeys);\n const {\n ref,\n as,\n src,\n className,\n classNames,\n loading,\n isBlurred,\n fallbackSrc,\n isLoading: isLoadingProp,\n disableSkeleton = !!fallbackSrc,\n removeWrapper = false,\n onError,\n onLoad,\n srcSet,\n sizes,\n crossOrigin,\n ...otherProps\n } = props;\n const imageStatus = useImageBase({\n src,\n loading,\n onError,\n onLoad,\n ignoreFallback: false,\n srcSet,\n sizes,\n crossOrigin\n });\n const disableAnimation = (_b = (_a = originalProps.disableAnimation) != null ? _a : globalContext == null ? void 0 : globalContext.disableAnimation) != null ? _b : false;\n const isImgLoaded = imageStatus === \"loaded\" && !isLoadingProp;\n const isLoading = imageStatus === \"loading\" || isLoadingProp;\n const isZoomed = originalProps.isZoomed;\n const Component = as || \"img\";\n const domRef = useDOMRef(ref);\n const { w, h } = useMemo(() => {\n return {\n w: props.width ? typeof props.width === \"number\" ? `${props.width}px` : props.width : \"fit-content\",\n h: props.height ? typeof props.height === \"number\" ? `${props.height}px` : props.height : \"auto\"\n };\n }, [props == null ? void 0 : props.width, props == null ? void 0 : props.height]);\n const showFallback = (!src || !isImgLoaded) && !!fallbackSrc;\n const showSkeleton = isLoading && !disableSkeleton;\n const slots = useMemo(\n () => image({\n ...variantProps,\n disableAnimation,\n showSkeleton\n }),\n [objectToDeps(variantProps), disableAnimation, showSkeleton]\n );\n const baseStyles = clsx(className, classNames == null ? void 0 : classNames.img);\n const getImgProps = (props2 = {}) => {\n const imgStyles = clsx(baseStyles, props2 == null ? void 0 : props2.className);\n return {\n src,\n ref: domRef,\n \"data-loaded\": dataAttr(isImgLoaded),\n className: slots.img({ class: imgStyles }),\n loading,\n srcSet,\n sizes,\n crossOrigin,\n ...otherProps,\n style: {\n ...(otherProps == null ? void 0 : otherProps.height) && { height: h },\n ...props2.style,\n ...otherProps.style\n }\n };\n };\n const getWrapperProps = useCallback(() => {\n const fallbackStyle = showFallback ? {\n backgroundImage: `url(${fallbackSrc})`\n } : {};\n return {\n className: slots.wrapper({ class: classNames == null ? void 0 : classNames.wrapper }),\n style: {\n ...fallbackStyle,\n maxWidth: w\n }\n };\n }, [slots, showFallback, fallbackSrc, classNames == null ? void 0 : classNames.wrapper]);\n const getBlurredImgProps = useCallback(() => {\n return {\n src,\n \"aria-hidden\": dataAttr(true),\n className: slots.blurredImg({ class: classNames == null ? void 0 : classNames.blurredImg })\n };\n }, [slots, src, classNames == null ? void 0 : classNames.blurredImg]);\n return {\n Component,\n domRef,\n slots,\n classNames,\n isBlurred,\n disableSkeleton,\n fallbackSrc,\n removeWrapper,\n isZoomed,\n isLoading,\n getImgProps,\n getWrapperProps,\n getBlurredImgProps\n };\n}\n\nexport {\n useImage\n};\n","// src/index.ts\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useSafeLayoutEffect } from \"@nextui-org/use-safe-layout-effect\";\nfunction useImage(props = {}) {\n const { loading, src, srcSet, onLoad, onError, crossOrigin, sizes, ignoreFallback } = props;\n const [status, setStatus] = useState(\"pending\");\n useEffect(() => {\n setStatus(src ? \"loading\" : \"pending\");\n }, [src]);\n const imageRef = useRef();\n const load = useCallback(() => {\n if (!src)\n return;\n flush();\n const img = new Image();\n img.src = src;\n if (crossOrigin)\n img.crossOrigin = crossOrigin;\n if (srcSet)\n img.srcset = srcSet;\n if (sizes)\n img.sizes = sizes;\n if (loading)\n img.loading = loading;\n img.onload = (event) => {\n flush();\n setStatus(\"loaded\");\n onLoad == null ? void 0 : onLoad(event);\n };\n img.onerror = (error) => {\n flush();\n setStatus(\"failed\");\n onError == null ? void 0 : onError(error);\n };\n imageRef.current = img;\n }, [src, crossOrigin, srcSet, sizes, onLoad, onError, loading]);\n const flush = () => {\n if (imageRef.current) {\n imageRef.current.onload = null;\n imageRef.current.onerror = null;\n imageRef.current = null;\n }\n };\n useSafeLayoutEffect(() => {\n if (ignoreFallback)\n return void 0;\n if (status === \"loading\") {\n load();\n }\n return () => {\n flush();\n };\n }, [status, load, ignoreFallback]);\n return ignoreFallback ? \"loaded\" : status;\n}\nvar shouldShowFallbackImage = (status, fallbackStrategy) => status !== \"loaded\" && fallbackStrategy === \"beforeLoadOrError\" || status === \"failed\" && fallbackStrategy === \"onError\";\nexport {\n shouldShowFallbackImage,\n useImage\n};\n","\"use client\";\nimport {\n useImage\n} from \"./chunk-AJLGONGP.mjs\";\n\n// src/image.tsx\nimport { cloneElement } from \"react\";\nimport { forwardRef } from \"@nextui-org/system\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar Image = forwardRef((props, ref) => {\n const {\n Component,\n domRef,\n slots,\n classNames,\n isBlurred,\n isZoomed,\n fallbackSrc,\n removeWrapper,\n disableSkeleton,\n getImgProps,\n getWrapperProps,\n getBlurredImgProps\n } = useImage({\n ...props,\n ref\n });\n const img = /* @__PURE__ */ jsx(Component, { ref: domRef, ...getImgProps() });\n if (removeWrapper) {\n return img;\n }\n const zoomed = /* @__PURE__ */ jsx(\"div\", { className: slots.zoomedWrapper({ class: classNames == null ? void 0 : classNames.zoomedWrapper }), children: img });\n if (isBlurred) {\n return /* @__PURE__ */ jsxs(\"div\", { ...getWrapperProps(), children: [\n isZoomed ? zoomed : img,\n cloneElement(img, getBlurredImgProps())\n ] });\n }\n if (isZoomed || !disableSkeleton || fallbackSrc) {\n return /* @__PURE__ */ jsxs(\"div\", { ...getWrapperProps(), children: [\n \" \",\n isZoomed ? zoomed : img\n ] });\n }\n return img;\n});\nImage.displayName = \"NextUI.Image\";\nvar image_default = Image;\n\nexport {\n image_default\n};\n","import {\n tv\n} from \"./chunk-N2KXC5ZE.mjs\";\n\n// src/components/skeleton.ts\nvar skeleton = tv({\n slots: {\n base: [\n \"group\",\n \"relative\",\n \"overflow-hidden\",\n \"bg-content3 dark:bg-content2\",\n \"pointer-events-none\",\n \"before:opacity-100\",\n \"before:absolute\",\n \"before:inset-0\",\n \"before:-translate-x-full\",\n \"before:animate-[shimmer_2s_infinite]\",\n \"before:border-t\",\n \"before:border-content4/30\",\n \"before:bg-gradient-to-r\",\n \"before:from-transparent\",\n \"before:via-content4\",\n \"dark:before:via-default-700/10\",\n \"before:to-transparent\",\n \"after:opacity-100\",\n \"after:absolute\",\n \"after:inset-0\",\n \"after:-z-10\",\n \"after:bg-content3\",\n \"dark:after:bg-content2\",\n \"data-[loaded=true]:pointer-events-auto\",\n \"data-[loaded=true]:overflow-visible\",\n \"data-[loaded=true]:!bg-transparent\",\n \"data-[loaded=true]:before:opacity-0 data-[loaded=true]:before:-z-10 data-[loaded=true]:before:animate-none\",\n \"data-[loaded=true]:after:opacity-0\"\n ],\n content: [\"opacity-0\", \"group-data-[loaded=true]:opacity-100\"]\n },\n variants: {\n disableAnimation: {\n true: {\n base: \"before:animate-none before:transition-none after:transition-none\",\n content: \"transition-none\"\n },\n false: {\n base: \"transition-background !duration-300\",\n content: \"transition-opacity motion-reduce:transition-none !duration-300\"\n }\n }\n },\n defaultVariants: {}\n});\n\nexport {\n skeleton\n};\n","\"use client\";\nimport {\n useSkeleton\n} from \"./chunk-YENB4D5W.mjs\";\n\n// src/skeleton.tsx\nimport { forwardRef } from \"@nextui-org/system\";\nimport { jsx } from \"react/jsx-runtime\";\nvar Skeleton = forwardRef((props, ref) => {\n const { Component, children, getSkeletonProps, getContentProps } = useSkeleton({ ...props });\n return /* @__PURE__ */ jsx(Component, { ref, ...getSkeletonProps(), children: /* @__PURE__ */ jsx(\"div\", { ...getContentProps(), children }) });\n});\nSkeleton.displayName = \"NextUI.Skeleton\";\nvar skeleton_default = Skeleton;\n\nexport {\n skeleton_default\n};\n","\"use client\";\n\n// src/use-skeleton.ts\nimport { mapPropsVariants } from \"@nextui-org/system\";\nimport { skeleton } from \"@nextui-org/theme\";\nimport { clsx, dataAttr, objectToDeps } from \"@nextui-org/shared-utils\";\nimport { useMemo } from \"react\";\nimport { useProviderContext } from \"@nextui-org/system\";\nfunction useSkeleton(originalProps) {\n var _a, _b;\n const globalContext = useProviderContext();\n const [props, variantProps] = mapPropsVariants(originalProps, skeleton.variantKeys);\n const { as, children, isLoaded = false, className, classNames, ...otherProps } = props;\n const Component = as || \"div\";\n const disableAnimation = (_b = (_a = originalProps.disableAnimation) != null ? _a : globalContext == null ? void 0 : globalContext.disableAnimation) != null ? _b : false;\n const slots = useMemo(\n () => skeleton({\n ...variantProps,\n disableAnimation\n }),\n [objectToDeps(variantProps), disableAnimation, children]\n );\n const baseStyles = clsx(classNames == null ? void 0 : classNames.base, className);\n const getSkeletonProps = (props2 = {}) => {\n return {\n \"data-loaded\": dataAttr(isLoaded),\n className: slots.base({ class: clsx(baseStyles, props2 == null ? void 0 : props2.className) }),\n ...otherProps\n };\n };\n const getContentProps = (props2 = {}) => {\n return {\n className: slots.content({ class: clsx(classNames == null ? void 0 : classNames.content, props2 == null ? void 0 : props2.className) })\n };\n };\n return { Component, children, slots, classNames, getSkeletonProps, getContentProps };\n}\n\nexport {\n useSkeleton\n};\n","'use client';\n\nimport { createElement, forwardRef, useState, useEffect } from 'react';\n\nconst defaultIconDimensions = Object.freeze(\n {\n left: 0,\n top: 0,\n width: 16,\n height: 16\n }\n);\nconst defaultIconTransformations = Object.freeze({\n rotate: 0,\n vFlip: false,\n hFlip: false\n});\nconst defaultIconProps = Object.freeze({\n ...defaultIconDimensions,\n ...defaultIconTransformations\n});\nconst defaultExtendedIconProps = Object.freeze({\n ...defaultIconProps,\n body: \"\",\n hidden: false\n});\n\nfunction mergeIconTransformations(obj1, obj2) {\n const result = {};\n if (!obj1.hFlip !== !obj2.hFlip) {\n result.hFlip = true;\n }\n if (!obj1.vFlip !== !obj2.vFlip) {\n result.vFlip = true;\n }\n const rotate = ((obj1.rotate || 0) + (obj2.rotate || 0)) % 4;\n if (rotate) {\n result.rotate = rotate;\n }\n return result;\n}\n\nfunction mergeIconData(parent, child) {\n const result = mergeIconTransformations(parent, child);\n for (const key in defaultExtendedIconProps) {\n if (key in defaultIconTransformations) {\n if (key in parent && !(key in result)) {\n result[key] = defaultIconTransformations[key];\n }\n } else if (key in child) {\n result[key] = child[key];\n } else if (key in parent) {\n result[key] = parent[key];\n }\n }\n return result;\n}\n\nfunction getIconsTree(data, names) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n const resolved = /* @__PURE__ */ Object.create(null);\n function resolve(name) {\n if (icons[name]) {\n return resolved[name] = [];\n }\n if (!(name in resolved)) {\n resolved[name] = null;\n const parent = aliases[name] && aliases[name].parent;\n const value = parent && resolve(parent);\n if (value) {\n resolved[name] = [parent].concat(value);\n }\n }\n return resolved[name];\n }\n (names || Object.keys(icons).concat(Object.keys(aliases))).forEach(resolve);\n return resolved;\n}\n\nfunction internalGetIconData(data, name, tree) {\n const icons = data.icons;\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n let currentProps = {};\n function parse(name2) {\n currentProps = mergeIconData(\n icons[name2] || aliases[name2],\n currentProps\n );\n }\n parse(name);\n tree.forEach(parse);\n return mergeIconData(data, currentProps);\n}\n\nfunction parseIconSet(data, callback) {\n const names = [];\n if (typeof data !== \"object\" || typeof data.icons !== \"object\") {\n return names;\n }\n if (data.not_found instanceof Array) {\n data.not_found.forEach((name) => {\n callback(name, null);\n names.push(name);\n });\n }\n const tree = getIconsTree(data);\n for (const name in tree) {\n const item = tree[name];\n if (item) {\n callback(name, internalGetIconData(data, name, item));\n names.push(name);\n }\n }\n return names;\n}\n\nconst matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;\nconst stringToIcon = (value, validate, allowSimpleName, provider = \"\") => {\n const colonSeparated = value.split(\":\");\n if (value.slice(0, 1) === \"@\") {\n if (colonSeparated.length < 2 || colonSeparated.length > 3) {\n return null;\n }\n provider = colonSeparated.shift().slice(1);\n }\n if (colonSeparated.length > 3 || !colonSeparated.length) {\n return null;\n }\n if (colonSeparated.length > 1) {\n const name2 = colonSeparated.pop();\n const prefix = colonSeparated.pop();\n const result = {\n // Allow provider without '@': \"provider:prefix:name\"\n provider: colonSeparated.length > 0 ? colonSeparated[0] : provider,\n prefix,\n name: name2\n };\n return validate && !validateIconName(result) ? null : result;\n }\n const name = colonSeparated[0];\n const dashSeparated = name.split(\"-\");\n if (dashSeparated.length > 1) {\n const result = {\n provider,\n prefix: dashSeparated.shift(),\n name: dashSeparated.join(\"-\")\n };\n return validate && !validateIconName(result) ? null : result;\n }\n if (allowSimpleName && provider === \"\") {\n const result = {\n provider,\n prefix: \"\",\n name\n };\n return validate && !validateIconName(result, allowSimpleName) ? null : result;\n }\n return null;\n};\nconst validateIconName = (icon, allowSimpleName) => {\n if (!icon) {\n return false;\n }\n return !!((icon.provider === \"\" || icon.provider.match(matchIconName)) && (allowSimpleName && icon.prefix === \"\" || icon.prefix.match(matchIconName)) && icon.name.match(matchIconName));\n};\n\nconst optionalPropertyDefaults = {\n provider: \"\",\n aliases: {},\n not_found: {},\n ...defaultIconDimensions\n};\nfunction checkOptionalProps(item, defaults) {\n for (const prop in defaults) {\n if (prop in item && typeof item[prop] !== typeof defaults[prop]) {\n return false;\n }\n }\n return true;\n}\nfunction quicklyValidateIconSet(obj) {\n if (typeof obj !== \"object\" || obj === null) {\n return null;\n }\n const data = obj;\n if (typeof data.prefix !== \"string\" || !obj.icons || typeof obj.icons !== \"object\") {\n return null;\n }\n if (!checkOptionalProps(obj, optionalPropertyDefaults)) {\n return null;\n }\n const icons = data.icons;\n for (const name in icons) {\n const icon = icons[name];\n if (!name.match(matchIconName) || typeof icon.body !== \"string\" || !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )) {\n return null;\n }\n }\n const aliases = data.aliases || /* @__PURE__ */ Object.create(null);\n for (const name in aliases) {\n const icon = aliases[name];\n const parent = icon.parent;\n if (!name.match(matchIconName) || typeof parent !== \"string\" || !icons[parent] && !aliases[parent] || !checkOptionalProps(\n icon,\n defaultExtendedIconProps\n )) {\n return null;\n }\n }\n return data;\n}\n\nconst dataStorage = /* @__PURE__ */ Object.create(null);\nfunction newStorage(provider, prefix) {\n return {\n provider,\n prefix,\n icons: /* @__PURE__ */ Object.create(null),\n missing: /* @__PURE__ */ new Set()\n };\n}\nfunction getStorage(provider, prefix) {\n const providerStorage = dataStorage[provider] || (dataStorage[provider] = /* @__PURE__ */ Object.create(null));\n return providerStorage[prefix] || (providerStorage[prefix] = newStorage(provider, prefix));\n}\nfunction addIconSet(storage, data) {\n if (!quicklyValidateIconSet(data)) {\n return [];\n }\n return parseIconSet(data, (name, icon) => {\n if (icon) {\n storage.icons[name] = icon;\n } else {\n storage.missing.add(name);\n }\n });\n}\nfunction addIconToStorage(storage, name, icon) {\n try {\n if (typeof icon.body === \"string\") {\n storage.icons[name] = { ...icon };\n return true;\n }\n } catch (err) {\n }\n return false;\n}\nfunction listIcons(provider, prefix) {\n let allIcons = [];\n const providers = typeof provider === \"string\" ? [provider] : Object.keys(dataStorage);\n providers.forEach((provider2) => {\n const prefixes = typeof provider2 === \"string\" && typeof prefix === \"string\" ? [prefix] : Object.keys(dataStorage[provider2] || {});\n prefixes.forEach((prefix2) => {\n const storage = getStorage(provider2, prefix2);\n allIcons = allIcons.concat(\n Object.keys(storage.icons).map(\n (name) => (provider2 !== \"\" ? \"@\" + provider2 + \":\" : \"\") + prefix2 + \":\" + name\n )\n );\n });\n });\n return allIcons;\n}\n\nlet simpleNames = false;\nfunction allowSimpleNames(allow) {\n if (typeof allow === \"boolean\") {\n simpleNames = allow;\n }\n return simpleNames;\n}\nfunction getIconData(name) {\n const icon = typeof name === \"string\" ? stringToIcon(name, true, simpleNames) : name;\n if (icon) {\n const storage = getStorage(icon.provider, icon.prefix);\n const iconName = icon.name;\n return storage.icons[iconName] || (storage.missing.has(iconName) ? null : void 0);\n }\n}\nfunction addIcon(name, data) {\n const icon = stringToIcon(name, true, simpleNames);\n if (!icon) {\n return false;\n }\n const storage = getStorage(icon.provider, icon.prefix);\n return addIconToStorage(storage, icon.name, data);\n}\nfunction addCollection(data, provider) {\n if (typeof data !== \"object\") {\n return false;\n }\n if (typeof provider !== \"string\") {\n provider = data.provider || \"\";\n }\n if (simpleNames && !provider && !data.prefix) {\n let added = false;\n if (quicklyValidateIconSet(data)) {\n data.prefix = \"\";\n parseIconSet(data, (name, icon) => {\n if (icon && addIcon(name, icon)) {\n added = true;\n }\n });\n }\n return added;\n }\n const prefix = data.prefix;\n if (!validateIconName({\n provider,\n prefix,\n name: \"a\"\n })) {\n return false;\n }\n const storage = getStorage(provider, prefix);\n return !!addIconSet(storage, data);\n}\nfunction iconLoaded(name) {\n return !!getIconData(name);\n}\nfunction getIcon(name) {\n const result = getIconData(name);\n return result ? {\n ...defaultIconProps,\n ...result\n } : null;\n}\n\nconst defaultIconSizeCustomisations = Object.freeze({\n width: null,\n height: null\n});\nconst defaultIconCustomisations = Object.freeze({\n // Dimensions\n ...defaultIconSizeCustomisations,\n // Transformations\n ...defaultIconTransformations\n});\n\nconst unitsSplit = /(-?[0-9.]*[0-9]+[0-9.]*)/g;\nconst unitsTest = /^-?[0-9.]*[0-9]+[0-9.]*$/g;\nfunction calculateSize(size, ratio, precision) {\n if (ratio === 1) {\n return size;\n }\n precision = precision || 100;\n if (typeof size === \"number\") {\n return Math.ceil(size * ratio * precision) / precision;\n }\n if (typeof size !== \"string\") {\n return size;\n }\n const oldParts = size.split(unitsSplit);\n if (oldParts === null || !oldParts.length) {\n return size;\n }\n const newParts = [];\n let code = oldParts.shift();\n let isNumber = unitsTest.test(code);\n while (true) {\n if (isNumber) {\n const num = parseFloat(code);\n if (isNaN(num)) {\n newParts.push(code);\n } else {\n newParts.push(Math.ceil(num * ratio * precision) / precision);\n }\n } else {\n newParts.push(code);\n }\n code = oldParts.shift();\n if (code === void 0) {\n return newParts.join(\"\");\n }\n isNumber = !isNumber;\n }\n}\n\nfunction splitSVGDefs(content, tag = \"defs\") {\n let defs = \"\";\n const index = content.indexOf(\"<\" + tag);\n while (index >= 0) {\n const start = content.indexOf(\">\", index);\n const end = content.indexOf(\"\", end);\n if (endEnd === -1) {\n break;\n }\n defs += content.slice(start + 1, end).trim();\n content = content.slice(0, index).trim() + content.slice(endEnd + 1);\n }\n return {\n defs,\n content\n };\n}\nfunction mergeDefsAndContent(defs, content) {\n return defs ? \"\" + defs + \"\" + content : content;\n}\nfunction wrapSVGContent(body, start, end) {\n const split = splitSVGDefs(body);\n return mergeDefsAndContent(split.defs, start + split.content + end);\n}\n\nconst isUnsetKeyword = (value) => value === \"unset\" || value === \"undefined\" || value === \"none\";\nfunction iconToSVG(icon, customisations) {\n const fullIcon = {\n ...defaultIconProps,\n ...icon\n };\n const fullCustomisations = {\n ...defaultIconCustomisations,\n ...customisations\n };\n const box = {\n left: fullIcon.left,\n top: fullIcon.top,\n width: fullIcon.width,\n height: fullIcon.height\n };\n let body = fullIcon.body;\n [fullIcon, fullCustomisations].forEach((props) => {\n const transformations = [];\n const hFlip = props.hFlip;\n const vFlip = props.vFlip;\n let rotation = props.rotate;\n if (hFlip) {\n if (vFlip) {\n rotation += 2;\n } else {\n transformations.push(\n \"translate(\" + (box.width + box.left).toString() + \" \" + (0 - box.top).toString() + \")\"\n );\n transformations.push(\"scale(-1 1)\");\n box.top = box.left = 0;\n }\n } else if (vFlip) {\n transformations.push(\n \"translate(\" + (0 - box.left).toString() + \" \" + (box.height + box.top).toString() + \")\"\n );\n transformations.push(\"scale(1 -1)\");\n box.top = box.left = 0;\n }\n let tempValue;\n if (rotation < 0) {\n rotation -= Math.floor(rotation / 4) * 4;\n }\n rotation = rotation % 4;\n switch (rotation) {\n case 1:\n tempValue = box.height / 2 + box.top;\n transformations.unshift(\n \"rotate(90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n case 2:\n transformations.unshift(\n \"rotate(180 \" + (box.width / 2 + box.left).toString() + \" \" + (box.height / 2 + box.top).toString() + \")\"\n );\n break;\n case 3:\n tempValue = box.width / 2 + box.left;\n transformations.unshift(\n \"rotate(-90 \" + tempValue.toString() + \" \" + tempValue.toString() + \")\"\n );\n break;\n }\n if (rotation % 2 === 1) {\n if (box.left !== box.top) {\n tempValue = box.left;\n box.left = box.top;\n box.top = tempValue;\n }\n if (box.width !== box.height) {\n tempValue = box.width;\n box.width = box.height;\n box.height = tempValue;\n }\n }\n if (transformations.length) {\n body = wrapSVGContent(\n body,\n '',\n \"\"\n );\n }\n });\n const customisationsWidth = fullCustomisations.width;\n const customisationsHeight = fullCustomisations.height;\n const boxWidth = box.width;\n const boxHeight = box.height;\n let width;\n let height;\n if (customisationsWidth === null) {\n height = customisationsHeight === null ? \"1em\" : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n width = calculateSize(height, boxWidth / boxHeight);\n } else {\n width = customisationsWidth === \"auto\" ? boxWidth : customisationsWidth;\n height = customisationsHeight === null ? calculateSize(width, boxHeight / boxWidth) : customisationsHeight === \"auto\" ? boxHeight : customisationsHeight;\n }\n const attributes = {};\n const setAttr = (prop, value) => {\n if (!isUnsetKeyword(value)) {\n attributes[prop] = value.toString();\n }\n };\n setAttr(\"width\", width);\n setAttr(\"height\", height);\n const viewBox = [box.left, box.top, boxWidth, boxHeight];\n attributes.viewBox = viewBox.join(\" \");\n return {\n attributes,\n viewBox,\n body\n };\n}\n\nconst regex = /\\sid=\"(\\S+)\"/g;\nconst randomPrefix = \"IconifyId\" + Date.now().toString(16) + (Math.random() * 16777216 | 0).toString(16);\nlet counter = 0;\nfunction replaceIDs(body, prefix = randomPrefix) {\n const ids = [];\n let match;\n while (match = regex.exec(body)) {\n ids.push(match[1]);\n }\n if (!ids.length) {\n return body;\n }\n const suffix = \"suffix\" + (Math.random() * 16777216 | Date.now()).toString(16);\n ids.forEach((id) => {\n const newID = typeof prefix === \"function\" ? prefix(id) : prefix + (counter++).toString();\n const escapedID = id.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n body = body.replace(\n // Allowed characters before id: [#;\"]\n // Allowed characters after id: [)\"], .[a-z]\n new RegExp('([#;\"])(' + escapedID + ')([\")]|\\\\.[a-z])', \"g\"),\n \"$1\" + newID + suffix + \"$3\"\n );\n });\n body = body.replace(new RegExp(suffix, \"g\"), \"\");\n return body;\n}\n\nconst storage = /* @__PURE__ */ Object.create(null);\nfunction setAPIModule(provider, item) {\n storage[provider] = item;\n}\nfunction getAPIModule(provider) {\n return storage[provider] || storage[\"\"];\n}\n\nfunction createAPIConfig(source) {\n let resources;\n if (typeof source.resources === \"string\") {\n resources = [source.resources];\n } else {\n resources = source.resources;\n if (!(resources instanceof Array) || !resources.length) {\n return null;\n }\n }\n const result = {\n // API hosts\n resources,\n // Root path\n path: source.path || \"/\",\n // URL length limit\n maxURL: source.maxURL || 500,\n // Timeout before next host is used.\n rotate: source.rotate || 750,\n // Timeout before failing query.\n timeout: source.timeout || 5e3,\n // Randomise default API end point.\n random: source.random === true,\n // Start index\n index: source.index || 0,\n // Receive data after time out (used if time out kicks in first, then API module sends data anyway).\n dataAfterTimeout: source.dataAfterTimeout !== false\n };\n return result;\n}\nconst configStorage = /* @__PURE__ */ Object.create(null);\nconst fallBackAPISources = [\n \"https://api.simplesvg.com\",\n \"https://api.unisvg.com\"\n];\nconst fallBackAPI = [];\nwhile (fallBackAPISources.length > 0) {\n if (fallBackAPISources.length === 1) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n if (Math.random() > 0.5) {\n fallBackAPI.push(fallBackAPISources.shift());\n } else {\n fallBackAPI.push(fallBackAPISources.pop());\n }\n }\n}\nconfigStorage[\"\"] = createAPIConfig({\n resources: [\"https://api.iconify.design\"].concat(fallBackAPI)\n});\nfunction addAPIProvider(provider, customConfig) {\n const config = createAPIConfig(customConfig);\n if (config === null) {\n return false;\n }\n configStorage[provider] = config;\n return true;\n}\nfunction getAPIConfig(provider) {\n return configStorage[provider];\n}\nfunction listAPIProviders() {\n return Object.keys(configStorage);\n}\n\nconst detectFetch = () => {\n let callback;\n try {\n callback = fetch;\n if (typeof callback === \"function\") {\n return callback;\n }\n } catch (err) {\n }\n};\nlet fetchModule = detectFetch();\nfunction setFetch(fetch2) {\n fetchModule = fetch2;\n}\nfunction getFetch() {\n return fetchModule;\n}\nfunction calculateMaxLength(provider, prefix) {\n const config = getAPIConfig(provider);\n if (!config) {\n return 0;\n }\n let result;\n if (!config.maxURL) {\n result = 0;\n } else {\n let maxHostLength = 0;\n config.resources.forEach((item) => {\n const host = item;\n maxHostLength = Math.max(maxHostLength, host.length);\n });\n const url = prefix + \".json?icons=\";\n result = config.maxURL - maxHostLength - config.path.length - url.length;\n }\n return result;\n}\nfunction shouldAbort(status) {\n return status === 404;\n}\nconst prepare = (provider, prefix, icons) => {\n const results = [];\n const maxLength = calculateMaxLength(provider, prefix);\n const type = \"icons\";\n let item = {\n type,\n provider,\n prefix,\n icons: []\n };\n let length = 0;\n icons.forEach((name, index) => {\n length += name.length + 1;\n if (length >= maxLength && index > 0) {\n results.push(item);\n item = {\n type,\n provider,\n prefix,\n icons: []\n };\n length = name.length;\n }\n item.icons.push(name);\n });\n results.push(item);\n return results;\n};\nfunction getPath(provider) {\n if (typeof provider === \"string\") {\n const config = getAPIConfig(provider);\n if (config) {\n return config.path;\n }\n }\n return \"/\";\n}\nconst send = (host, params, callback) => {\n if (!fetchModule) {\n callback(\"abort\", 424);\n return;\n }\n let path = getPath(params.provider);\n switch (params.type) {\n case \"icons\": {\n const prefix = params.prefix;\n const icons = params.icons;\n const iconsList = icons.join(\",\");\n const urlParams = new URLSearchParams({\n icons: iconsList\n });\n path += prefix + \".json?\" + urlParams.toString();\n break;\n }\n case \"custom\": {\n const uri = params.uri;\n path += uri.slice(0, 1) === \"/\" ? uri.slice(1) : uri;\n break;\n }\n default:\n callback(\"abort\", 400);\n return;\n }\n let defaultError = 503;\n fetchModule(host + path).then((response) => {\n const status = response.status;\n if (status !== 200) {\n setTimeout(() => {\n callback(shouldAbort(status) ? \"abort\" : \"next\", status);\n });\n return;\n }\n defaultError = 501;\n return response.json();\n }).then((data) => {\n if (typeof data !== \"object\" || data === null) {\n setTimeout(() => {\n if (data === 404) {\n callback(\"abort\", data);\n } else {\n callback(\"next\", defaultError);\n }\n });\n return;\n }\n setTimeout(() => {\n callback(\"success\", data);\n });\n }).catch(() => {\n callback(\"next\", defaultError);\n });\n};\nconst fetchAPIModule = {\n prepare,\n send\n};\n\nfunction sortIcons(icons) {\n const result = {\n loaded: [],\n missing: [],\n pending: []\n };\n const storage = /* @__PURE__ */ Object.create(null);\n icons.sort((a, b) => {\n if (a.provider !== b.provider) {\n return a.provider.localeCompare(b.provider);\n }\n if (a.prefix !== b.prefix) {\n return a.prefix.localeCompare(b.prefix);\n }\n return a.name.localeCompare(b.name);\n });\n let lastIcon = {\n provider: \"\",\n prefix: \"\",\n name: \"\"\n };\n icons.forEach((icon) => {\n if (lastIcon.name === icon.name && lastIcon.prefix === icon.prefix && lastIcon.provider === icon.provider) {\n return;\n }\n lastIcon = icon;\n const provider = icon.provider;\n const prefix = icon.prefix;\n const name = icon.name;\n const providerStorage = storage[provider] || (storage[provider] = /* @__PURE__ */ Object.create(null));\n const localStorage = providerStorage[prefix] || (providerStorage[prefix] = getStorage(provider, prefix));\n let list;\n if (name in localStorage.icons) {\n list = result.loaded;\n } else if (prefix === \"\" || localStorage.missing.has(name)) {\n list = result.missing;\n } else {\n list = result.pending;\n }\n const item = {\n provider,\n prefix,\n name\n };\n list.push(item);\n });\n return result;\n}\n\nfunction removeCallback(storages, id) {\n storages.forEach((storage) => {\n const items = storage.loaderCallbacks;\n if (items) {\n storage.loaderCallbacks = items.filter((row) => row.id !== id);\n }\n });\n}\nfunction updateCallbacks(storage) {\n if (!storage.pendingCallbacksFlag) {\n storage.pendingCallbacksFlag = true;\n setTimeout(() => {\n storage.pendingCallbacksFlag = false;\n const items = storage.loaderCallbacks ? storage.loaderCallbacks.slice(0) : [];\n if (!items.length) {\n return;\n }\n let hasPending = false;\n const provider = storage.provider;\n const prefix = storage.prefix;\n items.forEach((item) => {\n const icons = item.icons;\n const oldLength = icons.pending.length;\n icons.pending = icons.pending.filter((icon) => {\n if (icon.prefix !== prefix) {\n return true;\n }\n const name = icon.name;\n if (storage.icons[name]) {\n icons.loaded.push({\n provider,\n prefix,\n name\n });\n } else if (storage.missing.has(name)) {\n icons.missing.push({\n provider,\n prefix,\n name\n });\n } else {\n hasPending = true;\n return true;\n }\n return false;\n });\n if (icons.pending.length !== oldLength) {\n if (!hasPending) {\n removeCallback([storage], item.id);\n }\n item.callback(\n icons.loaded.slice(0),\n icons.missing.slice(0),\n icons.pending.slice(0),\n item.abort\n );\n }\n });\n });\n }\n}\nlet idCounter = 0;\nfunction storeCallback(callback, icons, pendingSources) {\n const id = idCounter++;\n const abort = removeCallback.bind(null, pendingSources, id);\n if (!icons.pending.length) {\n return abort;\n }\n const item = {\n id,\n icons,\n callback,\n abort\n };\n pendingSources.forEach((storage) => {\n (storage.loaderCallbacks || (storage.loaderCallbacks = [])).push(item);\n });\n return abort;\n}\n\nfunction listToIcons(list, validate = true, simpleNames = false) {\n const result = [];\n list.forEach((item) => {\n const icon = typeof item === \"string\" ? stringToIcon(item, validate, simpleNames) : item;\n if (icon) {\n result.push(icon);\n }\n });\n return result;\n}\n\n// src/config.ts\nvar defaultConfig = {\n resources: [],\n index: 0,\n timeout: 2e3,\n rotate: 750,\n random: false,\n dataAfterTimeout: false\n};\n\n// src/query.ts\nfunction sendQuery(config, payload, query, done) {\n const resourcesCount = config.resources.length;\n const startIndex = config.random ? Math.floor(Math.random() * resourcesCount) : config.index;\n let resources;\n if (config.random) {\n let list = config.resources.slice(0);\n resources = [];\n while (list.length > 1) {\n const nextIndex = Math.floor(Math.random() * list.length);\n resources.push(list[nextIndex]);\n list = list.slice(0, nextIndex).concat(list.slice(nextIndex + 1));\n }\n resources = resources.concat(list);\n } else {\n resources = config.resources.slice(startIndex).concat(config.resources.slice(0, startIndex));\n }\n const startTime = Date.now();\n let status = \"pending\";\n let queriesSent = 0;\n let lastError;\n let timer = null;\n let queue = [];\n let doneCallbacks = [];\n if (typeof done === \"function\") {\n doneCallbacks.push(done);\n }\n function resetTimer() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n function abort() {\n if (status === \"pending\") {\n status = \"aborted\";\n }\n resetTimer();\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function subscribe(callback, overwrite) {\n if (overwrite) {\n doneCallbacks = [];\n }\n if (typeof callback === \"function\") {\n doneCallbacks.push(callback);\n }\n }\n function getQueryStatus() {\n return {\n startTime,\n payload,\n status,\n queriesSent,\n queriesPending: queue.length,\n subscribe,\n abort\n };\n }\n function failQuery() {\n status = \"failed\";\n doneCallbacks.forEach((callback) => {\n callback(void 0, lastError);\n });\n }\n function clearQueue() {\n queue.forEach((item) => {\n if (item.status === \"pending\") {\n item.status = \"aborted\";\n }\n });\n queue = [];\n }\n function moduleResponse(item, response, data) {\n const isError = response !== \"success\";\n queue = queue.filter((queued) => queued !== item);\n switch (status) {\n case \"pending\":\n break;\n case \"failed\":\n if (isError || !config.dataAfterTimeout) {\n return;\n }\n break;\n default:\n return;\n }\n if (response === \"abort\") {\n lastError = data;\n failQuery();\n return;\n }\n if (isError) {\n lastError = data;\n if (!queue.length) {\n if (!resources.length) {\n failQuery();\n } else {\n execNext();\n }\n }\n return;\n }\n resetTimer();\n clearQueue();\n if (!config.random) {\n const index = config.resources.indexOf(item.resource);\n if (index !== -1 && index !== config.index) {\n config.index = index;\n }\n }\n status = \"completed\";\n doneCallbacks.forEach((callback) => {\n callback(data);\n });\n }\n function execNext() {\n if (status !== \"pending\") {\n return;\n }\n resetTimer();\n const resource = resources.shift();\n if (resource === void 0) {\n if (queue.length) {\n timer = setTimeout(() => {\n resetTimer();\n if (status === \"pending\") {\n clearQueue();\n failQuery();\n }\n }, config.timeout);\n return;\n }\n failQuery();\n return;\n }\n const item = {\n status: \"pending\",\n resource,\n callback: (status2, data) => {\n moduleResponse(item, status2, data);\n }\n };\n queue.push(item);\n queriesSent++;\n timer = setTimeout(execNext, config.rotate);\n query(resource, payload, item.callback);\n }\n setTimeout(execNext);\n return getQueryStatus;\n}\n\n// src/index.ts\nfunction initRedundancy(cfg) {\n const config = {\n ...defaultConfig,\n ...cfg\n };\n let queries = [];\n function cleanup() {\n queries = queries.filter((item) => item().status === \"pending\");\n }\n function query(payload, queryCallback, doneCallback) {\n const query2 = sendQuery(\n config,\n payload,\n queryCallback,\n (data, error) => {\n cleanup();\n if (doneCallback) {\n doneCallback(data, error);\n }\n }\n );\n queries.push(query2);\n return query2;\n }\n function find(callback) {\n return queries.find((value) => {\n return callback(value);\n }) || null;\n }\n const instance = {\n query,\n find,\n setIndex: (index) => {\n config.index = index;\n },\n getIndex: () => config.index,\n cleanup\n };\n return instance;\n}\n\nfunction emptyCallback$1() {\n}\nconst redundancyCache = /* @__PURE__ */ Object.create(null);\nfunction getRedundancyCache(provider) {\n if (!redundancyCache[provider]) {\n const config = getAPIConfig(provider);\n if (!config) {\n return;\n }\n const redundancy = initRedundancy(config);\n const cachedReundancy = {\n config,\n redundancy\n };\n redundancyCache[provider] = cachedReundancy;\n }\n return redundancyCache[provider];\n}\nfunction sendAPIQuery(target, query, callback) {\n let redundancy;\n let send;\n if (typeof target === \"string\") {\n const api = getAPIModule(target);\n if (!api) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n send = api.send;\n const cached = getRedundancyCache(target);\n if (cached) {\n redundancy = cached.redundancy;\n }\n } else {\n const config = createAPIConfig(target);\n if (config) {\n redundancy = initRedundancy(config);\n const moduleKey = target.resources ? target.resources[0] : \"\";\n const api = getAPIModule(moduleKey);\n if (api) {\n send = api.send;\n }\n }\n }\n if (!redundancy || !send) {\n callback(void 0, 424);\n return emptyCallback$1;\n }\n return redundancy.query(query, send, callback)().abort;\n}\n\nconst browserCacheVersion = \"iconify2\";\nconst browserCachePrefix = \"iconify\";\nconst browserCacheCountKey = browserCachePrefix + \"-count\";\nconst browserCacheVersionKey = browserCachePrefix + \"-version\";\nconst browserStorageHour = 36e5;\nconst browserStorageCacheExpiration = 168;\nconst browserStorageLimit = 50;\n\nfunction getStoredItem(func, key) {\n try {\n return func.getItem(key);\n } catch (err) {\n }\n}\nfunction setStoredItem(func, key, value) {\n try {\n func.setItem(key, value);\n return true;\n } catch (err) {\n }\n}\nfunction removeStoredItem(func, key) {\n try {\n func.removeItem(key);\n } catch (err) {\n }\n}\n\nfunction setBrowserStorageItemsCount(storage, value) {\n return setStoredItem(storage, browserCacheCountKey, value.toString());\n}\nfunction getBrowserStorageItemsCount(storage) {\n return parseInt(getStoredItem(storage, browserCacheCountKey)) || 0;\n}\n\nconst browserStorageConfig = {\n local: true,\n session: true\n};\nconst browserStorageEmptyItems = {\n local: /* @__PURE__ */ new Set(),\n session: /* @__PURE__ */ new Set()\n};\nlet browserStorageStatus = false;\nfunction setBrowserStorageStatus(status) {\n browserStorageStatus = status;\n}\n\nlet _window = typeof window === \"undefined\" ? {} : window;\nfunction getBrowserStorage(key) {\n const attr = key + \"Storage\";\n try {\n if (_window && _window[attr] && typeof _window[attr].length === \"number\") {\n return _window[attr];\n }\n } catch (err) {\n }\n browserStorageConfig[key] = false;\n}\n\nfunction iterateBrowserStorage(key, callback) {\n const func = getBrowserStorage(key);\n if (!func) {\n return;\n }\n const version = getStoredItem(func, browserCacheVersionKey);\n if (version !== browserCacheVersion) {\n if (version) {\n const total2 = getBrowserStorageItemsCount(func);\n for (let i = 0; i < total2; i++) {\n removeStoredItem(func, browserCachePrefix + i.toString());\n }\n }\n setStoredItem(func, browserCacheVersionKey, browserCacheVersion);\n setBrowserStorageItemsCount(func, 0);\n return;\n }\n const minTime = Math.floor(Date.now() / browserStorageHour) - browserStorageCacheExpiration;\n const parseItem = (index) => {\n const name = browserCachePrefix + index.toString();\n const item = getStoredItem(func, name);\n if (typeof item !== \"string\") {\n return;\n }\n try {\n const data = JSON.parse(item);\n if (typeof data === \"object\" && typeof data.cached === \"number\" && data.cached > minTime && typeof data.provider === \"string\" && typeof data.data === \"object\" && typeof data.data.prefix === \"string\" && // Valid item: run callback\n callback(data, index)) {\n return true;\n }\n } catch (err) {\n }\n removeStoredItem(func, name);\n };\n let total = getBrowserStorageItemsCount(func);\n for (let i = total - 1; i >= 0; i--) {\n if (!parseItem(i)) {\n if (i === total - 1) {\n total--;\n setBrowserStorageItemsCount(func, total);\n } else {\n browserStorageEmptyItems[key].add(i);\n }\n }\n }\n}\n\nfunction initBrowserStorage() {\n if (browserStorageStatus) {\n return;\n }\n setBrowserStorageStatus(true);\n for (const key in browserStorageConfig) {\n iterateBrowserStorage(key, (item) => {\n const iconSet = item.data;\n const provider = item.provider;\n const prefix = iconSet.prefix;\n const storage = getStorage(\n provider,\n prefix\n );\n if (!addIconSet(storage, iconSet).length) {\n return false;\n }\n const lastModified = iconSet.lastModified || -1;\n storage.lastModifiedCached = storage.lastModifiedCached ? Math.min(storage.lastModifiedCached, lastModified) : lastModified;\n return true;\n });\n }\n}\n\nfunction updateLastModified(storage, lastModified) {\n const lastValue = storage.lastModifiedCached;\n if (\n // Matches or newer\n lastValue && lastValue >= lastModified\n ) {\n return lastValue === lastModified;\n }\n storage.lastModifiedCached = lastModified;\n if (lastValue) {\n for (const key in browserStorageConfig) {\n iterateBrowserStorage(key, (item) => {\n const iconSet = item.data;\n return item.provider !== storage.provider || iconSet.prefix !== storage.prefix || iconSet.lastModified === lastModified;\n });\n }\n }\n return true;\n}\nfunction storeInBrowserStorage(storage, data) {\n if (!browserStorageStatus) {\n initBrowserStorage();\n }\n function store(key) {\n let func;\n if (!browserStorageConfig[key] || !(func = getBrowserStorage(key))) {\n return;\n }\n const set = browserStorageEmptyItems[key];\n let index;\n if (set.size) {\n set.delete(index = Array.from(set).shift());\n } else {\n index = getBrowserStorageItemsCount(func);\n if (index >= browserStorageLimit || !setBrowserStorageItemsCount(func, index + 1)) {\n return;\n }\n }\n const item = {\n cached: Math.floor(Date.now() / browserStorageHour),\n provider: storage.provider,\n data\n };\n return setStoredItem(\n func,\n browserCachePrefix + index.toString(),\n JSON.stringify(item)\n );\n }\n if (data.lastModified && !updateLastModified(storage, data.lastModified)) {\n return;\n }\n if (!Object.keys(data.icons).length) {\n return;\n }\n if (data.not_found) {\n data = Object.assign({}, data);\n delete data.not_found;\n }\n if (!store(\"local\")) {\n store(\"session\");\n }\n}\n\nfunction emptyCallback() {\n}\nfunction loadedNewIcons(storage) {\n if (!storage.iconsLoaderFlag) {\n storage.iconsLoaderFlag = true;\n setTimeout(() => {\n storage.iconsLoaderFlag = false;\n updateCallbacks(storage);\n });\n }\n}\nfunction loadNewIcons(storage, icons) {\n if (!storage.iconsToLoad) {\n storage.iconsToLoad = icons;\n } else {\n storage.iconsToLoad = storage.iconsToLoad.concat(icons).sort();\n }\n if (!storage.iconsQueueFlag) {\n storage.iconsQueueFlag = true;\n setTimeout(() => {\n storage.iconsQueueFlag = false;\n const { provider, prefix } = storage;\n const icons2 = storage.iconsToLoad;\n delete storage.iconsToLoad;\n let api;\n if (!icons2 || !(api = getAPIModule(provider))) {\n return;\n }\n const params = api.prepare(provider, prefix, icons2);\n params.forEach((item) => {\n sendAPIQuery(provider, item, (data) => {\n if (typeof data !== \"object\") {\n item.icons.forEach((name) => {\n storage.missing.add(name);\n });\n } else {\n try {\n const parsed = addIconSet(\n storage,\n data\n );\n if (!parsed.length) {\n return;\n }\n const pending = storage.pendingIcons;\n if (pending) {\n parsed.forEach((name) => {\n pending.delete(name);\n });\n }\n storeInBrowserStorage(storage, data);\n } catch (err) {\n console.error(err);\n }\n }\n loadedNewIcons(storage);\n });\n });\n });\n }\n}\nconst loadIcons = (icons, callback) => {\n const cleanedIcons = listToIcons(icons, true, allowSimpleNames());\n const sortedIcons = sortIcons(cleanedIcons);\n if (!sortedIcons.pending.length) {\n let callCallback = true;\n if (callback) {\n setTimeout(() => {\n if (callCallback) {\n callback(\n sortedIcons.loaded,\n sortedIcons.missing,\n sortedIcons.pending,\n emptyCallback\n );\n }\n });\n }\n return () => {\n callCallback = false;\n };\n }\n const newIcons = /* @__PURE__ */ Object.create(null);\n const sources = [];\n let lastProvider, lastPrefix;\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix } = icon;\n if (prefix === lastPrefix && provider === lastProvider) {\n return;\n }\n lastProvider = provider;\n lastPrefix = prefix;\n sources.push(getStorage(provider, prefix));\n const providerNewIcons = newIcons[provider] || (newIcons[provider] = /* @__PURE__ */ Object.create(null));\n if (!providerNewIcons[prefix]) {\n providerNewIcons[prefix] = [];\n }\n });\n sortedIcons.pending.forEach((icon) => {\n const { provider, prefix, name } = icon;\n const storage = getStorage(provider, prefix);\n const pendingQueue = storage.pendingIcons || (storage.pendingIcons = /* @__PURE__ */ new Set());\n if (!pendingQueue.has(name)) {\n pendingQueue.add(name);\n newIcons[provider][prefix].push(name);\n }\n });\n sources.forEach((storage) => {\n const { provider, prefix } = storage;\n if (newIcons[provider][prefix].length) {\n loadNewIcons(storage, newIcons[provider][prefix]);\n }\n });\n return callback ? storeCallback(callback, sortedIcons, sources) : emptyCallback;\n};\nconst loadIcon = (icon) => {\n return new Promise((fulfill, reject) => {\n const iconObj = typeof icon === \"string\" ? stringToIcon(icon, true) : icon;\n if (!iconObj) {\n reject(icon);\n return;\n }\n loadIcons([iconObj || icon], (loaded) => {\n if (loaded.length && iconObj) {\n const data = getIconData(iconObj);\n if (data) {\n fulfill({\n ...defaultIconProps,\n ...data\n });\n return;\n }\n }\n reject(icon);\n });\n });\n};\n\nfunction toggleBrowserCache(storage, value) {\n switch (storage) {\n case \"local\":\n case \"session\":\n browserStorageConfig[storage] = value;\n break;\n case \"all\":\n for (const key in browserStorageConfig) {\n browserStorageConfig[key] = value;\n }\n break;\n }\n}\n\nfunction mergeCustomisations(defaults, item) {\n const result = {\n ...defaults\n };\n for (const key in item) {\n const value = item[key];\n const valueType = typeof value;\n if (key in defaultIconSizeCustomisations) {\n if (value === null || value && (valueType === \"string\" || valueType === \"number\")) {\n result[key] = value;\n }\n } else if (valueType === typeof result[key]) {\n result[key] = key === \"rotate\" ? value % 4 : value;\n }\n }\n return result;\n}\n\nconst separator = /[\\s,]+/;\nfunction flipFromString(custom, flip) {\n flip.split(separator).forEach((str) => {\n const value = str.trim();\n switch (value) {\n case \"horizontal\":\n custom.hFlip = true;\n break;\n case \"vertical\":\n custom.vFlip = true;\n break;\n }\n });\n}\n\nfunction rotateFromString(value, defaultValue = 0) {\n const units = value.replace(/^-?[0-9.]*/, \"\");\n function cleanup(value2) {\n while (value2 < 0) {\n value2 += 4;\n }\n return value2 % 4;\n }\n if (units === \"\") {\n const num = parseInt(value);\n return isNaN(num) ? 0 : cleanup(num);\n } else if (units !== value) {\n let split = 0;\n switch (units) {\n case \"%\":\n split = 25;\n break;\n case \"deg\":\n split = 90;\n }\n if (split) {\n let num = parseFloat(value.slice(0, value.length - units.length));\n if (isNaN(num)) {\n return 0;\n }\n num = num / split;\n return num % 1 === 0 ? cleanup(num) : 0;\n }\n }\n return defaultValue;\n}\n\nfunction iconToHTML(body, attributes) {\n let renderAttribsHTML = body.indexOf(\"xlink:\") === -1 ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"';\n for (const attr in attributes) {\n renderAttribsHTML += \" \" + attr + '=\"' + attributes[attr] + '\"';\n }\n return '\" + body + \"\";\n}\n\nfunction encodeSVGforURL(svg) {\n return svg.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(//g, \"%3E\").replace(/\\s+/g, \" \");\n}\nfunction svgToData(svg) {\n return \"data:image/svg+xml,\" + encodeSVGforURL(svg);\n}\nfunction svgToURL(svg) {\n return 'url(\"' + svgToData(svg) + '\")';\n}\n\nlet policy;\nfunction createPolicy() {\n try {\n policy = window.trustedTypes.createPolicy(\"iconify\", {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n createHTML: (s) => s\n });\n } catch (err) {\n policy = null;\n }\n}\nfunction cleanUpInnerHTML(html) {\n if (policy === void 0) {\n createPolicy();\n }\n return policy ? policy.createHTML(html) : html;\n}\n\nconst defaultExtendedIconCustomisations = {\n ...defaultIconCustomisations,\n inline: false,\n};\n\n/**\n * Default SVG attributes\n */\nconst svgDefaults = {\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'xmlnsXlink': 'http://www.w3.org/1999/xlink',\n 'aria-hidden': true,\n 'role': 'img',\n};\n/**\n * Style modes\n */\nconst commonProps = {\n display: 'inline-block',\n};\nconst monotoneProps = {\n backgroundColor: 'currentColor',\n};\nconst coloredProps = {\n backgroundColor: 'transparent',\n};\n// Dynamically add common props to variables above\nconst propsToAdd = {\n Image: 'var(--svg)',\n Repeat: 'no-repeat',\n Size: '100% 100%',\n};\nconst propsToAddTo = {\n WebkitMask: monotoneProps,\n mask: monotoneProps,\n background: coloredProps,\n};\nfor (const prefix in propsToAddTo) {\n const list = propsToAddTo[prefix];\n for (const prop in propsToAdd) {\n list[prefix + prop] = propsToAdd[prop];\n }\n}\n/**\n * Default values for customisations for inline icon\n */\nconst inlineDefaults = {\n ...defaultExtendedIconCustomisations,\n inline: true,\n};\n/**\n * Fix size: add 'px' to numbers\n */\nfunction fixSize(value) {\n return value + (value.match(/^[-0-9.]+$/) ? 'px' : '');\n}\n/**\n * Render icon\n */\nconst render = (\n// Icon must be validated before calling this function\nicon, \n// Partial properties\nprops, \n// Icon name\nname) => {\n // Get default properties\n const defaultProps = props.inline\n ? inlineDefaults\n : defaultExtendedIconCustomisations;\n // Get all customisations\n const customisations = mergeCustomisations(defaultProps, props);\n // Check mode\n const mode = props.mode || 'svg';\n // Create style\n const style = {};\n const customStyle = props.style || {};\n // Create SVG component properties\n const componentProps = {\n ...(mode === 'svg' ? svgDefaults : {}),\n };\n if (name) {\n const iconName = stringToIcon(name, false, true);\n if (iconName) {\n const classNames = ['iconify'];\n const props = [\n 'provider',\n 'prefix',\n ];\n for (const prop of props) {\n if (iconName[prop]) {\n classNames.push('iconify--' + iconName[prop]);\n }\n }\n componentProps.className = classNames.join(' ');\n }\n }\n // Get element properties\n for (let key in props) {\n const value = props[key];\n if (value === void 0) {\n continue;\n }\n switch (key) {\n // Properties to ignore\n case 'icon':\n case 'style':\n case 'children':\n case 'onLoad':\n case 'mode':\n case 'ssr':\n break;\n // Forward ref\n case '_ref':\n componentProps.ref = value;\n break;\n // Merge class names\n case 'className':\n componentProps[key] =\n (componentProps[key] ? componentProps[key] + ' ' : '') +\n value;\n break;\n // Boolean attributes\n case 'inline':\n case 'hFlip':\n case 'vFlip':\n customisations[key] =\n value === true || value === 'true' || value === 1;\n break;\n // Flip as string: 'horizontal,vertical'\n case 'flip':\n if (typeof value === 'string') {\n flipFromString(customisations, value);\n }\n break;\n // Color: copy to style\n case 'color':\n style.color = value;\n break;\n // Rotation as string\n case 'rotate':\n if (typeof value === 'string') {\n customisations[key] = rotateFromString(value);\n }\n else if (typeof value === 'number') {\n customisations[key] = value;\n }\n break;\n // Remove aria-hidden\n case 'ariaHidden':\n case 'aria-hidden':\n if (value !== true && value !== 'true') {\n delete componentProps['aria-hidden'];\n }\n break;\n // Copy missing property if it does not exist in customisations\n default:\n if (defaultProps[key] === void 0) {\n componentProps[key] = value;\n }\n }\n }\n // Generate icon\n const item = iconToSVG(icon, customisations);\n const renderAttribs = item.attributes;\n // Inline display\n if (customisations.inline) {\n style.verticalAlign = '-0.125em';\n }\n if (mode === 'svg') {\n // Add style\n componentProps.style = {\n ...style,\n ...customStyle,\n };\n // Add icon stuff\n Object.assign(componentProps, renderAttribs);\n // Counter for ids based on \"id\" property to render icons consistently on server and client\n let localCounter = 0;\n let id = props.id;\n if (typeof id === 'string') {\n // Convert '-' to '_' to avoid errors in animations\n id = id.replace(/-/g, '_');\n }\n // Add icon stuff\n componentProps.dangerouslySetInnerHTML = {\n __html: cleanUpInnerHTML(replaceIDs(item.body, id ? () => id + 'ID' + localCounter++ : 'iconifyReact')),\n };\n return createElement('svg', componentProps);\n }\n // Render with style\n const { body, width, height } = icon;\n const useMask = mode === 'mask' ||\n (mode === 'bg' ? false : body.indexOf('currentColor') !== -1);\n // Generate SVG\n const html = iconToHTML(body, {\n ...renderAttribs,\n width: width + '',\n height: height + '',\n });\n // Generate style\n componentProps.style = {\n ...style,\n '--svg': svgToURL(html),\n 'width': fixSize(renderAttribs.width),\n 'height': fixSize(renderAttribs.height),\n ...commonProps,\n ...(useMask ? monotoneProps : coloredProps),\n ...customStyle,\n };\n return createElement('span', componentProps);\n};\n\n/**\n * Enable cache\n */\nfunction enableCache(storage) {\n toggleBrowserCache(storage, true);\n}\n/**\n * Disable cache\n */\nfunction disableCache(storage) {\n toggleBrowserCache(storage, false);\n}\n/**\n * Initialise stuff\n */\n// Enable short names\nallowSimpleNames(true);\n// Set API module\nsetAPIModule('', fetchAPIModule);\n/**\n * Browser stuff\n */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // Set cache and load existing cache\n initBrowserStorage();\n const _window = window;\n // Load icons from global \"IconifyPreload\"\n if (_window.IconifyPreload !== void 0) {\n const preload = _window.IconifyPreload;\n const err = 'Invalid IconifyPreload syntax.';\n if (typeof preload === 'object' && preload !== null) {\n (preload instanceof Array ? preload : [preload]).forEach((item) => {\n try {\n if (\n // Check if item is an object and not null/array\n typeof item !== 'object' ||\n item === null ||\n item instanceof Array ||\n // Check for 'icons' and 'prefix'\n typeof item.icons !== 'object' ||\n typeof item.prefix !== 'string' ||\n // Add icon set\n !addCollection(item)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n });\n }\n }\n // Set API from global \"IconifyProviders\"\n if (_window.IconifyProviders !== void 0) {\n const providers = _window.IconifyProviders;\n if (typeof providers === 'object' && providers !== null) {\n for (let key in providers) {\n const err = 'IconifyProviders[' + key + '] is invalid.';\n try {\n const value = providers[key];\n if (typeof value !== 'object' ||\n !value ||\n value.resources === void 0) {\n continue;\n }\n if (!addAPIProvider(key, value)) {\n console.error(err);\n }\n }\n catch (e) {\n console.error(err);\n }\n }\n }\n }\n}\nfunction IconComponent(props) {\n const [mounted, setMounted] = useState(!!props.ssr);\n const [abort, setAbort] = useState({});\n // Get initial state\n function getInitialState(mounted) {\n if (mounted) {\n const name = props.icon;\n if (typeof name === 'object') {\n // Icon as object\n return {\n name: '',\n data: name,\n };\n }\n const data = getIconData(name);\n if (data) {\n return {\n name,\n data,\n };\n }\n }\n return {\n name: '',\n };\n }\n const [state, setState] = useState(getInitialState(!!props.ssr));\n // Cancel loading\n function cleanup() {\n const callback = abort.callback;\n if (callback) {\n callback();\n setAbort({});\n }\n }\n // Change state if it is different\n function changeState(newState) {\n if (JSON.stringify(state) !== JSON.stringify(newState)) {\n cleanup();\n setState(newState);\n return true;\n }\n }\n // Update state\n function updateState() {\n var _a;\n const name = props.icon;\n if (typeof name === 'object') {\n // Icon as object\n changeState({\n name: '',\n data: name,\n });\n return;\n }\n // New icon or got icon data\n const data = getIconData(name);\n if (changeState({\n name,\n data,\n })) {\n if (data === undefined) {\n // Load icon, update state when done\n const callback = loadIcons([name], updateState);\n setAbort({\n callback,\n });\n }\n else if (data) {\n // Icon data is available: trigger onLoad callback if present\n (_a = props.onLoad) === null || _a === void 0 ? void 0 : _a.call(props, name);\n }\n }\n }\n // Mounted state, cleanup for loader\n useEffect(() => {\n setMounted(true);\n return cleanup;\n }, []);\n // Icon changed or component mounted\n useEffect(() => {\n if (mounted) {\n updateState();\n }\n }, [props.icon, mounted]);\n // Render icon\n const { name, data } = state;\n if (!data) {\n return props.children\n ? props.children\n : createElement('span', {});\n }\n return render({\n ...defaultIconProps,\n ...data,\n }, props, name);\n}\n/**\n * Block icon\n *\n * @param props - Component properties\n */\nconst Icon = forwardRef((props, ref) => IconComponent({\n ...props,\n _ref: ref,\n}));\n/**\n * Inline icon (has negative verticalAlign that makes it behave like icon font)\n *\n * @param props - Component properties\n */\nconst InlineIcon = forwardRef((props, ref) => IconComponent({\n inline: true,\n ...props,\n _ref: ref,\n}));\n/**\n * Internal API\n */\nconst _api = {\n getAPIConfig,\n setAPIModule,\n sendAPIQuery,\n setFetch,\n getFetch,\n listAPIProviders,\n};\n\nexport { Icon, InlineIcon, _api, addAPIProvider, addCollection, addIcon, iconToSVG as buildIcon, calculateSize, disableCache, enableCache, getIcon, iconLoaded as iconExists, iconLoaded, listIcons, loadIcon, loadIcons, replaceIDs };\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport { cn } from \"@nextui-org/react\";\r\nimport { Button, Image, Skeleton } from \"@nextui-org/react\";\r\nimport { Icon } from \"@iconify/react\";\r\n\r\nconst PaintingListItem = React.forwardRef(\r\n (\r\n {\r\n id,\r\n title,\r\n price,\r\n artist_name,\r\n availability,\r\n isLoading,\r\n setImageLoading,\r\n description,\r\n imageSrc,\r\n imageMidSrc,\r\n canvas,\r\n medium,\r\n style,\r\n year,\r\n width,\r\n height,\r\n removeWrapper,\r\n className,\r\n isMobile,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [isLiked, setIsLiked] = useState(false);\r\n const [isExpanded, setIsExpanded] = useState(false);\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n const lastTapRef = useRef(0);\r\n const touchStartPosition = useRef({ x: 0, y: 0 });\r\n const isScrolling = useRef(false);\r\n const longPressTimeoutRef = useRef(null);\r\n\r\n let lastTouchTime = null;\r\n let touchTimeout = null;\r\n\r\n useEffect(() => {\r\n const preventContextMenu = (e) => {\r\n e.preventDefault();\r\n };\r\n\r\n // Prevent default context menu and long-press events\r\n document.addEventListener(\"contextmenu\", preventContextMenu);\r\n return () => {\r\n document.removeEventListener(\"contextmenu\", preventContextMenu);\r\n };\r\n }, []);\r\n\r\n // Function to handle double tap (mobile) and double click (desktop) for liking\r\n const handleDoubleTapOrDoubleClick = () => {\r\n console.log(\"setIsLiked\");\r\n setIsLiked((prev) => !prev);\r\n };\r\n\r\n // Function to handle movement to detect scrolling\r\n const handleTouchMove = (e) => {\r\n const currentX = e.touches[0].clientX;\r\n const currentY = e.touches[0].clientY;\r\n const deltaX = Math.abs(currentX - touchStartPosition.current.x);\r\n const deltaY = Math.abs(currentY - touchStartPosition.current.y);\r\n\r\n // If the user moved their finger more than a few pixels, we consider it scrolling\r\n if (deltaX > 10 || deltaY > 10) {\r\n isScrolling.current = true;\r\n lastTouchTime = null; // Cancel the long press if scrolling\r\n clearTimeout(touchTimeout); // Cancel the long press if scrolling\r\n }\r\n };\r\n\r\n const handleTouchStart = (e) => {\r\n isScrolling.current = false;\r\n // make sure the start position is set on touch start\r\n touchStartPosition.current = { \r\n x: e.touches[0].clientX, \r\n y: e.touches[0].clientY \r\n };\r\n\r\n // If the user is scrolling, we don't want to trigger the double tap\r\n\r\n };\r\n\r\n const handleTouchEnd = () => {\r\n if (isScrolling.current) {\r\n return;\r\n }\r\n\r\n //isScrolling.current = false;\r\n const currentTime = Date.now();\r\n\r\n if (lastTouchTime === null) {\r\n lastTouchTime = currentTime;\r\n touchTimeout = setTimeout(() => { setIsModalOpen(true); lastTouchTime = null; }, 300);\r\n } else {\r\n console.log(\"Double tap\");\r\n const delta = currentTime - lastTouchTime;\r\n console.log(\"Delta: \", delta);\r\n if (delta < 300) {\r\n clearTimeout(touchTimeout);\r\n handleDoubleTapOrDoubleClick();\r\n lastTouchTime = null;\r\n }\r\n }\r\n };\r\n \r\n\r\n // Function to handle single click (for desktop) to open modal\r\n const handleClick = () => {\r\n setIsModalOpen(true); // Open the modal on click\r\n };\r\n\r\n // Function to close the modal\r\n const handleCloseModal = () => {\r\n setIsModalOpen(false);\r\n };\r\n\r\n const handleImageLoad = () => {\r\n setImageLoading((prev) => ({ ...prev, [id]: false}));\r\n };\r\n\r\n return (\r\n \r\n setIsLiked(!isLiked)}\r\n style={{\r\n userSelect: \"none\", // Prevent text selection on button\r\n WebkitUserSelect: \"none\",\r\n }}\r\n >\r\n \r\n \r\n\r\n {/* Image - Handle click and double click to open modal or like, respectively */}\r\n e.preventDefault()} // Prevent right-click context menu\r\n style={{\r\n userSelect: \"none\", // Prevent selection on images\r\n WebkitUserSelect: \"none\",\r\n WebkitTouchCallout: \"none\", // Disable callout on long-press in iOS\r\n pointerEvents: \"auto\", // Ensure image can be interacted with\r\n }}\r\n />\r\n\r\n {/* Modal to show full painting */}\r\n {isModalOpen && (\r\n \r\n e.stopPropagation()} // Prevent close when clicking on the image container\r\n style={{\r\n userSelect: \"none\", // Prevent selection inside modal container\r\n WebkitUserSelect: \"none\",\r\n WebkitTouchCallout: \"none\",\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n\r\n \r\n {isLoading ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : (\r\n <>\r\n
\r\n

\r\n {title}\r\n

\r\n {artist_name !== \"Неизвестный Художник\" ? (\r\n

\r\n {artist_name}\r\n

\r\n ) : null}\r\n {availability === \"Доступно\" && price > 0 ? (\r\n
\r\n \r\n {new Intl.NumberFormat(\"ru-RU\", {\r\n style: \"currency\",\r\n currency: \"RUB\",\r\n minimumFractionDigits: 0,\r\n }).format(price)}\r\n \r\n
\r\n ) : null}\r\n
\r\n {description ? (\r\n
\r\n \r\n {description}\r\n

\r\n {isExpanded && (\r\n
\r\n {canvas !== \"Неизвестно\" && (\r\n

\r\n Холст: {canvas}\r\n

\r\n )}\r\n {medium !== \"Неизвестно\" && (\r\n

\r\n Материал: {medium}\r\n

\r\n )}\r\n {style && (\r\n

\r\n Стиль: {style}\r\n

\r\n )}\r\n {year > 0 && (\r\n

\r\n Год: {year}\r\n

\r\n )}\r\n {width > 0 && height > 0 && (\r\n

\r\n Размеры: {width} см x {height} см\r\n

\r\n )}\r\n
\r\n )}\r\n setIsExpanded(!isExpanded)}\r\n >\r\n {isExpanded ? \"Скрыть\" : \"Подробности\"}\r\n \r\n \r\n
\r\n ) : null}\r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n);\r\n\r\nPaintingListItem.displayName = \"PaintingListItem\";\r\n\r\nexport default PaintingListItem;\r\n","import React from \"react\";\r\n\r\nexport default function Spinner() {\r\n return (\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isHeaders(header)) {\n for (const [key, value] of header.entries()) {\n setHeader(value, key, rewrite);\n }\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover its components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.7.7\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy;\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","\"use client\";\n\nimport React, { useState, useEffect, useRef, useCallback } from \"react\";\nimport { cn, image } from \"@nextui-org/react\";\nimport PaintingListItem from \"./mobile-painting-list-item\";\nimport Spinner from \"./mobile-spinner\";\nimport axios from \"axios\";\nimport { Icon } from \"@iconify/react\";\n\nconst youtubeUrl = \"https://youtu.be/tHY3NkSewy8\";\nconst telegramUrl = \"https://t.me/+79119690469\";\nconst apiBaseUrl = \"https://art.paintx.ru/paintings\";\nconst whatsappUrl = \"https://wa.me/79119690469\";\nconst yandexMapsUrl = \"https://yandex.ru/maps/org/paintx/49452764850\";\n\nexport default function Component({ className }) {\n const [paintings, setPaintings] = useState([]);\n const [page, setPage] = useState(1);\n const [isLoading, setIsLoading] = useState(true);\n const observer = useRef();\n const [isSearchVisible, setIsSearchVisible] = useState(false);\n const [scrollDirection, setScrollDirection] = useState(\"up\"); // New state for scroll direction\n const prevScrollY = useRef(0); // To track the previous scroll position\n const [searchQuery, setSearchQuery] = useState(\"\"); // Search query state\n const [hasMore, setHasMore] = useState(true);\n const debounceTimeout = useRef(null); // Reference for debounce timer\n const debounceScroll = useRef(null); // Reference for scroll debounce timer\n const isFetching = useRef(false);\n const [imageLoading, setImageLoading] = useState({});\n\n const paintingsPerPage = 5;\n let splash = true;\n\n const handleSearchToggle = () => {\n setIsSearchVisible((prev) => !prev);\n \n if (isSearchVisible) {\n // Clear search results and reset to default unsearched results\n setSearchQuery(\"\");\n setPage(1);\n setPaintings([]);\n }\n };\n\n // Update search query and reset pagination\n const handleSearch = (query) => {\n if (!query) {\n // Reset to default unsearched results if the query is cleared\n setSearchQuery(\"\");\n setPage(1);\n setPaintings([]);\n } else {\n setSearchQuery(query);\n setPage(1);\n setPaintings([]);\n }\n };\n\n // Debounced input change handler\n const handleInputChange = (event) => {\n const query = event.target.value;\n // Clear the previous timeout\n if (debounceTimeout.current) clearTimeout(debounceTimeout.current);\n // Set a new timeout\n debounceTimeout.current = setTimeout(() => {\n handleSearch(query); // Only triggers when typing has paused for the debounce duration\n }, 1000); // 300ms delay\n };\n\n // Handle scroll direction detection\n // const handleScroll = useCallback(() => {\n // if (debounceScroll.current) clearTimeout(debounceScroll.current);\n // debounceScroll.current = setTimeout(() => {\n // const currentScrollY = window.scrollY;\n // if (currentScrollY > prevScrollY.current && currentScrollY > 50) {\n // // Scrolling down\n // setScrollDirection(\"down\");\n // } else if (currentScrollY < prevScrollY.current) {\n // // Scrolling up\n // setScrollDirection(\"up\");\n // }\n // prevScrollY.current = currentScrollY;\n // }, 200); // Debounce delay\n //}, []);\n\n // Handle scroll direction detection without debounce\n const handleScroll = useCallback(() => {\n const currentScrollY = window.scrollY;\n if (currentScrollY > prevScrollY.current && currentScrollY > 50) {\n // Scrolling down\n setScrollDirection(\"down\");\n } else if (currentScrollY < prevScrollY.current) {\n // Scrolling up\n setScrollDirection(\"up\");\n }\n prevScrollY.current = currentScrollY;\n }, []);\n\n useEffect(() => {\n // Attach the scroll listener\n window.addEventListener(\"scroll\", handleScroll);\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }, [handleScroll]);\n\n useEffect(() => {\n if (!hasMore || isFetching.current) return; // Prevent overlapping requests and unnecessary fetches\n\n // function to fetch paintings from the API\n const fetchPaintings = async (retryCount = 3) => {\n if (page === 1 && paintings.length > 0) {\n return; // Avoid re-fetching the same data if it already exists\n }\n\n let timeout;\n try {\n isFetching.current = true;\n setIsLoading(true);\n\n const source = axios.CancelToken.source();\n timeout = setTimeout(() => {\n source.cancel(\"Timeout\");\n }, 10000);\n\n const response = await axios.get(\n `${apiBaseUrl}?page=${page}&limit=${paintingsPerPage}${searchQuery ? `&search=${searchQuery}` : \"\"}`,\n { cancelToken: source.token }\n );\n\n clearTimeout(timeout);\n console.log(\"Fetched data: \", response.data);\n \n const initialLoadingState = response.data;\n response.data?.forEach((painting) => {\n initialLoadingState[painting.id] = true;\n });\n\n setImageLoading(prev => ({ ...prev, ...initialLoadingState }));\n\n setPaintings((prevPaintings) => {\n const newPaintings = response.data.filter(\n (newPainting) =>\n !prevPaintings.some((prevPainting) => prevPainting.id === newPainting.id)\n );\n console.log(\"Filtered New Paintings: \", newPaintings); // Log filtered data\n return [...prevPaintings, ...newPaintings];\n });\n\n // Only set hasMore to false if fewer than paintingsPerPage items are returned\n if (response.data.length < paintingsPerPage) {\n setHasMore(false);\n console.log(\"No more paintings to fetch\");\n }\n\n } catch (error) {\n clearTimeout(timeout);\n if (axios.isCancel(error)) {\n console.log(\"Request canceled:\", error.message);\n } else if (retryCount > 0) {\n console.log(\"Timeout, retrying... attempts left:\", retryCount);\n fetchPaintings(retryCount - 1);\n } else {\n console.error(\"Error fetching paintings:\", error);\n setIsLoading(false);\n }\n } finally {\n isFetching.current = false;\n setIsLoading(false);\n }\n };\n\n fetchPaintings();\n\n }, [page, searchQuery, hasMore]);\n\n // Callback for last element to be observed for infinite scroll\n const lastPaintingRef = useCallback(\n (node) => {\n if (isLoading) return;\n if (observer.current) observer.current.disconnect();\n observer.current = new IntersectionObserver((entries) => {\n if (entries[0].isIntersecting) {\n setPage((prevPage) => prevPage + 1);\n }\n });\n if (node) observer.current.observe(node);\n },\n [isLoading]\n );\n\n const getTelegramMessage = () => {\n const isSingleColumn = window.matchMedia(\"(max-width: 640px)\").matches;\n let message = \"Здравствуйте!\";\n\n if (!isSingleColumn) {\n console.log(\"Not in single column mode\");\n return encodeURIComponent(message);\n }\n\n console.log(\"In single column mode:\", isSingleColumn);\n\n const paintingElements = document.querySelectorAll(\"[data-id]\");\n let mostVisibleElement = null;\n let maxVisibleArea = 0;\n\n paintingElements.forEach((element) => {\n const rect = element.getBoundingClientRect();\n if (rect.bottom > 0 && rect.top < window.innerHeight) {\n const visibleHeight = Math.min(rect.bottom, window.innerHeight) - Math.max(rect.top, 0);\n const visibleWidth = Math.min(rect.right, window.innerWidth) - Math.max(rect.left, 0);\n const visibleArea = Math.max(0, visibleHeight) * Math.max(0, visibleWidth);\n\n if (visibleArea > maxVisibleArea) {\n maxVisibleArea = visibleArea;\n mostVisibleElement = element;\n }\n }\n });\n\n if (mostVisibleElement) {\n const imageSrc = mostVisibleElement.getAttribute(\"data-src\");\n console.log(\"Most visible painting imageSrc: \", imageSrc);\n message = `Здравствуйте! Могли бы вы, пожалуйста, рассказать больше об этой картине? \\n\\n ${imageSrc}`;\n }\n\n return encodeURIComponent(message);\n };\n\n \n return (\n
\n \n {paintings.map((painting, index) => {\n // const isLastItem = index === paintings.length - 1;\n if (paintings.length - index === 2) {\n return (\n \n );\n } else {\n return ;\n }\n })}\n
\n\n {/* Render Spinner when loading more items */}\n {isLoading && paintings.length > 0 && }\n\n\n {/* Search Icon Button */}\n \n {!isSearchVisible && (\n \n \n \n )}\n \n\n {/* Search Box - Visible when isSearchVisible is true */}\n {isSearchVisible && (\n
\n
\n \n \n
\n
\n )}\n\n {/* Contact Buttons */}\n \n {\n window.open(`${telegramUrl}?text=${getTelegramMessage()}`, \"_blank\");\n }}\n className=\"bg-blue-500 text-white p-1.5 rounded-full shadow-md flex items-center justify-center transition-transform transform hover:scale-110 hover:bg-blue-400\"\n >\n \n \n window.open(`${youtubeUrl}`, \"_blank\")}\n className=\"bg-red-500 text-white p-1.5 rounded-full shadow-md flex items-center justify-center transition-transform transform hover:scale-110 hover:bg-red-400\"\n >\n \n \n {\n window.open(`${whatsappUrl}?text=${getTelegramMessage()}`, \"_blank\");\n }}\n className=\"bg-green-500 text-white p-1.5 rounded-full shadow-md flex items-center justify-center transition-transform transform hover:scale-110 hover:bg-green-400\"\n >\n \n \n\n window.open(`${yandexMapsUrl}`, \"_blank\")}\n className=\"bg-yellow-500 text-white p-1.5 rounded-full shadow-md flex items-center justify-center transition-transform transform hover:scale-110 hover:bg-yellow-400\"\n >\n \n \n \n \n );\n}\n","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an
attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => DataFunctionReturnValue\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n fetcherKey: string | null;\n}\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface DataStrategyResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise>;\n}\n\nexport type AgnosticPatchRoutesOnNavigationFunctionArgs<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: O[]) => void;\n};\n\nexport type AgnosticPatchRoutesOnNavigationFunction<\n O extends AgnosticRouteObject = AgnosticRouteObject,\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> = (\n opts: AgnosticPatchRoutesOnNavigationFunctionArgs\n) => void | Promise;\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n DataStrategyResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n dataStrategy?: DataStrategyFunction;\n patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n viewTransitionOpts?: ViewTransitionOpts;\n flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches\n .slice(0, idx + 1)\n .every((m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors));\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let unblockBlockerHistoryUpdate: (() => void) | undefined = undefined;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = undefined;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked, after the url\n // restoration is also complete. See:\n // https://github.com/remix-run/react-router/issues/11613\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true,\n }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial hydration will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error: discoverResult.error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n state,\n request,\n [actionMatch],\n matches,\n null\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let boundaryId = findNearestBoundary(discoverResult.partialMatches)\n .route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n await startRedirectNavigation(request, redirect.result, true, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // Preserve SSR errors during partial hydration\n if (future.v7_partialHydration && initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n abortFetcher(key);\n\n let flushSync = (opts && opts.flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n state,\n fetchRequest,\n [match],\n requestMatches,\n key\n );\n let actionResult = actionResults[match.route.id];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(loaderResults);\n if (redirect) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n redirect = findRedirect(fetcherResults);\n if (redirect) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n fetchRedirectIds.add(redirect.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect.result,\n false,\n { preventScrollReset }\n );\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n preventScrollReset: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n state,\n fetchRequest,\n [match],\n matches,\n key\n );\n let result = results[match.route.id];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset,\n });\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n isNavigation: boolean,\n {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n preventScrollReset?: boolean;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation\n ? pendingViewTransitionEnabled\n : undefined,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n state: RouterState,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null\n ): Promise> {\n let results: Record;\n let dataResults: Record = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n state,\n request,\n matchesToLoad,\n matches,\n fetcherKey,\n manifest,\n mapRouteProperties\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n matchesToLoad.forEach((m) => {\n dataResults[m.route.id] = {\n type: ResultType.error,\n error: e,\n };\n });\n return dataResults;\n }\n\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n dataResults[routeId] = {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(\n result\n );\n }\n }\n\n return dataResults;\n }\n\n async function callLoadersAndMaybeResolveData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let currentMatches = state.matches;\n\n // Kick off loaders and fetchers in parallel\n let loaderResultsPromise = callDataStrategy(\n \"loader\",\n state,\n request,\n matchesToLoad,\n matches,\n null\n );\n\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.controller) {\n let results = await callDataStrategy(\n \"loader\",\n state,\n createClientSideRequest(init.history, f.path, f.controller.signal),\n [f.match],\n f.matches,\n f.key\n );\n let result = results[f.match.route.id];\n // Fetcher results are keyed by fetcher key from here on out, not routeId\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n } as ErrorResult,\n });\n }\n })\n );\n\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n\n await Promise.all([\n resolveNavigationDeferredResults(\n matches,\n loaderResults,\n request.signal,\n currentMatches,\n state.loaderData\n ),\n resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort();\n fetchControllers.delete(key);\n }\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n if (!patchRoutesOnNavigationImpl) {\n return { type: \"success\", matches };\n }\n\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await patchRoutesOnNavigationImpl({\n path: pathname,\n matches: partialMatches,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties\n );\n },\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `DataStrategyResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n dataStrategy: DataStrategyFunction | null\n ): Promise> {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n type,\n null,\n request,\n matchesToLoad,\n matches,\n null,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n let dataResults: Record = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResultResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n dataResults[match.route.id] =\n await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Account for `?index` params when routing to the current location\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n // Add one when we're targeting an index route\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n // Remove existing ones when we're not\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes at/below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string,\n includeBoundary = false\n) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n return matches.slice(0, includeBoundary ? index + 1 : index);\n }\n return matches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n initialHydration: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryMatches = matches;\n if (initialHydration && state.errors) {\n // On initial hydration, only consider matches up to _and including_ the boundary.\n // This is inclusive to handle cases where a server loader ran successfully,\n // a child server loader bubbled up to this route, but this route has\n // `clientLoader.hydrate` so we want to still run the `clientLoader` so that\n // we have a complete version of `loaderData`\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(state.errors)[0],\n true\n );\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n // If an action threw an error, we call loaders up to, but not including the\n // boundary\n boundaryMatches = getLoaderMatchesUntilBoundary(\n matches,\n pendingActionResult[0]\n );\n }\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (initialHydration) {\n return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial hydration (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n initialHydration ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction shouldLoadRouteOnHydration(\n route: AgnosticDataRouteObject,\n loaderData: RouteData | null | undefined,\n errors: RouteData | null | undefined\n) {\n // We dunno if we have a loader - gotta find out!\n if (route.lazy) {\n return true;\n }\n\n // No loader, nothing to initialize\n if (!route.loader) {\n return false;\n }\n\n let hasData = loaderData != null && loaderData[route.id] !== undefined;\n let hasError = errors != null && errors[route.id] !== undefined;\n\n // Don't run if we error'd during SSR\n if (!hasData && hasError) {\n return false;\n }\n\n // Explicitly opting-in to running on hydration\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n\n // Otherwise, run if we're not yet initialized with anything\n return !hasData && !hasError;\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n let childrenToPatch: AgnosticDataRouteObject[];\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n\n // Don't patch in routes we already know about so that `patch` is idempotent\n // to simplify user-land code. This is useful because we re-call the\n // `patchRoutesOnNavigation` function for matched routes with params.\n let uniqueChildren = children.filter(\n (newRoute) =>\n !childrenToPatch.some((existingRoute) =>\n isSameRoute(newRoute, existingRoute)\n )\n );\n\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n\n childrenToPatch.push(...newRoutes);\n}\n\nfunction isSameRoute(\n newRoute: AgnosticRouteObject,\n existingRoute: AgnosticRouteObject\n): boolean {\n // Most optimal check is by id\n if (\n \"id\" in newRoute &&\n \"id\" in existingRoute &&\n newRoute.id === existingRoute.id\n ) {\n return true;\n }\n\n // Second is by pathing differences\n if (\n !(\n newRoute.index === existingRoute.index &&\n newRoute.path === existingRoute.path &&\n newRoute.caseSensitive === existingRoute.caseSensitive\n )\n ) {\n return false;\n }\n\n // Pathless layout routes are trickier since we need to check children.\n // If they have no children then they're the same as far as we can tell\n if (\n (!newRoute.children || newRoute.children.length === 0) &&\n (!existingRoute.children || existingRoute.children.length === 0)\n ) {\n return true;\n }\n\n // Otherwise, we look to see if every child in the new route is already\n // represented in the existing route's children\n return newRoute.children!.every((aChild, i) =>\n existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nasync function defaultDataStrategy({\n matches,\n}: DataStrategyFunctionArgs): ReturnType {\n let matchesToLoad = matches.filter((m) => m.shouldLoad);\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n return results.reduce(\n (acc, result, i) =>\n Object.assign(acc, { [matchesToLoad[i].route.id]: result }),\n {}\n );\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n state: RouterState | null,\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n fetcherKey: string | null,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise> {\n let loadRouteDefinitionsPromises = matches.map((m) =>\n m.route.lazy\n ? loadLazyRouteModule(m.route, mapRouteProperties, manifest)\n : undefined\n );\n\n let dsMatches = matches.map((match, i) => {\n let loadRoutePromise = loadRouteDefinitionsPromises[i];\n let shouldLoad = matchesToLoad.some((m) => m.route.id === match.route.id);\n // `resolve` encapsulates route.lazy(), executing the loader/action,\n // and mapping return values/thrown errors to a `DataStrategyResult`. Users\n // can pass a callback to take fine-grained control over the execution\n // of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = async (handlerOverride) => {\n if (\n handlerOverride &&\n request.method === \"GET\" &&\n (match.route.lazy || match.route.loader)\n ) {\n shouldLoad = true;\n }\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n loadRoutePromise,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n });\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: dsMatches,\n request,\n params: matches[0].params,\n fetcherKey,\n context: requestContext,\n });\n\n // Wait for all routes to load here but 'swallow the error since we want\n // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -\n // called from `match.resolve()`\n try {\n await Promise.all(loadRouteDefinitionsPromises);\n } catch (e) {\n // No-op\n }\n\n return results;\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n loadRoutePromise: Promise | undefined,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: DataStrategyResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise = (async () => {\n try {\n let val = await (handlerOverride\n ? handlerOverride((ctx: unknown) => actualHandler(ctx))\n : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n // If we have a route.lazy promise, await that first\n if (loadRoutePromise) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadRoutePromise,\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadRoutePromise;\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // DataStrategyResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertDataStrategyResultToDataResult(\n dataStrategyResult: DataStrategyResult\n): Promise {\n let { result, type } = dataStrategyResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n results: Record,\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: Record,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n revalidatingFetchers.forEach((rf) => {\n let { key, match, controller } = rf;\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n return;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: Record\n): { key: string; result: RedirectResult } | undefined {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isDataStrategyResult(result: unknown): result is DataStrategyResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectDataStrategyResultResult(result: DataStrategyResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveNavigationDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n signal: AbortSignal,\n currentMatches: AgnosticDataRouteMatch[],\n currentLoaderData: RouteData\n) {\n let entries = Object.entries(results);\n for (let index = 0; index < entries.length; index++) {\n let [routeId, result] = entries[index];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && isRevalidatingLoader) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, false).then((result) => {\n if (result) {\n results[routeId] = result;\n }\n });\n }\n }\n}\n\nasync function resolveFetcherDeferredResults(\n matches: (AgnosticDataRouteMatch | null)[],\n results: Record,\n revalidatingFetchers: RevalidatingFetcher[]\n) {\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, routeId, controller } = revalidatingFetchers[index];\n let result = results[key];\n let match = matches.find((m) => m?.route.id === routeId);\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n if (isDeferredResult(result)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n invariant(\n controller,\n \"Expected an AbortController for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, controller.signal, true).then(\n (result) => {\n if (result) {\n results[key] = result;\n }\n }\n );\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n flushSync?: boolean;\n viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a