{"version":3,"file":"static/js/main.646ccb9c.js","mappings":"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","sources":["../node_modules/@stripe/react-stripe-js/dist/react-stripe.umd.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/lodash.mergewith/index.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-fast-compare/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/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","../webpack/bootstrap","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@emotion/sheet/dist/emotion-sheet.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/weak-memoize/dist/emotion-weak-memoize.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-5486c51c.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@chakra-ui/css-reset/src/css-reset.tsx","../node_modules/@chakra-ui/react-context/src/index.ts","../node_modules/@chakra-ui/portal/src/portal-manager.tsx","../node_modules/@chakra-ui/color-mode/src/color-mode-context.ts","../node_modules/@chakra-ui/shared-utils/dist/index.mjs","../node_modules/@chakra-ui/styled-system/dist/index.mjs","../node_modules/@chakra-ui/utils/dist/chunk-YTQ3XZ3T.mjs","../node_modules/@chakra-ui/utils/dist/chunk-M3TFMUOL.mjs","../node_modules/@chakra-ui/utils/dist/chunk-Y5FGD7DM.mjs","../node_modules/@chakra-ui/system/src/providers.tsx","../node_modules/@chakra-ui/react-utils/dist/chunk-ITIKTQWJ.mjs","../node_modules/@chakra-ui/color-mode/src/color-mode.utils.ts","../node_modules/@chakra-ui/color-mode/src/storage-manager.ts","../node_modules/@chakra-ui/react-use-safe-layout-effect/src/index.ts","../node_modules/@chakra-ui/color-mode/src/color-mode-provider.tsx","../node_modules/@chakra-ui/react-env/src/env.tsx","../node_modules/@chakra-ui/provider/src/chakra-provider.tsx","../node_modules/@chakra-ui/theme/src/foundations/transition.ts","../node_modules/@chakra-ui/theme/src/foundations/z-index.ts","../node_modules/@chakra-ui/theme/src/foundations/borders.ts","../node_modules/@chakra-ui/theme/src/foundations/breakpoints.ts","../node_modules/@chakra-ui/theme/src/foundations/colors.ts","../node_modules/@chakra-ui/theme/src/foundations/radius.ts","../node_modules/@chakra-ui/theme/src/foundations/shadows.ts","../node_modules/@chakra-ui/theme/src/foundations/blur.ts","../node_modules/@chakra-ui/theme/src/foundations/typography.ts","../node_modules/@chakra-ui/theme/src/foundations/spacing.ts","../node_modules/@chakra-ui/theme/src/foundations/sizes.ts","../node_modules/@chakra-ui/theme/src/foundations/index.ts","../node_modules/@chakra-ui/theme/src/components/stepper.ts","../node_modules/@chakra-ui/anatomy/src/anatomy.ts","../node_modules/@chakra-ui/anatomy/src/components.ts","../node_modules/@chakra-ui/theme-tools/src/css-var.ts","../node_modules/@chakra-ui/theme-tools/src/css-calc.ts","../node_modules/@chakra-ui/theme/src/components/switch.ts","../node_modules/@chakra-ui/theme-tools/src/component.ts","../node_modules/@chakra-ui/theme/src/components/table.ts","../node_modules/color2k/src/guard.ts","../node_modules/color2k/src/ColorError.ts","../node_modules/color2k/src/parseToRgba.ts","../node_modules/color2k/src/rgba.ts","../node_modules/color2k/src/transparentize.ts","../node_modules/@chakra-ui/theme-tools/src/color.ts","../node_modules/.pnpm/dlv@1.1.3/node_modules/dlv/index.js","../node_modules/color2k/src/toHex.ts","../node_modules/@chakra-ui/theme/src/components/tabs.ts","../node_modules/@chakra-ui/theme/src/components/badge.ts","../node_modules/@chakra-ui/theme/src/components/tag.ts","../node_modules/@chakra-ui/theme/src/components/input.ts","../node_modules/@chakra-ui/theme/src/components/textarea.ts","../node_modules/@chakra-ui/theme/src/components/tooltip.ts","../node_modules/@chakra-ui/theme/src/components/progress.ts","../node_modules/@chakra-ui/theme/src/utils/run-if-fn.ts","../node_modules/@chakra-ui/theme/src/components/checkbox.ts","../node_modules/@chakra-ui/theme/src/components/select.ts","../node_modules/@chakra-ui/theme/src/components/radio.ts","../node_modules/@chakra-ui/theme/src/components/skeleton.ts","../node_modules/@chakra-ui/theme/src/components/skip-link.ts","../node_modules/@chakra-ui/theme/src/components/slider.ts","../node_modules/@chakra-ui/theme/src/components/spinner.ts","../node_modules/@chakra-ui/theme/src/components/stat.ts","../node_modules/@chakra-ui/theme/src/components/kbd.ts","../node_modules/@chakra-ui/theme/src/components/link.ts","../node_modules/@chakra-ui/theme/src/components/list.ts","../node_modules/@chakra-ui/theme/src/components/menu.ts","../node_modules/@chakra-ui/theme/src/components/modal.ts","../node_modules/@chakra-ui/theme/src/components/number-input.ts","../node_modules/@chakra-ui/theme/src/components/pin-input.ts","../node_modules/@chakra-ui/theme/src/components/popover.ts","../node_modules/@chakra-ui/theme/src/components/drawer.ts","../node_modules/@chakra-ui/theme/src/components/editable.ts","../node_modules/@chakra-ui/theme/src/components/form-control.ts","../node_modules/@chakra-ui/theme/src/components/form-error.ts","../node_modules/@chakra-ui/theme/src/components/form-label.ts","../node_modules/@chakra-ui/theme/src/components/heading.ts","../node_modules/@chakra-ui/theme/src/components/breadcrumb.ts","../node_modules/@chakra-ui/theme/src/components/button.ts","../node_modules/@chakra-ui/theme/src/components/card.ts","../node_modules/@chakra-ui/theme/src/components/close-button.ts","../node_modules/@chakra-ui/theme/src/components/code.ts","../node_modules/@chakra-ui/theme/src/components/container.ts","../node_modules/@chakra-ui/theme/src/components/divider.ts","../node_modules/@chakra-ui/theme/src/components/accordion.ts","../node_modules/@chakra-ui/theme/src/components/alert.ts","../node_modules/@chakra-ui/theme/src/components/avatar.ts","../node_modules/@chakra-ui/theme/src/components/index.ts","../node_modules/@chakra-ui/theme/src/semantic-tokens.ts","../node_modules/@chakra-ui/theme/src/styles.ts","../node_modules/@chakra-ui/theme/src/index.ts","../node_modules/@chakra-ui/toast/src/toast.utils.ts","../node_modules/@chakra-ui/react-use-timeout/src/index.ts","../node_modules/@chakra-ui/react-use-callback-ref/src/index.ts","../node_modules/@chakra-ui/react-use-update-effect/src/index.ts","../node_modules/framer-motion/dist/es/context/PresenceContext.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","../node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","../node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","../node_modules/framer-motion/dist/es/utils/is-browser.mjs","../node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","../node_modules/framer-motion/dist/es/context/LazyContext.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/GlobalConfig.mjs","../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../node_modules/framer-motion/dist/es/frameloop/microtask.mjs","../node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","../node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","../node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","../node_modules/framer-motion/dist/es/render/utils/variant-props.mjs","../node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.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/motion/features/definitions.mjs","../node_modules/framer-motion/dist/es/context/LayoutGroupContext.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/features/load-features.mjs","../node_modules/framer-motion/dist/es/render/dom/motion-proxy.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/projection/styles/scale-correction.mjs","../node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","../node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","../node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.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/value-types/type-int.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","../node_modules/framer-motion/dist/es/render/html/utils/build-styles.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/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/create-render-state.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.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/render/html/utils/render.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/html/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","../node_modules/framer-motion/dist/es/utils/use-constant.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","../node_modules/framer-motion/dist/es/utils/resolve-value.mjs","../node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","../node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/get-will-change-name.mjs","../node_modules/framer-motion/dist/es/utils/array.mjs","../node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/utils/noop.mjs","../node_modules/framer-motion/dist/es/frameloop/frame.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/events/add-dom-event.mjs","../node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.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/utils/pipe.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","../node_modules/framer-motion/dist/es/motion/features/Feature.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/utils/shallow-compare.mjs","../node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.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/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/css-variables-conversion.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/defaults.mjs","../node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","../node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.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/utils/memo.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/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/immediate.mjs","../node_modules/framer-motion/dist/es/utils/mix/color.mjs","../node_modules/framer-motion/dist/es/utils/mix/visibility.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/animation/animators/waapi/index.mjs","../node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs","../node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs","../node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../node_modules/framer-motion/dist/es/utils/subscription-manager.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/optimized-appear/get-appear-id.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/WillChangeMotionValue.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.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/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/utils/distance.mjs","../node_modules/framer-motion/dist/es/gestures/pan/PanSession.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","../node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","../node_modules/framer-motion/dist/es/projection/geometry/models.mjs","../node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","../node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","../node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","../node_modules/framer-motion/dist/es/projection/utils/measure.mjs","../node_modules/framer-motion/dist/es/utils/get-context-window.mjs","../node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","../node_modules/framer-motion/dist/es/gestures/pan/index.mjs","../node_modules/framer-motion/dist/es/projection/node/state.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","../node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","../node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","../node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","../node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","../node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","../node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","../node_modules/framer-motion/dist/es/projection/shared/stack.mjs","../node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","../node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","../node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs","../node_modules/framer-motion/dist/es/utils/delay.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/single-value.mjs","../node_modules/framer-motion/dist/es/projection/styles/transform.mjs","../node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","../node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","../node_modules/framer-motion/dist/es/motion/features/drag.mjs","../node_modules/framer-motion/dist/es/gestures/drag/index.mjs","../node_modules/framer-motion/dist/es/utils/reduced-motion/state.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/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/SVGVisualElement.mjs","../node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","../node_modules/framer-motion/dist/es/render/dom/motion.mjs","../node_modules/framer-motion/dist/es/motion/features/layout.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../node_modules/@chakra-ui/system/src/should-forward-prop.ts","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@chakra-ui/system/src/system.ts","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@chakra-ui/object-utils/dist/chunk-OLTBUDV5.mjs","../node_modules/@chakra-ui/system/src/factory.ts","../node_modules/@chakra-ui/toast/src/toast.component.tsx","../node_modules/@chakra-ui/system/src/forward-ref.tsx","../node_modules/@chakra-ui/system/src/use-theme.ts","../node_modules/@chakra-ui/system/src/hooks.ts","../node_modules/@chakra-ui/system/src/use-style-config.ts","../node_modules/@chakra-ui/icon/src/icon.tsx","../node_modules/@chakra-ui/alert/src/icons.tsx","../node_modules/@chakra-ui/spinner/src/spinner.tsx","../node_modules/@chakra-ui/alert/src/alert-context.ts","../node_modules/@chakra-ui/alert/src/alert.tsx","../node_modules/@chakra-ui/alert/src/alert-icon.tsx","../node_modules/@chakra-ui/alert/src/alert-title.tsx","../node_modules/@chakra-ui/alert/src/alert-description.tsx","../node_modules/@chakra-ui/close-button/src/close-button.tsx","../node_modules/@chakra-ui/toast/src/toast.store.ts","../node_modules/@chakra-ui/toast/src/toast.tsx","../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/components/AnimatePresence/utils.mjs","../node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","../node_modules/@chakra-ui/portal/src/portal.tsx","../node_modules/@chakra-ui/toast/src/toast.provider.tsx","../node_modules/@remix-run/router/history.ts","../node_modules/@chakra-ui/react/src/chakra-provider.tsx","../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","../node_modules/@chakra-ui/layout/src/box.tsx","../node_modules/@chakra-ui/button/src/button-context.ts","../node_modules/@chakra-ui/button/src/button-icon.tsx","../node_modules/@chakra-ui/button/src/button-spinner.tsx","../node_modules/@chakra-ui/react-use-merge-refs/src/index.ts","../node_modules/@chakra-ui/button/src/button.tsx","../node_modules/@chakra-ui/button/src/use-button-type.tsx","../node_modules/@chakra-ui/layout/src/container.tsx","../node_modules/@chakra-ui/layout/src/stack/stack-item.tsx","../node_modules/@chakra-ui/breakpoint-utils/dist/chunk-G72KV6MB.mjs","../node_modules/@chakra-ui/react-children-utils/dist/index.mjs","../node_modules/@chakra-ui/layout/src/stack/stack.tsx","../node_modules/@chakra-ui/layout/src/stack/stack.utils.tsx","../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","../node_modules/@stripe/stripe-js/dist/index.mjs","pages/Buy.tsx","util/featureToggle.ts","../node_modules/@chakra-ui/layout/src/heading.tsx","../node_modules/@chakra-ui/object-utils/dist/chunk-R3DH46PF.mjs","../node_modules/@chakra-ui/layout/src/text.tsx","../node_modules/@chakra-ui/layout/src/flex.tsx","../node_modules/@chakra-ui/image/src/native-image.tsx","../node_modules/utilities/object-utils/src/omit.ts","../node_modules/@chakra-ui/image/src/image.tsx","../node_modules/@chakra-ui/image/src/use-image.ts","../node_modules/@chakra-ui/icon/src/create-icon.tsx","components/Hero.tsx","../node_modules/@chakra-ui/layout/src/stack/v-stack.tsx","../node_modules/@chakra-ui/form-control/src/form-control.tsx","../node_modules/@chakra-ui/form-control/src/form-label.tsx","../node_modules/@chakra-ui/input/src/input-group.tsx","../node_modules/@chakra-ui/input/src/input-element.tsx","../node_modules/@chakra-ui/form-control/src/use-form-control.ts","../node_modules/@chakra-ui/input/src/input.tsx","../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts","../node_modules/react-hook-form/src/utils/isDateObject.ts","../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts","../node_modules/react-hook-form/src/utils/isObject.ts","../node_modules/react-hook-form/src/logic/getEventValue.ts","../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts","../node_modules/react-hook-form/src/logic/getNodeParentName.ts","../node_modules/react-hook-form/src/utils/isPlainObject.ts","../node_modules/react-hook-form/src/utils/isWeb.ts","../node_modules/react-hook-form/src/utils/cloneObject.ts","../node_modules/react-hook-form/src/utils/compact.ts","../node_modules/react-hook-form/src/utils/isUndefined.ts","../node_modules/react-hook-form/src/utils/get.ts","../node_modules/react-hook-form/src/utils/isBoolean.ts","../node_modules/react-hook-form/src/utils/isKey.ts","../node_modules/react-hook-form/src/utils/stringToPath.ts","../node_modules/react-hook-form/src/utils/set.ts","../node_modules/react-hook-form/src/constants.ts","../node_modules/react-hook-form/src/useFormContext.tsx","../node_modules/react-hook-form/src/logic/getProxyFormState.ts","../node_modules/react-hook-form/src/utils/isEmptyObject.ts","../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts","../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts","../node_modules/react-hook-form/src/useSubscribe.ts","../node_modules/react-hook-form/src/utils/isString.ts","../node_modules/react-hook-form/src/logic/generateWatchOutput.ts","../node_modules/react-hook-form/src/logic/appendErrors.ts","../node_modules/react-hook-form/src/logic/getValidationModes.ts","../node_modules/react-hook-form/src/logic/isWatched.ts","../node_modules/react-hook-form/src/logic/iterateFieldsByAction.ts","../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts","../node_modules/react-hook-form/src/utils/isFileInput.ts","../node_modules/react-hook-form/src/utils/isFunction.ts","../node_modules/react-hook-form/src/utils/isHTMLElement.ts","../node_modules/react-hook-form/src/utils/isMessage.ts","../node_modules/react-hook-form/src/utils/isRadioInput.ts","../node_modules/react-hook-form/src/utils/isRegex.ts","../node_modules/react-hook-form/src/logic/getCheckboxValue.ts","../node_modules/react-hook-form/src/logic/getRadioValue.ts","../node_modules/react-hook-form/src/logic/getValidateError.ts","../node_modules/react-hook-form/src/logic/getValueAndMessage.ts","../node_modules/react-hook-form/src/logic/validateField.ts","../node_modules/react-hook-form/src/utils/unset.ts","../node_modules/react-hook-form/src/utils/createSubject.ts","../node_modules/react-hook-form/src/utils/isPrimitive.ts","../node_modules/react-hook-form/src/utils/deepEqual.ts","../node_modules/react-hook-form/src/utils/isMultipleSelect.ts","../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts","../node_modules/react-hook-form/src/utils/live.ts","../node_modules/react-hook-form/src/utils/objectHasFunction.ts","../node_modules/react-hook-form/src/logic/getDirtyFields.ts","../node_modules/react-hook-form/src/logic/getFieldValueAs.ts","../node_modules/react-hook-form/src/logic/getFieldValue.ts","../node_modules/react-hook-form/src/logic/getResolverOptions.ts","../node_modules/react-hook-form/src/logic/getRuleValue.ts","../node_modules/react-hook-form/src/logic/hasValidation.ts","../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts","../node_modules/react-hook-form/src/logic/skipValidation.ts","../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts","../node_modules/react-hook-form/src/logic/createFormControl.ts","../node_modules/react-icons/lib/iconsManifest.mjs","../node_modules/react-icons/lib/iconContext.mjs","../node_modules/react-icons/lib/iconBase.mjs","../node_modules/react-icons/bs/index.mjs","../node_modules/react-icons/md/index.mjs","components/MailingList.tsx","../node_modules/react-hook-form/src/useForm.ts","../node_modules/@chakra-ui/layout/src/stack/stack-divider.tsx","../node_modules/@chakra-ui/layout/src/grid.tsx","../node_modules/@chakra-ui/layout/src/simple-grid.tsx","../node_modules/@chakra-ui/layout/src/list.tsx","../node_modules/@chakra-ui/layout/src/stack/h-stack.tsx","components/ui/AnnotationArrow/AnnotationArrow.tsx","components/ui/InteractiveDeck/InteractiveDeck.tsx","components/ProductDetails.tsx","pages/Home.tsx","../node_modules/react-social-icons/dist/component.js","../node_modules/react-social-icons/dist/icons/auth0.js","../node_modules/react-social-icons/dist/icons/bandsintown.js","../node_modules/react-social-icons/dist/icons/behance.js","../node_modules/react-social-icons/dist/icons/bsky.app.js","../node_modules/react-social-icons/dist/icons/clubhouse.js","../node_modules/react-social-icons/dist/icons/codepen.js","../node_modules/react-social-icons/dist/icons/developer.mozilla.js","../node_modules/react-social-icons/dist/icons/discord.js","../node_modules/react-social-icons/dist/icons/dribbble.js","../node_modules/react-social-icons/dist/icons/dropbox.js","../node_modules/react-social-icons/dist/icons/email.js","../node_modules/react-social-icons/dist/icons/facebook.js","../node_modules/react-social-icons/dist/icons/fivehundredpix.js","../node_modules/react-social-icons/dist/icons/flickr.js","../node_modules/react-social-icons/dist/icons/foursquare.js","../node_modules/react-social-icons/dist/icons/github.js","../node_modules/react-social-icons/dist/icons/gitlab.js","../node_modules/react-social-icons/dist/icons/google.js","../node_modules/react-social-icons/dist/icons/google_play.js","../node_modules/react-social-icons/dist/icons/groupme.js","../node_modules/react-social-icons/dist/icons/instagram.js","../node_modules/react-social-icons/dist/icons/itch.io.js","../node_modules/react-social-icons/dist/icons/itunes.js","../node_modules/react-social-icons/dist/icons/leetcode.js","../node_modules/react-social-icons/dist/icons/line.me.js","../node_modules/react-social-icons/dist/icons/linkedin.js","../node_modules/react-social-icons/dist/icons/linktree.js","../node_modules/react-social-icons/dist/icons/mailto.js","../node_modules/react-social-icons/dist/icons/mastodon.js","../node_modules/react-social-icons/dist/icons/matrix.js","../node_modules/react-social-icons/dist/icons/medium.js","../node_modules/react-social-icons/dist/icons/meetup.js","../node_modules/react-social-icons/dist/icons/misskey.js","../node_modules/react-social-icons/dist/icons/opensea.js","../node_modules/react-social-icons/dist/icons/patreon.js","../node_modules/react-social-icons/dist/icons/pinterest.js","../node_modules/react-social-icons/dist/icons/pixiv.js","../node_modules/react-social-icons/dist/icons/ravelry.js","../node_modules/react-social-icons/dist/icons/rdio.js","../node_modules/react-social-icons/dist/icons/reddit.js","../node_modules/react-social-icons/dist/icons/rss.js","../node_modules/react-social-icons/dist/icons/sharethis.js","../node_modules/react-social-icons/dist/icons/slack.js","../node_modules/react-social-icons/dist/icons/smugmug.js","../node_modules/react-social-icons/dist/icons/snapchat.js","../node_modules/react-social-icons/dist/icons/soundcloud.js","../node_modules/react-social-icons/dist/icons/spotify.js","../node_modules/react-social-icons/dist/icons/squarespace.js","../node_modules/react-social-icons/dist/icons/stackoverflow.js","../node_modules/react-social-icons/dist/icons/t.me.js","../node_modules/react-social-icons/dist/icons/telegram.js","../node_modules/react-social-icons/dist/icons/threads.js","../node_modules/react-social-icons/dist/icons/tiktok.js","../node_modules/react-social-icons/dist/icons/tumblr.js","../node_modules/react-social-icons/dist/icons/twitch.js","../node_modules/react-social-icons/dist/icons/twitter.js","../node_modules/react-social-icons/dist/icons/upwork.js","../node_modules/react-social-icons/dist/icons/vevo.js","../node_modules/react-social-icons/dist/icons/vimeo.js","../node_modules/react-social-icons/dist/icons/vine.js","../node_modules/react-social-icons/dist/icons/vk.js","../node_modules/react-social-icons/dist/icons/vsco.js","../node_modules/react-social-icons/dist/icons/wechat.js","../node_modules/react-social-icons/dist/icons/whatsapp.js","../node_modules/react-social-icons/dist/icons/x.js","../node_modules/react-social-icons/dist/icons/xiaohongshu.js","../node_modules/react-social-icons/dist/icons/xing.js","../node_modules/react-social-icons/dist/icons/yandex.js","../node_modules/react-social-icons/dist/icons/yelp.js","../node_modules/react-social-icons/dist/icons/youtube.js","components/ui/Footer/Footer.tsx","../node_modules/@chakra-ui/theme/src/utils/is-chakra-theme.ts","../node_modules/@chakra-ui/theme-utils/dist/chunk-LIR5QAZY.mjs","theme.ts","App.tsx","reportWebVitals.ts","index.tsx"],"sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react')) :\n typeof define === 'function' && define.amd ? define(['exports', 'react'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ReactStripe = {}, global.React));\n})(this, (function (exports, React) { 'use strict';\n\n function 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\n function _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\n function _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\n function _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\n function _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\n function _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\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _i = arr && (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\n function _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\n function _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\n function _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\n function getDefaultExportFromCjs (x) {\n \treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n }\n\n var propTypes = {exports: {}};\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\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 var ReactPropTypesSecret_1;\n var hasRequiredReactPropTypesSecret;\n\n function requireReactPropTypesSecret() {\n if (hasRequiredReactPropTypesSecret) return ReactPropTypesSecret_1;\n hasRequiredReactPropTypesSecret = 1;\n\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n ReactPropTypesSecret_1 = ReactPropTypesSecret;\n return ReactPropTypesSecret_1;\n }\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\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 var factoryWithThrowingShims;\n var hasRequiredFactoryWithThrowingShims;\n\n function requireFactoryWithThrowingShims() {\n if (hasRequiredFactoryWithThrowingShims) return factoryWithThrowingShims;\n hasRequiredFactoryWithThrowingShims = 1;\n\n var ReactPropTypesSecret = requireReactPropTypesSecret();\n\n function emptyFunction() {}\n\n function emptyFunctionWithReset() {}\n\n emptyFunctionWithReset.resetWarningCache = emptyFunction;\n\n factoryWithThrowingShims = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n\n var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n err.name = 'Invariant Violation';\n throw err;\n }\n shim.isRequired = shim;\n\n function getShim() {\n return shim;\n }\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n\n return factoryWithThrowingShims;\n }\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\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 {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n propTypes.exports = requireFactoryWithThrowingShims()();\n }\n\n var propTypesExports = propTypes.exports;\n var PropTypes = /*@__PURE__*/getDefaultExportFromCjs(propTypesExports);\n\n var useAttachEvent = function useAttachEvent(element, event, cb) {\n var cbDefined = !!cb;\n var cbRef = React.useRef(cb); // In many integrations the callback prop changes on each render.\n // Using a ref saves us from calling element.on/.off every render.\n\n React.useEffect(function () {\n cbRef.current = cb;\n }, [cb]);\n React.useEffect(function () {\n if (!cbDefined || !element) {\n return function () {};\n }\n\n var decoratedCb = function decoratedCb() {\n if (cbRef.current) {\n cbRef.current.apply(cbRef, arguments);\n }\n };\n\n element.on(event, decoratedCb);\n return function () {\n element.off(event, decoratedCb);\n };\n }, [cbDefined, event, element, cbRef]);\n };\n\n var usePrevious = function usePrevious(value) {\n var ref = React.useRef(value);\n React.useEffect(function () {\n ref.current = value;\n }, [value]);\n return ref.current;\n };\n\n var isUnknownObject = function isUnknownObject(raw) {\n return raw !== null && _typeof(raw) === 'object';\n };\n var isPromise = function isPromise(raw) {\n return isUnknownObject(raw) && typeof raw.then === 'function';\n }; // We are using types to enforce the `stripe` prop in this lib,\n // but in an untyped integration `stripe` could be anything, so we need\n // to do some sanity validation to prevent type errors.\n\n var isStripe = function isStripe(raw) {\n return isUnknownObject(raw) && typeof raw.elements === 'function' && typeof raw.createToken === 'function' && typeof raw.createPaymentMethod === 'function' && typeof raw.confirmCardPayment === 'function';\n };\n\n var PLAIN_OBJECT_STR = '[object Object]';\n var isEqual = function isEqual(left, right) {\n if (!isUnknownObject(left) || !isUnknownObject(right)) {\n return left === right;\n }\n\n var leftArray = Array.isArray(left);\n var rightArray = Array.isArray(right);\n if (leftArray !== rightArray) return false;\n var leftPlainObject = Object.prototype.toString.call(left) === PLAIN_OBJECT_STR;\n var rightPlainObject = Object.prototype.toString.call(right) === PLAIN_OBJECT_STR;\n if (leftPlainObject !== rightPlainObject) return false; // not sure what sort of special object this is (regexp is one option), so\n // fallback to reference check.\n\n if (!leftPlainObject && !leftArray) return left === right;\n var leftKeys = Object.keys(left);\n var rightKeys = Object.keys(right);\n if (leftKeys.length !== rightKeys.length) return false;\n var keySet = {};\n\n for (var i = 0; i < leftKeys.length; i += 1) {\n keySet[leftKeys[i]] = true;\n }\n\n for (var _i = 0; _i < rightKeys.length; _i += 1) {\n keySet[rightKeys[_i]] = true;\n }\n\n var allKeys = Object.keys(keySet);\n\n if (allKeys.length !== leftKeys.length) {\n return false;\n }\n\n var l = left;\n var r = right;\n\n var pred = function pred(key) {\n return isEqual(l[key], r[key]);\n };\n\n return allKeys.every(pred);\n };\n\n var extractAllowedOptionsUpdates = function extractAllowedOptionsUpdates(options, prevOptions, immutableKeys) {\n if (!isUnknownObject(options)) {\n return null;\n }\n\n return Object.keys(options).reduce(function (newOptions, key) {\n var isUpdated = !isUnknownObject(prevOptions) || !isEqual(options[key], prevOptions[key]);\n\n if (immutableKeys.includes(key)) {\n if (isUpdated) {\n console.warn(\"Unsupported prop change: options.\".concat(key, \" is not a mutable property.\"));\n }\n\n return newOptions;\n }\n\n if (!isUpdated) {\n return newOptions;\n }\n\n return _objectSpread2(_objectSpread2({}, newOptions || {}), {}, _defineProperty({}, key, options[key]));\n }, null);\n };\n\n var INVALID_STRIPE_ERROR$2 = 'Invalid prop `stripe` supplied to `Elements`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.'; // We are using types to enforce the `stripe` prop in this lib, but in a real\n // integration `stripe` could be anything, so we need to do some sanity\n // validation to prevent type errors.\n\n var validateStripe = function validateStripe(maybeStripe) {\n var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$2;\n\n if (maybeStripe === null || isStripe(maybeStripe)) {\n return maybeStripe;\n }\n\n throw new Error(errorMsg);\n };\n\n var parseStripeProp = function parseStripeProp(raw) {\n var errorMsg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : INVALID_STRIPE_ERROR$2;\n\n if (isPromise(raw)) {\n return {\n tag: 'async',\n stripePromise: Promise.resolve(raw).then(function (result) {\n return validateStripe(result, errorMsg);\n })\n };\n }\n\n var stripe = validateStripe(raw, errorMsg);\n\n if (stripe === null) {\n return {\n tag: 'empty'\n };\n }\n\n return {\n tag: 'sync',\n stripe: stripe\n };\n };\n\n var registerWithStripeJs = function registerWithStripeJs(stripe) {\n if (!stripe || !stripe._registerWrapper || !stripe.registerAppInfo) {\n return;\n }\n\n stripe._registerWrapper({\n name: 'react-stripe-js',\n version: \"2.7.3\"\n });\n\n stripe.registerAppInfo({\n name: 'react-stripe-js',\n version: \"2.7.3\",\n url: 'https://stripe.com/docs/stripe-js/react'\n });\n };\n\n var ElementsContext = /*#__PURE__*/React.createContext(null);\n ElementsContext.displayName = 'ElementsContext';\n var parseElementsContext = function parseElementsContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find Elements context; You need to wrap the part of your app that \".concat(useCase, \" in an provider.\"));\n }\n\n return ctx;\n };\n /**\n * The `Elements` provider allows you to use [Element components](https://stripe.com/docs/stripe-js/react#element-components) and access the [Stripe object](https://stripe.com/docs/js/initializing) in any nested component.\n * Render an `Elements` provider at the root of your React app so that it is available everywhere you need it.\n *\n * To use the `Elements` provider, call `loadStripe` from `@stripe/stripe-js` with your publishable key.\n * The `loadStripe` function will asynchronously load the Stripe.js script and initialize a `Stripe` object.\n * Pass the returned `Promise` to `Elements`.\n *\n * @docs https://stripe.com/docs/stripe-js/react#elements-provider\n */\n\n var Elements = function Elements(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp);\n }, [rawStripeProp]); // For a sync stripe instance, initialize into context\n\n var _React$useState = React.useState(function () {\n return {\n stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n elements: parsed.tag === 'sync' ? parsed.stripe.elements(options) : null\n };\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n ctx = _React$useState2[0],\n setContext = _React$useState2[1];\n\n React.useEffect(function () {\n var isMounted = true;\n\n var safeSetContext = function safeSetContext(stripe) {\n setContext(function (ctx) {\n // no-op if we already have a stripe instance (https://github.com/stripe/react-stripe-js/issues/296)\n if (ctx.stripe) return ctx;\n return {\n stripe: stripe,\n elements: stripe.elements(options)\n };\n });\n }; // For an async stripePromise, store it in context once resolved\n\n\n if (parsed.tag === 'async' && !ctx.stripe) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe && isMounted) {\n // Only update Elements context if the component is still mounted\n // and stripe is not null. We allow stripe to be null to make\n // handling SSR easier.\n safeSetContext(stripe);\n }\n });\n } else if (parsed.tag === 'sync' && !ctx.stripe) {\n // Or, handle a sync stripe instance going from null -> populated\n safeSetContext(parsed.stripe);\n }\n\n return function () {\n isMounted = false;\n };\n }, [parsed, ctx, options]); // Warn on changes to stripe prop\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on Elements: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!ctx.elements) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['clientSecret', 'fonts']);\n\n if (updates) {\n ctx.elements.update(updates);\n }\n }, [options, prevOptions, ctx.elements]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n registerWithStripeJs(ctx.stripe);\n }, [ctx.stripe]);\n return /*#__PURE__*/React.createElement(ElementsContext.Provider, {\n value: ctx\n }, children);\n };\n Elements.propTypes = {\n stripe: PropTypes.any,\n options: PropTypes.object\n };\n var useElementsContextWithUseCase = function useElementsContextWithUseCase(useCaseMessage) {\n var ctx = React.useContext(ElementsContext);\n return parseElementsContext(ctx, useCaseMessage);\n };\n /**\n * @docs https://stripe.com/docs/stripe-js/react#useelements-hook\n */\n\n var useElements = function useElements() {\n var _useElementsContextWi = useElementsContextWithUseCase('calls useElements()'),\n elements = _useElementsContextWi.elements;\n\n return elements;\n };\n /**\n * @docs https://stripe.com/docs/stripe-js/react#elements-consumer\n */\n\n var ElementsConsumer = function ElementsConsumer(_ref2) {\n var children = _ref2.children;\n var ctx = useElementsContextWithUseCase('mounts '); // Assert to satisfy the busted React.FC return type (it should be ReactNode)\n\n return children(ctx);\n };\n ElementsConsumer.propTypes = {\n children: PropTypes.func.isRequired\n };\n\n var _excluded = [\"on\", \"session\"];\n var CustomCheckoutSdkContext = /*#__PURE__*/React.createContext(null);\n CustomCheckoutSdkContext.displayName = 'CustomCheckoutSdkContext';\n var parseCustomCheckoutSdkContext = function parseCustomCheckoutSdkContext(ctx, useCase) {\n if (!ctx) {\n throw new Error(\"Could not find CustomCheckoutProvider context; You need to wrap the part of your app that \".concat(useCase, \" in an provider.\"));\n }\n\n return ctx;\n };\n var CustomCheckoutContext = /*#__PURE__*/React.createContext(null);\n CustomCheckoutContext.displayName = 'CustomCheckoutContext';\n var extractCustomCheckoutContextValue = function extractCustomCheckoutContextValue(customCheckoutSdk, sessionState) {\n if (!customCheckoutSdk) {\n return null;\n }\n\n customCheckoutSdk.on;\n customCheckoutSdk.session;\n var actions = _objectWithoutProperties(customCheckoutSdk, _excluded);\n\n if (!sessionState) {\n return _objectSpread2(_objectSpread2({}, actions), customCheckoutSdk.session());\n }\n\n return _objectSpread2(_objectSpread2({}, actions), sessionState);\n };\n var INVALID_STRIPE_ERROR$1 = 'Invalid prop `stripe` supplied to `CustomCheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\n var CustomCheckoutProvider = function CustomCheckoutProvider(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp, INVALID_STRIPE_ERROR$1);\n }, [rawStripeProp]); // State used to trigger a re-render when sdk.session is updated\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n session = _React$useState2[0],\n setSession = _React$useState2[1];\n\n var _React$useState3 = React.useState(function () {\n return {\n stripe: parsed.tag === 'sync' ? parsed.stripe : null,\n customCheckoutSdk: null\n };\n }),\n _React$useState4 = _slicedToArray(_React$useState3, 2),\n ctx = _React$useState4[0],\n setContext = _React$useState4[1];\n\n var safeSetContext = function safeSetContext(stripe, customCheckoutSdk) {\n setContext(function (ctx) {\n if (ctx.stripe && ctx.customCheckoutSdk) {\n return ctx;\n }\n\n return {\n stripe: stripe,\n customCheckoutSdk: customCheckoutSdk\n };\n });\n }; // Ref used to avoid calling initCustomCheckout multiple times when options changes\n\n\n var initCustomCheckoutCalledRef = React.useRef(false);\n React.useEffect(function () {\n var isMounted = true;\n\n if (parsed.tag === 'async' && !ctx.stripe) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe && isMounted && !initCustomCheckoutCalledRef.current) {\n // Only update context if the component is still mounted\n // and stripe is not null. We allow stripe to be null to make\n // handling SSR easier.\n initCustomCheckoutCalledRef.current = true;\n stripe.initCustomCheckout(options).then(function (customCheckoutSdk) {\n if (customCheckoutSdk) {\n safeSetContext(stripe, customCheckoutSdk);\n customCheckoutSdk.on('change', setSession);\n }\n });\n }\n });\n } else if (parsed.tag === 'sync' && parsed.stripe && !initCustomCheckoutCalledRef.current) {\n initCustomCheckoutCalledRef.current = true;\n parsed.stripe.initCustomCheckout(options).then(function (customCheckoutSdk) {\n if (customCheckoutSdk) {\n safeSetContext(parsed.stripe, customCheckoutSdk);\n customCheckoutSdk.on('change', setSession);\n }\n });\n }\n\n return function () {\n isMounted = false;\n };\n }, [parsed, ctx, options, setSession]); // Warn on changes to stripe prop\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on CustomCheckoutProvider: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Apply updates to elements when options prop has relevant changes\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n var _prevOptions$elements, _options$elementsOpti;\n\n if (!ctx.customCheckoutSdk) {\n return;\n }\n\n if (options.clientSecret && !isUnknownObject(prevOptions) && !isEqual(options.clientSecret, prevOptions.clientSecret)) {\n console.warn('Unsupported prop change: options.client_secret is not a mutable property.');\n }\n\n var previousAppearance = prevOptions === null || prevOptions === void 0 ? void 0 : (_prevOptions$elements = prevOptions.elementsOptions) === null || _prevOptions$elements === void 0 ? void 0 : _prevOptions$elements.appearance;\n var currentAppearance = options === null || options === void 0 ? void 0 : (_options$elementsOpti = options.elementsOptions) === null || _options$elementsOpti === void 0 ? void 0 : _options$elementsOpti.appearance;\n\n if (currentAppearance && !isEqual(currentAppearance, previousAppearance)) {\n ctx.customCheckoutSdk.changeAppearance(currentAppearance);\n }\n }, [options, prevOptions, ctx.customCheckoutSdk]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n registerWithStripeJs(ctx.stripe);\n }, [ctx.stripe]);\n var customCheckoutContextValue = React.useMemo(function () {\n return extractCustomCheckoutContextValue(ctx.customCheckoutSdk, session);\n }, [ctx.customCheckoutSdk, session]);\n\n if (!ctx.customCheckoutSdk) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(CustomCheckoutSdkContext.Provider, {\n value: ctx\n }, /*#__PURE__*/React.createElement(CustomCheckoutContext.Provider, {\n value: customCheckoutContextValue\n }, children));\n };\n CustomCheckoutProvider.propTypes = {\n stripe: PropTypes.any,\n options: PropTypes.shape({\n clientSecret: PropTypes.string.isRequired,\n elementsOptions: PropTypes.object\n }).isRequired\n };\n var useCustomCheckoutSdkContextWithUseCase = function useCustomCheckoutSdkContextWithUseCase(useCaseString) {\n var ctx = React.useContext(CustomCheckoutSdkContext);\n return parseCustomCheckoutSdkContext(ctx, useCaseString);\n };\n var useElementsOrCustomCheckoutSdkContextWithUseCase = function useElementsOrCustomCheckoutSdkContextWithUseCase(useCaseString) {\n var customCheckoutSdkContext = React.useContext(CustomCheckoutSdkContext);\n var elementsContext = React.useContext(ElementsContext);\n\n if (customCheckoutSdkContext && elementsContext) {\n throw new Error(\"You cannot wrap the part of your app that \".concat(useCaseString, \" in both and providers.\"));\n }\n\n if (customCheckoutSdkContext) {\n return parseCustomCheckoutSdkContext(customCheckoutSdkContext, useCaseString);\n }\n\n return parseElementsContext(elementsContext, useCaseString);\n };\n var useCustomCheckout = function useCustomCheckout() {\n // ensure it's in CustomCheckoutProvider\n useCustomCheckoutSdkContextWithUseCase('calls useCustomCheckout()');\n var ctx = React.useContext(CustomCheckoutContext);\n\n if (!ctx) {\n throw new Error('Could not find CustomCheckout Context; You need to wrap the part of your app that calls useCustomCheckout() in an provider.');\n }\n\n return ctx;\n };\n\n var capitalized = function capitalized(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n };\n\n var createElementComponent = function createElementComponent(type, isServer) {\n var displayName = \"\".concat(capitalized(type), \"Element\");\n\n var ClientElement = function ClientElement(_ref) {\n var id = _ref.id,\n className = _ref.className,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n onBlur = _ref.onBlur,\n onFocus = _ref.onFocus,\n onReady = _ref.onReady,\n onChange = _ref.onChange,\n onEscape = _ref.onEscape,\n onClick = _ref.onClick,\n onLoadError = _ref.onLoadError,\n onLoaderStart = _ref.onLoaderStart,\n onNetworksChange = _ref.onNetworksChange,\n onConfirm = _ref.onConfirm,\n onCancel = _ref.onCancel,\n onShippingAddressChange = _ref.onShippingAddressChange,\n onShippingRateChange = _ref.onShippingRateChange;\n var ctx = useElementsOrCustomCheckoutSdkContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n var elements = 'elements' in ctx ? ctx.elements : null;\n var customCheckoutSdk = 'customCheckoutSdk' in ctx ? ctx.customCheckoutSdk : null;\n\n var _React$useState = React.useState(null),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n element = _React$useState2[0],\n setElement = _React$useState2[1];\n\n var elementRef = React.useRef(null);\n var domNode = React.useRef(null); // For every event where the merchant provides a callback, call element.on\n // with that callback. If the merchant ever changes the callback, removes\n // the old callback with element.off and then call element.on with the new one.\n\n useAttachEvent(element, 'blur', onBlur);\n useAttachEvent(element, 'focus', onFocus);\n useAttachEvent(element, 'escape', onEscape);\n useAttachEvent(element, 'click', onClick);\n useAttachEvent(element, 'loaderror', onLoadError);\n useAttachEvent(element, 'loaderstart', onLoaderStart);\n useAttachEvent(element, 'networkschange', onNetworksChange);\n useAttachEvent(element, 'confirm', onConfirm);\n useAttachEvent(element, 'cancel', onCancel);\n useAttachEvent(element, 'shippingaddresschange', onShippingAddressChange);\n useAttachEvent(element, 'shippingratechange', onShippingRateChange);\n useAttachEvent(element, 'change', onChange);\n var readyCallback;\n\n if (onReady) {\n if (type === 'expressCheckout') {\n // Passes through the event, which includes visible PM types\n readyCallback = onReady;\n } else {\n // For other Elements, pass through the Element itself.\n readyCallback = function readyCallback() {\n onReady(element);\n };\n }\n }\n\n useAttachEvent(element, 'ready', readyCallback);\n React.useLayoutEffect(function () {\n if (elementRef.current === null && domNode.current !== null && (elements || customCheckoutSdk)) {\n var newElement = null;\n\n if (customCheckoutSdk) {\n newElement = customCheckoutSdk.createElement(type, options);\n } else if (elements) {\n newElement = elements.create(type, options);\n } // Store element in a ref to ensure it's _immediately_ available in cleanup hooks in StrictMode\n\n\n elementRef.current = newElement; // Store element in state to facilitate event listener attachment\n\n setElement(newElement);\n\n if (newElement) {\n newElement.mount(domNode.current);\n }\n }\n }, [elements, customCheckoutSdk, options]);\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (!elementRef.current) {\n return;\n }\n\n var updates = extractAllowedOptionsUpdates(options, prevOptions, ['paymentRequest']);\n\n if (updates) {\n elementRef.current.update(updates);\n }\n }, [options, prevOptions]);\n React.useLayoutEffect(function () {\n return function () {\n if (elementRef.current && typeof elementRef.current.destroy === 'function') {\n try {\n elementRef.current.destroy();\n elementRef.current = null;\n } catch (error) {// Do nothing\n }\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className,\n ref: domNode\n });\n }; // Only render the Element wrapper in a server environment.\n\n\n var ServerElement = function ServerElement(props) {\n useElementsOrCustomCheckoutSdkContextWithUseCase(\"mounts <\".concat(displayName, \">\"));\n var id = props.id,\n className = props.className;\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className\n });\n };\n\n var Element = isServer ? ServerElement : ClientElement;\n Element.propTypes = {\n id: PropTypes.string,\n className: PropTypes.string,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n onReady: PropTypes.func,\n onEscape: PropTypes.func,\n onClick: PropTypes.func,\n onLoadError: PropTypes.func,\n onLoaderStart: PropTypes.func,\n onNetworksChange: PropTypes.func,\n onConfirm: PropTypes.func,\n onCancel: PropTypes.func,\n onShippingAddressChange: PropTypes.func,\n onShippingRateChange: PropTypes.func,\n options: PropTypes.object\n };\n Element.displayName = displayName;\n Element.__elementType = type;\n return Element;\n };\n\n var isServer = typeof window === 'undefined';\n\n var EmbeddedCheckoutContext = /*#__PURE__*/React.createContext(null);\n EmbeddedCheckoutContext.displayName = 'EmbeddedCheckoutProviderContext';\n var useEmbeddedCheckoutContext = function useEmbeddedCheckoutContext() {\n var ctx = React.useContext(EmbeddedCheckoutContext);\n\n if (!ctx) {\n throw new Error(' must be used within ');\n }\n\n return ctx;\n };\n var INVALID_STRIPE_ERROR = 'Invalid prop `stripe` supplied to `EmbeddedCheckoutProvider`. We recommend using the `loadStripe` utility from `@stripe/stripe-js`. See https://stripe.com/docs/stripe-js/react#elements-props-stripe for details.';\n var EmbeddedCheckoutProvider = function EmbeddedCheckoutProvider(_ref) {\n var rawStripeProp = _ref.stripe,\n options = _ref.options,\n children = _ref.children;\n var parsed = React.useMemo(function () {\n return parseStripeProp(rawStripeProp, INVALID_STRIPE_ERROR);\n }, [rawStripeProp]);\n var embeddedCheckoutPromise = React.useRef(null);\n var loadedStripe = React.useRef(null);\n\n var _React$useState = React.useState({\n embeddedCheckout: null\n }),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n ctx = _React$useState2[0],\n setContext = _React$useState2[1];\n\n React.useEffect(function () {\n // Don't support any ctx updates once embeddedCheckout or stripe is set.\n if (loadedStripe.current || embeddedCheckoutPromise.current) {\n return;\n }\n\n var setStripeAndInitEmbeddedCheckout = function setStripeAndInitEmbeddedCheckout(stripe) {\n if (loadedStripe.current || embeddedCheckoutPromise.current) return;\n loadedStripe.current = stripe;\n embeddedCheckoutPromise.current = loadedStripe.current.initEmbeddedCheckout(options).then(function (embeddedCheckout) {\n setContext({\n embeddedCheckout: embeddedCheckout\n });\n });\n }; // For an async stripePromise, store it once resolved\n\n\n if (parsed.tag === 'async' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n parsed.stripePromise.then(function (stripe) {\n if (stripe) {\n setStripeAndInitEmbeddedCheckout(stripe);\n }\n });\n } else if (parsed.tag === 'sync' && !loadedStripe.current && (options.clientSecret || options.fetchClientSecret)) {\n // Or, handle a sync stripe instance going from null -> populated\n setStripeAndInitEmbeddedCheckout(parsed.stripe);\n }\n }, [parsed, options, ctx, loadedStripe]);\n React.useEffect(function () {\n // cleanup on unmount\n return function () {\n // If embedded checkout is fully initialized, destroy it.\n if (ctx.embeddedCheckout) {\n embeddedCheckoutPromise.current = null;\n ctx.embeddedCheckout.destroy();\n } else if (embeddedCheckoutPromise.current) {\n // If embedded checkout is still initializing, destroy it once\n // it's done. This could be caused by unmounting very quickly\n // after mounting.\n embeddedCheckoutPromise.current.then(function () {\n embeddedCheckoutPromise.current = null;\n\n if (ctx.embeddedCheckout) {\n ctx.embeddedCheckout.destroy();\n }\n });\n }\n };\n }, [ctx.embeddedCheckout]); // Attach react-stripe-js version to stripe.js instance\n\n React.useEffect(function () {\n registerWithStripeJs(loadedStripe);\n }, [loadedStripe]); // Warn on changes to stripe prop.\n // The stripe prop value can only go from null to non-null once and\n // can't be changed after that.\n\n var prevStripe = usePrevious(rawStripeProp);\n React.useEffect(function () {\n if (prevStripe !== null && prevStripe !== rawStripeProp) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the `stripe` prop after setting it.');\n }\n }, [prevStripe, rawStripeProp]); // Warn on changes to options.\n\n var prevOptions = usePrevious(options);\n React.useEffect(function () {\n if (prevOptions == null) {\n return;\n }\n\n if (options == null) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot unset options after setting them.');\n return;\n }\n\n if (options.clientSecret === undefined && options.fetchClientSecret === undefined) {\n console.warn('Invalid props passed to EmbeddedCheckoutProvider: You must provide one of either `options.fetchClientSecret` or `options.clientSecret`.');\n }\n\n if (prevOptions.clientSecret != null && options.clientSecret !== prevOptions.clientSecret) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the client secret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n }\n\n if (prevOptions.fetchClientSecret != null && options.fetchClientSecret !== prevOptions.fetchClientSecret) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change fetchClientSecret after setting it. Unmount and create a new instance of EmbeddedCheckoutProvider instead.');\n }\n\n if (prevOptions.onComplete != null && options.onComplete !== prevOptions.onComplete) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onComplete option after setting it.');\n }\n\n if (prevOptions.onShippingDetailsChange != null && options.onShippingDetailsChange !== prevOptions.onShippingDetailsChange) {\n console.warn('Unsupported prop change on EmbeddedCheckoutProvider: You cannot change the onShippingDetailsChange option after setting it.');\n }\n }, [prevOptions, options]);\n return /*#__PURE__*/React.createElement(EmbeddedCheckoutContext.Provider, {\n value: ctx\n }, children);\n };\n\n var EmbeddedCheckoutClientElement = function EmbeddedCheckoutClientElement(_ref) {\n var id = _ref.id,\n className = _ref.className;\n\n var _useEmbeddedCheckoutC = useEmbeddedCheckoutContext(),\n embeddedCheckout = _useEmbeddedCheckoutC.embeddedCheckout;\n\n var isMounted = React.useRef(false);\n var domNode = React.useRef(null);\n React.useLayoutEffect(function () {\n if (!isMounted.current && embeddedCheckout && domNode.current !== null) {\n embeddedCheckout.mount(domNode.current);\n isMounted.current = true;\n } // Clean up on unmount\n\n\n return function () {\n if (isMounted.current && embeddedCheckout) {\n try {\n embeddedCheckout.unmount();\n isMounted.current = false;\n } catch (e) {// Do nothing.\n // Parent effects are destroyed before child effects, so\n // in cases where both the EmbeddedCheckoutProvider and\n // the EmbeddedCheckout component are removed at the same\n // time, the embeddedCheckout instance will be destroyed,\n // which causes an error when calling unmount.\n }\n }\n };\n }, [embeddedCheckout]);\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: domNode,\n id: id,\n className: className\n });\n }; // Only render the wrapper in a server environment.\n\n\n var EmbeddedCheckoutServerElement = function EmbeddedCheckoutServerElement(_ref2) {\n var id = _ref2.id,\n className = _ref2.className;\n // Validate that we are in the right context by calling useEmbeddedCheckoutContext.\n useEmbeddedCheckoutContext();\n return /*#__PURE__*/React.createElement(\"div\", {\n id: id,\n className: className\n });\n };\n\n var EmbeddedCheckout = isServer ? EmbeddedCheckoutServerElement : EmbeddedCheckoutClientElement;\n\n /**\n * @docs https://stripe.com/docs/stripe-js/react#usestripe-hook\n */\n\n var useStripe = function useStripe() {\n var _useElementsOrCustomC = useElementsOrCustomCheckoutSdkContextWithUseCase('calls useStripe()'),\n stripe = _useElementsOrCustomC.stripe;\n\n return stripe;\n };\n\n /**\n * Requires beta access:\n * Contact [Stripe support](https://support.stripe.com/) for more information.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AuBankAccountElement = createElementComponent('auBankAccount', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardElement = createElementComponent('card', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardNumberElement = createElementComponent('cardNumber', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardExpiryElement = createElementComponent('cardExpiry', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var CardCvcElement = createElementComponent('cardCvc', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var FpxBankElement = createElementComponent('fpxBank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var IbanElement = createElementComponent('iban', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var IdealBankElement = createElementComponent('idealBank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var P24BankElement = createElementComponent('p24Bank', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var EpsBankElement = createElementComponent('epsBank', isServer);\n var PaymentElement = createElementComponent('payment', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var ExpressCheckoutElement = createElementComponent('expressCheckout', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var PaymentRequestButtonElement = createElementComponent('paymentRequestButton', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var LinkAuthenticationElement = createElementComponent('linkAuthentication', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AddressElement = createElementComponent('address', isServer);\n /**\n * @deprecated\n * Use `AddressElement` instead.\n *\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var ShippingAddressElement = createElementComponent('shippingAddress', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var PaymentMethodMessagingElement = createElementComponent('paymentMethodMessaging', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AffirmMessageElement = createElementComponent('affirmMessage', isServer);\n /**\n * @docs https://stripe.com/docs/stripe-js/react#element-components\n */\n\n var AfterpayClearpayMessageElement = createElementComponent('afterpayClearpayMessage', isServer);\n\n exports.AddressElement = AddressElement;\n exports.AffirmMessageElement = AffirmMessageElement;\n exports.AfterpayClearpayMessageElement = AfterpayClearpayMessageElement;\n exports.AuBankAccountElement = AuBankAccountElement;\n exports.CardCvcElement = CardCvcElement;\n exports.CardElement = CardElement;\n exports.CardExpiryElement = CardExpiryElement;\n exports.CardNumberElement = CardNumberElement;\n exports.CustomCheckoutProvider = CustomCheckoutProvider;\n exports.Elements = Elements;\n exports.ElementsConsumer = ElementsConsumer;\n exports.EmbeddedCheckout = EmbeddedCheckout;\n exports.EmbeddedCheckoutProvider = EmbeddedCheckoutProvider;\n exports.EpsBankElement = EpsBankElement;\n exports.ExpressCheckoutElement = ExpressCheckoutElement;\n exports.FpxBankElement = FpxBankElement;\n exports.IbanElement = IbanElement;\n exports.IdealBankElement = IdealBankElement;\n exports.LinkAuthenticationElement = LinkAuthenticationElement;\n exports.P24BankElement = P24BankElement;\n exports.PaymentElement = PaymentElement;\n exports.PaymentMethodMessagingElement = PaymentMethodMessagingElement;\n exports.PaymentRequestButtonElement = PaymentRequestButtonElement;\n exports.ShippingAddressElement = ShippingAddressElement;\n exports.useCustomCheckout = useCustomCheckout;\n exports.useElements = useElements;\n exports.useStripe = useStripe;\n\n}));\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright OpenJS 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 size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\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/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\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 nativeObjectToString = objectProto.toString;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeMax = Math.max,\n nativeNow = Date.now;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\n/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\n/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\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 `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\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 array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\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 array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an 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 an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Checks if `value` is classified as a `Function` object.\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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\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 valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\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 != null && (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 != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\n/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = mergeWith;\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 &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.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'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.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'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>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","// 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\tid: moduleId,\n\t\tloaded: false,\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// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\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__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"d082d017\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\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))","var inProgress = {};\nvar dataWebpackPrefix = \"card-deck-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// 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__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkcard_deck_app\"] = self[\"webpackChunkcard_deck_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","function _taggedTemplateLiteral(e, t) {\n return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, {\n raw: {\n value: Object.freeze(t)\n }\n }));\n}\nexport { _taggedTemplateLiteral as default };","var isDevelopment = false;\n\n/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n return document.styleSheets[i];\n }\n } // this function should always return with a value\n // TS can't understand it though so we make it stop complaining here\n\n\n return undefined;\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? !isDevelopment : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n this.tags.forEach(function (tag) {\n var _tag$parentNode;\n\n return (_tag$parentNode = tag.parentNode) == null ? void 0 : _tag$parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function\n /*: EmotionCache */\ncreateCache(options\n/*: Options */\n) {\n var key = options.key;\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node\n /*: HTMLStyleElement */\n ) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n var inserted = {};\n var container;\n /* : Node */\n\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node\n /*: HTMLStyleElement */\n ) {\n var attrib = node.getAttribute(\"data-emotion\").split(' ');\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n /*: (\n selector: string,\n serialized: SerializedStyles,\n sheet: StyleSheet,\n shouldCache: boolean\n ) => string | void */\n\n\n var omnipresentPlugins = [compat, removeLabel];\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function\n /*: void */\n insert(selector\n /*: string */\n , serialized\n /*: SerializedStyles */\n , sheet\n /*: StyleSheet */\n , shouldCache\n /*: boolean */\n ) {\n currentSheet = sheet;\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache\n /*: EmotionCache */\n = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","var weakMemoize = function weakMemoize(func) {\n var cache = new WeakMap();\n return function (arg) {\n if (cache.has(arg)) {\n // Use non-null assertion because we just checked that the cache `has` it\n // This allows us to remove `undefined` from the return value\n return cache.get(arg);\n }\n\n var ret = func(arg);\n cache.set(arg, ret);\n return ret;\n };\n};\n\nexport { weakMemoize as default };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar isDevelopment = false;\n\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n var componentSelector = interpolation;\n\n if (componentSelector.__emotion_styles !== undefined) {\n\n return componentSelector;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n var keyframes = interpolation;\n\n if (keyframes.anim === 1) {\n cursor = {\n name: keyframes.name,\n styles: keyframes.styles,\n next: cursor\n };\n return keyframes.name;\n }\n\n var serializedStyles = interpolation;\n\n if (serializedStyles.styles !== undefined) {\n var next = serializedStyles.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = serializedStyles.styles + \";\";\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n }\n\n break;\n }\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n var asString = interpolation;\n\n if (registered == null) {\n return asString;\n }\n\n var cached = registered[asString];\n return cached !== undefined ? cached : asString;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var key in obj) {\n var value = obj[key];\n\n if (typeof value !== 'object') {\n var asString = value;\n\n if (registered != null && registered[asString] !== undefined) {\n string += key + \"{\" + registered[asString] + \"}\";\n } else if (isProcessableValue(asString)) {\n string += processStyleName(key) + \":\" + processStyleValue(key, asString) + \";\";\n }\n } else {\n if (key === 'NO_COMPONENT_SELECTOR' && isDevelopment) {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(key) + \":\" + processStyleValue(key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n\n string += key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nfunction serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n var asTemplateStringsArr = strings;\n\n styles += asTemplateStringsArr[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n var templateStringsArr = strings;\n\n styles += templateStringsArr[i];\n }\n }\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n}\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isDevelopment = false;\n\n/* import { type EmotionCache } from '@emotion/utils' */\nvar EmotionCacheContext\n/*: React.Context */\n= /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache()\n/*: EmotionCache | null*/\n{\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache\n/* > */\n(func\n/*: (props: Props, cache: EmotionCache, ref: Ref) => React.Node */\n)\n/*: React.AbstractComponent */\n{\n return /*#__PURE__*/forwardRef(function (props\n /*: Props */\n , ref\n /*: Ref */\n ) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme\n/*: Object */\n, theme\n/*: Object | (Object => Object) */\n) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n return mergedTheme;\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\n/*\ntype ThemeProviderProps = {\n theme: Object | (Object => Object),\n children: React.Node\n}\n*/\n\nvar ThemeProvider = function ThemeProvider(props\n/*: ThemeProviderProps */\n) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme\n/* */\n(Component\n/*: React.AbstractComponent */\n)\n/*: React.AbstractComponent<$Diff> */\n{\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n };\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar hasOwn = {}.hasOwnProperty;\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n\n var newProps\n /*: any */\n = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // Runtime labeling is an opt-in feature because:\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(\n/* */\nfunction (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwn.call(props, key) && key !== 'css' && key !== typePropName && (!isDevelopment )) {\n newProps[key] = props[key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwn as h, isDevelopment as i, useTheme as u, withEmotionCache as w };\n","var isBrowser = true;\n\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","import { h as hasOwn, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isDevelopment } from './emotion-element-5486c51c.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-5486c51c.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar jsx\n/*: typeof React.createElement */\n= function jsx\n/*: typeof React.createElement */\n(type\n/*: React.ElementType */\n, props\n/*: Object */\n) {\n var args = arguments;\n\n if (props == null || !hasOwn.call(props, 'css')) {\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global\n/*: React.AbstractComponent<\nGlobalProps\n> */\n= /* #__PURE__ */withEmotionCache(function (props\n/*: GlobalProps */\n, cache) {\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false;\n var node\n /*: HTMLStyleElement | null*/\n = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\n/* import type { Interpolation, SerializedStyles } from '@emotion/utils' */\n\nfunction css()\n/*: SerializedStyles */\n{\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\n/*\ntype Keyframes = {|\n name: string,\n styles: string,\n anim: 1,\n toString: () => string\n|} & string\n*/\n\nvar keyframes = function\n /*: Keyframes */\nkeyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name;\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\n/*\ntype ClassNameArg =\n | string\n | boolean\n | { [key: string]: boolean }\n | Array\n | null\n | void\n*/\n\nvar classnames = function\n /*: string */\nclassnames(args\n/*: Array */\n) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered\n/*: Object */\n, css\n/*: (...args: Array) => string */\n, className\n/*: string */\n) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n/*\ntype Props = {\n children: ({\n css: (...args: any) => string,\n cx: (...args: Array) => string,\n theme: Object\n }) => React.Node\n} */\n\n\nvar ClassNames\n/*: React.AbstractComponent*/\n= /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && isDevelopment) {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && isDevelopment) {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import { Global } from \"@emotion/react\"\n\nconst css = String.raw\n\nconst vhPolyfill = css`\n :root,\n :host {\n --chakra-vh: 100vh;\n }\n\n @supports (height: -webkit-fill-available) {\n :root,\n :host {\n --chakra-vh: -webkit-fill-available;\n }\n }\n\n @supports (height: -moz-fill-available) {\n :root,\n :host {\n --chakra-vh: -moz-fill-available;\n }\n }\n\n @supports (height: 100dvh) {\n :root,\n :host {\n --chakra-vh: 100dvh;\n }\n }\n`\n\nexport const CSSPolyfill = () => \n\nexport type CSSResetProps = {\n /**\n * The selector to scope the css reset styles to.\n */\n scope?: string\n}\n\nexport const CSSReset = ({ scope = \"\" }: CSSResetProps) => (\n \n)\n\nexport default CSSReset\n","import {\n createContext as createReactContext,\n useContext as useReactContext,\n} from \"react\"\n\nexport interface CreateContextOptions {\n strict?: boolean\n hookName?: string\n providerName?: string\n errorMessage?: string\n name?: string\n defaultValue?: T\n}\n\nexport type CreateContextReturn = [\n React.Provider,\n () => T,\n React.Context,\n]\n\nfunction getErrorMessage(hook: string, provider: string) {\n return `${hook} returned \\`undefined\\`. Seems you forgot to wrap component within ${provider}`\n}\n\nexport function createContext(options: CreateContextOptions = {}) {\n const {\n name,\n strict = true,\n hookName = \"useContext\",\n providerName = \"Provider\",\n errorMessage,\n defaultValue,\n } = options\n\n const Context = createReactContext(defaultValue)\n\n Context.displayName = name\n\n function useContext() {\n const context = useReactContext(Context)\n\n if (!context && strict) {\n const error = new Error(\n errorMessage ?? getErrorMessage(hookName, providerName),\n )\n error.name = \"ContextError\"\n Error.captureStackTrace?.(error, useContext)\n throw error\n }\n\n return context\n }\n\n return [Context.Provider, useContext, Context] as CreateContextReturn\n}\n","import { createContext } from \"@chakra-ui/react-context\"\n\ninterface PortalManagerContext {\n zIndex?: number\n}\n\nconst [PortalManagerContextProvider, usePortalManager] =\n createContext({\n strict: false,\n name: \"PortalManagerContext\",\n })\n\nexport { usePortalManager }\n\nexport interface PortalManagerProps {\n children?: React.ReactNode\n /**\n * [Z-Index war] If your has multiple elements\n * with z-index clashing, you might need to apply a z-index to the Portal manager\n */\n zIndex?: number\n}\n\nexport function PortalManager(props: PortalManagerProps) {\n const { children, zIndex } = props\n return (\n \n {children}\n \n )\n}\n\nPortalManager.displayName = \"PortalManager\"\n","import { createContext, useContext } from \"react\"\nimport { ColorModeContextType } from \"./color-mode-types\"\n\nexport const ColorModeContext = createContext({} as ColorModeContextType)\n\nColorModeContext.displayName = \"ColorModeContext\"\n\n/**\n * React hook that reads from `ColorModeProvider` context\n * Returns the color mode and function to toggle it\n */\nexport function useColorMode() {\n const context = useContext(ColorModeContext)\n if (context === undefined) {\n throw new Error(\"useColorMode must be used within a ColorModeProvider\")\n }\n return context\n}\n\n/**\n * Change value based on color mode.\n *\n * @param light the light mode value\n * @param dark the dark mode value\n *\n * @example\n *\n * ```js\n * const Icon = useColorModeValue(MoonIcon, SunIcon)\n * ```\n */\nexport function useColorModeValue(\n light: TLight,\n dark: TDark,\n) {\n const { colorMode } = useColorMode()\n return colorMode === \"dark\" ? dark : light\n}\n","// src/index.ts\nvar cx = (...classNames) => classNames.filter(Boolean).join(\" \");\nfunction isDev() {\n return process.env.NODE_ENV !== \"production\";\n}\nfunction isObject(value) {\n const type = typeof value;\n return value != null && (type === \"object\" || type === \"function\") && !Array.isArray(value);\n}\nvar warn = (options) => {\n const { condition, message } = options;\n if (condition && isDev()) {\n console.warn(message);\n }\n};\nfunction runIfFn(valueOrFn, ...args) {\n return isFunction(valueOrFn) ? valueOrFn(...args) : valueOrFn;\n}\nvar isFunction = (value) => typeof value === \"function\";\nvar dataAttr = (condition) => condition ? \"\" : void 0;\nvar ariaAttr = (condition) => condition ? true : void 0;\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}\nexport {\n ariaAttr,\n callAll,\n callAllHandlers,\n cx,\n dataAttr,\n isObject,\n runIfFn,\n warn\n};\n","// src/utils/create-transform.ts\nimport { isObject } from \"@chakra-ui/shared-utils\";\nvar isImportant = (value) => /!(important)?$/.test(value);\nvar withoutImportant = (value) => typeof value === \"string\" ? value.replace(/!(important)?$/, \"\").trim() : value;\nvar tokenToCSSVar = (scale, value) => (theme) => {\n const valueStr = String(value);\n const important = isImportant(valueStr);\n const valueWithoutImportant = withoutImportant(valueStr);\n const key = scale ? `${scale}.${valueWithoutImportant}` : valueWithoutImportant;\n let transformed = isObject(theme.__cssMap) && key in theme.__cssMap ? theme.__cssMap[key].varRef : value;\n transformed = withoutImportant(transformed);\n return important ? `${transformed} !important` : transformed;\n};\nfunction createTransform(options) {\n const { scale, transform: transform2, compose } = options;\n const fn = (value, theme) => {\n var _a;\n const _value = tokenToCSSVar(scale, value)(theme);\n let result = (_a = transform2 == null ? void 0 : transform2(_value, theme)) != null ? _a : _value;\n if (compose) {\n result = compose(result, theme);\n }\n return result;\n };\n return fn;\n}\n\n// src/utils/pipe.ts\nvar pipe = (...fns) => (v) => fns.reduce((a, b) => b(a), v);\n\n// src/utils/prop-config.ts\nfunction toConfig(scale, transform2) {\n return (property) => {\n const result = { property, scale };\n result.transform = createTransform({\n scale,\n transform: transform2\n });\n return result;\n };\n}\nvar getRtl = ({ rtl, ltr }) => (theme) => theme.direction === \"rtl\" ? rtl : ltr;\nfunction logical(options) {\n const { property, scale, transform: transform2 } = options;\n return {\n scale,\n property: getRtl(property),\n transform: scale ? createTransform({\n scale,\n compose: transform2\n }) : transform2\n };\n}\n\n// src/utils/templates.ts\nvar transformTemplate = [\n \"rotate(var(--chakra-rotate, 0))\",\n \"scaleX(var(--chakra-scale-x, 1))\",\n \"scaleY(var(--chakra-scale-y, 1))\",\n \"skewX(var(--chakra-skew-x, 0))\",\n \"skewY(var(--chakra-skew-y, 0))\"\n];\nfunction getTransformTemplate() {\n return [\n \"translateX(var(--chakra-translate-x, 0))\",\n \"translateY(var(--chakra-translate-y, 0))\",\n ...transformTemplate\n ].join(\" \");\n}\nfunction getTransformGpuTemplate() {\n return [\n \"translate3d(var(--chakra-translate-x, 0), var(--chakra-translate-y, 0), 0)\",\n ...transformTemplate\n ].join(\" \");\n}\nvar filterTemplate = {\n \"--chakra-blur\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-brightness\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-contrast\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-grayscale\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-hue-rotate\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-invert\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-saturate\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-sepia\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-drop-shadow\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n filter: [\n \"var(--chakra-blur)\",\n \"var(--chakra-brightness)\",\n \"var(--chakra-contrast)\",\n \"var(--chakra-grayscale)\",\n \"var(--chakra-hue-rotate)\",\n \"var(--chakra-invert)\",\n \"var(--chakra-saturate)\",\n \"var(--chakra-sepia)\",\n \"var(--chakra-drop-shadow)\"\n ].join(\" \")\n};\nvar backdropFilterTemplate = {\n backdropFilter: [\n \"var(--chakra-backdrop-blur)\",\n \"var(--chakra-backdrop-brightness)\",\n \"var(--chakra-backdrop-contrast)\",\n \"var(--chakra-backdrop-grayscale)\",\n \"var(--chakra-backdrop-hue-rotate)\",\n \"var(--chakra-backdrop-invert)\",\n \"var(--chakra-backdrop-opacity)\",\n \"var(--chakra-backdrop-saturate)\",\n \"var(--chakra-backdrop-sepia)\"\n ].join(\" \"),\n \"--chakra-backdrop-blur\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-brightness\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-contrast\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-grayscale\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-hue-rotate\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-invert\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-opacity\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-saturate\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-backdrop-sepia\": \"var(--chakra-empty,/*!*/ /*!*/)\"\n};\nfunction getRingTemplate(value) {\n return {\n \"--chakra-ring-offset-shadow\": `var(--chakra-ring-inset) 0 0 0 var(--chakra-ring-offset-width) var(--chakra-ring-offset-color)`,\n \"--chakra-ring-shadow\": `var(--chakra-ring-inset) 0 0 0 calc(var(--chakra-ring-width) + var(--chakra-ring-offset-width)) var(--chakra-ring-color)`,\n \"--chakra-ring-width\": value,\n boxShadow: [\n `var(--chakra-ring-offset-shadow)`,\n `var(--chakra-ring-shadow)`,\n `var(--chakra-shadow, 0 0 #0000)`\n ].join(\", \")\n };\n}\nvar flexDirectionTemplate = {\n \"row-reverse\": {\n space: \"--chakra-space-x-reverse\",\n divide: \"--chakra-divide-x-reverse\"\n },\n \"column-reverse\": {\n space: \"--chakra-space-y-reverse\",\n divide: \"--chakra-divide-y-reverse\"\n }\n};\n\n// src/utils/parse-gradient.ts\nvar directionMap = {\n \"to-t\": \"to top\",\n \"to-tr\": \"to top right\",\n \"to-r\": \"to right\",\n \"to-br\": \"to bottom right\",\n \"to-b\": \"to bottom\",\n \"to-bl\": \"to bottom left\",\n \"to-l\": \"to left\",\n \"to-tl\": \"to top left\"\n};\nvar valueSet = new Set(Object.values(directionMap));\nvar globalSet = /* @__PURE__ */ new Set([\n \"none\",\n \"-moz-initial\",\n \"inherit\",\n \"initial\",\n \"revert\",\n \"unset\"\n]);\nvar trimSpace = (str) => str.trim();\nfunction parseGradient(value, theme) {\n if (value == null || globalSet.has(value))\n return value;\n const prevent = isCSSFunction(value) || globalSet.has(value);\n if (!prevent)\n return `url('${value}')`;\n const regex = /(^[a-z-A-Z]+)\\((.*)\\)/g;\n const results = regex.exec(value);\n const type = results == null ? void 0 : results[1];\n const values = results == null ? void 0 : results[2];\n if (!type || !values)\n return value;\n const _type = type.includes(\"-gradient\") ? type : `${type}-gradient`;\n const [maybeDirection, ...stops] = values.split(\",\").map(trimSpace).filter(Boolean);\n if ((stops == null ? void 0 : stops.length) === 0)\n return value;\n const direction = maybeDirection in directionMap ? directionMap[maybeDirection] : maybeDirection;\n stops.unshift(direction);\n const _values = stops.map((stop) => {\n if (valueSet.has(stop))\n return stop;\n const firstStop = stop.indexOf(\" \");\n const [_color, _stop] = firstStop !== -1 ? [stop.substr(0, firstStop), stop.substr(firstStop + 1)] : [stop];\n const _stopOrFunc = isCSSFunction(_stop) ? _stop : _stop && _stop.split(\" \");\n const key = `colors.${_color}`;\n const color2 = key in theme.__cssMap ? theme.__cssMap[key].varRef : _color;\n return _stopOrFunc ? [\n color2,\n ...Array.isArray(_stopOrFunc) ? _stopOrFunc : [_stopOrFunc]\n ].join(\" \") : color2;\n });\n return `${_type}(${_values.join(\", \")})`;\n}\nvar isCSSFunction = (value) => {\n return typeof value === \"string\" && value.includes(\"(\") && value.includes(\")\");\n};\nvar gradientTransform = (value, theme) => parseGradient(value, theme != null ? theme : {});\n\n// src/utils/transform-functions.ts\nfunction isCssVar(value) {\n return /^var\\(--.+\\)$/.test(value);\n}\nvar analyzeCSSValue = (value) => {\n const num = parseFloat(value.toString());\n const unit = value.toString().replace(String(num), \"\");\n return { unitless: !unit, value: num, unit };\n};\nvar wrap = (str) => (value) => `${str}(${value})`;\nvar transformFunctions = {\n filter(value) {\n return value !== \"auto\" ? value : filterTemplate;\n },\n backdropFilter(value) {\n return value !== \"auto\" ? value : backdropFilterTemplate;\n },\n ring(value) {\n return getRingTemplate(transformFunctions.px(value));\n },\n bgClip(value) {\n return value === \"text\" ? { color: \"transparent\", backgroundClip: \"text\" } : { backgroundClip: value };\n },\n transform(value) {\n if (value === \"auto\")\n return getTransformTemplate();\n if (value === \"auto-gpu\")\n return getTransformGpuTemplate();\n return value;\n },\n vh(value) {\n return value === \"$100vh\" ? \"var(--chakra-vh)\" : value;\n },\n px(value) {\n if (value == null)\n return value;\n const { unitless } = analyzeCSSValue(value);\n return unitless || typeof value === \"number\" ? `${value}px` : value;\n },\n fraction(value) {\n return !(typeof value === \"number\") || value > 1 ? value : `${value * 100}%`;\n },\n float(value, theme) {\n const map = { left: \"right\", right: \"left\" };\n return theme.direction === \"rtl\" ? map[value] : value;\n },\n degree(value) {\n if (isCssVar(value) || value == null)\n return value;\n const unitless = typeof value === \"string\" && !value.endsWith(\"deg\");\n return typeof value === \"number\" || unitless ? `${value}deg` : value;\n },\n gradient: gradientTransform,\n blur: wrap(\"blur\"),\n opacity: wrap(\"opacity\"),\n brightness: wrap(\"brightness\"),\n contrast: wrap(\"contrast\"),\n dropShadow: wrap(\"drop-shadow\"),\n grayscale: wrap(\"grayscale\"),\n hueRotate: (value) => wrap(\"hue-rotate\")(transformFunctions.degree(value)),\n invert: wrap(\"invert\"),\n saturate: wrap(\"saturate\"),\n sepia: wrap(\"sepia\"),\n bgImage(value) {\n if (value == null)\n return value;\n const prevent = isCSSFunction(value) || globalSet.has(value);\n return !prevent ? `url(${value})` : value;\n },\n outline(value) {\n const isNoneOrZero = String(value) === \"0\" || String(value) === \"none\";\n return value !== null && isNoneOrZero ? { outline: \"2px solid transparent\", outlineOffset: \"2px\" } : { outline: value };\n },\n flexDirection(value) {\n var _a;\n const { space: space2, divide: divide2 } = (_a = flexDirectionTemplate[value]) != null ? _a : {};\n const result = { flexDirection: value };\n if (space2)\n result[space2] = 1;\n if (divide2)\n result[divide2] = 1;\n return result;\n }\n};\n\n// src/utils/index.ts\nvar t = {\n borderWidths: toConfig(\"borderWidths\"),\n borderStyles: toConfig(\"borderStyles\"),\n colors: toConfig(\"colors\"),\n borders: toConfig(\"borders\"),\n gradients: toConfig(\"gradients\", transformFunctions.gradient),\n radii: toConfig(\"radii\", transformFunctions.px),\n space: toConfig(\"space\", pipe(transformFunctions.vh, transformFunctions.px)),\n spaceT: toConfig(\"space\", pipe(transformFunctions.vh, transformFunctions.px)),\n degreeT(property) {\n return { property, transform: transformFunctions.degree };\n },\n prop(property, scale, transform2) {\n return {\n property,\n scale,\n ...scale && {\n transform: createTransform({ scale, transform: transform2 })\n }\n };\n },\n propT(property, transform2) {\n return { property, transform: transform2 };\n },\n sizes: toConfig(\"sizes\", pipe(transformFunctions.vh, transformFunctions.px)),\n sizesT: toConfig(\"sizes\", pipe(transformFunctions.vh, transformFunctions.fraction)),\n shadows: toConfig(\"shadows\"),\n logical,\n blur: toConfig(\"blur\", transformFunctions.blur)\n};\n\n// src/config/background.ts\nvar background = {\n background: t.colors(\"background\"),\n backgroundColor: t.colors(\"backgroundColor\"),\n backgroundImage: t.gradients(\"backgroundImage\"),\n backgroundSize: true,\n backgroundPosition: true,\n backgroundRepeat: true,\n backgroundAttachment: true,\n backgroundClip: { transform: transformFunctions.bgClip },\n bgSize: t.prop(\"backgroundSize\"),\n bgPosition: t.prop(\"backgroundPosition\"),\n bg: t.colors(\"background\"),\n bgColor: t.colors(\"backgroundColor\"),\n bgPos: t.prop(\"backgroundPosition\"),\n bgRepeat: t.prop(\"backgroundRepeat\"),\n bgAttachment: t.prop(\"backgroundAttachment\"),\n bgGradient: t.gradients(\"backgroundImage\"),\n bgClip: { transform: transformFunctions.bgClip }\n};\nObject.assign(background, {\n bgImage: background.backgroundImage,\n bgImg: background.backgroundImage\n});\n\n// src/config/border.ts\nvar border = {\n border: t.borders(\"border\"),\n borderWidth: t.borderWidths(\"borderWidth\"),\n borderStyle: t.borderStyles(\"borderStyle\"),\n borderColor: t.colors(\"borderColor\"),\n borderRadius: t.radii(\"borderRadius\"),\n borderTop: t.borders(\"borderTop\"),\n borderBlockStart: t.borders(\"borderBlockStart\"),\n borderTopLeftRadius: t.radii(\"borderTopLeftRadius\"),\n borderStartStartRadius: t.logical({\n scale: \"radii\",\n property: {\n ltr: \"borderTopLeftRadius\",\n rtl: \"borderTopRightRadius\"\n }\n }),\n borderEndStartRadius: t.logical({\n scale: \"radii\",\n property: {\n ltr: \"borderBottomLeftRadius\",\n rtl: \"borderBottomRightRadius\"\n }\n }),\n borderTopRightRadius: t.radii(\"borderTopRightRadius\"),\n borderStartEndRadius: t.logical({\n scale: \"radii\",\n property: {\n ltr: \"borderTopRightRadius\",\n rtl: \"borderTopLeftRadius\"\n }\n }),\n borderEndEndRadius: t.logical({\n scale: \"radii\",\n property: {\n ltr: \"borderBottomRightRadius\",\n rtl: \"borderBottomLeftRadius\"\n }\n }),\n borderRight: t.borders(\"borderRight\"),\n borderInlineEnd: t.borders(\"borderInlineEnd\"),\n borderBottom: t.borders(\"borderBottom\"),\n borderBlockEnd: t.borders(\"borderBlockEnd\"),\n borderBottomLeftRadius: t.radii(\"borderBottomLeftRadius\"),\n borderBottomRightRadius: t.radii(\"borderBottomRightRadius\"),\n borderLeft: t.borders(\"borderLeft\"),\n borderInlineStart: {\n property: \"borderInlineStart\",\n scale: \"borders\"\n },\n borderInlineStartRadius: t.logical({\n scale: \"radii\",\n property: {\n ltr: [\"borderTopLeftRadius\", \"borderBottomLeftRadius\"],\n rtl: [\"borderTopRightRadius\", \"borderBottomRightRadius\"]\n }\n }),\n borderInlineEndRadius: t.logical({\n scale: \"radii\",\n property: {\n ltr: [\"borderTopRightRadius\", \"borderBottomRightRadius\"],\n rtl: [\"borderTopLeftRadius\", \"borderBottomLeftRadius\"]\n }\n }),\n borderX: t.borders([\"borderLeft\", \"borderRight\"]),\n borderInline: t.borders(\"borderInline\"),\n borderY: t.borders([\"borderTop\", \"borderBottom\"]),\n borderBlock: t.borders(\"borderBlock\"),\n borderTopWidth: t.borderWidths(\"borderTopWidth\"),\n borderBlockStartWidth: t.borderWidths(\"borderBlockStartWidth\"),\n borderTopColor: t.colors(\"borderTopColor\"),\n borderBlockStartColor: t.colors(\"borderBlockStartColor\"),\n borderTopStyle: t.borderStyles(\"borderTopStyle\"),\n borderBlockStartStyle: t.borderStyles(\"borderBlockStartStyle\"),\n borderBottomWidth: t.borderWidths(\"borderBottomWidth\"),\n borderBlockEndWidth: t.borderWidths(\"borderBlockEndWidth\"),\n borderBottomColor: t.colors(\"borderBottomColor\"),\n borderBlockEndColor: t.colors(\"borderBlockEndColor\"),\n borderBottomStyle: t.borderStyles(\"borderBottomStyle\"),\n borderBlockEndStyle: t.borderStyles(\"borderBlockEndStyle\"),\n borderLeftWidth: t.borderWidths(\"borderLeftWidth\"),\n borderInlineStartWidth: t.borderWidths(\"borderInlineStartWidth\"),\n borderLeftColor: t.colors(\"borderLeftColor\"),\n borderInlineStartColor: t.colors(\"borderInlineStartColor\"),\n borderLeftStyle: t.borderStyles(\"borderLeftStyle\"),\n borderInlineStartStyle: t.borderStyles(\"borderInlineStartStyle\"),\n borderRightWidth: t.borderWidths(\"borderRightWidth\"),\n borderInlineEndWidth: t.borderWidths(\"borderInlineEndWidth\"),\n borderRightColor: t.colors(\"borderRightColor\"),\n borderInlineEndColor: t.colors(\"borderInlineEndColor\"),\n borderRightStyle: t.borderStyles(\"borderRightStyle\"),\n borderInlineEndStyle: t.borderStyles(\"borderInlineEndStyle\"),\n borderTopRadius: t.radii([\"borderTopLeftRadius\", \"borderTopRightRadius\"]),\n borderBottomRadius: t.radii([\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\"\n ]),\n borderLeftRadius: t.radii([\"borderTopLeftRadius\", \"borderBottomLeftRadius\"]),\n borderRightRadius: t.radii([\n \"borderTopRightRadius\",\n \"borderBottomRightRadius\"\n ])\n};\nObject.assign(border, {\n rounded: border.borderRadius,\n roundedTop: border.borderTopRadius,\n roundedTopLeft: border.borderTopLeftRadius,\n roundedTopRight: border.borderTopRightRadius,\n roundedTopStart: border.borderStartStartRadius,\n roundedTopEnd: border.borderStartEndRadius,\n roundedBottom: border.borderBottomRadius,\n roundedBottomLeft: border.borderBottomLeftRadius,\n roundedBottomRight: border.borderBottomRightRadius,\n roundedBottomStart: border.borderEndStartRadius,\n roundedBottomEnd: border.borderEndEndRadius,\n roundedLeft: border.borderLeftRadius,\n roundedRight: border.borderRightRadius,\n roundedStart: border.borderInlineStartRadius,\n roundedEnd: border.borderInlineEndRadius,\n borderStart: border.borderInlineStart,\n borderEnd: border.borderInlineEnd,\n borderTopStartRadius: border.borderStartStartRadius,\n borderTopEndRadius: border.borderStartEndRadius,\n borderBottomStartRadius: border.borderEndStartRadius,\n borderBottomEndRadius: border.borderEndEndRadius,\n borderStartRadius: border.borderInlineStartRadius,\n borderEndRadius: border.borderInlineEndRadius,\n borderStartWidth: border.borderInlineStartWidth,\n borderEndWidth: border.borderInlineEndWidth,\n borderStartColor: border.borderInlineStartColor,\n borderEndColor: border.borderInlineEndColor,\n borderStartStyle: border.borderInlineStartStyle,\n borderEndStyle: border.borderInlineEndStyle\n});\n\n// src/config/color.ts\nvar color = {\n color: t.colors(\"color\"),\n textColor: t.colors(\"color\"),\n fill: t.colors(\"fill\"),\n stroke: t.colors(\"stroke\")\n};\n\n// src/config/effect.ts\nvar effect = {\n boxShadow: t.shadows(\"boxShadow\"),\n mixBlendMode: true,\n blendMode: t.prop(\"mixBlendMode\"),\n backgroundBlendMode: true,\n bgBlendMode: t.prop(\"backgroundBlendMode\"),\n opacity: true\n};\nObject.assign(effect, {\n shadow: effect.boxShadow\n});\n\n// src/config/filter.ts\nvar filter = {\n filter: { transform: transformFunctions.filter },\n blur: t.blur(\"--chakra-blur\"),\n brightness: t.propT(\"--chakra-brightness\", transformFunctions.brightness),\n contrast: t.propT(\"--chakra-contrast\", transformFunctions.contrast),\n hueRotate: t.propT(\"--chakra-hue-rotate\", transformFunctions.hueRotate),\n invert: t.propT(\"--chakra-invert\", transformFunctions.invert),\n saturate: t.propT(\"--chakra-saturate\", transformFunctions.saturate),\n dropShadow: t.propT(\"--chakra-drop-shadow\", transformFunctions.dropShadow),\n backdropFilter: { transform: transformFunctions.backdropFilter },\n backdropBlur: t.blur(\"--chakra-backdrop-blur\"),\n backdropBrightness: t.propT(\n \"--chakra-backdrop-brightness\",\n transformFunctions.brightness\n ),\n backdropContrast: t.propT(\"--chakra-backdrop-contrast\", transformFunctions.contrast),\n backdropHueRotate: t.propT(\n \"--chakra-backdrop-hue-rotate\",\n transformFunctions.hueRotate\n ),\n backdropInvert: t.propT(\"--chakra-backdrop-invert\", transformFunctions.invert),\n backdropSaturate: t.propT(\"--chakra-backdrop-saturate\", transformFunctions.saturate)\n};\n\n// src/config/flexbox.ts\nvar flexbox = {\n alignItems: true,\n alignContent: true,\n justifyItems: true,\n justifyContent: true,\n flexWrap: true,\n flexDirection: { transform: transformFunctions.flexDirection },\n flex: true,\n flexFlow: true,\n flexGrow: true,\n flexShrink: true,\n flexBasis: t.sizes(\"flexBasis\"),\n justifySelf: true,\n alignSelf: true,\n order: true,\n placeItems: true,\n placeContent: true,\n placeSelf: true,\n gap: t.space(\"gap\"),\n rowGap: t.space(\"rowGap\"),\n columnGap: t.space(\"columnGap\")\n};\nObject.assign(flexbox, {\n flexDir: flexbox.flexDirection\n});\n\n// src/config/grid.ts\nvar grid = {\n gridGap: t.space(\"gridGap\"),\n gridColumnGap: t.space(\"gridColumnGap\"),\n gridRowGap: t.space(\"gridRowGap\"),\n gridColumn: true,\n gridRow: true,\n gridAutoFlow: true,\n gridAutoColumns: true,\n gridColumnStart: true,\n gridColumnEnd: true,\n gridRowStart: true,\n gridRowEnd: true,\n gridAutoRows: true,\n gridTemplate: true,\n gridTemplateColumns: true,\n gridTemplateRows: true,\n gridTemplateAreas: true,\n gridArea: true\n};\n\n// src/config/interactivity.ts\nvar interactivity = {\n appearance: true,\n cursor: true,\n resize: true,\n userSelect: true,\n pointerEvents: true,\n outline: { transform: transformFunctions.outline },\n outlineOffset: true,\n outlineColor: t.colors(\"outlineColor\")\n};\n\n// src/config/layout.ts\nvar layout = {\n width: t.sizesT(\"width\"),\n inlineSize: t.sizesT(\"inlineSize\"),\n height: t.sizes(\"height\"),\n blockSize: t.sizes(\"blockSize\"),\n boxSize: t.sizes([\"width\", \"height\"]),\n minWidth: t.sizes(\"minWidth\"),\n minInlineSize: t.sizes(\"minInlineSize\"),\n minHeight: t.sizes(\"minHeight\"),\n minBlockSize: t.sizes(\"minBlockSize\"),\n maxWidth: t.sizes(\"maxWidth\"),\n maxInlineSize: t.sizes(\"maxInlineSize\"),\n maxHeight: t.sizes(\"maxHeight\"),\n maxBlockSize: t.sizes(\"maxBlockSize\"),\n overflow: true,\n overflowX: true,\n overflowY: true,\n overscrollBehavior: true,\n overscrollBehaviorX: true,\n overscrollBehaviorY: true,\n display: true,\n aspectRatio: true,\n hideFrom: {\n scale: \"breakpoints\",\n transform: (value, theme) => {\n var _a, _b, _c;\n const breakpoint = (_c = (_b = (_a = theme.__breakpoints) == null ? void 0 : _a.get(value)) == null ? void 0 : _b.minW) != null ? _c : value;\n const mq = `@media screen and (min-width: ${breakpoint})`;\n return { [mq]: { display: \"none\" } };\n }\n },\n hideBelow: {\n scale: \"breakpoints\",\n transform: (value, theme) => {\n var _a, _b, _c;\n const breakpoint = (_c = (_b = (_a = theme.__breakpoints) == null ? void 0 : _a.get(value)) == null ? void 0 : _b._minW) != null ? _c : value;\n const mq = `@media screen and (max-width: ${breakpoint})`;\n return { [mq]: { display: \"none\" } };\n }\n },\n verticalAlign: true,\n boxSizing: true,\n boxDecorationBreak: true,\n float: t.propT(\"float\", transformFunctions.float),\n objectFit: true,\n objectPosition: true,\n visibility: true,\n isolation: true\n};\nObject.assign(layout, {\n w: layout.width,\n h: layout.height,\n minW: layout.minWidth,\n maxW: layout.maxWidth,\n minH: layout.minHeight,\n maxH: layout.maxHeight,\n overscroll: layout.overscrollBehavior,\n overscrollX: layout.overscrollBehaviorX,\n overscrollY: layout.overscrollBehaviorY\n});\n\n// src/config/list.ts\nvar list = {\n listStyleType: true,\n listStylePosition: true,\n listStylePos: t.prop(\"listStylePosition\"),\n listStyleImage: true,\n listStyleImg: t.prop(\"listStyleImage\")\n};\n\n// src/get.ts\nfunction get(obj, path, fallback, index) {\n const key = typeof path === \"string\" ? path.split(\".\") : [path];\n for (index = 0; index < key.length; index += 1) {\n if (!obj)\n break;\n obj = obj[key[index]];\n }\n return obj === void 0 ? fallback : obj;\n}\nvar memoize = (fn) => {\n const cache = /* @__PURE__ */ new WeakMap();\n const memoizedFn = (obj, path, fallback, index) => {\n if (typeof obj === \"undefined\") {\n return fn(obj, path, fallback);\n }\n if (!cache.has(obj)) {\n cache.set(obj, /* @__PURE__ */ new Map());\n }\n const map = cache.get(obj);\n if (map.has(path)) {\n return map.get(path);\n }\n const value = fn(obj, path, fallback, index);\n map.set(path, value);\n return value;\n };\n return memoizedFn;\n};\nvar memoizedGet = memoize(get);\n\n// src/config/others.ts\nvar srOnly = {\n border: \"0px\",\n clip: \"rect(0, 0, 0, 0)\",\n width: \"1px\",\n height: \"1px\",\n margin: \"-1px\",\n padding: \"0px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n position: \"absolute\"\n};\nvar srFocusable = {\n position: \"static\",\n width: \"auto\",\n height: \"auto\",\n clip: \"auto\",\n padding: \"0\",\n margin: \"0\",\n overflow: \"visible\",\n whiteSpace: \"normal\"\n};\nvar getWithPriority = (theme, key, styles) => {\n const result = {};\n const obj = memoizedGet(theme, key, {});\n for (const prop in obj) {\n const isInStyles = prop in styles && styles[prop] != null;\n if (!isInStyles)\n result[prop] = obj[prop];\n }\n return result;\n};\nvar others = {\n srOnly: {\n transform(value) {\n if (value === true)\n return srOnly;\n if (value === \"focusable\")\n return srFocusable;\n return {};\n }\n },\n layerStyle: {\n processResult: true,\n transform: (value, theme, styles) => getWithPriority(theme, `layerStyles.${value}`, styles)\n },\n textStyle: {\n processResult: true,\n transform: (value, theme, styles) => getWithPriority(theme, `textStyles.${value}`, styles)\n },\n apply: {\n processResult: true,\n transform: (value, theme, styles) => getWithPriority(theme, value, styles)\n }\n};\n\n// src/config/position.ts\nvar position = {\n position: true,\n pos: t.prop(\"position\"),\n zIndex: t.prop(\"zIndex\", \"zIndices\"),\n inset: t.spaceT(\"inset\"),\n insetX: t.spaceT([\"left\", \"right\"]),\n insetInline: t.spaceT(\"insetInline\"),\n insetY: t.spaceT([\"top\", \"bottom\"]),\n insetBlock: t.spaceT(\"insetBlock\"),\n top: t.spaceT(\"top\"),\n insetBlockStart: t.spaceT(\"insetBlockStart\"),\n bottom: t.spaceT(\"bottom\"),\n insetBlockEnd: t.spaceT(\"insetBlockEnd\"),\n left: t.spaceT(\"left\"),\n insetInlineStart: t.logical({\n scale: \"space\",\n property: { ltr: \"left\", rtl: \"right\" }\n }),\n right: t.spaceT(\"right\"),\n insetInlineEnd: t.logical({\n scale: \"space\",\n property: { ltr: \"right\", rtl: \"left\" }\n })\n};\nObject.assign(position, {\n insetStart: position.insetInlineStart,\n insetEnd: position.insetInlineEnd\n});\n\n// src/config/ring.ts\nvar ring = {\n ring: { transform: transformFunctions.ring },\n ringColor: t.colors(\"--chakra-ring-color\"),\n ringOffset: t.prop(\"--chakra-ring-offset-width\"),\n ringOffsetColor: t.colors(\"--chakra-ring-offset-color\"),\n ringInset: t.prop(\"--chakra-ring-inset\")\n};\n\n// src/config/space.ts\nvar space = {\n margin: t.spaceT(\"margin\"),\n marginTop: t.spaceT(\"marginTop\"),\n marginBlockStart: t.spaceT(\"marginBlockStart\"),\n marginRight: t.spaceT(\"marginRight\"),\n marginInlineEnd: t.spaceT(\"marginInlineEnd\"),\n marginBottom: t.spaceT(\"marginBottom\"),\n marginBlockEnd: t.spaceT(\"marginBlockEnd\"),\n marginLeft: t.spaceT(\"marginLeft\"),\n marginInlineStart: t.spaceT(\"marginInlineStart\"),\n marginX: t.spaceT([\"marginInlineStart\", \"marginInlineEnd\"]),\n marginInline: t.spaceT(\"marginInline\"),\n marginY: t.spaceT([\"marginTop\", \"marginBottom\"]),\n marginBlock: t.spaceT(\"marginBlock\"),\n padding: t.space(\"padding\"),\n paddingTop: t.space(\"paddingTop\"),\n paddingBlockStart: t.space(\"paddingBlockStart\"),\n paddingRight: t.space(\"paddingRight\"),\n paddingBottom: t.space(\"paddingBottom\"),\n paddingBlockEnd: t.space(\"paddingBlockEnd\"),\n paddingLeft: t.space(\"paddingLeft\"),\n paddingInlineStart: t.space(\"paddingInlineStart\"),\n paddingInlineEnd: t.space(\"paddingInlineEnd\"),\n paddingX: t.space([\"paddingInlineStart\", \"paddingInlineEnd\"]),\n paddingInline: t.space(\"paddingInline\"),\n paddingY: t.space([\"paddingTop\", \"paddingBottom\"]),\n paddingBlock: t.space(\"paddingBlock\")\n};\nObject.assign(space, {\n m: space.margin,\n mt: space.marginTop,\n mr: space.marginRight,\n me: space.marginInlineEnd,\n marginEnd: space.marginInlineEnd,\n mb: space.marginBottom,\n ml: space.marginLeft,\n ms: space.marginInlineStart,\n marginStart: space.marginInlineStart,\n mx: space.marginX,\n my: space.marginY,\n p: space.padding,\n pt: space.paddingTop,\n py: space.paddingY,\n px: space.paddingX,\n pb: space.paddingBottom,\n pl: space.paddingLeft,\n ps: space.paddingInlineStart,\n paddingStart: space.paddingInlineStart,\n pr: space.paddingRight,\n pe: space.paddingInlineEnd,\n paddingEnd: space.paddingInlineEnd\n});\n\n// src/config/text-decoration.ts\nvar textDecoration = {\n textDecorationColor: t.colors(\"textDecorationColor\"),\n textDecoration: true,\n textDecor: { property: \"textDecoration\" },\n textDecorationLine: true,\n textDecorationStyle: true,\n textDecorationThickness: true,\n textUnderlineOffset: true,\n textShadow: t.shadows(\"textShadow\")\n};\n\n// src/config/transform.ts\nvar transform = {\n clipPath: true,\n transform: t.propT(\"transform\", transformFunctions.transform),\n transformOrigin: true,\n translateX: t.spaceT(\"--chakra-translate-x\"),\n translateY: t.spaceT(\"--chakra-translate-y\"),\n skewX: t.degreeT(\"--chakra-skew-x\"),\n skewY: t.degreeT(\"--chakra-skew-y\"),\n scaleX: t.prop(\"--chakra-scale-x\"),\n scaleY: t.prop(\"--chakra-scale-y\"),\n scale: t.prop([\"--chakra-scale-x\", \"--chakra-scale-y\"]),\n rotate: t.degreeT(\"--chakra-rotate\")\n};\n\n// src/config/transition.ts\nvar transition = {\n transition: true,\n transitionDelay: true,\n animation: true,\n willChange: true,\n transitionDuration: t.prop(\"transitionDuration\", \"transition.duration\"),\n transitionProperty: t.prop(\"transitionProperty\", \"transition.property\"),\n transitionTimingFunction: t.prop(\n \"transitionTimingFunction\",\n \"transition.easing\"\n )\n};\n\n// src/config/typography.ts\nvar typography = {\n fontFamily: t.prop(\"fontFamily\", \"fonts\"),\n fontSize: t.prop(\"fontSize\", \"fontSizes\", transformFunctions.px),\n fontWeight: t.prop(\"fontWeight\", \"fontWeights\"),\n lineHeight: t.prop(\"lineHeight\", \"lineHeights\"),\n letterSpacing: t.prop(\"letterSpacing\", \"letterSpacings\"),\n textAlign: true,\n fontStyle: true,\n textIndent: true,\n wordBreak: true,\n overflowWrap: true,\n textOverflow: true,\n textTransform: true,\n whiteSpace: true,\n isTruncated: {\n transform(value) {\n if (value === true) {\n return {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\"\n };\n }\n }\n },\n noOfLines: {\n static: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n WebkitBoxOrient: \"vertical\",\n //@ts-ignore\n WebkitLineClamp: \"var(--chakra-line-clamp)\"\n },\n property: \"--chakra-line-clamp\"\n }\n};\n\n// src/config/scroll.ts\nvar scroll = {\n scrollBehavior: true,\n scrollSnapAlign: true,\n scrollSnapStop: true,\n scrollSnapType: true,\n // scroll margin\n scrollMargin: t.spaceT(\"scrollMargin\"),\n scrollMarginTop: t.spaceT(\"scrollMarginTop\"),\n scrollMarginBottom: t.spaceT(\"scrollMarginBottom\"),\n scrollMarginLeft: t.spaceT(\"scrollMarginLeft\"),\n scrollMarginRight: t.spaceT(\"scrollMarginRight\"),\n scrollMarginX: t.spaceT([\"scrollMarginLeft\", \"scrollMarginRight\"]),\n scrollMarginY: t.spaceT([\"scrollMarginTop\", \"scrollMarginBottom\"]),\n // scroll padding\n scrollPadding: t.spaceT(\"scrollPadding\"),\n scrollPaddingTop: t.spaceT(\"scrollPaddingTop\"),\n scrollPaddingBottom: t.spaceT(\"scrollPaddingBottom\"),\n scrollPaddingLeft: t.spaceT(\"scrollPaddingLeft\"),\n scrollPaddingRight: t.spaceT(\"scrollPaddingRight\"),\n scrollPaddingX: t.spaceT([\"scrollPaddingLeft\", \"scrollPaddingRight\"]),\n scrollPaddingY: t.spaceT([\"scrollPaddingTop\", \"scrollPaddingBottom\"])\n};\n\n// src/create-theme-vars/calc.ts\nimport { isObject as isObject2 } from \"@chakra-ui/shared-utils\";\nfunction resolveReference(operand) {\n if (isObject2(operand) && operand.reference) {\n return operand.reference;\n }\n return String(operand);\n}\nvar toExpression = (operator, ...operands) => operands.map(resolveReference).join(` ${operator} `).replace(/calc/g, \"\");\nvar add = (...operands) => `calc(${toExpression(\"+\", ...operands)})`;\nvar subtract = (...operands) => `calc(${toExpression(\"-\", ...operands)})`;\nvar multiply = (...operands) => `calc(${toExpression(\"*\", ...operands)})`;\nvar divide = (...operands) => `calc(${toExpression(\"/\", ...operands)})`;\nvar negate = (x) => {\n const value = resolveReference(x);\n if (value != null && !Number.isNaN(parseFloat(value))) {\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`;\n }\n return multiply(value, -1);\n};\nvar calc = Object.assign(\n (x) => ({\n add: (...operands) => calc(add(x, ...operands)),\n subtract: (...operands) => calc(subtract(x, ...operands)),\n multiply: (...operands) => calc(multiply(x, ...operands)),\n divide: (...operands) => calc(divide(x, ...operands)),\n negate: () => calc(negate(x)),\n toString: () => x.toString()\n }),\n {\n add,\n subtract,\n multiply,\n divide,\n negate\n }\n);\n\n// src/create-theme-vars/css-var.ts\nfunction replaceWhiteSpace(value, replaceValue = \"-\") {\n return value.replace(/\\s+/g, replaceValue);\n}\nfunction escape(value) {\n const valueStr = replaceWhiteSpace(value.toString());\n return escapeSymbol(escapeDot(valueStr));\n}\nfunction escapeDot(value) {\n if (value.includes(\"\\\\.\"))\n return value;\n const isDecimal = !Number.isInteger(parseFloat(value.toString()));\n return isDecimal ? value.replace(\".\", `\\\\.`) : value;\n}\nfunction escapeSymbol(value) {\n return value.replace(/[!-,/:-@[-^`{-~]/g, \"\\\\$&\");\n}\nfunction addPrefix(value, prefix = \"\") {\n return [prefix, value].filter(Boolean).join(\"-\");\n}\nfunction toVarReference(name, fallback) {\n return `var(${name}${fallback ? `, ${fallback}` : \"\"})`;\n}\nfunction toVarDefinition(value, prefix = \"\") {\n return escape(`--${addPrefix(value, prefix)}`);\n}\nfunction cssVar(name, fallback, cssVarPrefix) {\n const cssVariable = toVarDefinition(name, cssVarPrefix);\n return {\n variable: cssVariable,\n reference: toVarReference(cssVariable, fallback)\n };\n}\nfunction defineCssVars(scope, keys2) {\n const vars = {};\n for (const key of keys2) {\n if (Array.isArray(key)) {\n const [name, fallback] = key;\n vars[name] = cssVar(`${scope}-${name}`, fallback);\n continue;\n }\n vars[key] = cssVar(`${scope}-${key}`);\n }\n return vars;\n}\n\n// ../../utilities/breakpoint-utils/src/breakpoint.ts\nimport { isObject as isObject3 } from \"@chakra-ui/shared-utils\";\nfunction getLastItem(array) {\n const length = array == null ? 0 : array.length;\n return length ? array[length - 1] : void 0;\n}\nfunction analyzeCSSValue2(value) {\n const num = parseFloat(value.toString());\n const unit = value.toString().replace(String(num), \"\");\n return { unitless: !unit, value: num, unit };\n}\nfunction px(value) {\n if (value == null)\n return value;\n const { unitless } = analyzeCSSValue2(value);\n return unitless || typeof value === \"number\" ? `${value}px` : value;\n}\nvar sortByBreakpointValue = (a, b) => parseInt(a[1], 10) > parseInt(b[1], 10) ? 1 : -1;\nvar sortBps = (breakpoints) => Object.fromEntries(Object.entries(breakpoints).sort(sortByBreakpointValue));\nfunction normalize(breakpoints) {\n const sorted = sortBps(breakpoints);\n return Object.assign(Object.values(sorted), sorted);\n}\nfunction keys(breakpoints) {\n const value = Object.keys(sortBps(breakpoints));\n return new Set(value);\n}\nfunction subtract2(value) {\n var _a;\n if (!value)\n return value;\n value = (_a = px(value)) != null ? _a : value;\n const OFFSET = -0.02;\n return typeof value === \"number\" ? `${value + OFFSET}` : value.replace(/(\\d+\\.?\\d*)/u, (m) => `${parseFloat(m) + OFFSET}`);\n}\nfunction toMediaQueryString(min, max) {\n const query = [\"@media screen\"];\n if (min)\n query.push(\"and\", `(min-width: ${px(min)})`);\n if (max)\n query.push(\"and\", `(max-width: ${px(max)})`);\n return query.join(\" \");\n}\nfunction analyzeBreakpoints(breakpoints) {\n var _a;\n if (!breakpoints)\n return null;\n breakpoints.base = (_a = breakpoints.base) != null ? _a : \"0px\";\n const normalized = normalize(breakpoints);\n const queries = Object.entries(breakpoints).sort(sortByBreakpointValue).map(([breakpoint, minW], index, entry) => {\n var _a2;\n let [, maxW] = (_a2 = entry[index + 1]) != null ? _a2 : [];\n maxW = parseFloat(maxW) > 0 ? subtract2(maxW) : void 0;\n return {\n _minW: subtract2(minW),\n breakpoint,\n minW,\n maxW,\n maxWQuery: toMediaQueryString(null, maxW),\n minWQuery: toMediaQueryString(minW),\n minMaxQuery: toMediaQueryString(minW, maxW)\n };\n });\n const _keys = keys(breakpoints);\n const _keysArr = Array.from(_keys.values());\n return {\n keys: _keys,\n normalized,\n isResponsive(test) {\n const keys2 = Object.keys(test);\n return keys2.length > 0 && keys2.every((key) => _keys.has(key));\n },\n asObject: sortBps(breakpoints),\n asArray: normalize(breakpoints),\n details: queries,\n get(key) {\n return queries.find((q) => q.breakpoint === key);\n },\n media: [\n null,\n ...normalized.map((minW) => toMediaQueryString(minW)).slice(1)\n ],\n /**\n * Converts the object responsive syntax to array syntax\n *\n * @example\n * toArrayValue({ base: 1, sm: 2, md: 3 }) // => [1, 2, 3]\n */\n toArrayValue(test) {\n if (!isObject3(test)) {\n throw new Error(\"toArrayValue: value must be an object\");\n }\n const result = _keysArr.map((bp) => {\n var _a2;\n return (_a2 = test[bp]) != null ? _a2 : null;\n });\n while (getLastItem(result) === null) {\n result.pop();\n }\n return result;\n },\n /**\n * Converts the array responsive syntax to object syntax\n *\n * @example\n * toObjectValue([1, 2, 3]) // => { base: 1, sm: 2, md: 3 }\n */\n toObjectValue(test) {\n if (!Array.isArray(test)) {\n throw new Error(\"toObjectValue: value must be an array\");\n }\n return test.reduce((acc, value, index) => {\n const key = _keysArr[index];\n if (key != null && value != null)\n acc[key] = value;\n return acc;\n }, {});\n }\n };\n}\n\n// src/create-theme-vars/create-theme-vars.ts\nimport { isObject as isObject4 } from \"@chakra-ui/shared-utils\";\n\n// src/pseudos.ts\nvar state = {\n hover: (str, post) => `${str}:hover ${post}, ${str}[data-hover] ${post}`,\n focus: (str, post) => `${str}:focus ${post}, ${str}[data-focus] ${post}`,\n focusVisible: (str, post) => `${str}:focus-visible ${post}`,\n focusWithin: (str, post) => `${str}:focus-within ${post}`,\n active: (str, post) => `${str}:active ${post}, ${str}[data-active] ${post}`,\n disabled: (str, post) => `${str}:disabled ${post}, ${str}[data-disabled] ${post}`,\n invalid: (str, post) => `${str}:invalid ${post}, ${str}[data-invalid] ${post}`,\n checked: (str, post) => `${str}:checked ${post}, ${str}[data-checked] ${post}`,\n indeterminate: (str, post) => `${str}:indeterminate ${post}, ${str}[aria-checked=mixed] ${post}, ${str}[data-indeterminate] ${post}`,\n readOnly: (str, post) => `${str}:read-only ${post}, ${str}[readonly] ${post}, ${str}[data-read-only] ${post}`,\n expanded: (str, post) => `${str}:read-only ${post}, ${str}[aria-expanded=true] ${post}, ${str}[data-expanded] ${post}`,\n placeholderShown: (str, post) => `${str}:placeholder-shown ${post}`\n};\nvar toGroup = (fn) => merge((v) => fn(v, \"&\"), \"[role=group]\", \"[data-group]\", \".group\");\nvar toPeer = (fn) => merge((v) => fn(v, \"~ &\"), \"[data-peer]\", \".peer\");\nvar merge = (fn, ...selectors) => selectors.map(fn).join(\", \");\nvar pseudoSelectors = {\n /**\n * Styles for CSS selector `&:hover`\n */\n _hover: \"&:hover, &[data-hover]\",\n /**\n * Styles for CSS Selector `&:active`\n */\n _active: \"&:active, &[data-active]\",\n /**\n * Styles for CSS selector `&:focus`\n *\n */\n _focus: \"&:focus, &[data-focus]\",\n /**\n * Styles for the highlighted state.\n */\n _highlighted: \"&[data-highlighted]\",\n /**\n * Styles to apply when a child of this element has received focus\n * - CSS Selector `&:focus-within`\n */\n _focusWithin: \"&:focus-within\",\n /**\n * Styles to apply when this element has received focus via tabbing\n * - CSS Selector `&:focus-visible`\n */\n _focusVisible: \"&:focus-visible, &[data-focus-visible]\",\n /**\n * Styles to apply when this element is disabled. The passed styles are applied to these CSS selectors:\n * - `&[aria-disabled=true]`\n * - `&:disabled`\n * - `&[data-disabled]`\n * - `&[disabled]`\n */\n _disabled: \"&:disabled, &[disabled], &[aria-disabled=true], &[data-disabled]\",\n /**\n * Styles for CSS Selector `&:readonly`\n */\n _readOnly: \"&[aria-readonly=true], &[readonly], &[data-readonly]\",\n /**\n * Styles for CSS selector `&::before`\n *\n * NOTE:When using this, ensure the `content` is wrapped in a backtick.\n * @example\n * ```jsx\n * \n * ```\n */\n _before: \"&::before\",\n /**\n * Styles for CSS selector `&::after`\n *\n * NOTE:When using this, ensure the `content` is wrapped in a backtick.\n * @example\n * ```jsx\n * \n * ```\n */\n _after: \"&::after\",\n /**\n * Styles for CSS selector `&:empty`\n */\n _empty: \"&:empty\",\n /**\n * Styles to apply when the ARIA attribute `aria-expanded` is `true`\n * - CSS selector `&[aria-expanded=true]`\n */\n _expanded: \"&[aria-expanded=true], &[data-expanded]\",\n /**\n * Styles to apply when the ARIA attribute `aria-checked` is `true`\n * - CSS selector `&[aria-checked=true]`\n */\n _checked: \"&[aria-checked=true], &[data-checked]\",\n /**\n * Styles to apply when the ARIA attribute `aria-grabbed` is `true`\n * - CSS selector `&[aria-grabbed=true]`\n */\n _grabbed: \"&[aria-grabbed=true], &[data-grabbed]\",\n /**\n * Styles for CSS Selector `&[aria-pressed=true]`\n * Typically used to style the current \"pressed\" state of toggle buttons\n */\n _pressed: \"&[aria-pressed=true], &[data-pressed]\",\n /**\n * Styles to apply when the ARIA attribute `aria-invalid` is `true`\n * - CSS selector `&[aria-invalid=true]`\n */\n _invalid: \"&[aria-invalid=true], &[data-invalid]\",\n /**\n * Styles for the valid state\n * - CSS selector `&[data-valid], &[data-state=valid]`\n */\n _valid: \"&[data-valid], &[data-state=valid]\",\n /**\n * Styles for CSS Selector `&[aria-busy=true]` or `&[data-loading=true]`.\n * Useful for styling loading states\n */\n _loading: \"&[data-loading], &[aria-busy=true]\",\n /**\n * Styles to apply when the ARIA attribute `aria-selected` is `true`\n *\n * - CSS selector `&[aria-selected=true]`\n */\n _selected: \"&[aria-selected=true], &[data-selected]\",\n /**\n * Styles for CSS Selector `[hidden=true]`\n */\n _hidden: \"&[hidden], &[data-hidden]\",\n /**\n * Styles for CSS Selector `&:-webkit-autofill`\n */\n _autofill: \"&:-webkit-autofill\",\n /**\n * Styles for CSS Selector `&:nth-child(even)`\n */\n _even: \"&:nth-of-type(even)\",\n /**\n * Styles for CSS Selector `&:nth-child(odd)`\n */\n _odd: \"&:nth-of-type(odd)\",\n /**\n * Styles for CSS Selector `&:first-of-type`\n */\n _first: \"&:first-of-type\",\n /**\n * Styles for CSS selector `&::first-letter`\n *\n * NOTE: This selector is only applied for block-level elements and not preceded by an image or table.\n * @example\n * ```jsx\n * Once upon a time\n * ```\n */\n _firstLetter: \"&::first-letter\",\n /**\n * Styles for CSS Selector `&:last-of-type`\n */\n _last: \"&:last-of-type\",\n /**\n * Styles for CSS Selector `&:not(:first-of-type)`\n */\n _notFirst: \"&:not(:first-of-type)\",\n /**\n * Styles for CSS Selector `&:not(:last-of-type)`\n */\n _notLast: \"&:not(:last-of-type)\",\n /**\n * Styles for CSS Selector `&:visited`\n */\n _visited: \"&:visited\",\n /**\n * Used to style the active link in a navigation\n * Styles for CSS Selector `&[aria-current=page]`\n */\n _activeLink: \"&[aria-current=page]\",\n /**\n * Used to style the current step within a process\n * Styles for CSS Selector `&[aria-current=step]`\n */\n _activeStep: \"&[aria-current=step]\",\n /**\n * Styles to apply when the ARIA attribute `aria-checked` is `mixed`\n * - CSS selector `&[aria-checked=mixed]`\n */\n _indeterminate: \"&:indeterminate, &[aria-checked=mixed], &[data-indeterminate]\",\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` is hovered\n */\n _groupHover: toGroup(state.hover),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` is hovered\n */\n _peerHover: toPeer(state.hover),\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` is focused\n */\n _groupFocus: toGroup(state.focus),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` is focused\n */\n _peerFocus: toPeer(state.focus),\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` has visible focus\n */\n _groupFocusVisible: toGroup(state.focusVisible),\n /**\n * Styles to apply when a sibling element with `.peer`or `data-peer` has visible focus\n */\n _peerFocusVisible: toPeer(state.focusVisible),\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` is active\n */\n _groupActive: toGroup(state.active),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` is active\n */\n _peerActive: toPeer(state.active),\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` is disabled\n */\n _groupDisabled: toGroup(state.disabled),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` is disabled\n */\n _peerDisabled: toPeer(state.disabled),\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` is invalid\n */\n _groupInvalid: toGroup(state.invalid),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` is invalid\n */\n _peerInvalid: toPeer(state.invalid),\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` is checked\n */\n _groupChecked: toGroup(state.checked),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` is checked\n */\n _peerChecked: toPeer(state.checked),\n /**\n * Styles to apply when a parent element with `.group`, `data-group` or `role=group` has focus within\n */\n _groupFocusWithin: toGroup(state.focusWithin),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` has focus within\n */\n _peerFocusWithin: toPeer(state.focusWithin),\n /**\n * Styles to apply when a sibling element with `.peer` or `data-peer` has placeholder shown\n */\n _peerPlaceholderShown: toPeer(state.placeholderShown),\n /**\n * Styles for CSS Selector `&::placeholder`.\n */\n _placeholder: \"&::placeholder\",\n /**\n * Styles for CSS Selector `&:placeholder-shown`.\n */\n _placeholderShown: \"&:placeholder-shown\",\n /**\n * Styles for CSS Selector `&:fullscreen`.\n */\n _fullScreen: \"&:fullscreen\",\n /**\n * Styles for CSS Selector `&::selection`\n */\n _selection: \"&::selection\",\n /**\n * Styles for CSS Selector `[dir=rtl] &`\n * It is applied when a parent element or this element has `dir=\"rtl\"`\n */\n _rtl: \"[dir=rtl] &, &[dir=rtl]\",\n /**\n * Styles for CSS Selector `[dir=ltr] &`\n * It is applied when a parent element or this element has `dir=\"ltr\"`\n */\n _ltr: \"[dir=ltr] &, &[dir=ltr]\",\n /**\n * Styles for CSS Selector `@media (prefers-color-scheme: dark)`\n * It is used when the user has requested the system use a light or dark color theme.\n */\n _mediaDark: \"@media (prefers-color-scheme: dark)\",\n /**\n * Styles for CSS Selector `@media (prefers-reduced-motion: reduce)`\n * It is used when the user has requested the system to reduce the amount of animations.\n */\n _mediaReduceMotion: \"@media (prefers-reduced-motion: reduce)\",\n /**\n * Styles for when `data-theme` is applied to any parent of\n * this component or element.\n */\n _dark: \".chakra-ui-dark &:not([data-theme]),[data-theme=dark] &:not([data-theme]),&[data-theme=dark]\",\n /**\n * Styles for when `data-theme` is applied to any parent of\n * this component or element.\n */\n _light: \".chakra-ui-light &:not([data-theme]),[data-theme=light] &:not([data-theme]),&[data-theme=light]\",\n /**\n * Styles for the CSS Selector `&[data-orientation=horizontal]`\n */\n _horizontal: \"&[data-orientation=horizontal]\",\n /**\n * Styles for the CSS Selector `&[data-orientation=vertical]`\n */\n _vertical: \"&[data-orientation=vertical]\"\n};\nvar pseudoPropNames = Object.keys(\n pseudoSelectors\n);\n\n// src/create-theme-vars/create-theme-vars.ts\nimport mergeWith from \"lodash.mergewith\";\nfunction tokenToCssVar(token, prefix) {\n return cssVar(String(token).replace(/\\./g, \"-\"), void 0, prefix);\n}\nfunction createThemeVars(flatTokens, options) {\n let cssVars = {};\n const cssMap = {};\n for (const [token, tokenValue] of Object.entries(flatTokens)) {\n const { isSemantic, value } = tokenValue;\n const { variable, reference } = tokenToCssVar(token, options == null ? void 0 : options.cssVarPrefix);\n if (!isSemantic) {\n if (token.startsWith(\"space\")) {\n const keys2 = token.split(\".\");\n const [firstKey, ...referenceKeys] = keys2;\n const negativeLookupKey = `${firstKey}.-${referenceKeys.join(\".\")}`;\n const negativeValue = calc.negate(value);\n const negatedReference = calc.negate(reference);\n cssMap[negativeLookupKey] = {\n value: negativeValue,\n var: variable,\n varRef: negatedReference\n };\n }\n cssVars[variable] = value;\n cssMap[token] = {\n value,\n var: variable,\n varRef: reference\n };\n continue;\n }\n const lookupToken = (maybeToken) => {\n const scale = String(token).split(\".\")[0];\n const withScale = [scale, maybeToken].join(\".\");\n const resolvedTokenValue = flatTokens[withScale];\n if (!resolvedTokenValue)\n return maybeToken;\n const { reference: reference2 } = tokenToCssVar(withScale, options == null ? void 0 : options.cssVarPrefix);\n return reference2;\n };\n const normalizedValue = isObject4(value) ? value : { default: value };\n cssVars = mergeWith(\n cssVars,\n Object.entries(normalizedValue).reduce(\n (acc, [conditionAlias, conditionValue]) => {\n var _a, _b;\n if (!conditionValue)\n return acc;\n const tokenReference = lookupToken(`${conditionValue}`);\n if (conditionAlias === \"default\") {\n acc[variable] = tokenReference;\n return acc;\n }\n const conditionSelector = (_b = (_a = pseudoSelectors) == null ? void 0 : _a[conditionAlias]) != null ? _b : conditionAlias;\n acc[conditionSelector] = { [variable]: tokenReference };\n return acc;\n },\n {}\n )\n );\n cssMap[token] = {\n value: reference,\n var: variable,\n varRef: reference\n };\n }\n return {\n cssVars,\n cssMap\n };\n}\n\n// ../../utilities/object-utils/src/omit.ts\nfunction omit(object, keysToOmit = []) {\n const clone = Object.assign({}, object);\n for (const key of keysToOmit) {\n if (key in clone) {\n delete clone[key];\n }\n }\n return clone;\n}\n\n// ../../utilities/object-utils/src/pick.ts\nfunction pick(object, keysToPick) {\n const result = {};\n for (const key of keysToPick) {\n if (key in object) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// ../../utilities/object-utils/src/walk-object.ts\nfunction isObject5(value) {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\nfunction walkObject(target, predicate, options = {}) {\n const { stop, getKey } = options;\n function inner(value, path = []) {\n var _a;\n if (isObject5(value) || Array.isArray(value)) {\n const result = {};\n for (const [prop, child] of Object.entries(value)) {\n const key = (_a = getKey == null ? void 0 : getKey(prop)) != null ? _a : prop;\n const childPath = [...path, key];\n if (stop == null ? void 0 : stop(value, childPath)) {\n return predicate(value, path);\n }\n result[key] = inner(child, childPath);\n }\n return result;\n }\n return predicate(value, path);\n }\n return inner(target);\n}\n\n// src/create-theme-vars/theme-tokens.ts\nvar tokens = [\n \"colors\",\n \"borders\",\n \"borderWidths\",\n \"borderStyles\",\n \"fonts\",\n \"fontSizes\",\n \"fontWeights\",\n \"gradients\",\n \"letterSpacings\",\n \"lineHeights\",\n \"radii\",\n \"space\",\n \"shadows\",\n \"sizes\",\n \"zIndices\",\n \"transition\",\n \"blur\",\n \"breakpoints\"\n];\nfunction extractTokens(theme) {\n const _tokens = tokens;\n return pick(theme, _tokens);\n}\nfunction extractSemanticTokens(theme) {\n return theme.semanticTokens;\n}\nfunction omitVars(rawTheme) {\n const { __cssMap, __cssVars, __breakpoints, ...cleanTheme } = rawTheme;\n return cleanTheme;\n}\n\n// src/create-theme-vars/flatten-tokens.ts\nvar isSemanticCondition = (key) => pseudoPropNames.includes(key) || \"default\" === key;\nfunction flattenTokens({\n tokens: tokens2,\n semanticTokens\n}) {\n const result = {};\n walkObject(tokens2, (value, path) => {\n if (value == null)\n return;\n result[path.join(\".\")] = { isSemantic: false, value };\n });\n walkObject(\n semanticTokens,\n (value, path) => {\n if (value == null)\n return;\n result[path.join(\".\")] = { isSemantic: true, value };\n },\n {\n stop: (value) => Object.keys(value).every(isSemanticCondition)\n }\n );\n return result;\n}\n\n// src/create-theme-vars/to-css-var.ts\nfunction toCSSVar(rawTheme) {\n var _a;\n const theme = omitVars(rawTheme);\n const tokens2 = extractTokens(theme);\n const semanticTokens = extractSemanticTokens(theme);\n const flatTokens = flattenTokens({ tokens: tokens2, semanticTokens });\n const cssVarPrefix = (_a = theme.config) == null ? void 0 : _a.cssVarPrefix;\n const {\n /**\n * This is more like a dictionary of tokens users will type `green.500`,\n * and their equivalent css variable.\n */\n cssMap,\n /**\n * The extracted css variables will be stored here, and used in\n * the emotion's component to attach variables to `:root`\n */\n cssVars\n } = createThemeVars(flatTokens, { cssVarPrefix });\n const defaultCssVars = {\n \"--chakra-ring-inset\": \"var(--chakra-empty,/*!*/ /*!*/)\",\n \"--chakra-ring-offset-width\": \"0px\",\n \"--chakra-ring-offset-color\": \"#fff\",\n \"--chakra-ring-color\": \"rgba(66, 153, 225, 0.6)\",\n \"--chakra-ring-offset-shadow\": \"0 0 #0000\",\n \"--chakra-ring-shadow\": \"0 0 #0000\",\n \"--chakra-space-x-reverse\": \"0\",\n \"--chakra-space-y-reverse\": \"0\"\n };\n Object.assign(theme, {\n __cssVars: { ...defaultCssVars, ...cssVars },\n __cssMap: cssMap,\n __breakpoints: analyzeBreakpoints(theme.breakpoints)\n });\n return theme;\n}\n\n// src/css.ts\nimport { isObject as isObject7, runIfFn as runIfFn2 } from \"@chakra-ui/shared-utils\";\nimport mergeWith3 from \"lodash.mergewith\";\n\n// src/system.ts\nimport mergeWith2 from \"lodash.mergewith\";\nvar systemProps = mergeWith2(\n {},\n background,\n border,\n color,\n flexbox,\n layout,\n filter,\n ring,\n interactivity,\n grid,\n others,\n position,\n effect,\n space,\n scroll,\n typography,\n textDecoration,\n transform,\n list,\n transition\n);\nvar layoutSystem = Object.assign({}, space, layout, flexbox, grid, position);\nvar layoutPropNames = Object.keys(\n layoutSystem\n);\nvar propNames = [...Object.keys(systemProps), ...pseudoPropNames];\nvar styleProps = { ...systemProps, ...pseudoSelectors };\nvar isStyleProp = (prop) => prop in styleProps;\n\n// src/utils/expand-responsive.ts\nimport { isObject as isObject6, runIfFn } from \"@chakra-ui/shared-utils\";\nvar expandResponsive = (styles) => (theme) => {\n if (!theme.__breakpoints)\n return styles;\n const { isResponsive, toArrayValue, media: medias } = theme.__breakpoints;\n const computedStyles = {};\n for (const key in styles) {\n let value = runIfFn(styles[key], theme);\n if (value == null)\n continue;\n value = isObject6(value) && isResponsive(value) ? toArrayValue(value) : value;\n if (!Array.isArray(value)) {\n computedStyles[key] = value;\n continue;\n }\n const queries = value.slice(0, medias.length).length;\n for (let index = 0; index < queries; index += 1) {\n const media = medias == null ? void 0 : medias[index];\n if (!media) {\n computedStyles[key] = value[index];\n continue;\n }\n computedStyles[media] = computedStyles[media] || {};\n if (value[index] == null) {\n continue;\n }\n computedStyles[media][key] = value[index];\n }\n }\n return computedStyles;\n};\n\n// src/utils/split-by-comma.ts\nfunction splitByComma(value) {\n const chunks = [];\n let chunk = \"\";\n let inParens = false;\n for (let i = 0; i < value.length; i++) {\n const char = value[i];\n if (char === \"(\") {\n inParens = true;\n chunk += char;\n } else if (char === \")\") {\n inParens = false;\n chunk += char;\n } else if (char === \",\" && !inParens) {\n chunks.push(chunk);\n chunk = \"\";\n } else {\n chunk += char;\n }\n }\n chunk = chunk.trim();\n if (chunk) {\n chunks.push(chunk);\n }\n return chunks;\n}\n\n// src/css.ts\nfunction isCssVar2(value) {\n return /^var\\(--.+\\)$/.test(value);\n}\nvar isCSSVariableTokenValue = (key, value) => key.startsWith(\"--\") && typeof value === \"string\" && !isCssVar2(value);\nvar resolveTokenValue = (theme, value) => {\n var _a, _b;\n if (value == null)\n return value;\n const getVar = (val) => {\n var _a2, _b2;\n return (_b2 = (_a2 = theme.__cssMap) == null ? void 0 : _a2[val]) == null ? void 0 : _b2.varRef;\n };\n const getValue = (val) => {\n var _a2;\n return (_a2 = getVar(val)) != null ? _a2 : val;\n };\n const [tokenValue, fallbackValue] = splitByComma(value);\n value = (_b = (_a = getVar(tokenValue)) != null ? _a : getValue(fallbackValue)) != null ? _b : getValue(value);\n return value;\n};\nfunction getCss(options) {\n const { configs = {}, pseudos = {}, theme } = options;\n const css2 = (stylesOrFn, nested = false) => {\n var _a, _b, _c;\n const _styles = runIfFn2(stylesOrFn, theme);\n const styles = expandResponsive(_styles)(theme);\n let computedStyles = {};\n for (let key in styles) {\n const valueOrFn = styles[key];\n let value = runIfFn2(valueOrFn, theme);\n if (key in pseudos) {\n key = pseudos[key];\n }\n if (isCSSVariableTokenValue(key, value)) {\n value = resolveTokenValue(theme, value);\n }\n let config = configs[key];\n if (config === true) {\n config = { property: key };\n }\n if (isObject7(value)) {\n computedStyles[key] = (_a = computedStyles[key]) != null ? _a : {};\n computedStyles[key] = mergeWith3(\n {},\n computedStyles[key],\n css2(value, true)\n );\n continue;\n }\n let rawValue = (_c = (_b = config == null ? void 0 : config.transform) == null ? void 0 : _b.call(config, value, theme, _styles)) != null ? _c : value;\n rawValue = (config == null ? void 0 : config.processResult) ? css2(rawValue, true) : rawValue;\n const configProperty = runIfFn2(config == null ? void 0 : config.property, theme);\n if (!nested && (config == null ? void 0 : config.static)) {\n const staticStyles = runIfFn2(config.static, theme);\n computedStyles = mergeWith3({}, computedStyles, staticStyles);\n }\n if (configProperty && Array.isArray(configProperty)) {\n for (const property of configProperty) {\n computedStyles[property] = rawValue;\n }\n continue;\n }\n if (configProperty) {\n if (configProperty === \"&\" && isObject7(rawValue)) {\n computedStyles = mergeWith3({}, computedStyles, rawValue);\n } else {\n computedStyles[configProperty] = rawValue;\n }\n continue;\n }\n if (isObject7(rawValue)) {\n computedStyles = mergeWith3({}, computedStyles, rawValue);\n continue;\n }\n computedStyles[key] = rawValue;\n }\n return computedStyles;\n };\n return css2;\n}\nvar css = (styles) => (theme) => {\n const cssFn = getCss({\n theme,\n pseudos: pseudoSelectors,\n configs: systemProps\n });\n return cssFn(styles);\n};\n\n// src/define-styles.ts\nfunction defineStyle(styles) {\n return styles;\n}\nfunction defineStyleConfig(config) {\n return config;\n}\nfunction createMultiStyleConfigHelpers(parts) {\n return {\n definePartsStyle(config) {\n return config;\n },\n defineMultiStyleConfig(config) {\n return { parts, ...config };\n }\n };\n}\n\n// src/style-config.ts\nimport { runIfFn as runIfFn3, isObject as isObject8 } from \"@chakra-ui/shared-utils\";\nimport mergeWith4 from \"lodash.mergewith\";\nfunction normalize2(value, toArray) {\n if (Array.isArray(value))\n return value;\n if (isObject8(value))\n return toArray(value);\n if (value != null)\n return [value];\n}\nfunction getNextIndex(values, i) {\n for (let j = i + 1; j < values.length; j++) {\n if (values[j] != null)\n return j;\n }\n return -1;\n}\nfunction createResolver(theme) {\n const breakpointUtil = theme.__breakpoints;\n return function resolver(config, prop, value, props) {\n var _a, _b;\n if (!breakpointUtil)\n return;\n const result = {};\n const normalized = normalize2(value, breakpointUtil.toArrayValue);\n if (!normalized)\n return result;\n const len = normalized.length;\n const isSingle = len === 1;\n const isMultipart = !!config.parts;\n for (let i = 0; i < len; i++) {\n const key = breakpointUtil.details[i];\n const nextKey = breakpointUtil.details[getNextIndex(normalized, i)];\n const query = toMediaQueryString(key.minW, nextKey == null ? void 0 : nextKey._minW);\n const styles = runIfFn3((_a = config[prop]) == null ? void 0 : _a[normalized[i]], props);\n if (!styles)\n continue;\n if (isMultipart) {\n (_b = config.parts) == null ? void 0 : _b.forEach((part) => {\n mergeWith4(result, {\n [part]: isSingle ? styles[part] : { [query]: styles[part] }\n });\n });\n continue;\n }\n if (!isMultipart) {\n if (isSingle)\n mergeWith4(result, styles);\n else\n result[query] = styles;\n continue;\n }\n result[query] = styles;\n }\n return result;\n };\n}\nfunction resolveStyleConfig(config) {\n return (props) => {\n var _a;\n const { variant, size, theme } = props;\n const recipe = createResolver(theme);\n return mergeWith4(\n {},\n runIfFn3((_a = config.baseStyle) != null ? _a : {}, props),\n recipe(config, \"sizes\", size, props),\n recipe(config, \"variants\", variant, props)\n );\n };\n}\n\n// src/get-css-var.ts\nfunction getCSSVar(theme, scale, value) {\n var _a, _b, _c;\n return (_c = (_b = (_a = theme.__cssMap) == null ? void 0 : _a[`${scale}.${value}`]) == null ? void 0 : _b.varRef) != null ? _c : value;\n}\n\n// src/theming-props.ts\nfunction omitThemingProps(props) {\n return omit(props, [\"styleConfig\", \"size\", \"variant\", \"colorScheme\"]);\n}\nexport {\n addPrefix,\n background,\n border,\n calc,\n color,\n createMultiStyleConfigHelpers,\n css,\n cssVar,\n defineCssVars,\n defineStyle,\n defineStyleConfig,\n effect,\n filter,\n flattenTokens,\n flexbox,\n getCSSVar,\n getCss,\n grid,\n interactivity,\n isStyleProp,\n layout,\n layoutPropNames,\n list,\n omitThemingProps,\n others,\n position,\n propNames,\n pseudoPropNames,\n pseudoSelectors,\n resolveStyleConfig,\n ring,\n scroll,\n space,\n systemProps,\n textDecoration,\n toCSSVar,\n toVarDefinition,\n toVarReference,\n tokenToCSSVar,\n transform,\n transition,\n typography\n};\n","// src/object.ts\nimport { default as default2 } from \"lodash.mergewith\";\nfunction omit(object, keys) {\n const result = {};\n Object.keys(object).forEach((key) => {\n if (keys.includes(key))\n return;\n result[key] = object[key];\n });\n return result;\n}\nfunction pick(object, keys) {\n const result = {};\n keys.forEach((key) => {\n if (key in object) {\n result[key] = object[key];\n }\n });\n return result;\n}\nfunction split(object, keys) {\n const picked = {};\n const omitted = {};\n Object.keys(object).forEach((key) => {\n if (keys.includes(key)) {\n picked[key] = object[key];\n } else {\n omitted[key] = object[key];\n }\n });\n return [picked, omitted];\n}\nfunction get(obj, path, fallback, index) {\n const key = typeof path === \"string\" ? path.split(\".\") : [path];\n for (index = 0; index < key.length; index += 1) {\n if (!obj)\n break;\n obj = obj[key[index]];\n }\n return obj === void 0 ? fallback : obj;\n}\nvar memoize = (fn) => {\n const cache = /* @__PURE__ */ new WeakMap();\n const memoizedFn = (obj, path, fallback, index) => {\n if (typeof obj === \"undefined\") {\n return fn(obj, path, fallback);\n }\n if (!cache.has(obj)) {\n cache.set(obj, /* @__PURE__ */ new Map());\n }\n const map = cache.get(obj);\n if (map.has(path)) {\n return map.get(path);\n }\n const value = fn(obj, path, fallback, index);\n map.set(path, value);\n return value;\n };\n return memoizedFn;\n};\nvar memoizedGet = memoize(get);\nfunction getWithDefault(path, scale) {\n return memoizedGet(scale, path, path);\n}\nfunction objectFilter(object, fn) {\n const result = {};\n Object.keys(object).forEach((key) => {\n const value = object[key];\n const shouldPass = fn(value, key, object);\n if (shouldPass) {\n result[key] = value;\n }\n });\n return result;\n}\nvar filterUndefined = (object) => objectFilter(object, (val) => val !== null && val !== void 0);\nvar objectKeys = (obj) => Object.keys(obj);\nvar fromEntries = (entries) => entries.reduce((carry, [key, value]) => {\n carry[key] = value;\n return carry;\n}, {});\nvar getCSSVar = (theme, scale, value) => {\n var _a, _b, _c;\n return (_c = (_b = (_a = theme.__cssMap) == null ? void 0 : _a[`${scale}.${value}`]) == null ? void 0 : _b.varRef) != null ? _c : value;\n};\n\nexport {\n omit,\n pick,\n split,\n get,\n memoize,\n memoizedGet,\n getWithDefault,\n objectFilter,\n filterUndefined,\n objectKeys,\n fromEntries,\n getCSSVar,\n default2 as default\n};\n","import {\n __DEV__,\n isFunction,\n isNumber\n} from \"./chunk-Y5FGD7DM.mjs\";\n\n// src/function.ts\nfunction runIfFn(valueOrFn, ...args) {\n return isFunction(valueOrFn) ? valueOrFn(...args) : valueOrFn;\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}\nvar compose = (fn1, ...fns) => fns.reduce(\n (f1, f2) => (...args) => f1(f2(...args)),\n fn1\n);\nfunction once(fn) {\n let result;\n return function func(...args) {\n if (fn) {\n result = fn.apply(this, args);\n fn = null;\n }\n return result;\n };\n}\nvar noop = () => {\n};\nvar warn = /* @__PURE__ */ once((options) => () => {\n const { condition, message } = options;\n if (condition && __DEV__) {\n console.warn(message);\n }\n});\nvar error = /* @__PURE__ */ once((options) => () => {\n const { condition, message } = options;\n if (condition && __DEV__) {\n console.error(message);\n }\n});\nvar pipe = (...fns) => (v) => fns.reduce((a, b) => b(a), v);\nvar distance1D = (a, b) => Math.abs(a - b);\nvar isPoint = (point) => \"x\" in point && \"y\" in point;\nfunction distance(a, b) {\n if (isNumber(a) && isNumber(b)) {\n return distance1D(a, b);\n }\n if (isPoint(a) && isPoint(b)) {\n const xDelta = distance1D(a.x, b.x);\n const yDelta = distance1D(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n }\n return 0;\n}\n\nexport {\n runIfFn,\n callAllHandlers,\n callAll,\n compose,\n once,\n noop,\n warn,\n error,\n pipe,\n distance\n};\n","// src/assertion.ts\nfunction isNumber(value) {\n return typeof value === \"number\";\n}\nfunction isNotNumber(value) {\n return typeof value !== \"number\" || Number.isNaN(value) || !Number.isFinite(value);\n}\nfunction isNumeric(value) {\n return value != null && value - parseFloat(value) + 1 >= 0;\n}\nfunction isArray(value) {\n return Array.isArray(value);\n}\nfunction isEmptyArray(value) {\n return isArray(value) && value.length === 0;\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nfunction isDefined(value) {\n return typeof value !== \"undefined\" && value !== void 0;\n}\nfunction isUndefined(value) {\n return typeof value === \"undefined\" || value === void 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 isNotEmptyObject(value) {\n return value && !isEmptyObject(value);\n}\nfunction isNull(value) {\n return value == null;\n}\nfunction isString(value) {\n return Object.prototype.toString.call(value) === \"[object String]\";\n}\nfunction isCssVar(value) {\n return /^var\\(--.+\\)$/.test(value);\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}\nvar __DEV__ = process.env.NODE_ENV !== \"production\";\nvar __TEST__ = process.env.NODE_ENV === \"test\";\nfunction isRefObject(val) {\n return \"current\" in val;\n}\nfunction isInputEvent(value) {\n return value && isObject(value) && isObject(value.target);\n}\n\nexport {\n isNumber,\n isNotNumber,\n isNumeric,\n isArray,\n isEmptyArray,\n isFunction,\n isDefined,\n isUndefined,\n isObject,\n isEmptyObject,\n isNotEmptyObject,\n isNull,\n isString,\n isCssVar,\n isEmpty,\n __DEV__,\n __TEST__,\n isRefObject,\n isInputEvent\n};\n","import { useColorMode } from \"@chakra-ui/color-mode\"\nimport { createContext, CreateContextReturn } from \"@chakra-ui/react-utils\"\nimport { css, toCSSVar, SystemStyleObject } from \"@chakra-ui/styled-system\"\nimport { memoizedGet as get, runIfFn } from \"@chakra-ui/utils\"\nimport {\n Global,\n Interpolation,\n ThemeProvider as EmotionThemeProvider,\n ThemeProviderProps as EmotionThemeProviderProps,\n} from \"@emotion/react\"\nimport { useMemo } from \"react\"\n\nexport interface ThemeProviderProps extends EmotionThemeProviderProps {\n cssVarsRoot?: string\n}\n\nexport function ThemeProvider(props: ThemeProviderProps): JSX.Element {\n const { cssVarsRoot, theme, children } = props\n const computedTheme = useMemo(() => toCSSVar(theme), [theme])\n return (\n \n \n {children}\n \n )\n}\n\nexport interface CSSVarsProps {\n /**\n * The element to attach the CSS custom properties to.\n * @default \":host, :root\"\n */\n root?: string\n}\n\nexport function CSSVars({ root = \":host, :root\" }: CSSVarsProps): JSX.Element {\n /**\n * Append color mode selector to allow semantic tokens to change according to the color mode\n */\n const selector = [root, `[data-theme]`].join(\",\")\n return ({ [selector]: theme.__cssVars })} />\n}\n\n/**\n * @deprecated - Prefer to use `createStylesContext` to provide better error messages\n *\n * @example\n *\n * ```jsx\n * import { createStylesContext } from \"@chakra-ui/react\"\n *\n * const [StylesProvider, useStyles] = createStylesContext(\"Component\")\n * ```\n */\nconst [StylesProvider, useStyles] = createContext<\n Record\n>({\n name: \"StylesContext\",\n errorMessage:\n \"useStyles: `styles` is undefined. Seems you forgot to wrap the components in `` \",\n})\n\nexport { StylesProvider, useStyles }\n\n/**\n * Helper function that creates context with a standardized errorMessage related to the component\n * @param componentName\n * @returns [StylesProvider, useStyles]\n */\nexport function createStylesContext(\n componentName: string,\n): CreateStyleContextReturn {\n return createContext>({\n name: `${componentName}StylesContext`,\n errorMessage: `useStyles: \"styles\" is undefined. Seems you forgot to wrap the components in \"<${componentName} />\" `,\n })\n}\n\nexport type CreateStyleContextReturn = CreateContextReturn<\n Record\n>\n\n/**\n * Applies styles defined in `theme.styles.global` globally\n * using emotion's `Global` component\n */\nexport function GlobalStyle(): JSX.Element {\n const { colorMode } = useColorMode()\n return (\n {\n const styleObjectOrFn = get(theme, \"styles.global\")\n const globalStyles = runIfFn(styleObjectOrFn, { theme, colorMode })\n if (!globalStyles) return undefined\n const styles = css(globalStyles)(theme)\n return styles as Interpolation<{}>\n }}\n />\n )\n}\n","// src/context.ts\nimport {\n createContext as createReactContext,\n useContext as useReactContext\n} from \"react\";\nfunction createContext(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 = createReactContext(void 0);\n Context.displayName = name;\n function useContext() {\n var _a;\n const context = useReactContext(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, useContext);\n throw error;\n }\n return context;\n }\n return [\n Context.Provider,\n useContext,\n Context\n ];\n}\n\nexport {\n createContext\n};\n","import { ColorMode } from \"./color-mode-types\"\n\nconst classNames = {\n light: \"chakra-ui-light\",\n dark: \"chakra-ui-dark\",\n}\n\ntype UtilOptions = {\n preventTransition?: boolean\n}\n\nexport function getColorModeUtils(options: UtilOptions = {}) {\n const { preventTransition = true } = options\n\n const utils = {\n setDataset: (value: ColorMode) => {\n const cleanup = preventTransition ? utils.preventTransition() : undefined\n document.documentElement.dataset.theme = value\n document.documentElement.style.colorScheme = value\n cleanup?.()\n },\n setClassName(dark: boolean) {\n document.body.classList.add(dark ? classNames.dark : classNames.light)\n document.body.classList.remove(dark ? classNames.light : classNames.dark)\n },\n query() {\n return window.matchMedia(\"(prefers-color-scheme: dark)\")\n },\n getSystemTheme(fallback?: ColorMode) {\n const dark = utils.query().matches ?? fallback === \"dark\"\n return dark ? \"dark\" : \"light\"\n },\n addListener(fn: (cm: ColorMode) => unknown) {\n const mql = utils.query()\n const listener = (e: MediaQueryListEvent) => {\n fn(e.matches ? \"dark\" : \"light\")\n }\n\n if (typeof mql.addListener === \"function\") mql.addListener(listener)\n else mql.addEventListener(\"change\", listener)\n\n return () => {\n if (typeof mql.removeListener === \"function\")\n mql.removeListener(listener)\n else mql.removeEventListener(\"change\", listener)\n }\n },\n preventTransition() {\n const css = document.createElement(\"style\")\n css.appendChild(\n document.createTextNode(\n `*{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`,\n ),\n )\n document.head.appendChild(css)\n\n return () => {\n // force a reflow\n ;(() => window.getComputedStyle(document.body))()\n\n // wait for next tick\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n document.head.removeChild(css)\n })\n })\n }\n },\n }\n\n return utils\n}\n","import { ColorMode } from \"./color-mode-types\"\n\nexport const STORAGE_KEY = \"chakra-ui-color-mode\"\n\ntype MaybeColorMode = ColorMode | undefined\n\nexport interface StorageManager {\n type: \"cookie\" | \"localStorage\"\n ssr?: boolean\n get(init?: ColorMode): MaybeColorMode\n set(value: ColorMode | \"system\"): void\n}\n\nexport function createLocalStorageManager(key: string): StorageManager {\n return {\n ssr: false,\n type: \"localStorage\",\n get(init?) {\n if (!globalThis?.document) return init\n let value: any\n try {\n value = localStorage.getItem(key) || init\n } catch (e) {\n // no op\n }\n\n return value || init\n },\n set(value) {\n try {\n localStorage.setItem(key, value)\n } catch (e) {\n // no op\n }\n },\n }\n}\n\nexport const localStorageManager = createLocalStorageManager(STORAGE_KEY)\n\nfunction parseCookie(cookie: string, key: string): MaybeColorMode {\n const match = cookie.match(new RegExp(`(^| )${key}=([^;]+)`))\n return match?.[2] as MaybeColorMode\n}\n\nexport function createCookieStorageManager(\n key: string,\n cookie?: string,\n): StorageManager {\n return {\n ssr: !!cookie,\n type: \"cookie\",\n get(init?): MaybeColorMode {\n if (cookie) return parseCookie(cookie, key)\n if (!globalThis?.document) return init\n return parseCookie(document.cookie, key) || init\n },\n set(value) {\n document.cookie = `${key}=${value}; max-age=31536000; path=/`\n },\n }\n}\n\nexport const cookieStorageManager = createCookieStorageManager(STORAGE_KEY)\n\nexport const cookieStorageManagerSSR = (cookie: string) =>\n createCookieStorageManager(STORAGE_KEY, cookie)\n","import { useEffect, useLayoutEffect } from \"react\"\n\nexport const useSafeLayoutEffect = Boolean(globalThis?.document)\n ? useLayoutEffect\n : useEffect\n","import { useSafeLayoutEffect } from \"@chakra-ui/react-use-safe-layout-effect\"\nimport { useCallback, useEffect, useMemo, useState } from \"react\"\nimport { ColorModeContext } from \"./color-mode-context\"\nimport {\n ColorMode,\n ColorModeContextType,\n ColorModeOptions,\n} from \"./color-mode-types\"\nimport { getColorModeUtils } from \"./color-mode.utils\"\nimport { localStorageManager, StorageManager } from \"./storage-manager\"\n\nconst noop = () => {}\n\nexport interface ColorModeProviderProps {\n value?: ColorMode\n children?: React.ReactNode\n options?: ColorModeOptions\n colorModeManager?: StorageManager\n}\n\nfunction getTheme(manager: StorageManager, fallback?: ColorMode) {\n return manager.type === \"cookie\" && manager.ssr\n ? manager.get(fallback)\n : fallback\n}\n\n/**\n * Provides context for the color mode based on config in `theme`\n * Returns the color mode and function to toggle the color mode\n */\nexport function ColorModeProvider(props: ColorModeProviderProps) {\n const {\n value,\n children,\n options: {\n useSystemColorMode,\n initialColorMode,\n disableTransitionOnChange,\n } = {},\n colorModeManager = localStorageManager,\n } = props\n\n const defaultColorMode = initialColorMode === \"dark\" ? \"dark\" : \"light\"\n\n const [colorMode, rawSetColorMode] = useState(() =>\n getTheme(colorModeManager, defaultColorMode),\n )\n\n const [resolvedColorMode, setResolvedColorMode] = useState(() =>\n getTheme(colorModeManager),\n )\n\n const { getSystemTheme, setClassName, setDataset, addListener } = useMemo(\n () => getColorModeUtils({ preventTransition: disableTransitionOnChange }),\n [disableTransitionOnChange],\n )\n\n const resolvedValue =\n initialColorMode === \"system\" && !colorMode ? resolvedColorMode : colorMode\n\n const setColorMode = useCallback(\n (value: ColorMode | \"system\") => {\n //\n const resolved = value === \"system\" ? getSystemTheme() : value\n rawSetColorMode(resolved)\n\n setClassName(resolved === \"dark\")\n setDataset(resolved)\n\n colorModeManager.set(resolved)\n },\n [colorModeManager, getSystemTheme, setClassName, setDataset],\n )\n\n useSafeLayoutEffect(() => {\n if (initialColorMode === \"system\") {\n setResolvedColorMode(getSystemTheme())\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n const managerValue = colorModeManager.get()\n\n if (managerValue) {\n setColorMode(managerValue)\n return\n }\n\n if (initialColorMode === \"system\") {\n setColorMode(\"system\")\n return\n }\n\n setColorMode(defaultColorMode)\n }, [colorModeManager, defaultColorMode, initialColorMode, setColorMode])\n\n const toggleColorMode = useCallback(() => {\n setColorMode(resolvedValue === \"dark\" ? \"light\" : \"dark\")\n }, [resolvedValue, setColorMode])\n\n useEffect(() => {\n if (!useSystemColorMode) return\n return addListener(setColorMode)\n }, [useSystemColorMode, addListener, setColorMode])\n\n // presence of `value` indicates a controlled context\n const context = useMemo(\n () => ({\n colorMode: value ?? (resolvedValue as ColorMode),\n toggleColorMode: value ? noop : toggleColorMode,\n setColorMode: value ? noop : setColorMode,\n forced: value !== undefined,\n }),\n [resolvedValue, toggleColorMode, setColorMode, value],\n )\n\n return (\n \n {children}\n \n )\n}\n\nColorModeProvider.displayName = \"ColorModeProvider\"\n\n/**\n * Locks the color mode to `dark`, without any way to change it.\n */\nexport function DarkMode(props: React.PropsWithChildren<{}>) {\n const context = useMemo(\n () => ({\n colorMode: \"dark\",\n toggleColorMode: noop,\n setColorMode: noop,\n forced: true,\n }),\n [],\n )\n\n return \n}\n\nDarkMode.displayName = \"DarkMode\"\n\n/**\n * Locks the color mode to `light` without any way to change it.\n */\nexport function LightMode(props: React.PropsWithChildren<{}>) {\n const context = useMemo(\n () => ({\n colorMode: \"light\",\n toggleColorMode: noop,\n setColorMode: noop,\n forced: true,\n }),\n [],\n )\n\n return \n}\n\nLightMode.displayName = \"LightMode\"\n","import { useSafeLayoutEffect } from \"@chakra-ui/react-use-safe-layout-effect\"\nimport { createContext, useContext, useMemo, useReducer, useRef } from \"react\"\n\ninterface Environment {\n getWindow: () => Window\n getDocument: () => Document\n}\n\nconst EnvironmentContext = createContext({\n getDocument() {\n return document\n },\n getWindow() {\n return window\n },\n})\n\nEnvironmentContext.displayName = \"EnvironmentContext\"\n\nexport function useEnvironment({ defer }: { defer?: boolean } = {}) {\n const [, forceUpdate] = useReducer((c) => c + 1, 0)\n\n useSafeLayoutEffect(() => {\n if (!defer) return\n forceUpdate()\n }, [defer])\n\n return useContext(EnvironmentContext)\n}\n\nexport interface EnvironmentProviderProps {\n children: React.ReactNode\n disabled?: boolean\n environment?: Environment\n}\n\nexport function EnvironmentProvider(props: EnvironmentProviderProps) {\n const { children, environment: environmentProp, disabled } = props\n const ref = useRef(null)\n\n const context = useMemo(() => {\n if (environmentProp) return environmentProp\n return {\n getDocument: () => ref.current?.ownerDocument ?? document,\n getWindow: () => ref.current?.ownerDocument.defaultView ?? window,\n }\n }, [environmentProp])\n\n const showSpan = !disabled || !environmentProp\n\n return (\n \n {children}\n {showSpan && \n )\n}\n\nEnvironmentProvider.displayName = \"EnvironmentProvider\"\n","import { CSSReset, CSSPolyfill } from \"@chakra-ui/css-reset\"\nimport { PortalManager } from \"@chakra-ui/portal\"\nimport {\n ColorModeProvider,\n ColorModeProviderProps,\n GlobalStyle,\n ThemeProvider,\n ThemeProviderProps,\n} from \"@chakra-ui/system\"\nimport { Dict } from \"@chakra-ui/utils\"\nimport {\n EnvironmentProvider,\n EnvironmentProviderProps,\n} from \"@chakra-ui/react-env\"\n\nexport interface ChakraProviderProps\n extends Pick {\n /**\n * a theme. if omitted, uses the default theme provided by chakra\n */\n theme?: Dict\n /**\n * Common z-index to use for `Portal`\n *\n * @default undefined\n */\n portalZIndex?: number\n /**\n * If `true`, `CSSReset` component will be mounted to help\n * you reset browser styles\n *\n * @default true\n */\n resetCSS?: boolean\n /**\n * The selector to scope the css reset styles to.\n */\n resetScope?: string\n /**\n * manager to persist a users color mode preference in\n *\n * omit if you don't render server-side\n * for SSR: choose `cookieStorageManager`\n *\n * @default localStorageManager\n */\n colorModeManager?: ColorModeProviderProps[\"colorModeManager\"]\n /**\n * Your application content\n */\n children?: React.ReactNode\n /**\n * The environment (`window` and `document`) to be used by\n * all components and hooks.\n *\n * By default, we smartly determine the ownerDocument and defaultView\n * based on where `ChakraProvider` is rendered.\n */\n environment?: EnvironmentProviderProps[\"environment\"]\n /**\n * Disabled the use of automatic window and document detection.\n * This removed the injected `` element\n */\n disableEnvironment?: boolean\n /**\n * If `true`, Chakra will not mount the global styles defined in the theme.\n */\n disableGlobalStyle?: boolean\n}\n\n/**\n * The global provider that must be added to make all Chakra components\n * work correctly\n */\nexport const ChakraProvider: React.FC = (props) => {\n const {\n children,\n colorModeManager,\n portalZIndex,\n resetScope,\n resetCSS = true,\n theme = {},\n environment,\n cssVarsRoot,\n disableEnvironment,\n disableGlobalStyle,\n } = props\n\n const _children = (\n \n {children}\n \n )\n\n return (\n \n \n {resetCSS ? : }\n {!disableGlobalStyle && }\n {portalZIndex ? (\n {_children}\n ) : (\n _children\n )}\n \n \n )\n}\n","const transitionProperty = {\n common:\n \"background-color, border-color, color, fill, stroke, opacity, box-shadow, transform\",\n colors: \"background-color, border-color, color, fill, stroke\",\n dimensions: \"width, height\",\n position: \"left, right, top, bottom\",\n background: \"background-color, background-image, background-position\",\n}\n\nconst transitionTimingFunction = {\n \"ease-in\": \"cubic-bezier(0.4, 0, 1, 1)\",\n \"ease-out\": \"cubic-bezier(0, 0, 0.2, 1)\",\n \"ease-in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n}\n\nconst transitionDuration = {\n \"ultra-fast\": \"50ms\",\n faster: \"100ms\",\n fast: \"150ms\",\n normal: \"200ms\",\n slow: \"300ms\",\n slower: \"400ms\",\n \"ultra-slow\": \"500ms\",\n}\n\nconst transition = {\n property: transitionProperty,\n easing: transitionTimingFunction,\n duration: transitionDuration,\n}\n\nexport default transition\n","const zIndices = {\n hide: -1,\n auto: \"auto\",\n base: 0,\n docked: 10,\n dropdown: 1000,\n sticky: 1100,\n banner: 1200,\n overlay: 1300,\n modal: 1400,\n popover: 1500,\n skipLink: 1600,\n toast: 1700,\n tooltip: 1800,\n}\n\nexport default zIndices\n","const borders = {\n none: 0,\n \"1px\": \"1px solid\",\n \"2px\": \"2px solid\",\n \"4px\": \"4px solid\",\n \"8px\": \"8px solid\",\n}\n\nexport default borders\n","const breakpoints = {\n base: \"0em\",\n sm: \"30em\",\n md: \"48em\",\n lg: \"62em\",\n xl: \"80em\",\n \"2xl\": \"96em\",\n}\n\nexport default breakpoints\n","const colors = {\n transparent: \"transparent\",\n current: \"currentColor\",\n black: \"#000000\",\n white: \"#FFFFFF\",\n\n whiteAlpha: {\n 50: \"rgba(255, 255, 255, 0.04)\",\n 100: \"rgba(255, 255, 255, 0.06)\",\n 200: \"rgba(255, 255, 255, 0.08)\",\n 300: \"rgba(255, 255, 255, 0.16)\",\n 400: \"rgba(255, 255, 255, 0.24)\",\n 500: \"rgba(255, 255, 255, 0.36)\",\n 600: \"rgba(255, 255, 255, 0.48)\",\n 700: \"rgba(255, 255, 255, 0.64)\",\n 800: \"rgba(255, 255, 255, 0.80)\",\n 900: \"rgba(255, 255, 255, 0.92)\",\n },\n\n blackAlpha: {\n 50: \"rgba(0, 0, 0, 0.04)\",\n 100: \"rgba(0, 0, 0, 0.06)\",\n 200: \"rgba(0, 0, 0, 0.08)\",\n 300: \"rgba(0, 0, 0, 0.16)\",\n 400: \"rgba(0, 0, 0, 0.24)\",\n 500: \"rgba(0, 0, 0, 0.36)\",\n 600: \"rgba(0, 0, 0, 0.48)\",\n 700: \"rgba(0, 0, 0, 0.64)\",\n 800: \"rgba(0, 0, 0, 0.80)\",\n 900: \"rgba(0, 0, 0, 0.92)\",\n },\n\n gray: {\n 50: \"#F7FAFC\",\n 100: \"#EDF2F7\",\n 200: \"#E2E8F0\",\n 300: \"#CBD5E0\",\n 400: \"#A0AEC0\",\n 500: \"#718096\",\n 600: \"#4A5568\",\n 700: \"#2D3748\",\n 800: \"#1A202C\",\n 900: \"#171923\",\n },\n\n red: {\n 50: \"#FFF5F5\",\n 100: \"#FED7D7\",\n 200: \"#FEB2B2\",\n 300: \"#FC8181\",\n 400: \"#F56565\",\n 500: \"#E53E3E\",\n 600: \"#C53030\",\n 700: \"#9B2C2C\",\n 800: \"#822727\",\n 900: \"#63171B\",\n },\n\n orange: {\n 50: \"#FFFAF0\",\n 100: \"#FEEBC8\",\n 200: \"#FBD38D\",\n 300: \"#F6AD55\",\n 400: \"#ED8936\",\n 500: \"#DD6B20\",\n 600: \"#C05621\",\n 700: \"#9C4221\",\n 800: \"#7B341E\",\n 900: \"#652B19\",\n },\n\n yellow: {\n 50: \"#FFFFF0\",\n 100: \"#FEFCBF\",\n 200: \"#FAF089\",\n 300: \"#F6E05E\",\n 400: \"#ECC94B\",\n 500: \"#D69E2E\",\n 600: \"#B7791F\",\n 700: \"#975A16\",\n 800: \"#744210\",\n 900: \"#5F370E\",\n },\n\n green: {\n 50: \"#F0FFF4\",\n 100: \"#C6F6D5\",\n 200: \"#9AE6B4\",\n 300: \"#68D391\",\n 400: \"#48BB78\",\n 500: \"#38A169\",\n 600: \"#2F855A\",\n 700: \"#276749\",\n 800: \"#22543D\",\n 900: \"#1C4532\",\n },\n\n teal: {\n 50: \"#E6FFFA\",\n 100: \"#B2F5EA\",\n 200: \"#81E6D9\",\n 300: \"#4FD1C5\",\n 400: \"#38B2AC\",\n 500: \"#319795\",\n 600: \"#2C7A7B\",\n 700: \"#285E61\",\n 800: \"#234E52\",\n 900: \"#1D4044\",\n },\n\n blue: {\n 50: \"#ebf8ff\",\n 100: \"#bee3f8\",\n 200: \"#90cdf4\",\n 300: \"#63b3ed\",\n 400: \"#4299e1\",\n 500: \"#3182ce\",\n 600: \"#2b6cb0\",\n 700: \"#2c5282\",\n 800: \"#2a4365\",\n 900: \"#1A365D\",\n },\n\n cyan: {\n 50: \"#EDFDFD\",\n 100: \"#C4F1F9\",\n 200: \"#9DECF9\",\n 300: \"#76E4F7\",\n 400: \"#0BC5EA\",\n 500: \"#00B5D8\",\n 600: \"#00A3C4\",\n 700: \"#0987A0\",\n 800: \"#086F83\",\n 900: \"#065666\",\n },\n\n purple: {\n 50: \"#FAF5FF\",\n 100: \"#E9D8FD\",\n 200: \"#D6BCFA\",\n 300: \"#B794F4\",\n 400: \"#9F7AEA\",\n 500: \"#805AD5\",\n 600: \"#6B46C1\",\n 700: \"#553C9A\",\n 800: \"#44337A\",\n 900: \"#322659\",\n },\n\n pink: {\n 50: \"#FFF5F7\",\n 100: \"#FED7E2\",\n 200: \"#FBB6CE\",\n 300: \"#F687B3\",\n 400: \"#ED64A6\",\n 500: \"#D53F8C\",\n 600: \"#B83280\",\n 700: \"#97266D\",\n 800: \"#702459\",\n 900: \"#521B41\",\n },\n\n linkedin: {\n 50: \"#E8F4F9\",\n 100: \"#CFEDFB\",\n 200: \"#9BDAF3\",\n 300: \"#68C7EC\",\n 400: \"#34B3E4\",\n 500: \"#00A0DC\",\n 600: \"#008CC9\",\n 700: \"#0077B5\",\n 800: \"#005E93\",\n 900: \"#004471\",\n },\n\n facebook: {\n 50: \"#E8F4F9\",\n 100: \"#D9DEE9\",\n 200: \"#B7C2DA\",\n 300: \"#6482C0\",\n 400: \"#4267B2\",\n 500: \"#385898\",\n 600: \"#314E89\",\n 700: \"#29487D\",\n 800: \"#223B67\",\n 900: \"#1E355B\",\n },\n\n messenger: {\n 50: \"#D0E6FF\",\n 100: \"#B9DAFF\",\n 200: \"#A2CDFF\",\n 300: \"#7AB8FF\",\n 400: \"#2E90FF\",\n 500: \"#0078FF\",\n 600: \"#0063D1\",\n 700: \"#0052AC\",\n 800: \"#003C7E\",\n 900: \"#002C5C\",\n },\n\n whatsapp: {\n 50: \"#dffeec\",\n 100: \"#b9f5d0\",\n 200: \"#90edb3\",\n 300: \"#65e495\",\n 400: \"#3cdd78\",\n 500: \"#22c35e\",\n 600: \"#179848\",\n 700: \"#0c6c33\",\n 800: \"#01421c\",\n 900: \"#001803\",\n },\n\n twitter: {\n 50: \"#E5F4FD\",\n 100: \"#C8E9FB\",\n 200: \"#A8DCFA\",\n 300: \"#83CDF7\",\n 400: \"#57BBF5\",\n 500: \"#1DA1F2\",\n 600: \"#1A94DA\",\n 700: \"#1681BF\",\n 800: \"#136B9E\",\n 900: \"#0D4D71\",\n },\n\n telegram: {\n 50: \"#E3F2F9\",\n 100: \"#C5E4F3\",\n 200: \"#A2D4EC\",\n 300: \"#7AC1E4\",\n 400: \"#47A9DA\",\n 500: \"#0088CC\",\n 600: \"#007AB8\",\n 700: \"#006BA1\",\n 800: \"#005885\",\n 900: \"#003F5E\",\n },\n}\n\nexport default colors\n","const radii = {\n none: \"0\",\n sm: \"0.125rem\",\n base: \"0.25rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n \"2xl\": \"1rem\",\n \"3xl\": \"1.5rem\",\n full: \"9999px\",\n}\n\nexport default radii\n","const shadows = {\n xs: \"0 0 0 1px rgba(0, 0, 0, 0.05)\",\n sm: \"0 1px 2px 0 rgba(0, 0, 0, 0.05)\",\n base: \"0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)\",\n md: \"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)\",\n lg: \"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)\",\n xl: \"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)\",\n \"2xl\": \"0 25px 50px -12px rgba(0, 0, 0, 0.25)\",\n outline: \"0 0 0 3px rgba(66, 153, 225, 0.6)\",\n inner: \"inset 0 2px 4px 0 rgba(0,0,0,0.06)\",\n none: \"none\",\n \"dark-lg\":\n \"rgba(0, 0, 0, 0.1) 0px 0px 0px 1px, rgba(0, 0, 0, 0.2) 0px 5px 10px, rgba(0, 0, 0, 0.4) 0px 15px 40px\",\n}\n\nexport default shadows\n","const blur = {\n none: 0,\n sm: \"4px\",\n base: \"8px\",\n md: \"12px\",\n lg: \"16px\",\n xl: \"24px\",\n \"2xl\": \"40px\",\n \"3xl\": \"64px\",\n}\n\nexport default blur\n","const typography = {\n letterSpacings: {\n tighter: \"-0.05em\",\n tight: \"-0.025em\",\n normal: \"0\",\n wide: \"0.025em\",\n wider: \"0.05em\",\n widest: \"0.1em\",\n },\n\n lineHeights: {\n normal: \"normal\",\n none: 1,\n shorter: 1.25,\n short: 1.375,\n base: 1.5,\n tall: 1.625,\n taller: \"2\",\n \"3\": \".75rem\",\n \"4\": \"1rem\",\n \"5\": \"1.25rem\",\n \"6\": \"1.5rem\",\n \"7\": \"1.75rem\",\n \"8\": \"2rem\",\n \"9\": \"2.25rem\",\n \"10\": \"2.5rem\",\n },\n\n fontWeights: {\n hairline: 100,\n thin: 200,\n light: 300,\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n extrabold: 800,\n black: 900,\n },\n\n fonts: {\n heading: `-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`,\n body: `-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`,\n mono: `SFMono-Regular,Menlo,Monaco,Consolas,\"Liberation Mono\",\"Courier New\",monospace`,\n },\n\n fontSizes: {\n \"3xs\": \"0.45rem\",\n \"2xs\": \"0.625rem\",\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\",\n \"2xl\": \"1.5rem\",\n \"3xl\": \"1.875rem\",\n \"4xl\": \"2.25rem\",\n \"5xl\": \"3rem\",\n \"6xl\": \"3.75rem\",\n \"7xl\": \"4.5rem\",\n \"8xl\": \"6rem\",\n \"9xl\": \"8rem\",\n },\n}\n\nexport default typography\n","export const spacing = {\n px: \"1px\",\n 0.5: \"0.125rem\",\n 1: \"0.25rem\",\n 1.5: \"0.375rem\",\n 2: \"0.5rem\",\n 2.5: \"0.625rem\",\n 3: \"0.75rem\",\n 3.5: \"0.875rem\",\n 4: \"1rem\",\n 5: \"1.25rem\",\n 6: \"1.5rem\",\n 7: \"1.75rem\",\n 8: \"2rem\",\n 9: \"2.25rem\",\n 10: \"2.5rem\",\n 12: \"3rem\",\n 14: \"3.5rem\",\n 16: \"4rem\",\n 20: \"5rem\",\n 24: \"6rem\",\n 28: \"7rem\",\n 32: \"8rem\",\n 36: \"9rem\",\n 40: \"10rem\",\n 44: \"11rem\",\n 48: \"12rem\",\n 52: \"13rem\",\n 56: \"14rem\",\n 60: \"15rem\",\n 64: \"16rem\",\n 72: \"18rem\",\n 80: \"20rem\",\n 96: \"24rem\",\n}\n","import { spacing } from \"./spacing\"\n\nconst largeSizes = {\n max: \"max-content\",\n min: \"min-content\",\n full: \"100%\",\n \"3xs\": \"14rem\",\n \"2xs\": \"16rem\",\n xs: \"20rem\",\n sm: \"24rem\",\n md: \"28rem\",\n lg: \"32rem\",\n xl: \"36rem\",\n \"2xl\": \"42rem\",\n \"3xl\": \"48rem\",\n \"4xl\": \"56rem\",\n \"5xl\": \"64rem\",\n \"6xl\": \"72rem\",\n \"7xl\": \"80rem\",\n \"8xl\": \"90rem\",\n prose: \"60ch\",\n}\n\nconst container = {\n sm: \"640px\",\n md: \"768px\",\n lg: \"1024px\",\n xl: \"1280px\",\n}\n\nconst sizes = {\n ...spacing,\n ...largeSizes,\n container,\n}\n\nexport default sizes\n","import borders from \"./borders\"\nimport breakpoints from \"./breakpoints\"\nimport colors from \"./colors\"\nimport radii from \"./radius\"\nimport shadows from \"./shadows\"\nimport sizes from \"./sizes\"\nimport { spacing } from \"./spacing\"\nimport transition from \"./transition\"\nimport typography from \"./typography\"\nimport zIndices from \"./z-index\"\nimport blur from \"./blur\"\n\nexport const foundations = {\n breakpoints,\n zIndices,\n radii,\n blur,\n colors,\n ...typography,\n sizes,\n shadows,\n space: spacing,\n borders,\n transition,\n}\n","import { createMultiStyleConfigHelpers, cssVar } from \"@chakra-ui/styled-system\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers([\n \"stepper\",\n \"step\",\n \"title\",\n \"description\",\n \"indicator\",\n \"separator\",\n \"icon\",\n \"number\",\n ])\n\nconst $size = cssVar(\"stepper-indicator-size\")\nconst $iconSize = cssVar(\"stepper-icon-size\")\nconst $titleFontSize = cssVar(\"stepper-title-font-size\")\nconst $descFontSize = cssVar(\"stepper-description-font-size\")\nconst $accentColor = cssVar(\"stepper-accent-color\")\n\nconst baseStyle = definePartsStyle(({ colorScheme: c }) => ({\n stepper: {\n display: \"flex\",\n justifyContent: \"space-between\",\n gap: \"4\",\n \"&[data-orientation=vertical]\": {\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n },\n \"&[data-orientation=horizontal]\": {\n flexDirection: \"row\",\n alignItems: \"center\",\n },\n [$accentColor.variable]: `colors.${c}.500`,\n _dark: {\n [$accentColor.variable]: `colors.${c}.200`,\n },\n },\n title: {\n fontSize: $titleFontSize.reference,\n fontWeight: \"medium\",\n },\n description: {\n fontSize: $descFontSize.reference,\n color: \"chakra-subtle-text\",\n },\n number: {\n fontSize: $titleFontSize.reference,\n },\n step: {\n flexShrink: 0,\n position: \"relative\",\n display: \"flex\",\n gap: \"2\",\n \"&[data-orientation=horizontal]\": {\n alignItems: \"center\",\n },\n flex: \"1\",\n \"&:last-of-type:not([data-stretch])\": {\n flex: \"initial\",\n },\n },\n icon: {\n flexShrink: 0,\n width: $iconSize.reference,\n height: $iconSize.reference,\n },\n indicator: {\n flexShrink: 0,\n borderRadius: \"full\",\n width: $size.reference,\n height: $size.reference,\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"&[data-status=active]\": {\n borderWidth: \"2px\",\n borderColor: $accentColor.reference,\n },\n \"&[data-status=complete]\": {\n bg: $accentColor.reference,\n color: \"chakra-inverse-text\",\n },\n \"&[data-status=incomplete]\": {\n borderWidth: \"2px\",\n },\n },\n separator: {\n bg: \"chakra-border-color\",\n flex: \"1\",\n \"&[data-status=complete]\": {\n bg: $accentColor.reference,\n },\n \"&[data-orientation=horizontal]\": {\n width: \"100%\",\n height: \"2px\",\n marginStart: \"2\",\n },\n \"&[data-orientation=vertical]\": {\n width: \"2px\",\n position: \"absolute\",\n height: \"100%\",\n maxHeight: `calc(100% - ${$size.reference} - 8px)`,\n top: `calc(${$size.reference} + 4px)`,\n insetStart: `calc(${$size.reference} / 2 - 1px)`,\n },\n },\n}))\n\nexport const stepperTheme = defineMultiStyleConfig({\n baseStyle,\n sizes: {\n xs: definePartsStyle({\n stepper: {\n [$size.variable]: \"sizes.4\",\n [$iconSize.variable]: \"sizes.3\",\n [$titleFontSize.variable]: \"fontSizes.xs\",\n [$descFontSize.variable]: \"fontSizes.xs\",\n },\n }),\n sm: definePartsStyle({\n stepper: {\n [$size.variable]: \"sizes.6\",\n [$iconSize.variable]: \"sizes.4\",\n [$titleFontSize.variable]: \"fontSizes.sm\",\n [$descFontSize.variable]: \"fontSizes.xs\",\n },\n }),\n md: definePartsStyle({\n stepper: {\n [$size.variable]: \"sizes.8\",\n [$iconSize.variable]: \"sizes.5\",\n [$titleFontSize.variable]: \"fontSizes.md\",\n [$descFontSize.variable]: \"fontSizes.sm\",\n },\n }),\n lg: definePartsStyle({\n stepper: {\n [$size.variable]: \"sizes.10\",\n [$iconSize.variable]: \"sizes.6\",\n [$titleFontSize.variable]: \"fontSizes.lg\",\n [$descFontSize.variable]: \"fontSizes.md\",\n },\n }),\n },\n defaultProps: {\n size: \"md\",\n colorScheme: \"blue\",\n },\n})\n","/**\n * Used to define the anatomy/parts of a component in a way that provides\n * a consistent API for `className`, css selector and `theming`.\n */\nexport function anatomy(\n name: string,\n map = {} as Record,\n): Anatomy {\n let called = false\n\n /**\n * Prevents user from calling `.parts` multiple times.\n * It should only be called once.\n */\n function assert() {\n if (!called) {\n called = true\n return\n }\n\n throw new Error(\n \"[anatomy] .part(...) should only be called once. Did you mean to use .extend(...) ?\",\n )\n }\n\n /**\n * Add the core parts of the components\n */\n function parts(...values: V[]) {\n assert()\n for (const part of values) {\n ;(map as any)[part] = toPart(part)\n }\n return anatomy(name, map) as unknown as Omit, \"parts\">\n }\n\n /**\n * Extend the component anatomy to includes new parts\n */\n function extend(...parts: U[]) {\n for (const part of parts) {\n if (part in map) continue\n ;(map as any)[part] = toPart(part)\n }\n return anatomy(name, map) as unknown as Omit, \"parts\">\n }\n\n /**\n * Get all selectors for the component anatomy\n */\n function selectors() {\n const value = Object.fromEntries(\n Object.entries(map).map(([key, part]) => [key, (part as any).selector]),\n )\n return value as Record\n }\n\n /**\n * Get all classNames for the component anatomy\n */\n function classnames() {\n const value = Object.fromEntries(\n Object.entries(map).map(([key, part]) => [key, (part as any).className]),\n )\n return value as Record\n }\n\n /**\n * Creates the part object for the given part\n */\n function toPart(part: string) {\n const el = [\"container\", \"root\"].includes(part ?? \"\")\n ? [name]\n : [name, part]\n const attr = el.filter(Boolean).join(\"__\")\n const className = `chakra-${attr}`\n\n const partObj = {\n className,\n selector: `.${className}`,\n toString: () => part,\n }\n\n return partObj as typeof partObj & string\n }\n\n /**\n * Used to get the derived type of the anatomy\n */\n const __type = {} as T\n\n return {\n parts,\n toPart,\n extend,\n selectors,\n classnames,\n get keys(): T[] {\n return Object.keys(map) as T[]\n },\n __type,\n }\n}\n\ntype Part = {\n className: string\n selector: string\n toString: () => string\n}\n\ntype Anatomy = {\n parts: (...values: V[]) => Omit, \"parts\">\n toPart: (part: string) => Part\n extend: (...parts: U[]) => Omit, \"parts\">\n selectors: () => Record\n classnames: () => Record\n keys: T[]\n __type: T\n}\n","import { anatomy } from \"./anatomy\"\n\n/**\n * **Accordion anatomy**\n * - Root: the root container of the accordion\n * - Container: the accordion item contains the button and panel\n * - Button: the button is the trigger for the panel\n * - Panel: the panel is the content of the accordion item\n * - Icon: the expanded/collapsed icon\n */\nexport const accordionAnatomy = anatomy(\"accordion\")\n .parts(\"root\", \"container\", \"button\", \"panel\")\n .extend(\"icon\")\n\n/**\n * **Alert anatomy**\n * - Title: the alert's title\n * - Description: the alert's description\n * - Icon: the alert's icon\n */\nexport const alertAnatomy = anatomy(\"alert\")\n .parts(\"title\", \"description\", \"container\")\n .extend(\"icon\", \"spinner\")\n\n/**\n * **Avatar anatomy**\n * - Container: the container for the avatar\n * - Label: the avatar initials text\n * - Excess Label: the label or text that represents excess avatar count.\n * Typically used in avatar groups.\n * - Group: the container for the avatar group\n */\nexport const avatarAnatomy = anatomy(\"avatar\")\n .parts(\"label\", \"badge\", \"container\")\n .extend(\"excessLabel\", \"group\")\n\n/**\n * **Breadcrumb anatomy**\n * - Item: the container for a breadcrumb item\n * - Link: the element that represents the breadcrumb link\n * - Container: the container for the breadcrumb items\n * - Separator: the separator between breadcrumb items\n */\nexport const breadcrumbAnatomy = anatomy(\"breadcrumb\")\n .parts(\"link\", \"item\", \"container\")\n .extend(\"separator\")\n\nexport const buttonAnatomy = anatomy(\"button\").parts()\n\nexport const checkboxAnatomy = anatomy(\"checkbox\")\n .parts(\"control\", \"icon\", \"container\")\n .extend(\"label\")\n\nexport const circularProgressAnatomy = anatomy(\"progress\")\n .parts(\"track\", \"filledTrack\")\n .extend(\"label\")\n\nexport const drawerAnatomy = anatomy(\"drawer\")\n .parts(\"overlay\", \"dialogContainer\", \"dialog\")\n .extend(\"header\", \"closeButton\", \"body\", \"footer\")\n\nexport const editableAnatomy = anatomy(\"editable\").parts(\n \"preview\",\n \"input\",\n \"textarea\",\n)\n\nexport const formAnatomy = anatomy(\"form\").parts(\n \"container\",\n \"requiredIndicator\",\n \"helperText\",\n)\n\nexport const formErrorAnatomy = anatomy(\"formError\").parts(\"text\", \"icon\")\n\nexport const inputAnatomy = anatomy(\"input\").parts(\n \"addon\",\n \"field\",\n \"element\",\n \"group\",\n)\n\nexport const listAnatomy = anatomy(\"list\").parts(\"container\", \"item\", \"icon\")\n\nexport const menuAnatomy = anatomy(\"menu\")\n .parts(\"button\", \"list\", \"item\")\n .extend(\"groupTitle\", \"icon\", \"command\", \"divider\")\n\nexport const modalAnatomy = anatomy(\"modal\")\n .parts(\"overlay\", \"dialogContainer\", \"dialog\")\n .extend(\"header\", \"closeButton\", \"body\", \"footer\")\n\nexport const numberInputAnatomy = anatomy(\"numberinput\").parts(\n \"root\",\n \"field\",\n \"stepperGroup\",\n \"stepper\",\n)\n\nexport const pinInputAnatomy = anatomy(\"pininput\").parts(\"field\")\n\nexport const popoverAnatomy = anatomy(\"popover\")\n .parts(\"content\", \"header\", \"body\", \"footer\")\n .extend(\"popper\", \"arrow\", \"closeButton\")\n\nexport const progressAnatomy = anatomy(\"progress\").parts(\n \"label\",\n \"filledTrack\",\n \"track\",\n)\n\nexport const radioAnatomy = anatomy(\"radio\").parts(\n \"container\",\n \"control\",\n \"label\",\n)\n\nexport const selectAnatomy = anatomy(\"select\").parts(\"field\", \"icon\")\n\nexport const sliderAnatomy = anatomy(\"slider\").parts(\n \"container\",\n \"track\",\n \"thumb\",\n \"filledTrack\",\n \"mark\",\n)\n\nexport const statAnatomy = anatomy(\"stat\").parts(\n \"container\",\n \"label\",\n \"helpText\",\n \"number\",\n \"icon\",\n)\n\nexport const switchAnatomy = anatomy(\"switch\").parts(\n \"container\",\n \"track\",\n \"thumb\",\n \"label\",\n)\n\nexport const tableAnatomy = anatomy(\"table\").parts(\n \"table\",\n \"thead\",\n \"tbody\",\n \"tr\",\n \"th\",\n \"td\",\n \"tfoot\",\n \"caption\",\n)\n\nexport const tabsAnatomy = anatomy(\"tabs\").parts(\n \"root\",\n \"tab\",\n \"tablist\",\n \"tabpanel\",\n \"tabpanels\",\n \"indicator\",\n)\n\n/**\n * **Tag anatomy**\n * - Container: the container for the tag\n * - Label: the text content of the tag\n * - closeButton: the close button for the tag\n */\nexport const tagAnatomy = anatomy(\"tag\").parts(\n \"container\",\n \"label\",\n \"closeButton\",\n)\n\nexport const cardAnatomy = anatomy(\"card\").parts(\n \"container\",\n \"header\",\n \"body\",\n \"footer\",\n)\n\nexport const stepperAnatomy = anatomy(\"stepper\").parts(\n \"stepper\",\n \"step\",\n \"title\",\n \"description\",\n \"indicator\",\n \"separator\",\n \"icon\",\n \"number\",\n)\n","export function isDecimal(value: any) {\n return !Number.isInteger(parseFloat(value.toString()))\n}\n\nfunction replaceWhiteSpace(value: string, replaceValue = \"-\") {\n return value.replace(/\\s+/g, replaceValue)\n}\n\nfunction escape(value: string | number) {\n const valueStr = replaceWhiteSpace(value.toString())\n if (valueStr.includes(\"\\\\.\")) return value\n return isDecimal(value) ? valueStr.replace(\".\", `\\\\.`) : value\n}\n\nexport function addPrefix(value: string, prefix = \"\") {\n return [prefix, escape(value)].filter(Boolean).join(\"-\")\n}\n\nexport function toVarRef(name: string, fallback?: string) {\n return `var(${escape(name)}${fallback ? `, ${fallback}` : \"\"})`\n}\n\nexport function toVar(value: string, prefix = \"\") {\n return `--${addPrefix(value, prefix)}`\n}\n\nexport type CSSVar = {\n variable: string\n reference: string\n}\n\nexport type CSSVarOptions = {\n fallback?: string | CSSVar\n prefix?: string\n}\n\nexport function cssVar(name: string, options?: CSSVarOptions) {\n const cssVariable = toVar(name, options?.prefix)\n return {\n variable: cssVariable,\n reference: toVarRef(cssVariable, getFallback(options?.fallback)),\n }\n}\n\nfunction getFallback(fallback?: string | CSSVar) {\n if (typeof fallback === \"string\") return fallback\n return fallback?.reference\n}\n","import { isObject } from \"@chakra-ui/shared-utils\"\nimport { CSSVar } from \"./css-var\"\n\nexport type Operand = string | number | CSSVar\ntype Operands = Operand[]\n\ntype Operator = \"+\" | \"-\" | \"*\" | \"/\"\n\nfunction toRef(operand: Operand): string {\n if (isObject(operand) && operand.reference) {\n return operand.reference\n }\n return String(operand)\n}\n\nconst toExpr = (operator: Operator, ...operands: Operands) =>\n operands.map(toRef).join(` ${operator} `).replace(/calc/g, \"\")\n\nconst add = (...operands: Operands) => `calc(${toExpr(\"+\", ...operands)})`\n\nconst subtract = (...operands: Operands) => `calc(${toExpr(\"-\", ...operands)})`\n\nconst multiply = (...operands: Operands) => `calc(${toExpr(\"*\", ...operands)})`\n\nconst divide = (...operands: Operands) => `calc(${toExpr(\"/\", ...operands)})`\n\nconst negate = (x: Operand) => {\n const value = toRef(x)\n\n if (value != null && !Number.isNaN(parseFloat(value))) {\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`\n }\n\n return multiply(value, -1)\n}\n\nexport interface CalcChain {\n add: (...operands: Operands) => CalcChain\n subtract: (...operands: Operands) => CalcChain\n multiply: (...operands: Operands) => CalcChain\n divide: (...operands: Operands) => CalcChain\n negate: () => CalcChain\n toString: () => string\n}\n\nexport const calc = Object.assign(\n (x: Operand): CalcChain => ({\n add: (...operands) => calc(add(x, ...operands)),\n subtract: (...operands) => calc(subtract(x, ...operands)),\n multiply: (...operands) => calc(multiply(x, ...operands)),\n divide: (...operands) => calc(divide(x, ...operands)),\n negate: () => calc(negate(x)),\n toString: () => x.toString(),\n }),\n {\n add,\n subtract,\n multiply,\n divide,\n negate,\n },\n)\n","import { switchAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { calc, cssVar } from \"@chakra-ui/theme-tools\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $width = cssVar(\"switch-track-width\")\nconst $height = cssVar(\"switch-track-height\")\nconst $diff = cssVar(\"switch-track-diff\")\nconst diffValue = calc.subtract($width, $height)\nconst $translateX = cssVar(\"switch-thumb-x\")\nconst $bg = cssVar(\"switch-bg\")\n\nconst baseStyleTrack = defineStyle((props) => {\n const { colorScheme: c } = props\n\n return {\n borderRadius: \"full\",\n p: \"0.5\",\n width: [$width.reference],\n height: [$height.reference],\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n [$bg.variable]: \"colors.gray.300\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.400\",\n },\n _focusVisible: {\n boxShadow: \"outline\",\n },\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n },\n _checked: {\n [$bg.variable]: `colors.${c}.500`,\n _dark: {\n [$bg.variable]: `colors.${c}.200`,\n },\n },\n bg: $bg.reference,\n }\n})\n\nconst baseStyleThumb = defineStyle({\n bg: \"white\",\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n borderRadius: \"inherit\",\n width: [$height.reference],\n height: [$height.reference],\n _checked: {\n transform: `translateX(${$translateX.reference})`,\n },\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n container: {\n [$diff.variable]: diffValue,\n [$translateX.variable]: $diff.reference,\n _rtl: {\n [$translateX.variable]: calc($diff).negate().toString(),\n },\n },\n track: baseStyleTrack(props),\n thumb: baseStyleThumb,\n}))\n\nconst sizes = {\n sm: definePartsStyle({\n container: {\n [$width.variable]: \"1.375rem\",\n [$height.variable]: \"sizes.3\",\n },\n }),\n md: definePartsStyle({\n container: {\n [$width.variable]: \"1.875rem\",\n [$height.variable]: \"sizes.4\",\n },\n }),\n lg: definePartsStyle({\n container: {\n [$width.variable]: \"2.875rem\",\n [$height.variable]: \"sizes.6\",\n },\n }),\n}\n\nexport const switchTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n colorScheme: \"blue\",\n },\n})\n","import type {\n SystemStyleObject,\n StyleFunctionProps,\n SystemStyleInterpolation,\n} from \"@chakra-ui/styled-system\"\n\nexport type {\n StyleConfig,\n MultiStyleConfig,\n SystemStyleObject,\n // StyleFunctionProps,\n SystemStyleFunction,\n SystemStyleInterpolation,\n PartsStyleObject,\n PartsStyleFunction,\n PartsStyleInterpolation,\n} from \"@chakra-ui/styled-system\"\n\n/* -----------------------------------------------------------------------------\n * Global Style object definitions\n * -----------------------------------------------------------------------------*/\n\nexport type GlobalStyleProps = StyleFunctionProps\n\nexport type GlobalStyles = {\n global?: SystemStyleInterpolation\n}\n\nexport type JSXElementStyles = {\n [K in keyof JSX.IntrinsicElements]?: SystemStyleObject\n}\n\nexport type Styles = GlobalStyles & JSXElementStyles\n\nexport function mode(light: T, dark: T) {\n return (props: Record | StyleFunctionProps) =>\n props.colorMode === \"dark\" ? dark : light\n}\n\nexport function orient(options: {\n orientation?: \"vertical\" | \"horizontal\"\n vertical: T\n horizontal: T\n}) {\n const { orientation, vertical, horizontal } = options\n if (!orientation) return {}\n return orientation === \"vertical\" ? vertical : horizontal\n}\n\nexport type { StyleFunctionProps }\n","import { tableAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { mode } from \"@chakra-ui/theme-tools\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst baseStyle = definePartsStyle({\n table: {\n fontVariantNumeric: \"lining-nums tabular-nums\",\n borderCollapse: \"collapse\",\n width: \"full\",\n },\n th: {\n fontFamily: \"heading\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n letterSpacing: \"wider\",\n textAlign: \"start\",\n },\n td: {\n textAlign: \"start\",\n },\n caption: {\n mt: 4,\n fontFamily: \"heading\",\n textAlign: \"center\",\n fontWeight: \"medium\",\n },\n})\n\nconst numericStyles = defineStyle({\n \"&[data-is-numeric=true]\": {\n textAlign: \"end\",\n },\n})\n\nconst variantSimple = definePartsStyle((props) => {\n const { colorScheme: c } = props\n\n return {\n th: {\n color: mode(\"gray.600\", \"gray.400\")(props),\n borderBottom: \"1px\",\n borderColor: mode(`${c}.100`, `${c}.700`)(props),\n ...numericStyles,\n },\n td: {\n borderBottom: \"1px\",\n borderColor: mode(`${c}.100`, `${c}.700`)(props),\n ...numericStyles,\n },\n caption: {\n color: mode(\"gray.600\", \"gray.100\")(props),\n },\n tfoot: {\n tr: {\n \"&:last-of-type\": {\n th: { borderBottomWidth: 0 },\n },\n },\n },\n }\n})\n\nconst variantStripe = definePartsStyle((props) => {\n const { colorScheme: c } = props\n\n return {\n th: {\n color: mode(\"gray.600\", \"gray.400\")(props),\n borderBottom: \"1px\",\n borderColor: mode(`${c}.100`, `${c}.700`)(props),\n ...numericStyles,\n },\n td: {\n borderBottom: \"1px\",\n borderColor: mode(`${c}.100`, `${c}.700`)(props),\n ...numericStyles,\n },\n caption: {\n color: mode(\"gray.600\", \"gray.100\")(props),\n },\n tbody: {\n tr: {\n \"&:nth-of-type(odd)\": {\n \"th, td\": {\n borderBottomWidth: \"1px\",\n borderColor: mode(`${c}.100`, `${c}.700`)(props),\n },\n td: {\n background: mode(`${c}.100`, `${c}.700`)(props),\n },\n },\n },\n },\n tfoot: {\n tr: {\n \"&:last-of-type\": {\n th: { borderBottomWidth: 0 },\n },\n },\n },\n }\n})\n\nconst variants = {\n simple: variantSimple,\n striped: variantStripe,\n unstyled: defineStyle({}),\n}\n\nconst sizes = {\n sm: definePartsStyle({\n th: {\n px: \"4\",\n py: \"1\",\n lineHeight: \"4\",\n fontSize: \"xs\",\n },\n td: {\n px: \"4\",\n py: \"2\",\n fontSize: \"sm\",\n lineHeight: \"4\",\n },\n caption: {\n px: \"4\",\n py: \"2\",\n fontSize: \"xs\",\n },\n }),\n md: definePartsStyle({\n th: {\n px: \"6\",\n py: \"3\",\n lineHeight: \"4\",\n fontSize: \"xs\",\n },\n td: {\n px: \"6\",\n py: \"4\",\n lineHeight: \"5\",\n },\n caption: {\n px: \"6\",\n py: \"2\",\n fontSize: \"sm\",\n },\n }),\n lg: definePartsStyle({\n th: {\n px: \"8\",\n py: \"4\",\n lineHeight: \"5\",\n fontSize: \"sm\",\n },\n td: {\n px: \"8\",\n py: \"5\",\n lineHeight: \"6\",\n },\n caption: {\n px: \"6\",\n py: \"2\",\n fontSize: \"md\",\n },\n }),\n}\n\nexport const tableTheme = defineMultiStyleConfig({\n baseStyle,\n variants,\n sizes,\n defaultProps: {\n variant: \"simple\",\n size: \"md\",\n colorScheme: \"gray\",\n },\n})\n","/**\n * A simple guard function:\n *\n * ```js\n * Math.min(Math.max(low, value), high)\n * ```\n */\nfunction guard(low: number, high: number, value: number): number {\n return Math.min(Math.max(low, value), high);\n}\n\nexport default guard;\n","class ColorError extends Error {\n constructor(color: string) {\n super(`Failed to parse color: \"${color}\"`);\n }\n}\n\nexport default ColorError;\n","import guard from './guard';\nimport ColorError from './ColorError';\n\n/**\n * Parses a color into red, gree, blue, alpha parts\n *\n * @param color the input color. Can be a RGB, RBGA, HSL, HSLA, or named color\n */\nfunction parseToRgba(color: string): [number, number, number, number] {\n if (typeof color !== 'string') throw new ColorError(color);\n if (color.trim().toLowerCase() === 'transparent') return [0, 0, 0, 0];\n\n let normalizedColor = color.trim();\n normalizedColor = namedColorRegex.test(color) ? nameToHex(color) : color;\n\n const reducedHexMatch = reducedHexRegex.exec(normalizedColor);\n if (reducedHexMatch) {\n const arr = Array.from(reducedHexMatch).slice(1);\n return [\n ...arr.slice(0, 3).map((x) => parseInt(r(x, 2), 16)),\n parseInt(r(arr[3] || 'f', 2), 16) / 255,\n ] as [number, number, number, number];\n }\n\n const hexMatch = hexRegex.exec(normalizedColor);\n if (hexMatch) {\n const arr = Array.from(hexMatch).slice(1);\n return [\n ...arr.slice(0, 3).map((x) => parseInt(x, 16)),\n parseInt(arr[3] || 'ff', 16) / 255,\n ] as [number, number, number, number];\n }\n\n const rgbaMatch = rgbaRegex.exec(normalizedColor);\n if (rgbaMatch) {\n const arr = Array.from(rgbaMatch).slice(1);\n return [\n ...arr.slice(0, 3).map((x) => parseInt(x, 10)),\n parseFloat(arr[3] || '1'),\n ] as [number, number, number, number];\n }\n\n const hslaMatch = hslaRegex.exec(normalizedColor);\n if (hslaMatch) {\n const [h, s, l, a] = Array.from(hslaMatch).slice(1).map(parseFloat);\n if (guard(0, 100, s) !== s) throw new ColorError(color);\n if (guard(0, 100, l) !== l) throw new ColorError(color);\n return [...hslToRgb(h, s, l), Number.isNaN(a) ? 1 : a] as [\n number,\n number,\n number,\n number\n ];\n }\n\n throw new ColorError(color);\n}\n\nfunction hash(str: string) {\n let hash = 5381;\n let i = str.length;\n\n while (i) {\n hash = (hash * 33) ^ str.charCodeAt(--i);\n }\n\n /* JavaScript does bitwise operations (like XOR, above) on 32-bit signed\n * integers. Since we want the results to be always positive, convert the\n * signed int to an unsigned by doing an unsigned bitshift. */\n return (hash >>> 0) % 2341;\n}\n\nconst colorToInt = (x: string) => parseInt(x.replace(/_/g, ''), 36);\n\nconst compressedColorMap =\n '1q29ehhb 1n09sgk7 1kl1ekf_ _yl4zsno 16z9eiv3 1p29lhp8 _bd9zg04 17u0____ _iw9zhe5 _to73___ _r45e31e _7l6g016 _jh8ouiv _zn3qba8 1jy4zshs 11u87k0u 1ro9yvyo 1aj3xael 1gz9zjz0 _3w8l4xo 1bf1ekf_ _ke3v___ _4rrkb__ 13j776yz _646mbhl _nrjr4__ _le6mbhl 1n37ehkb _m75f91n _qj3bzfz 1939yygw 11i5z6x8 _1k5f8xs 1509441m 15t5lwgf _ae2th1n _tg1ugcv 1lp1ugcv 16e14up_ _h55rw7n _ny9yavn _7a11xb_ 1ih442g9 _pv442g9 1mv16xof 14e6y7tu 1oo9zkds 17d1cisi _4v9y70f _y98m8kc 1019pq0v 12o9zda8 _348j4f4 1et50i2o _8epa8__ _ts6senj 1o350i2o 1mi9eiuo 1259yrp0 1ln80gnw _632xcoy 1cn9zldc _f29edu4 1n490c8q _9f9ziet 1b94vk74 _m49zkct 1kz6s73a 1eu9dtog _q58s1rz 1dy9sjiq __u89jo3 _aj5nkwg _ld89jo3 13h9z6wx _qa9z2ii _l119xgq _bs5arju 1hj4nwk9 1qt4nwk9 1ge6wau6 14j9zlcw 11p1edc_ _ms1zcxe _439shk6 _jt9y70f _754zsow 1la40eju _oq5p___ _x279qkz 1fa5r3rv _yd2d9ip _424tcku _8y1di2_ _zi2uabw _yy7rn9h 12yz980_ __39ljp6 1b59zg0x _n39zfzp 1fy9zest _b33k___ _hp9wq92 1il50hz4 _io472ub _lj9z3eo 19z9ykg0 _8t8iu3a 12b9bl4a 1ak5yw0o _896v4ku _tb8k8lv _s59zi6t _c09ze0p 1lg80oqn 1id9z8wb _238nba5 1kq6wgdi _154zssg _tn3zk49 _da9y6tc 1sg7cv4f _r12jvtt 1gq5fmkz 1cs9rvci _lp9jn1c _xw1tdnb 13f9zje6 16f6973h _vo7ir40 _bt5arjf _rc45e4t _hr4e100 10v4e100 _hc9zke2 _w91egv_ _sj2r1kk 13c87yx8 _vqpds__ _ni8ggk8 _tj9yqfb 1ia2j4r4 _7x9b10u 1fc9ld4j 1eq9zldr _5j9lhpx _ez9zl6o _md61fzm'\n .split(' ')\n .reduce((acc, next) => {\n const key = colorToInt(next.substring(0, 3));\n const hex = colorToInt(next.substring(3)).toString(16);\n\n // NOTE: padStart could be used here but it breaks Node 6 compat\n // https://github.com/ricokahler/color2k/issues/351\n let prefix = '';\n for (let i = 0; i < 6 - hex.length; i++) {\n prefix += '0';\n }\n\n acc[key] = `${prefix}${hex}`;\n return acc;\n }, {} as { [key: string]: string });\n\n/**\n * Checks if a string is a CSS named color and returns its equivalent hex value, otherwise returns the original color.\n */\nfunction nameToHex(color: string): string {\n const normalizedColorName = color.toLowerCase().trim();\n const result = compressedColorMap[hash(normalizedColorName)];\n if (!result) throw new ColorError(color);\n return `#${result}`;\n}\n\nconst r = (str: string, amount: number) =>\n Array.from(Array(amount))\n .map(() => str)\n .join('');\n\nconst reducedHexRegex = new RegExp(`^#${r('([a-f0-9])', 3)}([a-f0-9])?$`, 'i');\nconst hexRegex = new RegExp(`^#${r('([a-f0-9]{2})', 3)}([a-f0-9]{2})?$`, 'i');\nconst rgbaRegex = new RegExp(\n `^rgba?\\\\(\\\\s*(\\\\d+)\\\\s*${r(\n ',\\\\s*(\\\\d+)\\\\s*',\n 2\n )}(?:,\\\\s*([\\\\d.]+))?\\\\s*\\\\)$`,\n 'i'\n);\nconst hslaRegex =\n /^hsla?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)%\\s*,\\s*([\\d.]+)%(?:\\s*,\\s*([\\d.]+))?\\s*\\)$/i;\nconst namedColorRegex = /^[a-z]+$/i;\n\nconst roundColor = (color: number): number => {\n return Math.round(color * 255);\n};\n\nconst hslToRgb = (\n hue: number,\n saturation: number,\n lightness: number\n): [number, number, number] => {\n let l = lightness / 100;\n if (saturation === 0) {\n // achromatic\n return [l, l, l].map(roundColor) as [number, number, number];\n }\n\n // formulae from https://en.wikipedia.org/wiki/HSL_and_HSV\n const huePrime = (((hue % 360) + 360) % 360) / 60;\n const chroma = (1 - Math.abs(2 * l - 1)) * (saturation / 100);\n const secondComponent = chroma * (1 - Math.abs((huePrime % 2) - 1));\n\n let red = 0;\n let green = 0;\n let blue = 0;\n\n if (huePrime >= 0 && huePrime < 1) {\n red = chroma;\n green = secondComponent;\n } else if (huePrime >= 1 && huePrime < 2) {\n red = secondComponent;\n green = chroma;\n } else if (huePrime >= 2 && huePrime < 3) {\n green = chroma;\n blue = secondComponent;\n } else if (huePrime >= 3 && huePrime < 4) {\n green = secondComponent;\n blue = chroma;\n } else if (huePrime >= 4 && huePrime < 5) {\n red = secondComponent;\n blue = chroma;\n } else if (huePrime >= 5 && huePrime < 6) {\n red = chroma;\n blue = secondComponent;\n }\n\n const lightnessModification = l - chroma / 2;\n const finalRed = red + lightnessModification;\n const finalGreen = green + lightnessModification;\n const finalBlue = blue + lightnessModification;\n\n return [finalRed, finalGreen, finalBlue].map(roundColor) as [\n number,\n number,\n number\n ];\n};\n\nexport default parseToRgba;\n","import guard from './guard';\n\n/**\n * Takes in rgba parts and returns an rgba string\n *\n * @param red The amount of red in the red channel, given in a number between 0 and 255 inclusive\n * @param green The amount of green in the red channel, given in a number between 0 and 255 inclusive\n * @param blue The amount of blue in the red channel, given in a number between 0 and 255 inclusive\n * @param alpha Percentage of opacity, given as a decimal between 0 and 1\n */\nfunction rgba(red: number, green: number, blue: number, alpha: number): string {\n return `rgba(${guard(0, 255, red).toFixed()}, ${guard(\n 0,\n 255,\n green\n ).toFixed()}, ${guard(0, 255, blue).toFixed()}, ${parseFloat(\n guard(0, 1, alpha).toFixed(3)\n )})`;\n}\n\nexport default rgba;\n","import parseToRgba from './parseToRgba';\nimport rgba from './rgba';\n\n/**\n * Takes in a color and makes it more transparent by convert to `rgba` and\n * decreasing the amount in the alpha channel.\n *\n * @param amount The amount to increase the transparency by, given as a decimal between 0 and 1\n */\nfunction transparentize(color: string, amount: number): string {\n const [r, g, b, a] = parseToRgba(color);\n return rgba(r, g, b, a - amount);\n}\n\nexport default transparentize;\n","import { getCSSVar } from \"@chakra-ui/styled-system\"\nimport {\n toHex,\n parseToRgba,\n transparentize as setTransparency,\n mix,\n darken as reduceLightness,\n lighten as increaseLightness,\n getContrast,\n parseToHsla,\n hsla,\n getLuminance,\n} from \"color2k\"\n\nimport get from \"dlv\"\n\ntype Dict = { [key: string]: any }\nconst isEmptyObject = (obj: any) => Object.keys(obj).length === 0\n\n/**\n * Get the color raw value from theme\n * @param theme - the theme object\n * @param color - the color path (\"green.200\")\n * @param fallback - the fallback color\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const getColor = (theme: Dict, color: string, fallback?: string) => {\n const hex = get(theme, `colors.${color}`, color)\n try {\n toHex(hex)\n return hex\n } catch {\n // returning black to stay consistent with TinyColor behaviour so as to prevent breaking change\n return fallback ?? \"#000000\"\n }\n}\n\n/**\n * Get the color css variable from theme\n */\nexport const getColorVar = (theme: Dict, color: string, fallback?: string) => {\n return getCSSVar(theme, \"colors\", color) ?? fallback\n}\n\nconst getBrightness = (color: string) => {\n const [r, g, b] = parseToRgba(color)\n // http://www.w3.org/TR/AERT#color-contrast\n return (r * 299 + g * 587 + b * 114) / 1000\n}\n\n/**\n * Determines if the tone of given color is \"light\" or \"dark\"\n * @param color - the color in hex, rgb, or hsl\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const tone = (color: string) => (theme: Dict) => {\n const hex = getColor(theme, color)\n const brightness = getBrightness(hex)\n const isDark = brightness < 128\n return isDark ? \"dark\" : \"light\"\n}\n\n/**\n * Determines if a color tone is \"dark\"\n * @param color - the color in hex, rgb, or hsl\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const isDark = (color: string) => (theme: Dict) =>\n tone(color)(theme) === \"dark\"\n\n/**\n * Determines if a color tone is \"light\"\n * @param color - the color in hex, rgb, or hsl\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const isLight = (color: string) => (theme: Dict) =>\n tone(color)(theme) === \"light\"\n\n/**\n * Make a color transparent\n * @param color - the color in hex, rgb, or hsl\n * @param opacity - the amount of opacity the color should have (0-1)\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const transparentize =\n (color: string, opacity: number) => (theme: Dict) => {\n const raw = getColor(theme, color)\n return setTransparency(raw, 1 - opacity)\n }\n\n/**\n * Add white to a color\n * @param color - the color in hex, rgb, or hsl\n * @param amount - the amount white to add (0-100)\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const whiten = (color: string, amount: number) => (theme: Dict) => {\n const raw = getColor(theme, color)\n return toHex(mix(raw, \"#fff\", amount))\n}\n\n/**\n * Add black to a color\n * @param color - the color in hex, rgb, or hsl\n * @param amount - the amount black to add (0-100)\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const blacken = (color: string, amount: number) => (theme: Dict) => {\n const raw = getColor(theme, color)\n return toHex(mix(raw, \"#000\", amount / 100))\n}\n\n/**\n * Darken a specified color\n * @param color - the color in hex, rgb, or hsl\n * @param amount - the amount to darken (0-100)\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const darken = (color: string, amount: number) => (theme: Dict) => {\n const raw = getColor(theme, color)\n return toHex(reduceLightness(raw, amount / 100))\n}\n\n/**\n * Lighten a specified color\n * @param color - the color in hex, rgb, or hsl\n * @param amount - the amount to lighten (0-100)\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const lighten = (color: string, amount: number) => (theme: Dict) => {\n const raw = getColor(theme, color)\n toHex(increaseLightness(raw, amount / 100))\n}\n\n/**\n * Checks the contract ratio of between 2 colors,\n * based on the Web Content Accessibility Guidelines (Version 2.0).\n *\n * @param fg - the foreground or text color\n * @param bg - the background color\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const contrast = (fg: string, bg: string) => (theme: Dict) =>\n getContrast(getColor(theme, bg), getColor(theme, fg))\n\ninterface WCAG2Params {\n level?: \"AA\" | \"AAA\"\n size?: \"large\" | \"small\"\n}\n\n/**\n * Checks if a color meets the Web Content Accessibility\n * Guidelines (Version 2.0) for contrast ratio.\n *\n * @param textColor - the foreground or text color\n * @param bgColor - the background color\n * @param options\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const isAccessible =\n (textColor: string, bgColor: string, options?: WCAG2Params) =>\n (theme: Dict) =>\n isReadable(getColor(theme, bgColor), getColor(theme, textColor), options)\n\nexport function isReadable(\n color1: string,\n color2: string,\n wcag2: WCAG2Params = { level: \"AA\", size: \"small\" },\n): boolean {\n const readabilityLevel = readability(color1, color2)\n switch ((wcag2.level ?? \"AA\") + (wcag2.size ?? \"small\")) {\n case \"AAsmall\":\n case \"AAAlarge\":\n return readabilityLevel >= 4.5\n case \"AAlarge\":\n return readabilityLevel >= 3\n case \"AAAsmall\":\n return readabilityLevel >= 7\n default:\n return false\n }\n}\n\nexport function readability(color1: string, color2: string): number {\n return (\n (Math.max(getLuminance(color1), getLuminance(color2)) + 0.05) /\n (Math.min(getLuminance(color1), getLuminance(color2)) + 0.05)\n )\n}\n/**\n *\n * @deprecated This will be removed in the next major release.\n */\nexport const complementary = (color: string) => (theme: Dict) => {\n const raw = getColor(theme, color)\n const hsl = parseToHsla(raw)\n const complementHsl: [number, number, number, number] = Object.assign(hsl, [\n (hsl[0] + 180) % 360,\n ])\n return toHex(hsla(...complementHsl))\n}\n\nexport function generateStripe(\n size = \"1rem\",\n color = \"rgba(255, 255, 255, 0.15)\",\n) {\n return {\n backgroundImage: `linear-gradient(\n 45deg,\n ${color} 25%,\n transparent 25%,\n transparent 50%,\n ${color} 50%,\n ${color} 75%,\n transparent 75%,\n transparent\n )`,\n backgroundSize: `${size} ${size}`,\n }\n}\n\ninterface RandomColorOptions {\n /**\n * If passed, string will be used to generate\n * random color\n */\n string?: string\n /**\n * List of colors to pick from at random\n */\n colors?: string[]\n}\n\nconst randomHex = () =>\n `#${Math.floor(Math.random() * 0xffffff)\n .toString(16)\n .padEnd(6, \"0\")}`\n\nexport function randomColor(opts?: RandomColorOptions) {\n const fallback = randomHex()\n\n if (!opts || isEmptyObject(opts)) {\n return fallback\n }\n\n if (opts.string && opts.colors) {\n return randomColorFromList(opts.string, opts.colors)\n }\n\n if (opts.string && !opts.colors) {\n return randomColorFromString(opts.string)\n }\n\n if (opts.colors && !opts.string) {\n return randomFromList(opts.colors)\n }\n\n return fallback\n}\n\nfunction randomColorFromString(str: string) {\n let hash = 0\n if (str.length === 0) return hash.toString()\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash)\n hash = hash & hash\n }\n let color = \"#\"\n for (let j = 0; j < 3; j += 1) {\n const value = (hash >> (j * 8)) & 255\n color += `00${value.toString(16)}`.substr(-2)\n }\n return color\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n let index = 0\n if (str.length === 0) return list[0]\n for (let i = 0; i < str.length; i += 1) {\n index = str.charCodeAt(i) + ((index << 5) - index)\n index = index & index\n }\n index = ((index % list.length) + list.length) % list.length\n return list[index]\n}\n\nfunction randomFromList(list: string[]) {\n return list[Math.floor(Math.random() * list.length)]\n}\n","export default function dlv(obj, key, def, p, undef) {\n\tkey = key.split ? key.split('.') : key;\n\tfor (p = 0; p < key.length; p++) {\n\t\tobj = obj ? obj[key[p]] : undef;\n\t}\n\treturn obj === undef ? def : obj;\n}\n","import parseToRgba from './parseToRgba';\nimport guard from './guard';\n\n/**\n * Takes in any color and returns it as a hex code.\n */\nfunction toHex(color: string): string {\n const [r, g, b, a] = parseToRgba(color);\n\n let hex = (x: number) => {\n const h = guard(0, 255, x).toString(16);\n // NOTE: padStart could be used here but it breaks Node 6 compat\n // https://github.com/ricokahler/color2k/issues/351\n return h.length === 1 ? `0${h}` : h;\n };\n\n return `#${hex(r)}${hex(g)}${hex(b)}${a < 1 ? hex(Math.round(a * 255)) : ''}`;\n}\n\nexport default toHex;\n","import { tabsAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { getColor } from \"@chakra-ui/theme-tools\"\n\nconst $fg = cssVar(\"tabs-color\")\nconst $bg = cssVar(\"tabs-bg\")\nconst $border = cssVar(\"tabs-border-color\")\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst baseStyleRoot = defineStyle((props) => {\n const { orientation } = props\n return {\n display: orientation === \"vertical\" ? \"flex\" : \"block\",\n }\n})\n\nconst baseStyleTab = defineStyle((props) => {\n const { isFitted } = props\n\n return {\n flex: isFitted ? 1 : undefined,\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n _focusVisible: {\n zIndex: 1,\n boxShadow: \"outline\",\n },\n _disabled: {\n cursor: \"not-allowed\",\n opacity: 0.4,\n },\n }\n})\n\nconst baseStyleTablist = defineStyle((props) => {\n const { align = \"start\", orientation } = props\n\n const alignments: Record = {\n end: \"flex-end\",\n center: \"center\",\n start: \"flex-start\",\n }\n\n return {\n justifyContent: alignments[align],\n flexDirection: orientation === \"vertical\" ? \"column\" : \"row\",\n }\n})\n\nconst baseStyleTabpanel = defineStyle({\n p: 4,\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n root: baseStyleRoot(props),\n tab: baseStyleTab(props),\n tablist: baseStyleTablist(props),\n tabpanel: baseStyleTabpanel,\n}))\n\nconst sizes = {\n sm: definePartsStyle({\n tab: {\n py: 1,\n px: 4,\n fontSize: \"sm\",\n },\n }),\n md: definePartsStyle({\n tab: {\n fontSize: \"md\",\n py: 2,\n px: 4,\n },\n }),\n lg: definePartsStyle({\n tab: {\n fontSize: \"lg\",\n py: 3,\n px: 4,\n },\n }),\n}\n\nconst variantLine = definePartsStyle((props) => {\n const { colorScheme: c, orientation } = props\n const isVertical = orientation === \"vertical\"\n const borderProp = isVertical ? \"borderStart\" : \"borderBottom\"\n const marginProp = isVertical ? \"marginStart\" : \"marginBottom\"\n\n return {\n tablist: {\n [borderProp]: \"2px solid\",\n borderColor: \"inherit\",\n },\n tab: {\n [borderProp]: \"2px solid\",\n borderColor: \"transparent\",\n [marginProp]: \"-2px\",\n _selected: {\n [$fg.variable]: `colors.${c}.600`,\n _dark: {\n [$fg.variable]: `colors.${c}.300`,\n },\n borderColor: \"currentColor\",\n },\n _active: {\n [$bg.variable]: \"colors.gray.200\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.300\",\n },\n },\n _disabled: {\n _active: { bg: \"none\" },\n },\n color: $fg.reference,\n bg: $bg.reference,\n },\n }\n})\n\nconst variantEnclosed = definePartsStyle((props) => {\n const { colorScheme: c } = props\n return {\n tab: {\n borderTopRadius: \"md\",\n border: \"1px solid\",\n borderColor: \"transparent\",\n mb: \"-1px\",\n [$border.variable]: \"transparent\",\n _selected: {\n [$fg.variable]: `colors.${c}.600`,\n [$border.variable]: `colors.white`,\n _dark: {\n [$fg.variable]: `colors.${c}.300`,\n [$border.variable]: `colors.gray.800`,\n },\n borderColor: \"inherit\",\n borderBottomColor: $border.reference,\n },\n color: $fg.reference,\n },\n tablist: {\n mb: \"-1px\",\n borderBottom: \"1px solid\",\n borderColor: \"inherit\",\n },\n }\n})\n\nconst variantEnclosedColored = definePartsStyle((props) => {\n const { colorScheme: c } = props\n return {\n tab: {\n border: \"1px solid\",\n borderColor: \"inherit\",\n [$bg.variable]: \"colors.gray.50\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.50\",\n },\n mb: \"-1px\",\n _notLast: {\n marginEnd: \"-1px\",\n },\n _selected: {\n [$bg.variable]: \"colors.white\",\n [$fg.variable]: `colors.${c}.600`,\n _dark: {\n [$bg.variable]: \"colors.gray.800\",\n [$fg.variable]: `colors.${c}.300`,\n },\n borderColor: \"inherit\",\n borderTopColor: \"currentColor\",\n borderBottomColor: \"transparent\",\n },\n color: $fg.reference,\n bg: $bg.reference,\n },\n tablist: {\n mb: \"-1px\",\n borderBottom: \"1px solid\",\n borderColor: \"inherit\",\n },\n }\n})\n\nconst variantSoftRounded = definePartsStyle((props) => {\n const { colorScheme: c, theme } = props\n return {\n tab: {\n borderRadius: \"full\",\n fontWeight: \"semibold\",\n color: \"gray.600\",\n _selected: {\n color: getColor(theme, `${c}.700`),\n bg: getColor(theme, `${c}.100`),\n },\n },\n }\n})\n\nconst variantSolidRounded = definePartsStyle((props) => {\n const { colorScheme: c } = props\n return {\n tab: {\n borderRadius: \"full\",\n fontWeight: \"semibold\",\n [$fg.variable]: \"colors.gray.600\",\n _dark: {\n [$fg.variable]: \"inherit\",\n },\n _selected: {\n [$fg.variable]: \"colors.white\",\n [$bg.variable]: `colors.${c}.600`,\n _dark: {\n [$fg.variable]: \"colors.gray.800\",\n [$bg.variable]: `colors.${c}.300`,\n },\n },\n color: $fg.reference,\n bg: $bg.reference,\n },\n }\n})\n\nconst variantUnstyled = definePartsStyle({})\n\nconst variants = {\n line: variantLine,\n enclosed: variantEnclosed,\n \"enclosed-colored\": variantEnclosedColored,\n \"soft-rounded\": variantSoftRounded,\n \"solid-rounded\": variantSolidRounded,\n unstyled: variantUnstyled,\n}\n\nexport const tabsTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n variants,\n defaultProps: {\n size: \"md\",\n variant: \"line\",\n colorScheme: \"blue\",\n },\n})\n","import {\n defineCssVars,\n defineStyle,\n defineStyleConfig,\n} from \"@chakra-ui/styled-system\"\nimport { transparentize } from \"@chakra-ui/theme-tools\"\n\nconst vars = defineCssVars(\"badge\", [\"bg\", \"color\", \"shadow\"])\n\nconst baseStyle = defineStyle({\n px: 1,\n textTransform: \"uppercase\",\n fontSize: \"xs\",\n borderRadius: \"sm\",\n fontWeight: \"bold\",\n bg: vars.bg.reference,\n color: vars.color.reference,\n boxShadow: vars.shadow.reference,\n})\n\nconst variantSolid = defineStyle((props) => {\n const { colorScheme: c, theme } = props\n const dark = transparentize(`${c}.500`, 0.6)(theme)\n return {\n [vars.bg.variable]: `colors.${c}.500`,\n [vars.color.variable]: `colors.white`,\n _dark: {\n [vars.bg.variable]: dark,\n [vars.color.variable]: `colors.whiteAlpha.800`,\n },\n }\n})\n\nconst variantSubtle = defineStyle((props) => {\n const { colorScheme: c, theme } = props\n const darkBg = transparentize(`${c}.200`, 0.16)(theme)\n return {\n [vars.bg.variable]: `colors.${c}.100`,\n [vars.color.variable]: `colors.${c}.800`,\n _dark: {\n [vars.bg.variable]: darkBg,\n [vars.color.variable]: `colors.${c}.200`,\n },\n }\n})\n\nconst variantOutline = defineStyle((props) => {\n const { colorScheme: c, theme } = props\n const darkColor = transparentize(`${c}.200`, 0.8)(theme)\n return {\n [vars.color.variable]: `colors.${c}.500`,\n _dark: {\n [vars.color.variable]: darkColor,\n },\n [vars.shadow.variable]: `inset 0 0 0px 1px ${vars.color.reference}`,\n }\n})\n\nconst variants = {\n solid: variantSolid,\n subtle: variantSubtle,\n outline: variantOutline,\n}\n\nexport const badgeTheme = defineStyleConfig({\n baseStyle,\n variants,\n defaultProps: {\n variant: \"subtle\",\n colorScheme: \"gray\",\n },\n})\n\nexport { vars as badgeVars }\n","import { tagAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { badgeTheme, badgeVars } from \"./badge\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $bg = cssVar(\"tag-bg\")\nconst $color = cssVar(\"tag-color\")\nconst $shadow = cssVar(\"tag-shadow\")\nconst $minH = cssVar(\"tag-min-height\")\nconst $minW = cssVar(\"tag-min-width\")\nconst $fontSize = cssVar(\"tag-font-size\")\nconst $paddingX = cssVar(\"tag-padding-inline\")\n\nconst baseStyleContainer = defineStyle({\n fontWeight: \"medium\",\n lineHeight: 1.2,\n outline: 0,\n [$color.variable]: badgeVars.color.reference,\n [$bg.variable]: badgeVars.bg.reference,\n [$shadow.variable]: badgeVars.shadow.reference,\n color: $color.reference,\n bg: $bg.reference,\n boxShadow: $shadow.reference,\n borderRadius: \"md\",\n minH: $minH.reference,\n minW: $minW.reference,\n fontSize: $fontSize.reference,\n px: $paddingX.reference,\n _focusVisible: {\n [$shadow.variable]: \"shadows.outline\",\n },\n})\n\nconst baseStyleLabel = defineStyle({\n lineHeight: 1.2,\n overflow: \"visible\",\n})\n\nconst baseStyleCloseButton = defineStyle({\n fontSize: \"lg\",\n w: \"5\",\n h: \"5\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n borderRadius: \"full\",\n marginStart: \"1.5\",\n marginEnd: \"-1\",\n opacity: 0.5,\n _disabled: {\n opacity: 0.4,\n },\n _focusVisible: {\n boxShadow: \"outline\",\n bg: \"rgba(0, 0, 0, 0.14)\",\n },\n _hover: {\n opacity: 0.8,\n },\n _active: {\n opacity: 1,\n },\n})\n\nconst baseStyle = definePartsStyle({\n container: baseStyleContainer,\n label: baseStyleLabel,\n closeButton: baseStyleCloseButton,\n})\n\nconst sizes = {\n sm: definePartsStyle({\n container: {\n [$minH.variable]: \"sizes.5\",\n [$minW.variable]: \"sizes.5\",\n [$fontSize.variable]: \"fontSizes.xs\",\n [$paddingX.variable]: \"space.2\",\n },\n closeButton: {\n marginEnd: \"-2px\",\n marginStart: \"0.35rem\",\n },\n }),\n md: definePartsStyle({\n container: {\n [$minH.variable]: \"sizes.6\",\n [$minW.variable]: \"sizes.6\",\n [$fontSize.variable]: \"fontSizes.sm\",\n [$paddingX.variable]: \"space.2\",\n },\n }),\n lg: definePartsStyle({\n container: {\n [$minH.variable]: \"sizes.8\",\n [$minW.variable]: \"sizes.8\",\n [$fontSize.variable]: \"fontSizes.md\",\n [$paddingX.variable]: \"space.3\",\n },\n }),\n}\n\nconst variants = {\n subtle: definePartsStyle((props) => ({\n container: badgeTheme.variants?.subtle(props),\n })),\n solid: definePartsStyle((props) => ({\n container: badgeTheme.variants?.solid(props),\n })),\n outline: definePartsStyle((props) => ({\n container: badgeTheme.variants?.outline(props),\n })),\n}\n\nexport const tagTheme = defineMultiStyleConfig({\n variants,\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n variant: \"subtle\",\n colorScheme: \"gray\",\n },\n})\n","import { inputAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { getColor, mode } from \"@chakra-ui/theme-tools\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $height = cssVar(\"input-height\")\nconst $fontSize = cssVar(\"input-font-size\")\nconst $padding = cssVar(\"input-padding\")\nconst $borderRadius = cssVar(\"input-border-radius\")\n\nconst baseStyle = definePartsStyle({\n addon: {\n height: $height.reference,\n fontSize: $fontSize.reference,\n px: $padding.reference,\n borderRadius: $borderRadius.reference,\n },\n field: {\n width: \"100%\",\n height: $height.reference,\n fontSize: $fontSize.reference,\n px: $padding.reference,\n borderRadius: $borderRadius.reference,\n minWidth: 0,\n outline: 0,\n position: \"relative\",\n appearance: \"none\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n },\n },\n})\n\nconst size = {\n lg: defineStyle({\n [$fontSize.variable]: \"fontSizes.lg\",\n [$padding.variable]: \"space.4\",\n [$borderRadius.variable]: \"radii.md\",\n [$height.variable]: \"sizes.12\",\n }),\n md: defineStyle({\n [$fontSize.variable]: \"fontSizes.md\",\n [$padding.variable]: \"space.4\",\n [$borderRadius.variable]: \"radii.md\",\n [$height.variable]: \"sizes.10\",\n }),\n sm: defineStyle({\n [$fontSize.variable]: \"fontSizes.sm\",\n [$padding.variable]: \"space.3\",\n [$borderRadius.variable]: \"radii.sm\",\n [$height.variable]: \"sizes.8\",\n }),\n xs: defineStyle({\n [$fontSize.variable]: \"fontSizes.xs\",\n [$padding.variable]: \"space.2\",\n [$borderRadius.variable]: \"radii.sm\",\n [$height.variable]: \"sizes.6\",\n }),\n}\n\nconst sizes = {\n lg: definePartsStyle({\n field: size.lg,\n group: size.lg,\n }),\n md: definePartsStyle({\n field: size.md,\n group: size.md,\n }),\n sm: definePartsStyle({\n field: size.sm,\n group: size.sm,\n }),\n xs: definePartsStyle({\n field: size.xs,\n group: size.xs,\n }),\n}\n\nfunction getDefaults(props: Record) {\n const { focusBorderColor: fc, errorBorderColor: ec } = props\n return {\n focusBorderColor: fc || mode(\"blue.500\", \"blue.300\")(props),\n errorBorderColor: ec || mode(\"red.500\", \"red.300\")(props),\n }\n}\n\nconst variantOutline = definePartsStyle((props) => {\n const { theme } = props\n const { focusBorderColor: fc, errorBorderColor: ec } = getDefaults(props)\n\n return {\n field: {\n border: \"1px solid\",\n borderColor: \"inherit\",\n bg: \"inherit\",\n _hover: {\n borderColor: mode(\"gray.300\", \"whiteAlpha.400\")(props),\n },\n _readOnly: {\n boxShadow: \"none !important\",\n userSelect: \"all\",\n },\n _invalid: {\n borderColor: getColor(theme, ec),\n boxShadow: `0 0 0 1px ${getColor(theme, ec)}`,\n },\n _focusVisible: {\n zIndex: 1,\n borderColor: getColor(theme, fc),\n boxShadow: `0 0 0 1px ${getColor(theme, fc)}`,\n },\n },\n addon: {\n border: \"1px solid\",\n borderColor: mode(\"inherit\", \"whiteAlpha.50\")(props),\n bg: mode(\"gray.100\", \"whiteAlpha.300\")(props),\n },\n }\n})\n\nconst variantFilled = definePartsStyle((props) => {\n const { theme } = props\n const { focusBorderColor: fc, errorBorderColor: ec } = getDefaults(props)\n\n return {\n field: {\n border: \"2px solid\",\n borderColor: \"transparent\",\n bg: mode(\"gray.100\", \"whiteAlpha.50\")(props),\n _hover: {\n bg: mode(\"gray.200\", \"whiteAlpha.100\")(props),\n },\n _readOnly: {\n boxShadow: \"none !important\",\n userSelect: \"all\",\n },\n _invalid: {\n borderColor: getColor(theme, ec),\n },\n _focusVisible: {\n bg: \"transparent\",\n borderColor: getColor(theme, fc),\n },\n },\n addon: {\n border: \"2px solid\",\n borderColor: \"transparent\",\n bg: mode(\"gray.100\", \"whiteAlpha.50\")(props),\n },\n }\n})\n\nconst variantFlushed = definePartsStyle((props) => {\n const { theme } = props\n const { focusBorderColor: fc, errorBorderColor: ec } = getDefaults(props)\n\n return {\n field: {\n borderBottom: \"1px solid\",\n borderColor: \"inherit\",\n borderRadius: \"0\",\n px: \"0\",\n bg: \"transparent\",\n _readOnly: {\n boxShadow: \"none !important\",\n userSelect: \"all\",\n },\n _invalid: {\n borderColor: getColor(theme, ec),\n boxShadow: `0px 1px 0px 0px ${getColor(theme, ec)}`,\n },\n _focusVisible: {\n borderColor: getColor(theme, fc),\n boxShadow: `0px 1px 0px 0px ${getColor(theme, fc)}`,\n },\n },\n addon: {\n borderBottom: \"2px solid\",\n borderColor: \"inherit\",\n borderRadius: \"0\",\n px: \"0\",\n bg: \"transparent\",\n },\n }\n})\n\nconst variantUnstyled = definePartsStyle({\n field: {\n bg: \"transparent\",\n px: \"0\",\n height: \"auto\",\n },\n addon: {\n bg: \"transparent\",\n px: \"0\",\n height: \"auto\",\n },\n})\n\nconst variants = {\n outline: variantOutline,\n filled: variantFilled,\n flushed: variantFlushed,\n unstyled: variantUnstyled,\n}\n\nexport const inputTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n variants,\n defaultProps: {\n size: \"md\",\n variant: \"outline\",\n },\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\nimport { inputTheme } from \"./input\"\n\nconst baseStyle = defineStyle({\n ...inputTheme.baseStyle?.field,\n paddingY: \"2\",\n minHeight: \"20\",\n lineHeight: \"short\",\n verticalAlign: \"top\",\n})\n\nconst variants = {\n outline: defineStyle(\n (props) => inputTheme.variants?.outline(props).field ?? {},\n ),\n flushed: defineStyle(\n (props) => inputTheme.variants?.flushed(props).field ?? {},\n ),\n filled: defineStyle(\n (props) => inputTheme.variants?.filled(props).field ?? {},\n ),\n unstyled: inputTheme.variants?.unstyled.field ?? {},\n}\n\nconst sizes = {\n xs: inputTheme.sizes?.xs.field ?? {},\n sm: inputTheme.sizes?.sm.field ?? {},\n md: inputTheme.sizes?.md.field ?? {},\n lg: inputTheme.sizes?.lg.field ?? {},\n}\n\nexport const textareaTheme = defineStyleConfig({\n baseStyle,\n sizes,\n variants,\n defaultProps: {\n size: \"md\",\n variant: \"outline\",\n },\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\nimport { cssVar } from \"@chakra-ui/theme-tools\"\n\nconst $bg = cssVar(\"tooltip-bg\")\nconst $fg = cssVar(\"tooltip-fg\")\nconst $arrowBg = cssVar(\"popper-arrow-bg\")\n\nconst baseStyle = defineStyle({\n bg: $bg.reference,\n color: $fg.reference,\n [$bg.variable]: \"colors.gray.700\",\n [$fg.variable]: \"colors.whiteAlpha.900\",\n _dark: {\n [$bg.variable]: \"colors.gray.300\",\n [$fg.variable]: \"colors.gray.900\",\n },\n [$arrowBg.variable]: $bg.reference,\n px: \"2\",\n py: \"0.5\",\n borderRadius: \"sm\",\n fontWeight: \"medium\",\n fontSize: \"sm\",\n boxShadow: \"md\",\n maxW: \"xs\",\n zIndex: \"tooltip\",\n})\n\nexport const tooltipTheme = defineStyleConfig({\n baseStyle,\n})\n","import { progressAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { generateStripe, getColor, mode } from \"@chakra-ui/theme-tools\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst filledStyle = defineStyle((props) => {\n const { colorScheme: c, theme: t, isIndeterminate, hasStripe } = props\n\n const stripeStyle = mode(\n generateStripe(),\n generateStripe(\"1rem\", \"rgba(0,0,0,0.1)\"),\n )(props)\n\n const bgColor = mode(`${c}.500`, `${c}.200`)(props)\n\n const gradient = `linear-gradient(\n to right,\n transparent 0%,\n ${getColor(t, bgColor)} 50%,\n transparent 100%\n )`\n\n const addStripe = !isIndeterminate && hasStripe\n\n return {\n ...(addStripe && stripeStyle),\n ...(isIndeterminate ? { bgImage: gradient } : { bgColor }),\n }\n})\n\nconst baseStyleLabel = defineStyle({\n lineHeight: \"1\",\n fontSize: \"0.25em\",\n fontWeight: \"bold\",\n color: \"white\",\n})\n\nconst baseStyleTrack = defineStyle((props) => {\n return {\n bg: mode(\"gray.100\", \"whiteAlpha.300\")(props),\n }\n})\n\nconst baseStyleFilledTrack = defineStyle((props) => {\n return {\n transitionProperty: \"common\",\n transitionDuration: \"slow\",\n ...filledStyle(props),\n }\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n label: baseStyleLabel,\n filledTrack: baseStyleFilledTrack(props),\n track: baseStyleTrack(props),\n}))\n\nconst sizes = {\n xs: definePartsStyle({\n track: { h: \"1\" },\n }),\n sm: definePartsStyle({\n track: { h: \"2\" },\n }),\n md: definePartsStyle({\n track: { h: \"3\" },\n }),\n lg: definePartsStyle({\n track: { h: \"4\" },\n }),\n}\n\nexport const progressTheme = defineMultiStyleConfig({\n sizes,\n baseStyle,\n defaultProps: {\n size: \"md\",\n colorScheme: \"blue\",\n },\n})\n","const isFunction = (value: any): value is Function =>\n typeof value === \"function\"\n\nexport function runIfFn(\n valueOrFn: T | ((...fnArgs: U[]) => T),\n ...args: U[]\n): T {\n return isFunction(valueOrFn) ? valueOrFn(...args) : valueOrFn\n}\n","import { checkboxAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { mode } from \"@chakra-ui/theme-tools\"\nimport { runIfFn } from \"../utils/run-if-fn\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $size = cssVar(\"checkbox-size\")\n\nconst baseStyleControl = defineStyle((props) => {\n const { colorScheme: c } = props\n\n return {\n w: $size.reference,\n h: $size.reference,\n transitionProperty: \"box-shadow\",\n transitionDuration: \"normal\",\n border: \"2px solid\",\n borderRadius: \"sm\",\n borderColor: \"inherit\",\n color: \"white\",\n\n _checked: {\n bg: mode(`${c}.500`, `${c}.200`)(props),\n borderColor: mode(`${c}.500`, `${c}.200`)(props),\n color: mode(\"white\", \"gray.900\")(props),\n\n _hover: {\n bg: mode(`${c}.600`, `${c}.300`)(props),\n borderColor: mode(`${c}.600`, `${c}.300`)(props),\n },\n\n _disabled: {\n borderColor: mode(\"gray.200\", \"transparent\")(props),\n bg: mode(\"gray.200\", \"whiteAlpha.300\")(props),\n color: mode(\"gray.500\", \"whiteAlpha.500\")(props),\n },\n },\n\n _indeterminate: {\n bg: mode(`${c}.500`, `${c}.200`)(props),\n borderColor: mode(`${c}.500`, `${c}.200`)(props),\n color: mode(\"white\", \"gray.900\")(props),\n },\n\n _disabled: {\n bg: mode(\"gray.100\", \"whiteAlpha.100\")(props),\n borderColor: mode(\"gray.100\", \"transparent\")(props),\n },\n\n _focusVisible: {\n boxShadow: \"outline\",\n },\n\n _invalid: {\n borderColor: mode(\"red.500\", \"red.300\")(props),\n },\n }\n})\n\nconst baseStyleContainer = defineStyle({\n _disabled: { cursor: \"not-allowed\" },\n})\n\nconst baseStyleLabel = defineStyle({\n userSelect: \"none\",\n _disabled: { opacity: 0.4 },\n})\n\nconst baseStyleIcon = defineStyle({\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n icon: baseStyleIcon,\n container: baseStyleContainer,\n control: runIfFn(baseStyleControl, props),\n label: baseStyleLabel,\n}))\n\nconst sizes = {\n sm: definePartsStyle({\n control: { [$size.variable]: \"sizes.3\" },\n label: { fontSize: \"sm\" },\n icon: { fontSize: \"3xs\" },\n }),\n md: definePartsStyle({\n control: { [$size.variable]: \"sizes.4\" },\n label: { fontSize: \"md\" },\n icon: { fontSize: \"2xs\" },\n }),\n lg: definePartsStyle({\n control: { [$size.variable]: \"sizes.5\" },\n label: { fontSize: \"lg\" },\n icon: { fontSize: \"2xs\" },\n }),\n}\n\nexport const checkboxTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n colorScheme: \"blue\",\n },\n})\n","import { selectAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { inputTheme } from \"./input\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $bg = cssVar(\"select-bg\")\n\nconst baseStyleField = defineStyle({\n ...inputTheme.baseStyle?.field,\n appearance: \"none\",\n paddingBottom: \"1px\",\n lineHeight: \"normal\",\n bg: $bg.reference,\n [$bg.variable]: \"colors.white\",\n _dark: {\n [$bg.variable]: \"colors.gray.700\",\n },\n \"> option, > optgroup\": {\n bg: $bg.reference,\n },\n})\n\nconst baseStyleIcon = defineStyle({\n width: \"6\",\n height: \"100%\",\n insetEnd: \"2\",\n position: \"relative\",\n color: \"currentColor\",\n fontSize: \"xl\",\n _disabled: {\n opacity: 0.5,\n },\n})\n\nconst baseStyle = definePartsStyle({\n field: baseStyleField,\n icon: baseStyleIcon,\n})\n\nconst iconSpacing = defineStyle({\n paddingInlineEnd: \"8\",\n})\n\nconst sizes = {\n lg: {\n ...inputTheme.sizes?.lg,\n field: {\n ...inputTheme.sizes?.lg.field,\n ...iconSpacing,\n },\n },\n md: {\n ...inputTheme.sizes?.md,\n field: {\n ...inputTheme.sizes?.md.field,\n ...iconSpacing,\n },\n },\n sm: {\n ...inputTheme.sizes?.sm,\n field: {\n ...inputTheme.sizes?.sm.field,\n ...iconSpacing,\n },\n },\n xs: {\n ...inputTheme.sizes?.xs,\n field: {\n ...inputTheme.sizes?.xs.field,\n ...iconSpacing,\n },\n icon: {\n insetEnd: \"1\",\n },\n },\n}\n\nexport const selectTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n variants: inputTheme.variants,\n defaultProps: inputTheme.defaultProps,\n})\n","import { radioAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { runIfFn } from \"../utils/run-if-fn\"\nimport { checkboxTheme } from \"./checkbox\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst baseStyleControl = defineStyle((props) => {\n const controlStyle = runIfFn(checkboxTheme.baseStyle, props)?.control\n\n return {\n ...controlStyle,\n borderRadius: \"full\",\n _checked: {\n ...controlStyle?.[\"_checked\"],\n _before: {\n content: `\"\"`,\n display: \"inline-block\",\n pos: \"relative\",\n w: \"50%\",\n h: \"50%\",\n borderRadius: \"50%\",\n bg: \"currentColor\",\n },\n },\n }\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n label: checkboxTheme.baseStyle?.(props).label,\n container: checkboxTheme.baseStyle?.(props).container,\n control: baseStyleControl(props),\n}))\n\nconst sizes = {\n md: definePartsStyle({\n control: { w: \"4\", h: \"4\" },\n label: { fontSize: \"md\" },\n }),\n lg: definePartsStyle({\n control: { w: \"5\", h: \"5\" },\n label: { fontSize: \"lg\" },\n }),\n sm: definePartsStyle({\n control: { width: \"3\", height: \"3\" },\n label: { fontSize: \"sm\" },\n }),\n}\n\nexport const radioTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n colorScheme: \"blue\",\n },\n})\n","import {\n cssVar,\n defineStyle,\n defineStyleConfig,\n} from \"@chakra-ui/styled-system\"\n\nconst $startColor = cssVar(\"skeleton-start-color\")\nconst $endColor = cssVar(\"skeleton-end-color\")\n\nconst baseStyle = defineStyle({\n [$startColor.variable]: \"colors.gray.100\",\n [$endColor.variable]: \"colors.gray.400\",\n _dark: {\n [$startColor.variable]: \"colors.gray.800\",\n [$endColor.variable]: \"colors.gray.600\",\n },\n background: $startColor.reference,\n borderColor: $endColor.reference,\n opacity: 0.7,\n borderRadius: \"sm\",\n})\n\nexport const skeletonTheme = defineStyleConfig({\n baseStyle,\n})\n","import {\n cssVar,\n defineStyle,\n defineStyleConfig,\n} from \"@chakra-ui/styled-system\"\n\nconst $bg = cssVar(\"skip-link-bg\")\n\nconst baseStyle = defineStyle({\n borderRadius: \"md\",\n fontWeight: \"semibold\",\n _focusVisible: {\n boxShadow: \"outline\",\n padding: \"4\",\n position: \"fixed\",\n top: \"6\",\n insetStart: \"6\",\n [$bg.variable]: \"colors.white\",\n _dark: {\n [$bg.variable]: \"colors.gray.700\",\n },\n bg: $bg.reference,\n },\n})\n\nexport const skipLinkTheme = defineStyleConfig({\n baseStyle,\n})\n","import { sliderAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { orient } from \"@chakra-ui/theme-tools\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $thumbSize = cssVar(\"slider-thumb-size\")\nconst $trackSize = cssVar(\"slider-track-size\")\nconst $bg = cssVar(\"slider-bg\")\n\nconst baseStyleContainer = defineStyle((props) => {\n const { orientation } = props\n\n return {\n display: \"inline-block\",\n position: \"relative\",\n cursor: \"pointer\",\n _disabled: {\n opacity: 0.6,\n cursor: \"default\",\n pointerEvents: \"none\",\n },\n ...orient({\n orientation,\n vertical: { h: \"100%\" },\n horizontal: { w: \"100%\" },\n }),\n }\n})\n\nconst baseStyleTrack = defineStyle((props) => {\n const orientationStyles = orient({\n orientation: props.orientation,\n horizontal: { h: $trackSize.reference },\n vertical: { w: $trackSize.reference },\n })\n\n return {\n ...orientationStyles,\n overflow: \"hidden\",\n borderRadius: \"sm\",\n [$bg.variable]: \"colors.gray.200\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.200\",\n },\n _disabled: {\n [$bg.variable]: \"colors.gray.300\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.300\",\n },\n },\n bg: $bg.reference,\n }\n})\n\nconst baseStyleThumb = defineStyle((props) => {\n const { orientation } = props\n const orientationStyle = orient({\n orientation,\n vertical: {\n left: \"50%\",\n transform: `translateX(-50%)`,\n _active: {\n transform: `translateX(-50%) scale(1.15)`,\n },\n },\n horizontal: {\n top: \"50%\",\n transform: `translateY(-50%)`,\n _active: {\n transform: `translateY(-50%) scale(1.15)`,\n },\n },\n })\n\n return {\n ...orientationStyle,\n w: $thumbSize.reference,\n h: $thumbSize.reference,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"absolute\",\n outline: 0,\n zIndex: 1,\n borderRadius: \"full\",\n bg: \"white\",\n boxShadow: \"base\",\n border: \"1px solid\",\n borderColor: \"transparent\",\n transitionProperty: \"transform\",\n transitionDuration: \"normal\",\n _focusVisible: {\n boxShadow: \"outline\",\n },\n _disabled: {\n bg: \"gray.300\",\n },\n }\n})\n\nconst baseStyleFilledTrack = defineStyle((props) => {\n const { colorScheme: c } = props\n\n return {\n width: \"inherit\",\n height: \"inherit\",\n [$bg.variable]: `colors.${c}.500`,\n _dark: {\n [$bg.variable]: `colors.${c}.200`,\n },\n bg: $bg.reference,\n }\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n container: baseStyleContainer(props),\n track: baseStyleTrack(props),\n thumb: baseStyleThumb(props),\n filledTrack: baseStyleFilledTrack(props),\n}))\n\nconst sizeLg = definePartsStyle({\n container: {\n [$thumbSize.variable]: `sizes.4`,\n [$trackSize.variable]: `sizes.1`,\n },\n})\n\nconst sizeMd = definePartsStyle({\n container: {\n [$thumbSize.variable]: `sizes.3.5`,\n [$trackSize.variable]: `sizes.1`,\n },\n})\n\nconst sizeSm = definePartsStyle({\n container: {\n [$thumbSize.variable]: `sizes.2.5`,\n [$trackSize.variable]: `sizes.0.5`,\n },\n})\n\nconst sizes = {\n lg: sizeLg,\n md: sizeMd,\n sm: sizeSm,\n}\n\nexport const sliderTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n colorScheme: \"blue\",\n },\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\nimport { cssVar } from \"@chakra-ui/theme-tools\"\n\nconst $size = cssVar(\"spinner-size\")\n\nconst baseStyle = defineStyle({\n width: [$size.reference],\n height: [$size.reference],\n})\n\nconst sizes = {\n xs: defineStyle({\n [$size.variable]: \"sizes.3\",\n }),\n sm: defineStyle({\n [$size.variable]: \"sizes.4\",\n }),\n md: defineStyle({\n [$size.variable]: \"sizes.6\",\n }),\n lg: defineStyle({\n [$size.variable]: \"sizes.8\",\n }),\n xl: defineStyle({\n [$size.variable]: \"sizes.12\",\n }),\n}\n\nexport const spinnerTheme = defineStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n },\n})\n","import { statAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst baseStyleLabel = defineStyle({\n fontWeight: \"medium\",\n})\n\nconst baseStyleHelpText = defineStyle({\n opacity: 0.8,\n marginBottom: \"2\",\n})\n\nconst baseStyleNumber = defineStyle({\n verticalAlign: \"baseline\",\n fontWeight: \"semibold\",\n})\n\nconst baseStyleIcon = defineStyle({\n marginEnd: 1,\n w: \"3.5\",\n h: \"3.5\",\n verticalAlign: \"middle\",\n})\n\nconst baseStyle = definePartsStyle({\n container: {},\n label: baseStyleLabel,\n helpText: baseStyleHelpText,\n number: baseStyleNumber,\n icon: baseStyleIcon,\n})\n\nconst sizes = {\n md: definePartsStyle({\n label: { fontSize: \"sm\" },\n helpText: { fontSize: \"sm\" },\n number: { fontSize: \"2xl\" },\n }),\n}\n\nexport const statTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n },\n})\n","import {\n cssVar,\n defineStyle,\n defineStyleConfig,\n} from \"@chakra-ui/styled-system\"\n\nconst $bg = cssVar(\"kbd-bg\")\n\nconst baseStyle = defineStyle({\n [$bg.variable]: \"colors.gray.100\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.100\",\n },\n bg: $bg.reference,\n borderRadius: \"md\",\n borderWidth: \"1px\",\n borderBottomWidth: \"3px\",\n fontSize: \"0.8em\",\n fontWeight: \"bold\",\n lineHeight: \"normal\",\n px: \"0.4em\",\n whiteSpace: \"nowrap\",\n})\n\nexport const kbdTheme = defineStyleConfig({\n baseStyle,\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\n\nconst baseStyle = defineStyle({\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n transitionTimingFunction: \"ease-out\",\n cursor: \"pointer\",\n textDecoration: \"none\",\n outline: \"none\",\n color: \"inherit\",\n _hover: {\n textDecoration: \"underline\",\n },\n _focusVisible: {\n boxShadow: \"outline\",\n },\n})\n\nexport const linkTheme = defineStyleConfig({\n baseStyle,\n})\n","import { listAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst baseStyleIcon = defineStyle({\n marginEnd: \"2\",\n display: \"inline\",\n verticalAlign: \"text-bottom\",\n})\n\nconst baseStyle = definePartsStyle({\n icon: baseStyleIcon,\n})\n\nexport const listTheme = defineMultiStyleConfig({\n baseStyle,\n})\n","import { menuAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $bg = cssVar(\"menu-bg\")\nconst $shadow = cssVar(\"menu-shadow\")\n\nconst baseStyleList = defineStyle({\n [$bg.variable]: \"#fff\",\n [$shadow.variable]: \"shadows.sm\",\n _dark: {\n [$bg.variable]: \"colors.gray.700\",\n [$shadow.variable]: \"shadows.dark-lg\",\n },\n color: \"inherit\",\n minW: \"3xs\",\n py: \"2\",\n zIndex: 1,\n borderRadius: \"md\",\n borderWidth: \"1px\",\n bg: $bg.reference,\n boxShadow: $shadow.reference,\n})\n\nconst baseStyleItem = defineStyle({\n py: \"1.5\",\n px: \"3\",\n transitionProperty: \"background\",\n transitionDuration: \"ultra-fast\",\n transitionTimingFunction: \"ease-in\",\n _focus: {\n [$bg.variable]: \"colors.gray.100\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.100\",\n },\n },\n _active: {\n [$bg.variable]: \"colors.gray.200\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.200\",\n },\n },\n _expanded: {\n [$bg.variable]: \"colors.gray.100\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.100\",\n },\n },\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n },\n bg: $bg.reference,\n})\n\nconst baseStyleGroupTitle = defineStyle({\n mx: 4,\n my: 2,\n fontWeight: \"semibold\",\n fontSize: \"sm\",\n})\n\nconst baseStyleIcon = defineStyle({\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n})\n\nconst baseStyleCommand = defineStyle({\n opacity: 0.6,\n})\n\nconst baseStyleDivider = defineStyle({\n border: 0,\n borderBottom: \"1px solid\",\n borderColor: \"inherit\",\n my: \"2\",\n opacity: 0.6,\n})\n\nconst baseStyleButton = defineStyle({\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n})\n\nconst baseStyle = definePartsStyle({\n button: baseStyleButton,\n list: baseStyleList,\n item: baseStyleItem,\n groupTitle: baseStyleGroupTitle,\n icon: baseStyleIcon,\n command: baseStyleCommand,\n divider: baseStyleDivider,\n})\n\nexport const menuTheme = defineMultiStyleConfig({\n baseStyle,\n})\n","import { modalAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { runIfFn } from \"../utils/run-if-fn\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $bg = cssVar(\"modal-bg\")\nconst $shadow = cssVar(\"modal-shadow\")\n\nconst baseStyleOverlay = defineStyle({\n bg: \"blackAlpha.600\",\n zIndex: \"modal\",\n})\n\nconst baseStyleDialogContainer = defineStyle((props) => {\n const { isCentered, scrollBehavior } = props\n\n return {\n display: \"flex\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n alignItems: isCentered ? \"center\" : \"flex-start\",\n overflow: scrollBehavior === \"inside\" ? \"hidden\" : \"auto\",\n overscrollBehaviorY: \"none\",\n }\n})\n\nconst baseStyleDialog = defineStyle((props) => {\n const { isCentered, scrollBehavior } = props\n\n return {\n borderRadius: \"md\",\n color: \"inherit\",\n my: isCentered ? \"auto\" : \"16\",\n mx: isCentered ? \"auto\" : undefined,\n zIndex: \"modal\",\n maxH: scrollBehavior === \"inside\" ? \"calc(100% - 7.5rem)\" : undefined,\n [$bg.variable]: \"colors.white\",\n [$shadow.variable]: \"shadows.lg\",\n _dark: {\n [$bg.variable]: \"colors.gray.700\",\n [$shadow.variable]: \"shadows.dark-lg\",\n },\n bg: $bg.reference,\n boxShadow: $shadow.reference,\n }\n})\n\nconst baseStyleHeader = defineStyle({\n px: \"6\",\n py: \"4\",\n fontSize: \"xl\",\n fontWeight: \"semibold\",\n})\n\nconst baseStyleCloseButton = defineStyle({\n position: \"absolute\",\n top: \"2\",\n insetEnd: \"3\",\n})\n\nconst baseStyleBody = defineStyle((props) => {\n const { scrollBehavior } = props\n return {\n px: \"6\",\n py: \"2\",\n flex: \"1\",\n overflow: scrollBehavior === \"inside\" ? \"auto\" : undefined,\n }\n})\n\nconst baseStyleFooter = defineStyle({\n px: \"6\",\n py: \"4\",\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n overlay: baseStyleOverlay,\n dialogContainer: runIfFn(baseStyleDialogContainer, props),\n dialog: runIfFn(baseStyleDialog, props),\n header: baseStyleHeader,\n closeButton: baseStyleCloseButton,\n body: runIfFn(baseStyleBody, props),\n footer: baseStyleFooter,\n}))\n\n/**\n * Since the `maxWidth` prop references theme.sizes internally,\n * we can leverage that to size our modals.\n */\nfunction getSize(value: string) {\n if (value === \"full\") {\n return definePartsStyle({\n dialog: {\n maxW: \"100vw\",\n minH: \"$100vh\",\n my: \"0\",\n borderRadius: \"0\",\n },\n })\n }\n return definePartsStyle({\n dialog: { maxW: value },\n })\n}\n\nconst sizes = {\n xs: getSize(\"xs\"),\n sm: getSize(\"sm\"),\n md: getSize(\"md\"),\n lg: getSize(\"lg\"),\n xl: getSize(\"xl\"),\n \"2xl\": getSize(\"2xl\"),\n \"3xl\": getSize(\"3xl\"),\n \"4xl\": getSize(\"4xl\"),\n \"5xl\": getSize(\"5xl\"),\n \"6xl\": getSize(\"6xl\"),\n full: getSize(\"full\"),\n}\n\nexport const modalTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: { size: \"md\" },\n})\n","import { numberInputAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { calc, cssVar } from \"@chakra-ui/theme-tools\"\nimport typography from \"../foundations/typography\"\nimport { inputTheme } from \"./input\"\nimport { runIfFn } from \"../utils/run-if-fn\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $stepperWidth = cssVar(\"number-input-stepper-width\")\n\nconst $inputPadding = cssVar(\"number-input-input-padding\")\nconst inputPaddingValue = calc($stepperWidth).add(\"0.5rem\").toString()\n\nconst $bg = cssVar(\"number-input-bg\")\nconst $fg = cssVar(\"number-input-color\")\nconst $border = cssVar(\"number-input-border-color\")\n\nconst baseStyleRoot = defineStyle({\n [$stepperWidth.variable]: \"sizes.6\",\n [$inputPadding.variable]: inputPaddingValue,\n})\n\nconst baseStyleField = defineStyle(\n (props) => runIfFn(inputTheme.baseStyle, props)?.field ?? {},\n)\n\nconst baseStyleStepperGroup = defineStyle({\n width: $stepperWidth.reference,\n})\n\nconst baseStyleStepper = defineStyle({\n borderStart: \"1px solid\",\n borderStartColor: $border.reference,\n color: $fg.reference,\n bg: $bg.reference,\n [$fg.variable]: \"colors.chakra-body-text\",\n [$border.variable]: \"colors.chakra-border-color\",\n _dark: {\n [$fg.variable]: \"colors.whiteAlpha.800\",\n [$border.variable]: \"colors.whiteAlpha.300\",\n },\n _active: {\n [$bg.variable]: \"colors.gray.200\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.300\",\n },\n },\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n },\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n root: baseStyleRoot,\n field: runIfFn(baseStyleField, props) ?? {},\n stepperGroup: baseStyleStepperGroup,\n stepper: baseStyleStepper,\n}))\n\ntype FontSize = keyof typeof typography.fontSizes\n\nfunction getSize(size: FontSize) {\n //@ts-expect-error\n const sizeStyle = inputTheme.sizes?.[size]\n\n const radius: Partial> = {\n lg: \"md\",\n md: \"md\",\n sm: \"sm\",\n xs: \"sm\",\n }\n\n const _fontSize = (sizeStyle.field?.fontSize ?? \"md\") as FontSize\n const fontSize = typography.fontSizes[_fontSize]\n\n return definePartsStyle({\n field: {\n ...sizeStyle.field,\n paddingInlineEnd: $inputPadding.reference,\n verticalAlign: \"top\",\n },\n stepper: {\n fontSize: calc(fontSize).multiply(0.75).toString(),\n _first: {\n borderTopEndRadius: radius[size],\n },\n _last: {\n borderBottomEndRadius: radius[size],\n mt: \"-1px\",\n borderTopWidth: 1,\n },\n },\n })\n}\n\nconst sizes = {\n xs: getSize(\"xs\"),\n sm: getSize(\"sm\"),\n md: getSize(\"md\"),\n lg: getSize(\"lg\"),\n}\n\nexport const numberInputTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n variants: inputTheme.variants,\n defaultProps: inputTheme.defaultProps,\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\nimport { inputTheme } from \"./input\"\nimport { runIfFn } from \"../utils/run-if-fn\"\n\nconst baseStyle = defineStyle({\n ...inputTheme.baseStyle?.field,\n textAlign: \"center\",\n})\n\nconst sizes = {\n lg: defineStyle({\n fontSize: \"lg\",\n w: 12,\n h: 12,\n borderRadius: \"md\",\n }),\n md: defineStyle({\n fontSize: \"md\",\n w: 10,\n h: 10,\n borderRadius: \"md\",\n }),\n sm: defineStyle({\n fontSize: \"sm\",\n w: 8,\n h: 8,\n borderRadius: \"sm\",\n }),\n xs: defineStyle({\n fontSize: \"xs\",\n w: 6,\n h: 6,\n borderRadius: \"sm\",\n }),\n}\n\nconst variants = {\n outline: defineStyle(\n (props) => runIfFn(inputTheme.variants?.outline, props)?.field ?? {},\n ),\n flushed: defineStyle(\n (props) => runIfFn(inputTheme.variants?.flushed, props)?.field ?? {},\n ),\n filled: defineStyle(\n (props) => runIfFn(inputTheme.variants?.filled, props)?.field ?? {},\n ),\n unstyled: inputTheme.variants?.unstyled.field ?? {},\n}\n\nexport const pinInputTheme = defineStyleConfig({\n baseStyle,\n sizes,\n variants,\n defaultProps: inputTheme.defaultProps,\n})\n","import { popoverAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { cssVar } from \"@chakra-ui/theme-tools\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $popperBg = cssVar(\"popper-bg\")\nconst $arrowBg = cssVar(\"popper-arrow-bg\")\nconst $arrowShadowColor = cssVar(\"popper-arrow-shadow-color\")\n\nconst baseStylePopper = defineStyle({ zIndex: 10 })\n\nconst baseStyleContent = defineStyle({\n [$popperBg.variable]: `colors.white`,\n bg: $popperBg.reference,\n [$arrowBg.variable]: $popperBg.reference,\n [$arrowShadowColor.variable]: `colors.gray.200`,\n _dark: {\n [$popperBg.variable]: `colors.gray.700`,\n [$arrowShadowColor.variable]: `colors.whiteAlpha.300`,\n },\n width: \"xs\",\n border: \"1px solid\",\n borderColor: \"inherit\",\n borderRadius: \"md\",\n boxShadow: \"sm\",\n zIndex: \"inherit\",\n _focusVisible: {\n outline: 0,\n boxShadow: \"outline\",\n },\n})\n\nconst baseStyleHeader = defineStyle({\n px: 3,\n py: 2,\n borderBottomWidth: \"1px\",\n})\n\nconst baseStyleBody = defineStyle({\n px: 3,\n py: 2,\n})\n\nconst baseStyleFooter = defineStyle({\n px: 3,\n py: 2,\n borderTopWidth: \"1px\",\n})\n\nconst baseStyleCloseButton = defineStyle({\n position: \"absolute\",\n borderRadius: \"md\",\n top: 1,\n insetEnd: 2,\n padding: 2,\n})\n\nconst baseStyle = definePartsStyle({\n popper: baseStylePopper,\n content: baseStyleContent,\n header: baseStyleHeader,\n body: baseStyleBody,\n footer: baseStyleFooter,\n closeButton: baseStyleCloseButton,\n})\n\nexport const popoverTheme = defineMultiStyleConfig({\n baseStyle,\n})\n","import { drawerAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { runIfFn } from \"../utils/run-if-fn\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $bg = cssVar(\"drawer-bg\")\nconst $bs = cssVar(\"drawer-box-shadow\")\n\n/**\n * Since the `maxWidth` prop references theme.sizes internally,\n * we can leverage that to size our modals.\n */\nfunction getSize(value: string) {\n if (value === \"full\") {\n return definePartsStyle({\n dialog: { maxW: \"100vw\", h: \"100vh\" },\n })\n }\n return definePartsStyle({\n dialog: { maxW: value },\n })\n}\n\nconst baseStyleOverlay = defineStyle({\n bg: \"blackAlpha.600\",\n zIndex: \"modal\",\n})\n\nconst baseStyleDialogContainer = defineStyle({\n display: \"flex\",\n zIndex: \"modal\",\n justifyContent: \"center\",\n})\n\nconst baseStyleDialog = defineStyle((props) => {\n const { isFullHeight } = props\n\n return {\n ...(isFullHeight && { height: \"100vh\" }),\n zIndex: \"modal\",\n maxH: \"100vh\",\n color: \"inherit\",\n [$bg.variable]: \"colors.white\",\n [$bs.variable]: \"shadows.lg\",\n _dark: {\n [$bg.variable]: \"colors.gray.700\",\n [$bs.variable]: \"shadows.dark-lg\",\n },\n bg: $bg.reference,\n boxShadow: $bs.reference,\n }\n})\n\nconst baseStyleHeader = defineStyle({\n px: \"6\",\n py: \"4\",\n fontSize: \"xl\",\n fontWeight: \"semibold\",\n})\n\nconst baseStyleCloseButton = defineStyle({\n position: \"absolute\",\n top: \"2\",\n insetEnd: \"3\",\n})\n\nconst baseStyleBody = defineStyle({\n px: \"6\",\n py: \"2\",\n flex: \"1\",\n overflow: \"auto\",\n})\n\nconst baseStyleFooter = defineStyle({\n px: \"6\",\n py: \"4\",\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n overlay: baseStyleOverlay,\n dialogContainer: baseStyleDialogContainer,\n dialog: runIfFn(baseStyleDialog, props),\n header: baseStyleHeader,\n closeButton: baseStyleCloseButton,\n body: baseStyleBody,\n footer: baseStyleFooter,\n}))\n\nconst sizes = {\n xs: getSize(\"xs\"),\n sm: getSize(\"md\"),\n md: getSize(\"lg\"),\n lg: getSize(\"2xl\"),\n xl: getSize(\"4xl\"),\n full: getSize(\"full\"),\n}\n\nexport const drawerTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"xs\",\n },\n})\n","import { editableAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst baseStylePreview = defineStyle({\n borderRadius: \"md\",\n py: \"1\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n})\n\nconst baseStyleInput = defineStyle({\n borderRadius: \"md\",\n py: \"1\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n width: \"full\",\n _focusVisible: { boxShadow: \"outline\" },\n _placeholder: { opacity: 0.6 },\n})\n\nconst baseStyleTextarea = defineStyle({\n borderRadius: \"md\",\n py: \"1\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n width: \"full\",\n _focusVisible: { boxShadow: \"outline\" },\n _placeholder: { opacity: 0.6 },\n})\n\nconst baseStyle = definePartsStyle({\n preview: baseStylePreview,\n input: baseStyleInput,\n textarea: baseStyleTextarea,\n})\n\nexport const editableTheme = defineMultiStyleConfig({\n baseStyle,\n})\n","import { formAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $fg = cssVar(\"form-control-color\")\n\nconst baseStyleRequiredIndicator = defineStyle({\n marginStart: \"1\",\n [$fg.variable]: \"colors.red.500\",\n _dark: {\n [$fg.variable]: \"colors.red.300\",\n },\n color: $fg.reference,\n})\n\nconst baseStyleHelperText = defineStyle({\n mt: \"2\",\n [$fg.variable]: \"colors.gray.600\",\n _dark: {\n [$fg.variable]: \"colors.whiteAlpha.600\",\n },\n color: $fg.reference,\n lineHeight: \"normal\",\n fontSize: \"sm\",\n})\n\nconst baseStyle = definePartsStyle({\n container: {\n width: \"100%\",\n position: \"relative\",\n },\n requiredIndicator: baseStyleRequiredIndicator,\n helperText: baseStyleHelperText,\n})\n\nexport const formTheme = defineMultiStyleConfig({\n baseStyle,\n})\n","import { formErrorAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $fg = cssVar(\"form-error-color\")\n\nconst baseStyleText = defineStyle({\n [$fg.variable]: `colors.red.500`,\n _dark: {\n [$fg.variable]: `colors.red.300`,\n },\n color: $fg.reference,\n mt: \"2\",\n fontSize: \"sm\",\n lineHeight: \"normal\",\n})\n\nconst baseStyleIcon = defineStyle({\n marginEnd: \"0.5em\",\n [$fg.variable]: `colors.red.500`,\n _dark: {\n [$fg.variable]: `colors.red.300`,\n },\n color: $fg.reference,\n})\n\nconst baseStyle = definePartsStyle({\n text: baseStyleText,\n icon: baseStyleIcon,\n})\n\nexport const formErrorTheme = defineMultiStyleConfig({\n baseStyle,\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\n\nconst baseStyle = defineStyle({\n fontSize: \"md\",\n marginEnd: \"3\",\n mb: \"2\",\n fontWeight: \"medium\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n opacity: 1,\n _disabled: {\n opacity: 0.4,\n },\n})\n\nexport const formLabelTheme = defineStyleConfig({\n baseStyle,\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\n\nconst baseStyle = defineStyle({\n fontFamily: \"heading\",\n fontWeight: \"bold\",\n})\n\nconst sizes = {\n \"4xl\": defineStyle({\n fontSize: [\"6xl\", null, \"7xl\"],\n lineHeight: 1,\n }),\n \"3xl\": defineStyle({\n fontSize: [\"5xl\", null, \"6xl\"],\n lineHeight: 1,\n }),\n \"2xl\": defineStyle({\n fontSize: [\"4xl\", null, \"5xl\"],\n lineHeight: [1.2, null, 1],\n }),\n xl: defineStyle({\n fontSize: [\"3xl\", null, \"4xl\"],\n lineHeight: [1.33, null, 1.2],\n }),\n lg: defineStyle({\n fontSize: [\"2xl\", null, \"3xl\"],\n lineHeight: [1.33, null, 1.2],\n }),\n md: defineStyle({\n fontSize: \"xl\",\n lineHeight: 1.2,\n }),\n sm: defineStyle({\n fontSize: \"md\",\n lineHeight: 1.2,\n }),\n xs: defineStyle({\n fontSize: \"sm\",\n lineHeight: 1.2,\n }),\n}\n\nexport const headingTheme = defineStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"xl\",\n },\n})\n","import { breadcrumbAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { defineMultiStyleConfig, definePartsStyle } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $decor = cssVar(\"breadcrumb-link-decor\")\n\nconst baseStyleLink = defineStyle({\n transitionProperty: \"common\",\n transitionDuration: \"fast\",\n transitionTimingFunction: \"ease-out\",\n outline: \"none\",\n color: \"inherit\",\n textDecoration: $decor.reference,\n [$decor.variable]: \"none\",\n \"&:not([aria-current=page])\": {\n cursor: \"pointer\",\n _hover: {\n [$decor.variable]: \"underline\",\n },\n _focusVisible: {\n boxShadow: \"outline\",\n },\n },\n})\n\nconst baseStyle = definePartsStyle({\n link: baseStyleLink,\n})\n\nexport const breadcrumbTheme = defineMultiStyleConfig({\n baseStyle,\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\nimport { mode, transparentize } from \"@chakra-ui/theme-tools\"\nimport { runIfFn } from \"../utils/run-if-fn\"\n\nconst baseStyle = defineStyle({\n lineHeight: \"1.2\",\n borderRadius: \"md\",\n fontWeight: \"semibold\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n _focusVisible: {\n boxShadow: \"outline\",\n },\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n boxShadow: \"none\",\n },\n _hover: {\n _disabled: {\n bg: \"initial\",\n },\n },\n})\n\nconst variantGhost = defineStyle((props) => {\n const { colorScheme: c, theme } = props\n\n if (c === \"gray\") {\n return {\n color: mode(`gray.800`, `whiteAlpha.900`)(props),\n _hover: {\n bg: mode(`gray.100`, `whiteAlpha.200`)(props),\n },\n _active: { bg: mode(`gray.200`, `whiteAlpha.300`)(props) },\n }\n }\n\n const darkHoverBg = transparentize(`${c}.200`, 0.12)(theme)\n const darkActiveBg = transparentize(`${c}.200`, 0.24)(theme)\n\n return {\n color: mode(`${c}.600`, `${c}.200`)(props),\n bg: \"transparent\",\n _hover: {\n bg: mode(`${c}.50`, darkHoverBg)(props),\n },\n _active: {\n bg: mode(`${c}.100`, darkActiveBg)(props),\n },\n }\n})\n\nconst variantOutline = defineStyle((props) => {\n const { colorScheme: c } = props\n const borderColor = mode(`gray.200`, `whiteAlpha.300`)(props)\n return {\n border: \"1px solid\",\n borderColor: c === \"gray\" ? borderColor : \"currentColor\",\n \".chakra-button__group[data-attached][data-orientation=horizontal] > &:not(:last-of-type)\":\n { marginEnd: \"-1px\" },\n \".chakra-button__group[data-attached][data-orientation=vertical] > &:not(:last-of-type)\":\n { marginBottom: \"-1px\" },\n ...runIfFn(variantGhost, props),\n }\n})\n\ntype AccessibleColor = {\n bg?: string\n color?: string\n hoverBg?: string\n activeBg?: string\n}\n\n/** Accessible color overrides for less accessible colors. */\nconst accessibleColorMap: { [key: string]: AccessibleColor } = {\n yellow: {\n bg: \"yellow.400\",\n color: \"black\",\n hoverBg: \"yellow.500\",\n activeBg: \"yellow.600\",\n },\n cyan: {\n bg: \"cyan.400\",\n color: \"black\",\n hoverBg: \"cyan.500\",\n activeBg: \"cyan.600\",\n },\n}\n\nconst variantSolid = defineStyle((props) => {\n const { colorScheme: c } = props\n\n if (c === \"gray\") {\n const bg = mode(`gray.100`, `whiteAlpha.200`)(props)\n\n return {\n bg,\n color: mode(`gray.800`, `whiteAlpha.900`)(props),\n _hover: {\n bg: mode(`gray.200`, `whiteAlpha.300`)(props),\n _disabled: {\n bg,\n },\n },\n _active: { bg: mode(`gray.300`, `whiteAlpha.400`)(props) },\n }\n }\n\n const {\n bg = `${c}.500`,\n color = \"white\",\n hoverBg = `${c}.600`,\n activeBg = `${c}.700`,\n } = accessibleColorMap[c] ?? {}\n\n const background = mode(bg, `${c}.200`)(props)\n\n return {\n bg: background,\n color: mode(color, `gray.800`)(props),\n _hover: {\n bg: mode(hoverBg, `${c}.300`)(props),\n _disabled: {\n bg: background,\n },\n },\n _active: { bg: mode(activeBg, `${c}.400`)(props) },\n }\n})\n\nconst variantLink = defineStyle((props) => {\n const { colorScheme: c } = props\n return {\n padding: 0,\n height: \"auto\",\n lineHeight: \"normal\",\n verticalAlign: \"baseline\",\n color: mode(`${c}.500`, `${c}.200`)(props),\n _hover: {\n textDecoration: \"underline\",\n _disabled: {\n textDecoration: \"none\",\n },\n },\n _active: {\n color: mode(`${c}.700`, `${c}.500`)(props),\n },\n }\n})\n\nconst variantUnstyled = defineStyle({\n bg: \"none\",\n color: \"inherit\",\n display: \"inline\",\n lineHeight: \"inherit\",\n m: \"0\",\n p: \"0\",\n})\n\nconst variants = {\n ghost: variantGhost,\n outline: variantOutline,\n solid: variantSolid,\n link: variantLink,\n unstyled: variantUnstyled,\n}\n\nconst sizes = {\n lg: defineStyle({\n h: \"12\",\n minW: \"12\",\n fontSize: \"lg\",\n px: \"6\",\n }),\n md: defineStyle({\n h: \"10\",\n minW: \"10\",\n fontSize: \"md\",\n px: \"4\",\n }),\n sm: defineStyle({\n h: \"8\",\n minW: \"8\",\n fontSize: \"sm\",\n px: \"3\",\n }),\n xs: defineStyle({\n h: \"6\",\n minW: \"6\",\n fontSize: \"xs\",\n px: \"2\",\n }),\n}\n\nexport const buttonTheme = defineStyleConfig({\n baseStyle,\n variants,\n sizes,\n defaultProps: {\n variant: \"solid\",\n size: \"md\",\n colorScheme: \"gray\",\n },\n})\n","import { cardAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport { createMultiStyleConfigHelpers, cssVar } from \"@chakra-ui/styled-system\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $bg = cssVar(\"card-bg\")\nconst $padding = cssVar(\"card-padding\")\nconst $shadow = cssVar(\"card-shadow\")\nconst $radius = cssVar(\"card-radius\")\nconst $border = cssVar(\"card-border-width\", \"0\")\nconst $borderColor = cssVar(\"card-border-color\")\n\nconst baseStyle = definePartsStyle({\n container: {\n [$bg.variable]: \"colors.chakra-body-bg\",\n backgroundColor: $bg.reference,\n boxShadow: $shadow.reference,\n borderRadius: $radius.reference,\n color: \"chakra-body-text\",\n borderWidth: $border.reference,\n borderColor: $borderColor.reference,\n },\n body: {\n padding: $padding.reference,\n flex: \"1 1 0%\",\n },\n header: {\n padding: $padding.reference,\n },\n footer: {\n padding: $padding.reference,\n },\n})\n\nconst sizes = {\n sm: definePartsStyle({\n container: {\n [$radius.variable]: \"radii.base\",\n [$padding.variable]: \"space.3\",\n },\n }),\n md: definePartsStyle({\n container: {\n [$radius.variable]: \"radii.md\",\n [$padding.variable]: \"space.5\",\n },\n }),\n lg: definePartsStyle({\n container: {\n [$radius.variable]: \"radii.xl\",\n [$padding.variable]: \"space.7\",\n },\n }),\n}\n\nconst variants = {\n elevated: definePartsStyle({\n container: {\n [$shadow.variable]: \"shadows.base\",\n _dark: {\n [$bg.variable]: \"colors.gray.700\",\n },\n },\n }),\n outline: definePartsStyle({\n container: {\n [$border.variable]: \"1px\",\n [$borderColor.variable]: \"colors.chakra-border-color\",\n },\n }),\n filled: definePartsStyle({\n container: {\n [$bg.variable]: \"colors.chakra-subtle-bg\",\n },\n }),\n unstyled: {\n body: {\n [$padding.variable]: 0,\n },\n header: {\n [$padding.variable]: 0,\n },\n footer: {\n [$padding.variable]: 0,\n },\n },\n}\n\nexport const cardTheme = defineMultiStyleConfig({\n baseStyle,\n variants,\n sizes,\n defaultProps: {\n variant: \"elevated\",\n size: \"md\",\n },\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\nimport { cssVar } from \"@chakra-ui/theme-tools\"\n\nconst $size = cssVar(\"close-button-size\")\nconst $bg = cssVar(\"close-button-bg\")\n\nconst baseStyle = defineStyle({\n w: [$size.reference],\n h: [$size.reference],\n borderRadius: \"md\",\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n boxShadow: \"none\",\n },\n _hover: {\n [$bg.variable]: \"colors.blackAlpha.100\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.100\",\n },\n },\n _active: {\n [$bg.variable]: \"colors.blackAlpha.200\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.200\",\n },\n },\n _focusVisible: {\n boxShadow: \"outline\",\n },\n bg: $bg.reference,\n})\n\nconst sizes = {\n lg: defineStyle({\n [$size.variable]: \"sizes.10\",\n fontSize: \"md\",\n }),\n md: defineStyle({\n [$size.variable]: \"sizes.8\",\n fontSize: \"xs\",\n }),\n sm: defineStyle({\n [$size.variable]: \"sizes.6\",\n fontSize: \"2xs\",\n }),\n}\n\nexport const closeButtonTheme = defineStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n },\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\nimport { badgeTheme, badgeVars as vars } from \"./badge\"\n\nconst { variants, defaultProps } = badgeTheme\n\nconst baseStyle = defineStyle({\n fontFamily: \"mono\",\n fontSize: \"sm\",\n px: \"0.2em\",\n borderRadius: \"sm\",\n bg: vars.bg.reference,\n color: vars.color.reference,\n boxShadow: vars.shadow.reference,\n})\n\nexport const codeTheme = defineStyleConfig({\n baseStyle,\n variants,\n defaultProps,\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\n\nconst baseStyle = defineStyle({\n w: \"100%\",\n mx: \"auto\",\n maxW: \"prose\",\n px: \"4\",\n})\n\nexport const containerTheme = defineStyleConfig({\n baseStyle,\n})\n","import { defineStyle, defineStyleConfig } from \"@chakra-ui/styled-system\"\n\nconst baseStyle = defineStyle({\n opacity: 0.6,\n borderColor: \"inherit\",\n})\n\nconst variantSolid = defineStyle({\n borderStyle: \"solid\",\n})\n\nconst variantDashed = defineStyle({\n borderStyle: \"dashed\",\n})\n\nconst variants = {\n solid: variantSolid,\n dashed: variantDashed,\n}\n\nexport const dividerTheme = defineStyleConfig({\n baseStyle,\n variants,\n defaultProps: {\n variant: \"solid\",\n },\n})\n","import { accordionAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst baseStyleContainer = defineStyle({\n borderTopWidth: \"1px\",\n borderColor: \"inherit\",\n _last: {\n borderBottomWidth: \"1px\",\n },\n})\n\nconst baseStyleButton = defineStyle({\n transitionProperty: \"common\",\n transitionDuration: \"normal\",\n fontSize: \"md\",\n _focusVisible: {\n boxShadow: \"outline\",\n },\n _hover: {\n bg: \"blackAlpha.50\",\n },\n _disabled: {\n opacity: 0.4,\n cursor: \"not-allowed\",\n },\n px: \"4\",\n py: \"2\",\n})\n\nconst baseStylePanel = defineStyle({\n pt: \"2\",\n px: \"4\",\n pb: \"5\",\n})\n\nconst baseStyleIcon = defineStyle({\n fontSize: \"1.25em\",\n})\n\nconst baseStyle = definePartsStyle({\n container: baseStyleContainer,\n button: baseStyleButton,\n panel: baseStylePanel,\n icon: baseStyleIcon,\n})\n\nexport const accordionTheme = defineMultiStyleConfig({ baseStyle })\n","import { alertAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n StyleFunctionProps,\n} from \"@chakra-ui/styled-system\"\nimport { transparentize } from \"@chakra-ui/theme-tools\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $fg = cssVar(\"alert-fg\")\nconst $bg = cssVar(\"alert-bg\")\n\nconst baseStyle = definePartsStyle({\n container: {\n bg: $bg.reference,\n px: \"4\",\n py: \"3\",\n },\n title: {\n fontWeight: \"bold\",\n lineHeight: \"6\",\n marginEnd: \"2\",\n },\n description: {\n lineHeight: \"6\",\n },\n icon: {\n color: $fg.reference,\n flexShrink: 0,\n marginEnd: \"3\",\n w: \"5\",\n h: \"6\",\n },\n spinner: {\n color: $fg.reference,\n flexShrink: 0,\n marginEnd: \"3\",\n w: \"5\",\n h: \"5\",\n },\n})\n\nfunction getBg(props: StyleFunctionProps) {\n const { theme, colorScheme: c } = props\n const darkBg = transparentize(`${c}.200`, 0.16)(theme)\n return {\n light: `colors.${c}.100`,\n dark: darkBg,\n }\n}\n\nconst variantSubtle = definePartsStyle((props) => {\n const { colorScheme: c } = props\n const bg = getBg(props)\n return {\n container: {\n [$fg.variable]: `colors.${c}.600`,\n [$bg.variable]: bg.light,\n _dark: {\n [$fg.variable]: `colors.${c}.200`,\n [$bg.variable]: bg.dark,\n },\n },\n }\n})\n\nconst variantLeftAccent = definePartsStyle((props) => {\n const { colorScheme: c } = props\n const bg = getBg(props)\n return {\n container: {\n [$fg.variable]: `colors.${c}.600`,\n [$bg.variable]: bg.light,\n _dark: {\n [$fg.variable]: `colors.${c}.200`,\n [$bg.variable]: bg.dark,\n },\n paddingStart: \"3\",\n borderStartWidth: \"4px\",\n borderStartColor: $fg.reference,\n },\n }\n})\n\nconst variantTopAccent = definePartsStyle((props) => {\n const { colorScheme: c } = props\n const bg = getBg(props)\n return {\n container: {\n [$fg.variable]: `colors.${c}.600`,\n [$bg.variable]: bg.light,\n _dark: {\n [$fg.variable]: `colors.${c}.200`,\n [$bg.variable]: bg.dark,\n },\n pt: \"2\",\n borderTopWidth: \"4px\",\n borderTopColor: $fg.reference,\n },\n }\n})\n\nconst variantSolid = definePartsStyle((props) => {\n const { colorScheme: c } = props\n return {\n container: {\n [$fg.variable]: `colors.white`,\n [$bg.variable]: `colors.${c}.600`,\n _dark: {\n [$fg.variable]: `colors.gray.900`,\n [$bg.variable]: `colors.${c}.200`,\n },\n color: $fg.reference,\n },\n }\n})\n\nconst variants = {\n subtle: variantSubtle,\n \"left-accent\": variantLeftAccent,\n \"top-accent\": variantTopAccent,\n solid: variantSolid,\n}\n\nexport const alertTheme = defineMultiStyleConfig({\n baseStyle,\n variants,\n defaultProps: {\n variant: \"subtle\",\n colorScheme: \"blue\",\n },\n})\n","import { avatarAnatomy as parts } from \"@chakra-ui/anatomy\"\nimport {\n createMultiStyleConfigHelpers,\n cssVar,\n defineStyle,\n} from \"@chakra-ui/styled-system\"\nimport { isDark, randomColor } from \"@chakra-ui/theme-tools\"\nimport themeSizes from \"../foundations/sizes\"\nimport { runIfFn } from \"../utils/run-if-fn\"\n\nconst { definePartsStyle, defineMultiStyleConfig } =\n createMultiStyleConfigHelpers(parts.keys)\n\nconst $border = cssVar(\"avatar-border-color\")\nconst $bg = cssVar(\"avatar-bg\")\nconst $fs = cssVar(\"avatar-font-size\")\nconst $size = cssVar(\"avatar-size\")\n\nconst baseStyleBadge = defineStyle({\n borderRadius: \"full\",\n border: \"0.2em solid\",\n borderColor: $border.reference,\n [$border.variable]: \"white\",\n _dark: {\n [$border.variable]: \"colors.gray.800\",\n },\n})\n\nconst baseStyleExcessLabel = defineStyle({\n bg: $bg.reference,\n fontSize: $fs.reference,\n width: $size.reference,\n height: $size.reference,\n lineHeight: \"1\",\n [$bg.variable]: \"colors.gray.200\",\n _dark: {\n [$bg.variable]: \"colors.whiteAlpha.400\",\n },\n})\n\nconst baseStyleContainer = defineStyle((props) => {\n const { name, theme } = props\n const bg = name ? randomColor({ string: name }) : \"colors.gray.400\"\n const isBgDark = isDark(bg)(theme)\n\n let color = \"white\"\n if (!isBgDark) color = \"gray.800\"\n\n return {\n bg: $bg.reference,\n fontSize: $fs.reference,\n color,\n borderColor: $border.reference,\n verticalAlign: \"top\",\n width: $size.reference,\n height: $size.reference,\n \"&:not([data-loaded])\": {\n [$bg.variable]: bg,\n },\n [$border.variable]: \"colors.white\",\n _dark: {\n [$border.variable]: \"colors.gray.800\",\n },\n }\n})\n\nconst baseStyleLabel = defineStyle({\n fontSize: $fs.reference,\n lineHeight: \"1\",\n})\n\nconst baseStyle = definePartsStyle((props) => ({\n badge: runIfFn(baseStyleBadge, props),\n excessLabel: runIfFn(baseStyleExcessLabel, props),\n container: runIfFn(baseStyleContainer, props),\n label: baseStyleLabel,\n}))\n\nfunction getSize(size: keyof typeof themeSizes | \"100%\") {\n const themeSize = size !== \"100%\" ? themeSizes[size] : undefined\n return definePartsStyle({\n container: {\n [$size.variable]: themeSize ?? size,\n [$fs.variable]: `calc(${themeSize ?? size} / 2.5)`,\n },\n excessLabel: {\n [$size.variable]: themeSize ?? size,\n [$fs.variable]: `calc(${themeSize ?? size} / 2.5)`,\n },\n })\n}\n\nconst sizes = {\n \"2xs\": getSize(4),\n xs: getSize(6),\n sm: getSize(8),\n md: getSize(12),\n lg: getSize(16),\n xl: getSize(24),\n \"2xl\": getSize(32),\n full: getSize(\"100%\"),\n}\n\nexport const avatarTheme = defineMultiStyleConfig({\n baseStyle,\n sizes,\n defaultProps: {\n size: \"md\",\n },\n})\n","import { accordionTheme } from \"./accordion\"\nimport { alertTheme } from \"./alert\"\nimport { avatarTheme } from \"./avatar\"\nimport { badgeTheme } from \"./badge\"\nimport { breadcrumbTheme } from \"./breadcrumb\"\nimport { buttonTheme } from \"./button\"\nimport { cardTheme } from \"./card\"\nimport { checkboxTheme } from \"./checkbox\"\nimport { closeButtonTheme } from \"./close-button\"\nimport { codeTheme } from \"./code\"\nimport { containerTheme } from \"./container\"\nimport { dividerTheme } from \"./divider\"\nimport { drawerTheme } from \"./drawer\"\nimport { editableTheme } from \"./editable\"\nimport { formTheme } from \"./form-control\"\nimport { formErrorTheme } from \"./form-error\"\nimport { formLabelTheme } from \"./form-label\"\nimport { headingTheme } from \"./heading\"\nimport { inputTheme } from \"./input\"\nimport { kbdTheme } from \"./kbd\"\nimport { linkTheme } from \"./link\"\nimport { listTheme } from \"./list\"\nimport { menuTheme } from \"./menu\"\nimport { modalTheme } from \"./modal\"\nimport { numberInputTheme } from \"./number-input\"\nimport { pinInputTheme } from \"./pin-input\"\nimport { popoverTheme } from \"./popover\"\nimport { progressTheme } from \"./progress\"\nimport { radioTheme } from \"./radio\"\nimport { selectTheme } from \"./select\"\nimport { skeletonTheme } from \"./skeleton\"\nimport { skipLinkTheme } from \"./skip-link\"\nimport { sliderTheme } from \"./slider\"\nimport { spinnerTheme } from \"./spinner\"\nimport { statTheme } from \"./stat\"\nimport { stepperTheme } from \"./stepper\"\nimport { switchTheme } from \"./switch\"\nimport { tableTheme } from \"./table\"\nimport { tabsTheme } from \"./tabs\"\nimport { tagTheme } from \"./tag\"\nimport { textareaTheme } from \"./textarea\"\nimport { tooltipTheme } from \"./tooltip\"\n\nexport { accordionTheme as Accordion } from \"./accordion\"\nexport { alertTheme as Alert } from \"./alert\"\nexport { avatarTheme as Avatar } from \"./avatar\"\nexport { badgeTheme as Badge } from \"./badge\"\nexport { breadcrumbTheme as Breadcrumb } from \"./breadcrumb\"\nexport { buttonTheme as Button } from \"./button\"\nexport { checkboxTheme as Checkbox } from \"./checkbox\"\nexport { closeButtonTheme as CloseButton } from \"./close-button\"\nexport { codeTheme as Code } from \"./code\"\nexport { containerTheme as Container } from \"./container\"\nexport { dividerTheme as Divider } from \"./divider\"\nexport { drawerTheme as Drawer } from \"./drawer\"\nexport { editableTheme as Editable } from \"./editable\"\nexport { formTheme as Form } from \"./form-control\"\nexport { formErrorTheme as FormError } from \"./form-error\"\nexport { formLabelTheme as FormLabel } from \"./form-label\"\nexport { headingTheme as Heading } from \"./heading\"\nexport { inputTheme as Input } from \"./input\"\nexport { kbdTheme as Kbd } from \"./kbd\"\nexport { linkTheme as Link } from \"./link\"\nexport { listTheme as List } from \"./list\"\nexport { menuTheme as Menu } from \"./menu\"\nexport { modalTheme as Modal } from \"./modal\"\nexport { numberInputTheme as NumberInput } from \"./number-input\"\nexport { pinInputTheme as PinInput } from \"./pin-input\"\nexport { popoverTheme as Popover } from \"./popover\"\nexport { progressTheme as Progress } from \"./progress\"\nexport { radioTheme as Radio } from \"./radio\"\nexport { selectTheme as Select } from \"./select\"\nexport { skeletonTheme as Skeleton } from \"./skeleton\"\nexport { skipLinkTheme as SkipLink } from \"./skip-link\"\nexport { sliderTheme as Slider } from \"./slider\"\nexport { spinnerTheme as Spinner } from \"./spinner\"\nexport { statTheme as Stat } from \"./stat\"\nexport { stepperTheme as Stepper } from \"./stepper\"\nexport { switchTheme as Switch } from \"./switch\"\nexport { tableTheme as Table } from \"./table\"\nexport { tabsTheme as Tabs } from \"./tabs\"\nexport { tagTheme as Tag } from \"./tag\"\nexport { textareaTheme as Textarea } from \"./textarea\"\nexport { tooltipTheme as Tooltip } from \"./tooltip\"\n\nexport const components = {\n Accordion: accordionTheme,\n Alert: alertTheme,\n Avatar: avatarTheme,\n Badge: badgeTheme,\n Breadcrumb: breadcrumbTheme,\n Button: buttonTheme,\n Checkbox: checkboxTheme,\n CloseButton: closeButtonTheme,\n Code: codeTheme,\n Container: containerTheme,\n Divider: dividerTheme,\n Drawer: drawerTheme,\n Editable: editableTheme,\n Form: formTheme,\n FormError: formErrorTheme,\n FormLabel: formLabelTheme,\n Heading: headingTheme,\n Input: inputTheme,\n Kbd: kbdTheme,\n Link: linkTheme,\n List: listTheme,\n Menu: menuTheme,\n Modal: modalTheme,\n NumberInput: numberInputTheme,\n PinInput: pinInputTheme,\n Popover: popoverTheme,\n Progress: progressTheme,\n Radio: radioTheme,\n Select: selectTheme,\n Skeleton: skeletonTheme,\n SkipLink: skipLinkTheme,\n Slider: sliderTheme,\n Spinner: spinnerTheme,\n Stat: statTheme,\n Switch: switchTheme,\n Table: tableTheme,\n Tabs: tabsTheme,\n Tag: tagTheme,\n Textarea: textareaTheme,\n Tooltip: tooltipTheme,\n Card: cardTheme,\n Stepper: stepperTheme,\n}\n","export const semanticTokens = {\n colors: {\n \"chakra-body-text\": { _light: \"gray.800\", _dark: \"whiteAlpha.900\" },\n \"chakra-body-bg\": { _light: \"white\", _dark: \"gray.800\" },\n \"chakra-border-color\": { _light: \"gray.200\", _dark: \"whiteAlpha.300\" },\n \"chakra-inverse-text\": { _light: \"white\", _dark: \"gray.800\" },\n \"chakra-subtle-bg\": { _light: \"gray.100\", _dark: \"gray.700\" },\n \"chakra-subtle-text\": { _light: \"gray.600\", _dark: \"gray.400\" },\n \"chakra-placeholder-color\": { _light: \"gray.500\", _dark: \"whiteAlpha.400\" },\n },\n}\n","import { Styles } from \"@chakra-ui/theme-tools\"\n\nexport const styles: Styles = {\n global: {\n body: {\n fontFamily: \"body\",\n color: \"chakra-body-text\",\n bg: \"chakra-body-bg\",\n transitionProperty: \"background-color\",\n transitionDuration: \"normal\",\n lineHeight: \"base\",\n },\n \"*::placeholder\": {\n color: \"chakra-placeholder-color\",\n },\n \"*, *::before, &::after\": {\n borderColor: \"chakra-border-color\",\n },\n },\n}\n","import { components } from \"./components\"\nimport { foundations } from \"./foundations\"\nimport { semanticTokens } from \"./semantic-tokens\"\nimport { styles } from \"./styles\"\nimport type { ThemeConfig, ThemeDirection } from \"./theme.types\"\n\nconst direction: ThemeDirection = \"ltr\"\n\nconst config: ThemeConfig = {\n useSystemColorMode: false,\n initialColorMode: \"light\",\n cssVarPrefix: \"chakra\",\n}\n\nexport const theme = {\n semanticTokens,\n direction,\n ...foundations,\n components,\n styles,\n config,\n}\n\nexport type Theme = typeof theme\n\nexport * from \"./theme.types\"\nexport * from \"./utils/is-chakra-theme\"\n\nexport const baseTheme = {\n semanticTokens,\n direction,\n components: {},\n ...foundations,\n styles,\n config,\n}\n","import type { ToastPosition } from \"./toast.placement\"\nimport type { ToastId, ToastOptions, ToastState } from \"./toast.types\"\n\n/**\n * Given an array of toasts for a specific position.\n * It returns the toast that matches the `id` passed\n */\nexport const findById = (arr: ToastOptions[], id: ToastId) =>\n arr.find((toast) => toast.id === id)\n\n/**\n * Given the toast manager state, finds the toast that matches\n * the id and return its position and index\n */\nexport function findToast(toasts: ToastState, id: ToastId) {\n const position = getToastPosition(toasts, id)\n\n const index = position\n ? toasts[position].findIndex((toast) => toast.id === id)\n : -1\n\n return {\n position,\n index,\n }\n}\n\n/**\n * Given the toast manager state, finds the position of the toast that\n * matches the `id`\n */\nexport function getToastPosition(toasts: ToastState, id: ToastId) {\n for (const [position, values] of Object.entries(toasts)) {\n if (findById(values, id)) {\n return position as ToastPosition\n }\n }\n}\n\n/**\n * Given the toast manager state, checks if a specific toast is\n * still in the state, which means it is still visible on screen.\n */\nexport const isVisible = (toasts: ToastState, id: ToastId) =>\n !!getToastPosition(toasts, id)\n\n/**\n * Gets the styles to be applied to a toast's container\n * based on its position in the manager\n */\nexport function getToastStyle(position: ToastPosition): React.CSSProperties {\n const isRighty = position.includes(\"right\")\n const isLefty = position.includes(\"left\")\n\n let alignItems = \"center\"\n if (isRighty) alignItems = \"flex-end\"\n if (isLefty) alignItems = \"flex-start\"\n\n return {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems,\n }\n}\n\n/**\n * Compute the style of a toast based on its position\n */\nexport function getToastListStyle(\n position: ToastPosition,\n): React.CSSProperties {\n const isTopOrBottom = position === \"top\" || position === \"bottom\"\n const margin = isTopOrBottom ? \"0 auto\" : undefined\n\n const top = position.includes(\"top\")\n ? \"env(safe-area-inset-top, 0px)\"\n : undefined\n const bottom = position.includes(\"bottom\")\n ? \"env(safe-area-inset-bottom, 0px)\"\n : undefined\n const right = !position.includes(\"left\")\n ? \"env(safe-area-inset-right, 0px)\"\n : undefined\n const left = !position.includes(\"right\")\n ? \"env(safe-area-inset-left, 0px)\"\n : undefined\n\n return {\n position: \"fixed\",\n zIndex: \"var(--toast-z-index, 5500)\",\n pointerEvents: \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n margin,\n top,\n bottom,\n right,\n left,\n }\n}\n","import { useEffect } from \"react\"\nimport { useCallbackRef } from \"@chakra-ui/react-use-callback-ref\"\n\n/**\n * React hook that provides a declarative `setTimeout`\n *\n * @param callback the callback to run after specified delay\n * @param delay the delay (in ms)\n */\nexport function useTimeout(\n callback: (...args: any[]) => void,\n delay: number | null,\n) {\n const fn = useCallbackRef(callback)\n\n useEffect(() => {\n if (delay == null) return undefined\n\n let timeoutId: number | null = null\n\n timeoutId = window.setTimeout(() => {\n fn()\n }, delay)\n\n return () => {\n if (timeoutId) {\n window.clearTimeout(timeoutId)\n }\n }\n }, [delay, fn])\n}\n","import { useCallback, useEffect, useRef } from \"react\"\n\nexport function useCallbackRef any>(\n callback: T | undefined,\n deps: React.DependencyList = [],\n) {\n const callbackRef = useRef(callback)\n\n useEffect(() => {\n callbackRef.current = callback\n })\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return useCallback(((...args) => callbackRef.current?.(...args)) as T, deps)\n}\n","import { useEffect, useRef } from \"react\"\n\nexport function useUpdateEffect(\n callback: React.EffectCallback,\n deps: React.DependencyList,\n) {\n const renderCycleRef = useRef(false)\n const effectCycleRef = useRef(false)\n\n useEffect(() => {\n const mounted = renderCycleRef.current\n const run = mounted && effectCycleRef.current\n if (run) {\n return callback()\n }\n effectCycleRef.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps)\n\n useEffect(() => {\n renderCycleRef.current = true\n return () => {\n renderCycleRef.current = false\n }\n }, [])\n}\n","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","import { useContext, useId, useEffect, useCallback } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n const context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n const { isPresent, onExitComplete, register } = context;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n const id = useId();\n useEffect(() => register(id), []);\n const safeToRemove = useCallback(() => onExitComplete && onExitComplete(id), [id, onExitComplete]);\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n return isPresent(useContext(PresenceContext));\n}\nfunction isPresent(context) {\n return context === null ? true : context.isPresent;\n}\n\nexport { isPresent, useIsPresent, usePresence };\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 { createContext } from 'react';\n\nconst MotionContext = createContext({});\n\nexport { MotionContext };\n","const isBrowser = typeof window !== \"undefined\";\n\nexport { isBrowser };\n","import { useLayoutEffect, useEffect } from 'react';\nimport { isBrowser } from './is-browser.mjs';\n\nconst useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nexport { useIsomorphicLayoutEffect };\n","import { createContext } from 'react';\n\nconst LazyContext = createContext({ strict: false });\n\nexport { LazyContext };\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","const MotionGlobalConfig = {\n skipAnimations: false,\n useManualTiming: false,\n};\n\nexport { MotionGlobalConfig };\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.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n const flagRunNextFrame = () => (runNextFrame = true);\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(flagRunNextFrame);\n return acc;\n }, {});\n const { read, resolveKeyframes, update, preRender, render, postRender } = steps;\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 // Unrolled render loop for better per-frame performance\n read.process(state);\n resolveKeyframes.process(state);\n update.process(state);\n preRender.process(state);\n render.process(state);\n postRender.process(state);\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) => {\n for (let i = 0; i < stepsOrder.length; i++) {\n steps[stepsOrder[i]].cancel(process);\n }\n };\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","function 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 Set();\n let nextFrame = new Set();\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 let latestFrameData = {\n delta: 0.0,\n timestamp: 0.0,\n isProcessing: false,\n };\n function triggerCallback(callback) {\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n callback(latestFrameData);\n }\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.has(callback))\n queue.add(callback);\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.delete(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n latestFrameData = 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 thisFrame.forEach(triggerCallback);\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 { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: microtask, cancel: cancelMicrotask } = createRenderBatcher(queueMicrotask, false);\n\nexport { cancelMicrotask, microtask };\n","function isRefObject(ref) {\n return (ref &&\n typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\n","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\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';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { SwitchLayoutGroupContext } from '../../context/SwitchLayoutGroupContext.mjs';\n\nlet scheduleHandoffComplete = false;\nfunction useVisualElement(Component, visualState, props, createVisualElement, ProjectionNodeConstructor) {\n var _a;\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 /**\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 if (visualElement &&\n !visualElement.projection &&\n ProjectionNodeConstructor &&\n (visualElement.type === \"html\" || visualElement.type === \"svg\")) {\n createProjectionNode(visualElementRef.current, props, ProjectionNodeConstructor, initialLayoutGroupConfig);\n }\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 optimisedAppearId = props[optimizedAppearDataAttribute];\n const wantsHandoff = useRef(Boolean(optimisedAppearId) &&\n !window.MotionHandoffIsComplete &&\n ((_a = window.MotionHasOptimisedAnimation) === null || _a === void 0 ? void 0 : _a.call(window, optimisedAppearId)));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\n visualElement.updateFeatures();\n microtask.render(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 if (!wantsHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n wantsHandoff.current = false;\n // This ensures all future calls to animateChanges() will run in useEffect\n if (!scheduleHandoffComplete) {\n scheduleHandoffComplete = true;\n queueMicrotask(completeHandoff);\n }\n });\n return visualElement;\n}\nfunction completeHandoff() {\n window.MotionHandoffIsComplete = true;\n}\nfunction createProjectionNode(visualElement, props, ProjectionNodeConstructor, initialPromotionConfig) {\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = props;\n visualElement.projection = new ProjectionNodeConstructor(visualElement.latestValues, props[\"data-framer-portal-id\"]\n ? undefined\n : getClosestProjectingNode(visualElement.parent));\n visualElement.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) || (dragConstraints && isRefObject(dragConstraints)),\n visualElement,\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,\n layoutScroll,\n layoutRoot,\n });\n}\nfunction getClosestProjectingNode(visualElement) {\n if (!visualElement)\n return undefined;\n return visualElement.options.allowProjection !== false\n ? visualElement.projection\n : getClosestProjectingNode(visualElement.parent);\n}\n\nexport { useVisualElement };\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 if (instance) {\n visualElement.mount(instance);\n }\n else {\n visualElement.unmount();\n }\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","/**\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 isAnimationControls(v) {\n return (v !== null &&\n typeof v === \"object\" &&\n typeof v.start === \"function\");\n}\n\nexport { isAnimationControls };\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","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","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","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 { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\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 { motionComponentSymbol } from './utils/symbol.mjs';\nimport { warning, invariant } from '../utils/errors.mjs';\nimport { featureDefinitions } from './features/definitions.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 useStrictMode(configAndProps, preloadedFeatures);\n const layoutProjection = getProjectionFunctionality(configAndProps);\n MeasureLayout = layoutProjection.MeasureLayout;\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, layoutProjection.ProjectionNode);\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}\nfunction useStrictMode(configAndProps, preloadedFeatures) {\n const isStrict = useContext(LazyContext).strict;\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 configAndProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n}\nfunction getProjectionFunctionality(props) {\n const { drag, layout } = featureDefinitions;\n if (!drag && !layout)\n return {};\n const combined = { ...drag, ...layout };\n return {\n MeasureLayout: (drag === null || drag === void 0 ? void 0 : drag.isEnabled(props)) || (layout === null || layout === void 0 ? void 0 : layout.isEnabled(props))\n ? combined.MeasureLayout\n : undefined,\n ProjectionNode: combined.ProjectionNode,\n };\n}\n\nexport { createMotionComponent };\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 { 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","/**\n * We keep these listed separately 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","const scaleCorrectors = {};\nfunction addScaleCorrector(correctors) {\n Object.assign(scaleCorrectors, correctors);\n}\n\nexport { addScaleCorrector, scaleCorrectors };\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","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","const isMotionValue = (value) => Boolean(value && value.getVelocity);\n\nexport { isMotionValue };\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","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}\nfunction isNullish(v) {\n return v == null;\n}\n\nexport { colorRegex, floatRegex, isNullish, 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 { 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 { transformPropOrder } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.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(latestValues, transform, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n let transformIsDefault = true;\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 const value = latestValues[key];\n if (value === undefined)\n continue;\n let valueIsDefault = true;\n if (typeof value === \"number\") {\n valueIsDefault = value === (key.startsWith(\"scale\") ? 1 : 0);\n }\n else {\n valueIsDefault = parseFloat(value) === 0;\n }\n if (!valueIsDefault || transformTemplate) {\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (!valueIsDefault) {\n transformIsDefault = false;\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${valueAsType}) `;\n }\n if (transformTemplate) {\n transform[key] = valueAsType;\n }\n }\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 (transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\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 { 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, transformTemplate) {\n const { style, vars, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\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 separately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n continue;\n }\n else if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n else {\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueAsType = getValueAsType(value, numberValueTypes[key]);\n if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] =\n valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(latestValues, state.transform, 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 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) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState) {\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));\n return style;\n}\nfunction useHTMLProps(props, visualState) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState);\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 { 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 }, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, 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","import { createHtmlRenderState } from '../../html/utils/create-render-state.mjs';\n\nconst createSvgRenderState = () => ({\n ...createHtmlRenderState(),\n attrs: {},\n});\n\nexport { createSvgRenderState };\n","const isSVGTag = (tag) => typeof tag === \"string\" && tag.toLowerCase() === \"svg\";\n\nexport { isSVGTag };\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, 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","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","/**\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","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 /**\n * If the willChange style has been manually set as a string, set\n * applyWillChange to false to prevent it from automatically being applied.\n */\n if (visualElement && style && typeof style.willChange === \"string\") {\n visualElement.applyWillChange = false;\n }\n return newValues;\n}\n\nexport { scrapeMotionValuesFromProps };\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","function getValueState(visualElement) {\n const state = [{}, {}];\n visualElement === null || visualElement === void 0 ? void 0 : visualElement.values.forEach((value, key) => {\n state[0][key] = value.get();\n state[1][key] = value.getVelocity();\n });\n return state;\n}\nfunction resolveVariantFromProps(props, definition, custom, visualElement) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\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 const [current, velocity] = getValueState(visualElement);\n definition = definition(custom !== undefined ? custom : props.custom, current, velocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\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","const isKeyframesTarget = (v) => {\n return Array.isArray(v);\n};\n\nexport { isKeyframesTarget };\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 { 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","/**\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\nexport { acceleratedValues };\n","import { acceleratedValues } from '../../animation/animators/utils/accelerated-values.mjs';\nimport { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\nimport { transformProps } from '../../render/html/utils/transform.mjs';\n\nfunction getWillChangeName(name) {\n if (transformProps.has(name)) {\n return \"transform\";\n }\n else if (acceleratedValues.has(name)) {\n return camelToDash(name);\n }\n}\n\nexport { getWillChangeName };\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 { 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';\nimport { getWillChangeName } from '../../value/use-will-change/get-will-change-name.mjs';\nimport { addUniqueItem } from '../../utils/array.mjs';\n\nfunction makeState({ applyWillChange = false, scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext, isStatic) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, isStatic ? false : applyWillChange, 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, isStatic);\n return isStatic ? make() : useConstant(make);\n};\nfunction addWillChange(willChange, name) {\n const memberName = getWillChangeName(name);\n if (memberName) {\n addUniqueItem(willChange, memberName);\n }\n}\nfunction forEachDefinition(props, definition, callback) {\n const list = Array.isArray(definition) ? definition : [definition];\n for (let i = 0; i < list.length; i++) {\n const resolved = resolveVariantFromProps(props, list[i]);\n if (resolved) {\n const { transitionEnd, transition, ...target } = resolved;\n callback(target, transitionEnd);\n }\n }\n}\nfunction makeLatestValues(props, context, presenceContext, shouldApplyWillChange, scrapeMotionValues) {\n var _a;\n const values = {};\n const willChange = [];\n const applyWillChange = shouldApplyWillChange && ((_a = props.style) === null || _a === void 0 ? void 0 : _a.willChange) === undefined;\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 forEachDefinition(props, variantToSet, (target, transitionEnd) => {\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 }\n // Add animating values to will-change\n if (applyWillChange) {\n if (animate && initial !== false && !isAnimationControls(animate)) {\n forEachDefinition(props, animate, (target) => {\n for (const key in target) {\n addWillChange(willChange, key);\n }\n });\n }\n if (willChange.length) {\n values.willChange = willChange.join(\",\");\n }\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","const noop = (any) => any;\n\nexport { noop };\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 { 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, 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 applyWillChange: true,\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\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","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","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","/**\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","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","class Feature {\n constructor(node) {\n this.isMounted = false;\n this.node = node;\n }\n update() { }\n}\n\nexport { Feature };\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';\nimport { frame } from '../frameloop/frame.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 frame.postRender(() => callback(event, info));\n }\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';\nimport { frame } from '../frameloop/frame.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 const handler = !globalTapTarget &&\n !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel\n : onTap;\n if (handler) {\n frame.update(() => handler(endEvent, endInfo));\n }\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 frame.postRender(() => onTap(event, info));\n }\n });\n };\n this.removeEndListeners();\n this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n fireSyntheticPointerEvent(\"down\", (event, info) => {\n this.startPress(event, info);\n });\n };\n const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n const handleBlur = () => {\n if (!this.isPressing)\n return;\n fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n };\n const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n };\n }\n startPress(event, info) {\n this.isPressing = true;\n const { onTapStart, whileTap } = this.node.getProps();\n /**\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 frame.postRender(() => onTapStart(event, info));\n }\n }\n checkPressEnd() {\n this.removeEndListeners();\n this.isPressing = false;\n const props = this.node.getProps();\n if (props.whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", false);\n }\n return !isDragActive();\n }\n cancelPress(event, info) {\n if (!this.checkPressEnd())\n return;\n const { onTapCancel } = this.node.getProps();\n if (onTapCancel) {\n frame.postRender(() => onTapCancel(event, info));\n }\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","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","import { resolveVariantFromProps } from './resolve-variants.mjs';\n\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, visualElement);\n}\n\nexport { resolveVariant };\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","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","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","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, isNullish, 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 &&\n !isNullish(v) &&\n 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 { alpha, number } 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 { 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 { analyseComplexValue } from '../../../value/types/complex/index.mjs';\nimport { 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 */\nconst invalidTemplates = new Set([\"auto\", \"none\", \"0\"]);\nfunction makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name) {\n let i = 0;\n let animatableTemplate = undefined;\n while (i < unresolvedKeyframes.length && !animatableTemplate) {\n const keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\" &&\n !invalidTemplates.has(keyframe) &&\n analyseComplexValue(keyframe).values.length) {\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 { 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 let keyframe = unresolvedKeyframes[i];\n if (typeof keyframe === \"string\") {\n keyframe = keyframe.trim();\n if (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 /**\n * Resolve \"none\" values. We do this potentially twice - once before and once after measuring keyframes.\n * This could be seen as inefficient but it's a trade-off to avoid measurements in more situations, which\n * have a far bigger performance impact.\n */\n this.resolveNoneKeyframes();\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;\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","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 { 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 /**\n * These aren't traditionally animatable but we do support them.\n * In future we could look into making this more generic or replacing\n * this function with mix() === mixImmediate\n */\n if (name === \"display\" || name === \"visibility\")\n return true;\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, secondsToMilliseconds } 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 = 0.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 =\n t === 0\n ? secondsToMilliseconds(initialVelocity)\n : calcGeneratorVelocity(resolveSpring, t, current);\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 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","function mixImmediate(a, b) {\n return (p) => (p > 0 ? b : a);\n}\n\nexport { mixImmediate };\n","import { mixNumber } from './number.mjs';\nimport { warning } 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';\nimport { mixImmediate } from './immediate.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 warning(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n if (!Boolean(type))\n return false;\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 if (!fromRGBA || !toRGBA) {\n return mixImmediate(from, to);\n }\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","const invisibleValues = new Set([\"none\", \"hidden\"]);\n/**\n * Returns a function that, when provided a progress value between 0 and 1,\n * will return the \"none\" or \"hidden\" string only when the progress is that of\n * the origin or target.\n */\nfunction mixVisibility(origin, target) {\n if (invisibleValues.has(origin)) {\n return (p) => (p <= 0 ? origin : target);\n }\n else {\n return (p) => (p >= 1 ? target : origin);\n }\n}\n\nexport { invisibleValues, mixVisibility };\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';\nimport { invisibleValues, mixVisibility } from './visibility.mjs';\nimport { mixImmediate } from './immediate.mjs';\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 if ((invisibleValues.has(origin) &&\n !targetStats.values.length) ||\n (invisibleValues.has(target) &&\n !originStats.values.length)) {\n return mixVisibility(origin, target);\n }\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 { acceleratedValues } from './utils/accelerated-values.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 * 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\" || !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 this.resolveFinishedPromise();\n this.updateFinishedPromise();\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 const { onStop } = this.options;\n onStop && onStop();\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","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 { memo } from '../../../utils/memo.mjs';\n\nconst supportsScrollTimeline = memo(() => window.ScrollTimeline !== undefined);\n\nexport { supportsScrollTimeline };\n","import { observeTimeline } from '../render/dom/scroll/observe.mjs';\nimport { supportsScrollTimeline } from '../render/dom/scroll/supports.mjs';\n\nclass GroupPlaybackControls {\n constructor(animations) {\n // Bound to accomodate common `return animation.stop` pattern\n this.stop = () => this.runAll(\"stop\");\n this.animations = animations.filter(Boolean);\n }\n then(onResolve, onReject) {\n return Promise.all(this.animations).then(onResolve).catch(onReject);\n }\n /**\n * TODO: Filter out cancelled or stopped animations before returning\n */\n getAll(propName) {\n return this.animations[0][propName];\n }\n setAll(propName, newValue) {\n for (let i = 0; i < this.animations.length; i++) {\n this.animations[i][propName] = newValue;\n }\n }\n attachTimeline(timeline) {\n const cancelAll = this.animations.map((animation) => {\n if (supportsScrollTimeline() && animation.attachTimeline) {\n animation.attachTimeline(timeline);\n }\n else {\n animation.pause();\n return observeTimeline((progress) => {\n animation.time = animation.duration * progress;\n }, timeline);\n }\n });\n return () => {\n cancelAll.forEach((cancelTimeline, i) => {\n if (cancelTimeline)\n cancelTimeline();\n this.animations[i].stop();\n });\n };\n }\n get time() {\n return this.getAll(\"time\");\n }\n set time(time) {\n this.setAll(\"time\", time);\n }\n get speed() {\n return this.getAll(\"speed\");\n }\n set speed(speed) {\n this.setAll(\"speed\", speed);\n }\n get duration() {\n let max = 0;\n for (let i = 0; i < this.animations.length; i++) {\n max = Math.max(max, this.animations[i].duration);\n }\n return max;\n }\n runAll(methodName) {\n this.animations.forEach((controls) => controls[methodName]());\n }\n play() {\n this.runAll(\"play\");\n }\n pause() {\n this.runAll(\"pause\");\n }\n cancel() {\n this.runAll(\"cancel\");\n }\n complete() {\n this.runAll(\"complete\");\n }\n}\n\nexport { GroupPlaybackControls };\n","import { frame, cancelFrame } from '../../../frameloop/frame.mjs';\n\nfunction observeTimeline(update, timeline) {\n let prevProgress;\n const onFrame = () => {\n const { currentTime } = timeline;\n const percentage = currentTime === null ? 0 : currentTime.value;\n const progress = percentage / 100;\n if (prevProgress !== progress) {\n update(progress);\n }\n prevProgress = progress;\n };\n frame.update(onFrame, true);\n return () => cancelFrame(onFrame);\n}\n\nexport { observeTimeline };\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';\nimport { GroupPlaybackControls } from '../GroupPlaybackControls.mjs';\n\nconst animateMotionValue = (name, value, target, transition = {}, element, isHandoff, \n/**\n * Currently used to remove values from will-change when an animation ends.\n * Preferably this would be handled by event listeners on the MotionValue\n * but these aren't consistent enough yet when considering the different ways\n * an animation can be cancelled.\n */\nonEnd) => (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 onEnd && onEnd();\n },\n onStop: onEnd,\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 // We still want to return some animation controls here rather\n // than returning undefined\n return new GroupPlaybackControls([]);\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","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","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.3.24\";\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 = null;\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.owner = options.owner;\n }\n setCurrent(current) {\n this.current = current;\n this.updatedAt = time.now();\n if (this.canTrackVelocity === null && current !== undefined) {\n this.canTrackVelocity = isFloat(this.current);\n }\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 { optimizedAppearDataAttribute } from './data-id.mjs';\n\nfunction getOptimisedAppearId(visualElement) {\n return visualElement.getProps()[optimizedAppearDataAttribute];\n}\n\nexport { getOptimisedAppearId };\n","import { MotionValue } from '../index.mjs';\nimport { getWillChangeName } from './get-will-change-name.mjs';\nimport { removeItem } from '../../utils/array.mjs';\n\nclass WillChangeMotionValue extends MotionValue {\n constructor() {\n super(...arguments);\n this.output = [];\n this.counts = new Map();\n }\n add(name) {\n const styleName = getWillChangeName(name);\n if (!styleName)\n return;\n /**\n * Update counter. Each value has an indepdent counter\n * as multiple sources could be requesting the same value\n * gets added to will-change.\n */\n const prevCount = this.counts.get(styleName) || 0;\n this.counts.set(styleName, prevCount + 1);\n if (prevCount === 0) {\n this.output.push(styleName);\n this.update();\n }\n /**\n * Prevents the remove function from being called multiple times.\n */\n let hasRemoved = false;\n return () => {\n if (hasRemoved)\n return;\n hasRemoved = true;\n const newCount = this.counts.get(styleName) - 1;\n this.counts.set(styleName, newCount);\n if (newCount === 0) {\n removeItem(this.output, styleName);\n this.update();\n }\n };\n }\n update() {\n this.set(this.output.length ? this.output.join(\", \") : \"auto\");\n }\n}\n\nexport { WillChangeMotionValue };\n","import { WillChangeMotionValue } from './WillChangeMotionValue.mjs';\nimport { isWillChangeMotionValue } from './is.mjs';\n\nfunction addValueToWillChange(visualElement, key) {\n var _a;\n if (!visualElement.applyWillChange)\n return;\n let willChange = visualElement.getValue(\"willChange\");\n /**\n * If we haven't created a willChange MotionValue, and the we haven't been\n * manually provided one, create one.\n */\n if (!willChange && !((_a = visualElement.props.style) === null || _a === void 0 ? void 0 : _a.willChange)) {\n willChange = new WillChangeMotionValue(\"auto\");\n visualElement.addValue(\"willChange\", willChange);\n }\n /**\n * It could be that a user has set willChange to a regular MotionValue,\n * in which case we can't add the value to it.\n */\n if (isWillChangeMotionValue(willChange)) {\n return willChange.add(key);\n }\n}\n\nexport { addValueToWillChange };\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 { transformProps } from '../../render/html/utils/transform.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { getValueTransition } from '../utils/transitions.mjs';\nimport { getOptimisedAppearId } from '../optimized-appear/get-appear-id.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.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 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.MotionHandoffAnimation) {\n const appearId = getOptimisedAppearId(visualElement);\n if (appearId) {\n const elapsed = window.MotionHandoffAnimation(appearId, key, frame);\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, addValueToWillChange(visualElement, key)));\n const animation = value.animation;\n if (animation) {\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 { 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 let 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 reset: () => {\n state = createState();\n isInitialRender = true;\n },\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';\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 visualElement.notify(\"AnimationComplete\", definition);\n });\n}\n\nexport { animateVisualElement };\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 if (isAnimationControls(animate)) {\n this.unmountControls = 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 var _a;\n this.node.animationState.reset();\n (_a = this.unmountControls) === null || _a === void 0 ? void 0 : _a.call(this);\n }\n}\n\nexport { AnimationFeature };\n","const distance = (a, b) => Math.abs(a - b);\nfunction distance2D(a, b) {\n // Multi-dimensional\n const xDelta = distance(a.x, b.x);\n const yDelta = distance(a.y, b.y);\n return Math.sqrt(xDelta ** 2 + yDelta ** 2);\n}\n\nexport { distance, distance2D };\n","import { extractEventInfo } from '../../events/event-info.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { pipe } from '../../utils/pipe.mjs';\nimport { distance2D } from '../../utils/distance.mjs';\nimport { isPrimaryPointer } from '../../events/utils/is-primary-pointer.mjs';\nimport { frame, cancelFrame, frameData } from '../../frameloop/frame.mjs';\n\n/**\n * @internal\n */\nclass PanSession {\n constructor(event, handlers, { transformPagePoint, contextWindow, dragSnapToOrigin = false } = {}) {\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n /**\n * @internal\n */\n this.contextWindow = window;\n this.updatePoint = () => {\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const info = getPanInfo(this.lastMoveEventInfo, this.history);\n const isPanStarted = this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n const isDistancePastThreshold = distance2D(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n const { point } = info;\n const { timestamp } = frameData;\n this.history.push({ ...point, timestamp });\n const { onStart, onMove } = this.handlers;\n if (!isPanStarted) {\n onStart && onStart(this.lastMoveEvent, info);\n this.startEvent = this.lastMoveEvent;\n }\n onMove && onMove(this.lastMoveEvent, info);\n };\n this.handlePointerMove = (event, info) => {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Throttle mouse move event to once per frame\n frame.update(this.updatePoint, true);\n };\n this.handlePointerUp = (event, info) => {\n this.end();\n const { onEnd, onSessionEnd, resumeAnimation } = this.handlers;\n if (this.dragSnapToOrigin)\n resumeAnimation && resumeAnimation();\n if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const panInfo = getPanInfo(event.type === \"pointercancel\"\n ? this.lastMoveEventInfo\n : transformPoint(info, this.transformPagePoint), this.history);\n if (this.startEvent && onEnd) {\n onEnd(event, panInfo);\n }\n onSessionEnd && onSessionEnd(event, panInfo);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (!isPrimaryPointer(event))\n return;\n this.dragSnapToOrigin = dragSnapToOrigin;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n this.contextWindow = contextWindow || window;\n const info = extractEventInfo(event);\n const initialInfo = transformPoint(info, this.transformPagePoint);\n const { point } = initialInfo;\n const { timestamp } = frameData;\n this.history = [{ ...point, timestamp }];\n const { onSessionStart } = handlers;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n this.removeListeners = pipe(addPointerEvent(this.contextWindow, \"pointermove\", this.handlePointerMove), addPointerEvent(this.contextWindow, \"pointerup\", this.handlePointerUp), addPointerEvent(this.contextWindow, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, history) {\n return {\n point,\n delta: subtractPoint(point, lastDevicePoint(history)),\n offset: subtractPoint(point, startDevicePoint(history)),\n velocity: getVelocity(history, 0.1),\n };\n}\nfunction startDevicePoint(history) {\n return history[0];\n}\nfunction lastDevicePoint(history) {\n return history[history.length - 1];\n}\nfunction getVelocity(history, timeDelta) {\n if (history.length < 2) {\n return { x: 0, y: 0 };\n }\n let i = history.length - 1;\n let timestampedPoint = null;\n const lastPoint = lastDevicePoint(history);\n while (i >= 0) {\n timestampedPoint = history[i];\n if (lastPoint.timestamp - timestampedPoint.timestamp >\n secondsToMilliseconds(timeDelta)) {\n break;\n }\n i--;\n }\n if (!timestampedPoint) {\n return { x: 0, y: 0 };\n }\n const time = millisecondsToSeconds(lastPoint.timestamp - timestampedPoint.timestamp);\n if (time === 0) {\n return { x: 0, y: 0 };\n }\n const currentVelocity = {\n x: (lastPoint.x - timestampedPoint.x) / time,\n y: (lastPoint.y - timestampedPoint.y) / time,\n };\n if (currentVelocity.x === Infinity) {\n currentVelocity.x = 0;\n }\n if (currentVelocity.y === Infinity) {\n currentVelocity.y = 0;\n }\n return currentVelocity;\n}\n\nexport { PanSession };\n","import { mixNumber } from '../../utils/mix/number.mjs';\n\nconst SCALE_PRECISION = 0.0001;\nconst SCALE_MIN = 1 - SCALE_PRECISION;\nconst SCALE_MAX = 1 + SCALE_PRECISION;\nconst TRANSLATE_PRECISION = 0.01;\nconst TRANSLATE_MIN = 0 - TRANSLATE_PRECISION;\nconst TRANSLATE_MAX = 0 + TRANSLATE_PRECISION;\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target, maxDistance) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mixNumber(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n delta.translate =\n mixNumber(target.min, target.max, delta.origin) - delta.originPoint;\n if ((delta.scale >= SCALE_MIN && delta.scale <= SCALE_MAX) ||\n isNaN(delta.scale)) {\n delta.scale = 1.0;\n }\n if ((delta.translate >= TRANSLATE_MIN &&\n delta.translate <= TRANSLATE_MAX) ||\n isNaN(delta.translate)) {\n delta.translate = 0.0;\n }\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : undefined);\n calcAxisDelta(delta.y, source.y, target.y, origin ? origin.originY : undefined);\n}\nfunction calcRelativeAxis(target, relative, parent) {\n target.min = parent.min + relative.min;\n target.max = target.min + calcLength(relative);\n}\nfunction calcRelativeBox(target, relative, parent) {\n calcRelativeAxis(target.x, relative.x, parent.x);\n calcRelativeAxis(target.y, relative.y, parent.y);\n}\nfunction calcRelativeAxisPosition(target, layout, parent) {\n target.min = layout.min - parent.min;\n target.max = target.min + calcLength(layout);\n}\nfunction calcRelativePosition(target, layout, parent) {\n calcRelativeAxisPosition(target.x, layout.x, parent.x);\n calcRelativeAxisPosition(target.y, layout.y, parent.y);\n}\n\nexport { calcAxisDelta, calcBoxDelta, calcLength, calcRelativeAxis, calcRelativeAxisPosition, calcRelativeBox, calcRelativePosition, isNear };\n","import { progress } from '../../../utils/progress.mjs';\nimport { calcLength } from '../../../projection/geometry/delta-calc.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { mixNumber } from '../../../utils/mix/number.mjs';\n\n/**\n * Apply constraints to a point. These constraints are both physical along an\n * axis, and an elastic factor that determines how much to constrain the point\n * by if it does lie outside the defined parameters.\n */\nfunction applyConstraints(point, { min, max }, elastic) {\n if (min !== undefined && point < min) {\n // If we have a min point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(min, point, elastic.min)\n : Math.max(point, min);\n }\n else if (max !== undefined && point > max) {\n // If we have a max point defined, and this is outside of that, constrain\n point = elastic\n ? mixNumber(max, point, elastic.max)\n : Math.min(point, max);\n }\n return point;\n}\n/**\n * Calculate constraints in terms of the viewport when defined relatively to the\n * measured axis. This is measured from the nearest edge, so a max constraint of 200\n * on an axis with a max value of 300 would return a constraint of 500 - axis length\n */\nfunction calcRelativeAxisConstraints(axis, min, max) {\n return {\n min: min !== undefined ? axis.min + min : undefined,\n max: max !== undefined\n ? axis.max + max - (axis.max - axis.min)\n : undefined,\n };\n}\n/**\n * Calculate constraints in terms of the viewport when\n * defined relatively to the measured bounding box.\n */\nfunction calcRelativeConstraints(layoutBox, { top, left, bottom, right }) {\n return {\n x: calcRelativeAxisConstraints(layoutBox.x, left, right),\n y: calcRelativeAxisConstraints(layoutBox.y, top, bottom),\n };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative axis\n */\nfunction calcViewportAxisConstraints(layoutAxis, constraintsAxis) {\n let min = constraintsAxis.min - layoutAxis.min;\n let max = constraintsAxis.max - layoutAxis.max;\n // If the constraints axis is actually smaller than the layout axis then we can\n // flip the constraints\n if (constraintsAxis.max - constraintsAxis.min <\n layoutAxis.max - layoutAxis.min) {\n [min, max] = [max, min];\n }\n return { min, max };\n}\n/**\n * Calculate viewport constraints when defined as another viewport-relative box\n */\nfunction calcViewportConstraints(layoutBox, constraintsBox) {\n return {\n x: calcViewportAxisConstraints(layoutBox.x, constraintsBox.x),\n y: calcViewportAxisConstraints(layoutBox.y, constraintsBox.y),\n };\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n let origin = 0.5;\n const sourceLength = calcLength(source);\n const targetLength = calcLength(target);\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clamp(0, 1, origin);\n}\n/**\n * Rebase the calculated viewport constraints relative to the layout.min point.\n */\nfunction rebaseAxisConstraints(layout, constraints) {\n const relativeConstraints = {};\n if (constraints.min !== undefined) {\n relativeConstraints.min = constraints.min - layout.min;\n }\n if (constraints.max !== undefined) {\n relativeConstraints.max = constraints.max - layout.min;\n }\n return relativeConstraints;\n}\nconst defaultElastic = 0.35;\n/**\n * Accepts a dragElastic prop and returns resolved elastic values for each axis.\n */\nfunction resolveDragElastic(dragElastic = defaultElastic) {\n if (dragElastic === false) {\n dragElastic = 0;\n }\n else if (dragElastic === true) {\n dragElastic = defaultElastic;\n }\n return {\n x: resolveAxisElastic(dragElastic, \"left\", \"right\"),\n y: resolveAxisElastic(dragElastic, \"top\", \"bottom\"),\n };\n}\nfunction resolveAxisElastic(dragElastic, minLabel, maxLabel) {\n return {\n min: resolvePointElastic(dragElastic, minLabel),\n max: resolvePointElastic(dragElastic, maxLabel),\n };\n}\nfunction resolvePointElastic(dragElastic, label) {\n return typeof dragElastic === \"number\"\n ? dragElastic\n : dragElastic[label] || 0;\n}\n\nexport { applyConstraints, calcOrigin, calcRelativeAxisConstraints, calcRelativeConstraints, calcViewportAxisConstraints, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, resolveAxisElastic, resolveDragElastic, resolvePointElastic };\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","function eachAxis(callback) {\n return [callback(\"x\"), callback(\"y\")];\n}\n\nexport { eachAxis };\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 isIdentityScale(scale) {\n return scale === undefined || scale === 1;\n}\nfunction hasScale({ scale, scaleX, scaleY }) {\n return (!isIdentityScale(scale) ||\n !isIdentityScale(scaleX) ||\n !isIdentityScale(scaleY));\n}\nfunction hasTransform(values) {\n return (hasScale(values) ||\n has2DTranslate(values) ||\n values.z ||\n values.rotate ||\n values.rotateX ||\n values.rotateY ||\n values.skewX ||\n values.skewY);\n}\nfunction has2DTranslate(values) {\n return is2DTranslate(values.x) || is2DTranslate(values.y);\n}\nfunction is2DTranslate(value) {\n return value && value !== \"0%\";\n}\n\nexport { has2DTranslate, hasScale, hasTransform };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { hasTransform } from '../utils/has-transform.mjs';\n\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n const distanceFromOrigin = point - originPoint;\n const scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate = 0, scale = 1, originPoint, boxScale) {\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, { x, y }) {\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\nconst TREE_SCALE_SNAP_MIN = 0.999999999999;\nconst TREE_SCALE_SNAP_MAX = 1.0000000000001;\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within updateLayoutDelta for future refactoring\n */\nfunction applyTreeDeltas(box, treeScale, treePath, isSharedTransition = false) {\n const treeLength = treePath.length;\n if (!treeLength)\n return;\n // Reset the treeScale\n treeScale.x = treeScale.y = 1;\n let node;\n let delta;\n for (let i = 0; i < treeLength; i++) {\n node = treePath[i];\n delta = node.projectionDelta;\n /**\n * TODO: Prefer to remove this, but currently we have motion components with\n * display: contents in Framer.\n */\n const { visualElement } = node.options;\n if (visualElement &&\n visualElement.props.style &&\n visualElement.props.style.display === \"contents\") {\n continue;\n }\n if (isSharedTransition &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(box, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (delta) {\n // Incoporate each ancestor's scale into a culmulative treeScale for this component\n treeScale.x *= delta.x.scale;\n treeScale.y *= delta.y.scale;\n // Apply each ancestor's calculated delta into this component's recorded layout box\n applyBoxDelta(box, delta);\n }\n if (isSharedTransition && hasTransform(node.latestValues)) {\n transformBox(box, node.latestValues);\n }\n }\n /**\n * Snap tree scale back to 1 if it's within a non-perceivable threshold.\n * This will help reduce useless scales getting rendered.\n */\n if (treeScale.x < TREE_SCALE_SNAP_MAX &&\n treeScale.x > TREE_SCALE_SNAP_MIN) {\n treeScale.x = 1.0;\n }\n if (treeScale.y < TREE_SCALE_SNAP_MAX &&\n treeScale.y > TREE_SCALE_SNAP_MIN) {\n treeScale.y = 1.0;\n }\n}\nfunction translateAxis(axis, distance) {\n axis.min = axis.min + distance;\n axis.max = axis.max + distance;\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction transformAxis(axis, axisTranslate, axisScale, boxScale, axisOrigin = 0.5) {\n const originPoint = mixNumber(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, axisTranslate, axisScale, originPoint, boxScale);\n}\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform.x, transform.scaleX, transform.scale, transform.originX);\n transformAxis(box.y, transform.y, transform.scaleY, transform.scale, transform.originY);\n}\n\nexport { applyAxisDelta, applyBoxDelta, applyPointDelta, applyTreeDeltas, scalePoint, transformAxis, transformBox, translateAxis };\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","// Fixes https://github.com/framer/motion/issues/2270\nconst getContextWindow = ({ current }) => {\n return current ? current.ownerDocument.defaultView : null;\n};\n\nexport { getContextWindow };\n","import { invariant } from '../../utils/errors.mjs';\nimport { PanSession } from '../pan/PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { createBox } from '../../projection/geometry/models.mjs';\nimport { eachAxis } from '../../projection/utils/each-axis.mjs';\nimport { measurePageBox } from '../../projection/utils/measure.mjs';\nimport { extractEventInfo } from '../../events/event-info.mjs';\nimport { convertBoxToBoundingBox, convertBoundingBoxToBox } from '../../projection/geometry/conversion.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\nimport { calcLength } from '../../projection/geometry/delta-calc.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { addValueToWillChange } from '../../value/use-will-change/add-will-change.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst elementDragControls = new WeakMap();\n/**\n *\n */\n// let latestPointerEvent: PointerEvent\nclass VisualElementDragControls {\n constructor(visualElement) {\n // This is a reference to the global drag gesture lock, ensuring only one component\n // can \"capture\" the drag of one or both axes.\n // TODO: Look into moving this into pansession?\n this.openGlobalLock = null;\n this.isDragging = false;\n this.currentDirection = null;\n this.originPoint = { x: 0, y: 0 };\n /**\n * The permitted boundaries of travel, in pixels.\n */\n this.constraints = false;\n this.hasMutatedConstraints = false;\n /**\n * The per-axis resolved elastic values.\n */\n this.elastic = createBox();\n this.visualElement = visualElement;\n }\n start(originEvent, { snapToCursor = false } = {}) {\n /**\n * Don't start dragging if this component is exiting\n */\n const { presenceContext } = this.visualElement;\n if (presenceContext && presenceContext.isPresent === false)\n return;\n const onSessionStart = (event) => {\n const { dragSnapToOrigin } = this.getProps();\n // Stop or pause any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n dragSnapToOrigin ? this.pauseAnimation() : this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\n var _a;\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n let current = this.getAxisMotionValue(axis).get() || 0;\n /**\n * If the MotionValue is a percentage value convert to px\n */\n if (percent.test(current)) {\n const { projection } = this.visualElement;\n if (projection && projection.layout) {\n const measuredAxis = projection.layout.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n if (onDragStart) {\n frame.postRender(() => onDragStart(event, info));\n }\n (_a = this.removeWillChange) === null || _a === void 0 ? void 0 : _a.call(this);\n this.removeWillChange = addValueToWillChange(this.visualElement, \"transform\");\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // latestPointerEvent = event\n const { dragPropagation, dragDirectionLock, onDirectionLock, onDrag, } = this.getProps();\n // If we didn't successfully receive the gesture lock, early return.\n if (!dragPropagation && !this.openGlobalLock)\n return;\n const { offset } = info;\n // Attempt to detect drag direction if directionLock is true\n if (dragDirectionLock && this.currentDirection === null) {\n this.currentDirection = getCurrentDirection(offset);\n // If we've successfully set a direction, notify listener\n if (this.currentDirection !== null) {\n onDirectionLock && onDirectionLock(this.currentDirection);\n }\n return;\n }\n // Update each point with the latest position\n this.updateAxis(\"x\", info.point, offset);\n this.updateAxis(\"y\", info.point, offset);\n /**\n * Ideally we would leave the renderer to fire naturally at the end of\n * this frame but if the element is about to change layout as the result\n * of a re-render we want to ensure the browser can read the latest\n * bounding box to ensure the pointer and element don't fall out of sync.\n */\n this.visualElement.render();\n /**\n * This must fire after the render call as it might trigger a state\n * change which itself might trigger a layout update.\n */\n onDrag && onDrag(event, info);\n };\n const onSessionEnd = (event, info) => this.stop(event, info);\n const resumeAnimation = () => eachAxis((axis) => {\n var _a;\n return this.getAnimationState(axis) === \"paused\" &&\n ((_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.play());\n });\n const { dragSnapToOrigin } = this.getProps();\n this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n resumeAnimation,\n }, {\n transformPagePoint: this.visualElement.getTransformPagePoint(),\n dragSnapToOrigin,\n contextWindow: getContextWindow(this.visualElement),\n });\n }\n stop(event, info) {\n var _a;\n (_a = this.removeWillChange) === null || _a === void 0 ? void 0 : _a.call(this);\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.postRender(() => onDragEnd(event, info));\n }\n }\n cancel() {\n this.isDragging = false;\n const { projection, animationState } = this.visualElement;\n if (projection) {\n projection.isAnimationBlocked = false;\n }\n this.panSession && this.panSession.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n animationState && animationState.setActive(\"whileDrag\", false);\n }\n updateAxis(axis, _point, offset) {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!offset || !shouldDrag(axis, drag, this.currentDirection))\n return;\n const axisValue = this.getAxisMotionValue(axis);\n let next = this.originPoint[axis] + offset[axis];\n // Apply constraints\n if (this.constraints && this.constraints[axis]) {\n next = applyConstraints(next, this.constraints[axis], this.elastic[axis]);\n }\n axisValue.set(next);\n }\n resolveConstraints() {\n var _a;\n const { dragConstraints, dragElastic } = this.getProps();\n const layout = this.visualElement.projection &&\n !this.visualElement.projection.layout\n ? this.visualElement.projection.measure(false)\n : (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout;\n const prevConstraints = this.constraints;\n if (dragConstraints && isRefObject(dragConstraints)) {\n if (!this.constraints) {\n this.constraints = this.resolveRefConstraints();\n }\n }\n else {\n if (dragConstraints && layout) {\n this.constraints = calcRelativeConstraints(layout.layoutBox, dragConstraints);\n }\n else {\n this.constraints = false;\n }\n }\n this.elastic = resolveDragElastic(dragElastic);\n /**\n * If we're outputting to external MotionValues, we want to rebase the measured constraints\n * from viewport-relative to component-relative.\n */\n if (prevConstraints !== this.constraints &&\n layout &&\n this.constraints &&\n !this.hasMutatedConstraints) {\n eachAxis((axis) => {\n if (this.constraints !== false &&\n this.getAxisMotionValue(axis)) {\n this.constraints[axis] = rebaseAxisConstraints(layout.layoutBox[axis], this.constraints[axis]);\n }\n });\n }\n }\n resolveRefConstraints() {\n const { dragConstraints: constraints, onMeasureDragConstraints } = this.getProps();\n if (!constraints || !isRefObject(constraints))\n return false;\n const constraintsElement = constraints.current;\n invariant(constraintsElement !== null, \"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.\");\n const { projection } = this.visualElement;\n // TODO\n if (!projection || !projection.layout)\n return false;\n const constraintsBox = measurePageBox(constraintsElement, projection.root, this.visualElement.getTransformPagePoint());\n let measuredConstraints = calcViewportConstraints(projection.layout.layoutBox, constraintsBox);\n /**\n * If there's an onMeasureDragConstraints listener we call it and\n * if different constraints are returned, set constraints to that\n */\n if (onMeasureDragConstraints) {\n const userConstraints = onMeasureDragConstraints(convertBoxToBoundingBox(measuredConstraints));\n this.hasMutatedConstraints = !!userConstraints;\n if (userConstraints) {\n measuredConstraints = convertBoundingBoxToBox(userConstraints);\n }\n }\n return measuredConstraints;\n }\n startAnimation(velocity) {\n const { drag, dragMomentum, dragElastic, dragTransition, dragSnapToOrigin, onDragTransitionEnd, } = this.getProps();\n const constraints = this.constraints || {};\n const momentumAnimations = eachAxis((axis) => {\n if (!shouldDrag(axis, drag, this.currentDirection)) {\n return;\n }\n let transition = (constraints && constraints[axis]) || {};\n if (dragSnapToOrigin)\n transition = { min: 0, max: 0 };\n /**\n * Overdamp the boundary spring if `dragElastic` is disabled. There's still a frame\n * of spring animations so we should look into adding a disable spring option to `inertia`.\n * We could do something here where we affect the `bounceStiffness` and `bounceDamping`\n * using the value of `dragElastic`.\n */\n const bounceStiffness = dragElastic ? 200 : 1000000;\n const bounceDamping = dragElastic ? 40 : 10000000;\n const inertia = {\n type: \"inertia\",\n velocity: dragMomentum ? velocity[axis] : 0,\n bounceStiffness,\n bounceDamping,\n timeConstant: 750,\n restDelta: 1,\n restSpeed: 10,\n ...dragTransition,\n ...transition,\n };\n // If we're not animating on an externally-provided `MotionValue` we can use the\n // component's animation controls which will handle interactions with whileHover (etc),\n // otherwise we just have to animate the `MotionValue` itself.\n return this.startAxisValueAnimation(axis, inertia);\n });\n // Run all animations and then resolve the new drag constraints.\n return Promise.all(momentumAnimations).then(onDragTransitionEnd);\n }\n startAxisValueAnimation(axis, transition) {\n const axisValue = this.getAxisMotionValue(axis);\n return axisValue.start(animateMotionValue(axis, axisValue, 0, transition, this.visualElement, false, addValueToWillChange(this.visualElement, axis)));\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n }\n pauseAnimation() {\n eachAxis((axis) => { var _a; return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.pause(); });\n }\n getAnimationState(axis) {\n var _a;\n return (_a = this.getAxisMotionValue(axis).animation) === null || _a === void 0 ? void 0 : _a.state;\n }\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n getAxisMotionValue(axis) {\n const dragKey = `_drag${axis.toUpperCase()}`;\n const props = this.visualElement.getProps();\n const externalMotionValue = props[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (props.initial\n ? props.initial[axis]\n : undefined) || 0);\n }\n snapToCursor(point) {\n eachAxis((axis) => {\n const { drag } = this.getProps();\n // If we're not dragging this axis, do an early return.\n if (!shouldDrag(axis, drag, this.currentDirection))\n return;\n const { projection } = this.visualElement;\n const axisValue = this.getAxisMotionValue(axis);\n if (projection && projection.layout) {\n const { min, max } = projection.layout.layoutBox[axis];\n axisValue.set(point[axis] - mixNumber(min, max, 0.5));\n }\n });\n }\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n scalePositionWithinConstraints() {\n if (!this.visualElement.current)\n return;\n const { drag, dragConstraints } = this.getProps();\n const { projection } = this.visualElement;\n if (!isRefObject(dragConstraints) || !projection || !this.constraints)\n return;\n /**\n * Stop current animations as there can be visual glitching if we try to do\n * this mid-animation\n */\n this.stopAnimation();\n /**\n * Record the relative position of the dragged element relative to the\n * constraints box and save as a progress value.\n */\n const boxProgress = { x: 0, y: 0 };\n eachAxis((axis) => {\n const axisValue = this.getAxisMotionValue(axis);\n if (axisValue && this.constraints !== false) {\n const latest = axisValue.get();\n boxProgress[axis] = calcOrigin({ min: latest, max: latest }, this.constraints[axis]);\n }\n });\n /**\n * Update the layout of this element and resolve the latest drag constraints\n */\n const { transformTemplate } = this.visualElement.getProps();\n this.visualElement.current.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n this.resolveConstraints();\n /**\n * For each axis, calculate the current progress of the layout axis\n * within the new constraints.\n */\n eachAxis((axis) => {\n if (!shouldDrag(axis, drag, null))\n return;\n /**\n * Calculate a new transform based on the previous box progress\n */\n const axisValue = this.getAxisMotionValue(axis);\n const { min, max } = this.constraints[axis];\n axisValue.set(mixNumber(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n if (!this.visualElement.current)\n return;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.current;\n /**\n * Attach a pointerdown event listener on this DOM element to initiate drag tracking.\n */\n const stopPointerListener = addPointerEvent(element, \"pointerdown\", (event) => {\n const { drag, dragListener = true } = this.getProps();\n drag && dragListener && this.start(event);\n });\n const measureDragConstraints = () => {\n const { dragConstraints } = this.getProps();\n if (isRefObject(dragConstraints) && dragConstraints.current) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n frame.read(measureDragConstraints);\n /**\n * Attach a window resize listener to scale the draggable target within its defined\n * constraints as the window resizes.\n */\n const stopResizeListener = addDomEvent(window, \"resize\", () => this.scalePositionWithinConstraints());\n /**\n * If the element's layout changes, calculate the delta and apply that to\n * the drag gesture's origin point.\n */\n const stopLayoutUpdateListener = projection.addEventListener(\"didUpdate\", (({ delta, hasLayoutChanged }) => {\n if (this.isDragging && hasLayoutChanged) {\n eachAxis((axis) => {\n const motionValue = this.getAxisMotionValue(axis);\n if (!motionValue)\n return;\n this.originPoint[axis] += delta[axis].translate;\n motionValue.set(motionValue.get() + delta[axis].translate);\n });\n this.visualElement.render();\n }\n }));\n return () => {\n stopResizeListener();\n stopPointerListener();\n stopMeasureLayoutListener();\n stopLayoutUpdateListener && stopLayoutUpdateListener();\n };\n }\n getProps() {\n const props = this.visualElement.getProps();\n const { drag = false, dragDirectionLock = false, dragPropagation = false, dragConstraints = false, dragElastic = defaultElastic, dragMomentum = true, } = props;\n return {\n ...props,\n drag,\n dragDirectionLock,\n dragPropagation,\n dragConstraints,\n dragElastic,\n dragMomentum,\n };\n }\n}\nfunction shouldDrag(direction, drag, currentDirection) {\n return ((drag === true || drag === direction) &&\n (currentDirection === null || currentDirection === direction));\n}\n/**\n * Based on an x/y offset determine the current drag direction. If both axis' offsets are lower\n * than the provided threshold, return `null`.\n *\n * @param offset - The x/y offset from origin.\n * @param lockThreshold - (Optional) - the minimum absolute offset before we can determine a drag direction.\n */\nfunction getCurrentDirection(offset, lockThreshold = 10) {\n let direction = null;\n if (Math.abs(offset.y) > lockThreshold) {\n direction = \"y\";\n }\n else if (Math.abs(offset.x) > lockThreshold) {\n direction = \"x\";\n }\n return direction;\n}\n\nexport { VisualElementDragControls, elementDragControls };\n","import { PanSession } from './PanSession.mjs';\nimport { addPointerEvent } from '../../events/add-pointer-event.mjs';\nimport { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { getContextWindow } from '../../utils/get-context-window.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.postRender(() => handler(event, info));\n }\n};\nclass PanGesture extends Feature {\n constructor() {\n super(...arguments);\n this.removePointerDownListener = noop;\n }\n onPointerDown(pointerDownEvent) {\n this.session = new PanSession(pointerDownEvent, this.createPanHandlers(), {\n transformPagePoint: this.node.getTransformPagePoint(),\n contextWindow: getContextWindow(this.node),\n });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.postRender(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\nexport { PanGesture };\n","/**\n * This should only ever be modified on the client otherwise it'll\n * persist through server requests. If we need instanced states we\n * could lazy-init via root.\n */\nconst globalProjectionState = {\n /**\n * Global flag as to whether the tree has animated since the last time\n * we resized the window\n */\n hasAnimatedSinceResize: true,\n /**\n * We set this to true once, on the first update. Any nodes added to the tree beyond that\n * update will be given a `data-projection-id` attribute.\n */\n hasEverUpdated: false,\n};\n\nexport { globalProjectionState };\n","import { px } from '../../value/types/numbers/units.mjs';\n\nfunction pixelsToPercent(pixels, axis) {\n if (axis.max === axis.min)\n return 0;\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nconst correctBorderRadius = {\n correct: (latest, node) => {\n if (!node.target)\n return latest;\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n const x = pixelsToPercent(latest, node.target.x);\n const y = pixelsToPercent(latest, node.target.y);\n return `${x}% ${y}%`;\n },\n};\n\nexport { correctBorderRadius, pixelsToPercent };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n const shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n const template = complex.createTransformer(latest);\n const offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n const xScale = projectionDelta.x.scale * treeScale.x;\n const yScale = projectionDelta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n const averageScale = mixNumber(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n return template(shadow);\n },\n};\n\nexport { correctBoxShadow };\n","import { jsx } from 'react/jsx-runtime';\nimport { useContext, Component } from 'react';\nimport { usePresence } from '../../../components/AnimatePresence/use-presence.mjs';\nimport { LayoutGroupContext } from '../../../context/LayoutGroupContext.mjs';\nimport { SwitchLayoutGroupContext } from '../../../context/SwitchLayoutGroupContext.mjs';\nimport { globalProjectionState } from '../../../projection/node/state.mjs';\nimport { correctBorderRadius } from '../../../projection/styles/scale-border-radius.mjs';\nimport { correctBoxShadow } from '../../../projection/styles/scale-box-shadow.mjs';\nimport { addScaleCorrector } from '../../../projection/styles/scale-correction.mjs';\nimport { microtask } from '../../../frameloop/microtask.mjs';\nimport { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, isPresent } = this.props;\n const projection = visualElement.projection;\n if (!projection)\n return null;\n /**\n * TODO: We use this data in relegate to determine whether to\n * promote a previous element. There's no guarantee its presence data\n * will have updated by this point - if a bug like this arises it will\n * have to be that we markForRelegation and then find a new lead some other way,\n * perhaps in didUpdate\n */\n projection.isPresent = isPresent;\n if (drag ||\n prevProps.layoutDependency !== layoutDependency ||\n layoutDependency === undefined) {\n projection.willUpdate();\n }\n else {\n this.safeToRemove();\n }\n if (prevProps.isPresent !== isPresent) {\n if (isPresent) {\n projection.promote();\n }\n else if (!projection.relegate()) {\n /**\n * If there's another stack member taking over from this one,\n * it's in charge of the exit animation and therefore should\n * be in charge of the safe to remove. Otherwise we call it here.\n */\n frame.postRender(() => {\n const stack = projection.getStack();\n if (!stack || !stack.members.length) {\n this.safeToRemove();\n }\n });\n }\n }\n return null;\n }\n componentDidUpdate() {\n const { projection } = this.props.visualElement;\n if (projection) {\n projection.root.didUpdate();\n microtask.postRender(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (jsx(MeasureLayoutWithContext, { ...props, layoutGroup: layoutGroup, switchLayoutGroup: useContext(SwitchLayoutGroupContext), isPresent: isPresent, safeToRemove: safeToRemove }));\n}\nconst defaultScaleCorrectors = {\n borderRadius: {\n ...correctBorderRadius,\n applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ],\n },\n borderTopLeftRadius: correctBorderRadius,\n borderTopRightRadius: correctBorderRadius,\n borderBottomLeftRadius: correctBorderRadius,\n borderBottomRightRadius: correctBorderRadius,\n boxShadow: correctBoxShadow,\n};\n\nexport { MeasureLayout };\n","import { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { percent, px } from '../../value/types/numbers/units.mjs';\n\nconst borders = [\"TopLeft\", \"TopRight\", \"BottomLeft\", \"BottomRight\"];\nconst numBorders = borders.length;\nconst asNumber = (value) => typeof value === \"string\" ? parseFloat(value) : value;\nconst isPx = (value) => typeof value === \"number\" || px.test(value);\nfunction mixValues(target, follow, lead, progress, shouldCrossfadeOpacity, isOnlyMember) {\n if (shouldCrossfadeOpacity) {\n target.opacity = mixNumber(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mixNumber(follow.opacity !== undefined ? follow.opacity : 1, lead.opacity !== undefined ? lead.opacity : 1, progress);\n }\n /**\n * Mix border radius\n */\n for (let i = 0; i < numBorders; i++) {\n const borderLabel = `border${borders[i]}Radius`;\n let followRadius = getRadius(follow, borderLabel);\n let leadRadius = getRadius(lead, borderLabel);\n if (followRadius === undefined && leadRadius === undefined)\n continue;\n followRadius || (followRadius = 0);\n leadRadius || (leadRadius = 0);\n const canMix = followRadius === 0 ||\n leadRadius === 0 ||\n isPx(followRadius) === isPx(leadRadius);\n if (canMix) {\n target[borderLabel] = Math.max(mixNumber(asNumber(followRadius), asNumber(leadRadius), progress), 0);\n if (percent.test(leadRadius) || percent.test(followRadius)) {\n target[borderLabel] += \"%\";\n }\n }\n else {\n target[borderLabel] = leadRadius;\n }\n }\n /**\n * Mix rotation\n */\n if (follow.rotate || lead.rotate) {\n target.rotate = mixNumber(follow.rotate || 0, lead.rotate || 0, progress);\n }\n}\nfunction getRadius(values, radiusName) {\n return values[radiusName] !== undefined\n ? values[radiusName]\n : values.borderRadius;\n}\n// /**\n// * We only want to mix the background color if there's a follow element\n// * that we're not crossfading opacity between. For instance with switch\n// * AnimateSharedLayout animations, this helps the illusion of a continuous\n// * element being animated but also cuts down on the number of paints triggered\n// * for elements where opacity is doing that work for us.\n// */\n// if (\n// !hasFollowElement &&\n// latestLeadValues.backgroundColor &&\n// latestFollowValues.backgroundColor\n// ) {\n// /**\n// * This isn't ideal performance-wise as mixColor is creating a new function every frame.\n// * We could probably create a mixer that runs at the start of the animation but\n// * the idea behind the crossfader is that it runs dynamically between two potentially\n// * changing targets (ie opacity or borderRadius may be animating independently via variants)\n// */\n// leadState.backgroundColor = followState.backgroundColor = mixColor(\n// latestFollowValues.backgroundColor as string,\n// latestLeadValues.backgroundColor as string\n// )(p)\n// }\nconst easeCrossfadeIn = compress(0, 0.5, circOut);\nconst easeCrossfadeOut = compress(0.5, 0.95, noop);\nfunction compress(min, max, easing) {\n return (p) => {\n // Could replace ifs with clamp\n if (p < min)\n return 0;\n if (p > max)\n return 1;\n return easing(progress(min, max, p));\n };\n}\n\nexport { mixValues };\n","/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisInto(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyBoxInto(box, originBox) {\n copyAxisInto(box.x, originBox.x);\n copyAxisInto(box.y, originBox.y);\n}\n/**\n * Reset a delta to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction copyAxisDeltaInto(delta, originDelta) {\n delta.translate = originDelta.translate;\n delta.scale = originDelta.scale;\n delta.originPoint = originDelta.originPoint;\n delta.origin = originDelta.origin;\n}\n\nexport { copyAxisDeltaInto, copyAxisInto, copyBoxInto };\n","import { mixNumber } from '../../utils/mix/number.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { scalePoint } from './delta-apply.mjs';\n\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate = 0, scale = 1, origin = 0.5, boxScale, originAxis = axis, sourceAxis = axis) {\n if (percent.test(translate)) {\n translate = parseFloat(translate);\n const relativeProgress = mixNumber(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mixNumber(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, [key, scaleKey, originKey], origin, sourceAxis) {\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale, origin, sourceAxis);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nconst xKeys = [\"x\", \"scaleX\", \"originX\"];\nconst yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms, originBox, sourceBox) {\n removeAxisTransforms(box.x, transforms, xKeys, originBox ? originBox.x : undefined, sourceBox ? sourceBox.x : undefined);\n removeAxisTransforms(box.y, transforms, yKeys, originBox ? originBox.y : undefined, sourceBox ? sourceBox.y : undefined);\n}\n\nexport { removeAxisDelta, removeAxisTransforms, removeBoxTransforms, removePointDelta };\n","import { calcLength } from './delta-calc.mjs';\n\nfunction isAxisDeltaZero(delta) {\n return delta.translate === 0 && delta.scale === 1;\n}\nfunction isDeltaZero(delta) {\n return isAxisDeltaZero(delta.x) && isAxisDeltaZero(delta.y);\n}\nfunction axisEquals(a, b) {\n return a.min === b.min && a.max === b.max;\n}\nfunction boxEquals(a, b) {\n return axisEquals(a.x, b.x) && axisEquals(a.y, b.y);\n}\nfunction axisEqualsRounded(a, b) {\n return (Math.round(a.min) === Math.round(b.min) &&\n Math.round(a.max) === Math.round(b.max));\n}\nfunction boxEqualsRounded(a, b) {\n return axisEqualsRounded(a.x, b.x) && axisEqualsRounded(a.y, b.y);\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\nfunction axisDeltaEquals(a, b) {\n return (a.translate === b.translate &&\n a.scale === b.scale &&\n a.originPoint === b.originPoint);\n}\n\nexport { aspectRatio, axisDeltaEquals, axisEquals, axisEqualsRounded, boxEquals, boxEqualsRounded, isDeltaZero };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\n\nclass NodeStack {\n constructor() {\n this.members = [];\n }\n add(node) {\n addUniqueItem(this.members, node);\n node.scheduleRender();\n }\n remove(node) {\n removeItem(this.members, node);\n if (node === this.prevLead) {\n this.prevLead = undefined;\n }\n if (node === this.lead) {\n const prevLead = this.members[this.members.length - 1];\n if (prevLead) {\n this.promote(prevLead);\n }\n }\n }\n relegate(node) {\n const indexOfNode = this.members.findIndex((member) => node === member);\n if (indexOfNode === 0)\n return false;\n /**\n * Find the next projection node that is present\n */\n let prevLead;\n for (let i = indexOfNode; i >= 0; i--) {\n const member = this.members[i];\n if (member.isPresent !== false) {\n prevLead = member;\n break;\n }\n }\n if (prevLead) {\n this.promote(prevLead);\n return true;\n }\n else {\n return false;\n }\n }\n promote(node, preserveFollowOpacity) {\n const prevLead = this.lead;\n if (node === prevLead)\n return;\n this.prevLead = prevLead;\n this.lead = node;\n node.show();\n if (prevLead) {\n prevLead.instance && prevLead.scheduleRender();\n node.scheduleRender();\n node.resumeFrom = prevLead;\n if (preserveFollowOpacity) {\n node.resumeFrom.preserveOpacity = true;\n }\n if (prevLead.snapshot) {\n node.snapshot = prevLead.snapshot;\n node.snapshot.latestValues =\n prevLead.animationValues || prevLead.latestValues;\n }\n if (node.root && node.root.isUpdating) {\n node.isLayoutDirty = true;\n }\n const { crossfade } = node.options;\n if (crossfade === false) {\n prevLead.hide();\n }\n /**\n * TODO:\n * - Test border radius when previous node was deleted\n * - boxShadow mixing\n * - Shared between element A in scrolled container and element B (scroll stays the same or changes)\n * - Shared between element A in transformed container and element B (transform stays the same or changes)\n * - Shared between element A in scrolled page and element B (scroll stays the same or changes)\n * ---\n * - Crossfade opacity of root nodes\n * - layoutId changes after animation\n * - layoutId changes mid animation\n */\n }\n }\n exitAnimationComplete() {\n this.members.forEach((node) => {\n const { options, resumingFrom } = node;\n options.onExitComplete && options.onExitComplete();\n if (resumingFrom) {\n resumingFrom.options.onExitComplete &&\n resumingFrom.options.onExitComplete();\n }\n });\n }\n scheduleRender() {\n this.members.forEach((node) => {\n node.instance && node.scheduleRender(false);\n });\n }\n /**\n * Clear any leads that have been removed this render to prevent them from being\n * used in future animations and to prevent memory leaks\n */\n removeLeadSnapshot() {\n if (this.lead && this.lead.snapshot) {\n this.lead.snapshot = undefined;\n }\n }\n}\n\nexport { NodeStack };\n","const compareByDepth = (a, b) => a.depth - b.depth;\n\nexport { compareByDepth };\n","import { addUniqueItem, removeItem } from '../../utils/array.mjs';\nimport { compareByDepth } from './compare-by-depth.mjs';\n\nclass FlatTree {\n constructor() {\n this.children = [];\n this.isDirty = false;\n }\n add(child) {\n addUniqueItem(this.children, child);\n this.isDirty = true;\n }\n remove(child) {\n removeItem(this.children, child);\n this.isDirty = true;\n }\n forEach(callback) {\n this.isDirty && this.children.sort(compareByDepth);\n this.isDirty = false;\n this.children.forEach(callback);\n }\n}\n\nexport { FlatTree };\n","import { SubscriptionManager } from '../../utils/subscription-manager.mjs';\nimport { mixValues } from '../animation/mix-values.mjs';\nimport { copyBoxInto, copyAxisDeltaInto } from '../geometry/copy.mjs';\nimport { translateAxis, transformBox, applyBoxDelta, applyTreeDeltas } from '../geometry/delta-apply.mjs';\nimport { calcRelativePosition, calcRelativeBox, calcBoxDelta, calcLength, isNear } from '../geometry/delta-calc.mjs';\nimport { removeBoxTransforms } from '../geometry/delta-remove.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEqualsRounded, isDeltaZero, axisDeltaEquals, aspectRatio, boxEquals } from '../geometry/utils.mjs';\nimport { NodeStack } from '../shared/stack.mjs';\nimport { scaleCorrectors } from '../styles/scale-correction.mjs';\nimport { buildProjectionTransform } from '../styles/transform.mjs';\nimport { eachAxis } from '../utils/each-axis.mjs';\nimport { hasTransform, hasScale, has2DTranslate } from '../utils/has-transform.mjs';\nimport { FlatTree } from '../../render/utils/flat-tree.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { globalProjectionState } from './state.mjs';\nimport { delay } from '../../utils/delay.mjs';\nimport { mixNumber } from '../../utils/mix/number.mjs';\nimport { isSVGElement } from '../../render/dom/utils/is-svg-element.mjs';\nimport { animateSingleValue } from '../../animation/interfaces/single-value.mjs';\nimport { clamp } from '../../utils/clamp.mjs';\nimport { cancelFrame, frameData, steps, frame } from '../../frameloop/frame.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { time } from '../../frameloop/sync-time.mjs';\nimport { microtask } from '../../frameloop/microtask.mjs';\nimport { getOptimisedAppearId } from '../../animation/optimized-appear/get-appear-id.mjs';\nimport { createBox, createDelta } from '../geometry/models.mjs';\n\nconst metrics = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nconst isDebug = typeof window !== \"undefined\" && window.MotionDebug !== undefined;\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\nconst hiddenVisibility = { visibility: \"hidden\" };\n/**\n * We use 1000 as the animation target as 0-1000 maps better to pixels than 0-1\n * which has a noticeable difference in spring animations\n */\nconst animationTarget = 1000;\nlet id = 0;\nfunction resetDistortingTransform(key, visualElement, values, sharedAnimationValues) {\n const { latestValues } = visualElement;\n // Record the distorting transform and then temporarily set it to 0\n if (latestValues[key]) {\n values[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n if (sharedAnimationValues) {\n sharedAnimationValues[key] = 0;\n }\n }\n}\nfunction isOptimisedTransformAnimationInTree(projectionNode) {\n projectionNode.hasCheckedOptimisedAppear = true;\n if (projectionNode.root === projectionNode)\n return false;\n const { visualElement } = projectionNode.options;\n if (!visualElement) {\n return false;\n }\n else if (window.MotionHasOptimisedTransformAnimation(getOptimisedAppearId(visualElement))) {\n return true;\n }\n else if (projectionNode.parent &&\n !projectionNode.parent.hasCheckedOptimisedAppear) {\n return isOptimisedTransformAnimationInTree(projectionNode.parent);\n }\n else {\n return false;\n }\n}\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\n * A unique ID generated for every projection node.\n */\n this.id = id++;\n /**\n * An id that represents a unique session instigated by startUpdate.\n */\n this.animationId = 0;\n /**\n * A Set containing all this component's children. This is used to iterate\n * through the children.\n *\n * TODO: This could be faster to iterate as a flat array stored on the root node.\n */\n this.children = new Set();\n /**\n * Options for the node. We use this to configure what kind of layout animations\n * we should perform (if any).\n */\n this.options = {};\n /**\n * We use this to detect when its safe to shut down part of a projection tree.\n * We have to keep projecting children for scale correction and relative projection\n * until all their parents stop performing layout animations.\n */\n this.isTreeAnimating = false;\n this.isAnimationBlocked = false;\n /**\n * Flag to true if we think this layout has been changed. We can't always know this,\n * currently we set it to true every time a component renders, or if it has a layoutDependency\n * if that has changed between renders. Additionally, components can be grouped by LayoutGroup\n * and if one node is dirtied, they all are.\n */\n this.isLayoutDirty = false;\n /**\n * Flag to true if we think the projection calculations for this node needs\n * recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = false;\n /**\n * Flag to true if the layout *or* transform has changed. This then gets propagated\n * throughout the projection tree, forcing any element below to recalculate on the next frame.\n */\n this.isSharedProjectionDirty = false;\n /**\n * Flag transform dirty. This gets propagated throughout the whole tree but is only\n * respected by shared nodes.\n */\n this.isTransformDirty = false;\n /**\n * Block layout updates for instant layout transitions throughout the tree.\n */\n this.updateManuallyBlocked = false;\n this.updateBlockedByResize = false;\n /**\n * Set to true between the start of the first `willUpdate` call and the end of the `didUpdate`\n * call.\n */\n this.isUpdating = false;\n /**\n * If this is an SVG element we currently disable projection transforms\n */\n this.isSVG = false;\n /**\n * Flag to true (during promotion) if a node doing an instant layout transition needs to reset\n * its projection styles.\n */\n this.needsReset = false;\n /**\n * Flags whether this node should have its transform reset prior to measuring.\n */\n this.shouldResetTransform = false;\n /**\n * Store whether this node has been checked for optimised appear animations. As\n * effects fire bottom-up, and we want to look up the tree for appear animations,\n * this makes sure we only check each path once, stopping at nodes that\n * have already been checked.\n */\n this.hasCheckedOptimisedAppear = false;\n /**\n * An object representing the calculated contextual/accumulated/tree scale.\n * This will be used to scale calculcated projection transforms, as these are\n * calculated in screen-space but need to be scaled for elements to layoutly\n * make it to their calculated destinations.\n *\n * TODO: Lazy-init\n */\n this.treeScale = { x: 1, y: 1 };\n /**\n *\n */\n this.eventHandlers = new Map();\n this.hasTreeAnimated = false;\n // Note: Currently only running on root node\n this.updateScheduled = false;\n this.scheduleUpdate = () => this.update();\n this.projectionUpdateScheduled = false;\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.projectionUpdateScheduled = false;\n /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n if (isDebug) {\n metrics.totalNodes =\n metrics.resolvedTargetDeltas =\n metrics.recalculatedProjection =\n 0;\n }\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n if (isDebug) {\n window.MotionDebug.record(metrics);\n }\n };\n /**\n * Frame calculations\n */\n this.resolvedRelativeTargetAt = 0.0;\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\n * Shared layout\n */\n // TODO Only running on root node\n this.sharedNodes = new Map();\n this.latestValues = latestValues;\n this.root = parent ? parent.root || parent : this;\n this.path = parent ? [...parent.path, parent] : [];\n this.parent = parent;\n this.depth = parent ? parent.depth + 1 : 0;\n for (let i = 0; i < this.path.length; i++) {\n this.path[i].shouldResetTransform = true;\n }\n if (this.root === this)\n this.nodes = new FlatTree();\n }\n addEventListener(name, handler) {\n if (!this.eventHandlers.has(name)) {\n this.eventHandlers.set(name, new SubscriptionManager());\n }\n return this.eventHandlers.get(name).add(handler);\n }\n notifyListeners(name, ...args) {\n const subscriptionManager = this.eventHandlers.get(name);\n subscriptionManager && subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = this.root.hasTreeAnimated) {\n if (this.instance)\n return;\n this.isSVG = isSVGElement(instance);\n this.instance = instance;\n const { layoutId, layout, visualElement } = this.options;\n if (visualElement && !visualElement.current) {\n visualElement.mount(instance);\n }\n this.root.nodes.add(this);\n this.parent && this.parent.children.add(this);\n if (isLayoutDirty && (layout || layoutId)) {\n this.isLayoutDirty = true;\n }\n if (attachResizeListener) {\n let cancelDelay;\n const resizeUnblockUpdate = () => (this.root.updateBlockedByResize = false);\n attachResizeListener(instance, () => {\n this.root.updateBlockedByResize = true;\n cancelDelay && cancelDelay();\n cancelDelay = delay(resizeUnblockUpdate, 250);\n if (globalProjectionState.hasAnimatedSinceResize) {\n globalProjectionState.hasAnimatedSinceResize = false;\n this.nodes.forEach(finishAnimation);\n }\n });\n }\n if (layoutId) {\n this.root.registerSharedNode(layoutId, this);\n }\n // Only register the handler if it requires layout animation\n if (this.options.animate !== false &&\n visualElement &&\n (layoutId || layout)) {\n this.addEventListener(\"didUpdate\", ({ delta, hasLayoutChanged, hasRelativeTargetChanged, layout: newLayout, }) => {\n if (this.isTreeAnimationBlocked()) {\n this.target = undefined;\n this.relativeTarget = undefined;\n return;\n }\n // TODO: Check here if an animation exists\n const layoutTransition = this.options.transition ||\n visualElement.getDefaultTransition() ||\n defaultLayoutTransition;\n const { onLayoutAnimationStart, onLayoutAnimationComplete, } = visualElement.getProps();\n /**\n * The target layout of the element might stay the same,\n * but its position relative to its parent has changed.\n */\n const targetChanged = !this.targetLayout ||\n !boxEqualsRounded(this.targetLayout, newLayout) ||\n hasRelativeTargetChanged;\n /**\n * If the layout hasn't seemed to have changed, it might be that the\n * element is visually in the same place in the document but its position\n * relative to its parent has indeed changed. So here we check for that.\n */\n const hasOnlyRelativeTargetChanged = !hasLayoutChanged && hasRelativeTargetChanged;\n if (this.options.layoutRoot ||\n (this.resumeFrom && this.resumeFrom.instance) ||\n hasOnlyRelativeTargetChanged ||\n (hasLayoutChanged &&\n (targetChanged || !this.currentAnimation))) {\n if (this.resumeFrom) {\n this.resumingFrom = this.resumeFrom;\n this.resumingFrom.resumingFrom = undefined;\n }\n this.setAnimationOrigin(delta, hasOnlyRelativeTargetChanged);\n const animationOptions = {\n ...getValueTransition(layoutTransition, \"layout\"),\n onPlay: onLayoutAnimationStart,\n onComplete: onLayoutAnimationComplete,\n };\n if (visualElement.shouldReduceMotion ||\n this.options.layoutRoot) {\n animationOptions.delay = 0;\n animationOptions.type = false;\n }\n this.startAnimation(animationOptions);\n }\n else {\n /**\n * If the layout hasn't changed and we have an animation that hasn't started yet,\n * finish it immediately. Otherwise it will be animating from a location\n * that was probably never commited to screen and look like a jumpy box.\n */\n if (!hasLayoutChanged) {\n finishAnimation(this);\n }\n if (this.isLead() && this.options.onExitComplete) {\n this.options.onExitComplete();\n }\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n const stack = this.getStack();\n stack && stack.remove(this);\n this.parent && this.parent.children.delete(this);\n this.instance = undefined;\n cancelFrame(this.updateProjection);\n }\n // only on the root\n blockUpdate() {\n this.updateManuallyBlocked = true;\n }\n unblockUpdate() {\n this.updateManuallyBlocked = false;\n }\n isUpdateBlocked() {\n return this.updateManuallyBlocked || this.updateBlockedByResize;\n }\n isTreeAnimationBlocked() {\n return (this.isAnimationBlocked ||\n (this.parent && this.parent.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n this.nodes && this.nodes.forEach(resetSkewAndRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n /**\n * If we're running optimised appear animations then these must be\n * cancelled before measuring the DOM. This is so we can measure\n * the true layout of the element rather than the WAAPI animation\n * which will be unaffected by the resetSkewAndRotate step.\n *\n * Note: This is a DOM write. Worst case scenario is this is sandwiched\n * between other snapshot reads which will cause unnecessary style recalculations.\n * This has to happen here though, as we don't yet know which nodes will need\n * snapshots in startUpdate(), but we only want to cancel optimised animations\n * if a layout animation measurement is actually going to be affected by them.\n */\n if (window.MotionHandoffCancelAll &&\n isOptimisedTransformAnimationInTree(this)) {\n window.MotionHandoffCancelAll();\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = this.options;\n if (layoutId === undefined && !layout)\n return;\n const transformTemplate = this.getTransformTemplate();\n this.prevTransformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n update() {\n this.updateScheduled = false;\n const updateWasBlocked = this.isUpdateBlocked();\n // When doing an instant transition, we skip the layout update,\n // but should still clean up the measurements so that the next\n // snapshot could be taken correctly.\n if (updateWasBlocked) {\n this.unblockUpdate();\n this.clearAllSnapshots();\n this.nodes.forEach(clearMeasurements);\n return;\n }\n if (!this.isUpdating) {\n this.nodes.forEach(clearIsLayoutDirty);\n }\n this.isUpdating = false;\n /**\n * Write\n */\n this.nodes.forEach(resetTransformStyle);\n /**\n * Read ==================\n */\n // Update layout measurements of updated children\n this.nodes.forEach(updateLayout);\n /**\n * Write\n */\n // Notify listeners that the layout is updated\n this.nodes.forEach(notifyLayoutUpdate);\n this.clearAllSnapshots();\n /**\n * Manually flush any pending updates. Ideally\n * we could leave this to the following requestAnimationFrame but this seems\n * to leave a flash of incorrectly styled content.\n */\n const now = time.now();\n frameData.delta = clamp(0, 1000 / 60, now - frameData.timestamp);\n frameData.timestamp = now;\n frameData.isProcessing = true;\n steps.update.process(frameData);\n steps.preRender.process(frameData);\n steps.render.process(frameData);\n frameData.isProcessing = false;\n }\n didUpdate() {\n if (!this.updateScheduled) {\n this.updateScheduled = true;\n microtask.read(this.scheduleUpdate);\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n if (!this.projectionUpdateScheduled) {\n this.projectionUpdateScheduled = true;\n frame.preRender(this.updateProjection, false, true);\n }\n }\n scheduleCheckAfterUnmount() {\n /**\n * If the unmounting node is in a layoutGroup and did trigger a willUpdate,\n * we manually call didUpdate to give a chance to the siblings to animate.\n * Otherwise, cleanup all snapshots to prevents future nodes from reusing them.\n */\n frame.postRender(() => {\n if (this.isLayoutDirty) {\n this.root.didUpdate();\n }\n else {\n this.root.checkUpdateFailed();\n }\n });\n }\n /**\n * Update measurements\n */\n updateSnapshot() {\n if (this.snapshot || !this.instance)\n return;\n this.snapshot = this.measure();\n }\n updateLayout() {\n if (!this.instance)\n return;\n // TODO: Incorporate into a forwarded scroll offset\n this.updateScroll();\n if (!(this.options.alwaysMeasureLayout && this.isLead()) &&\n !this.isLayoutDirty) {\n return;\n }\n /**\n * When a node is mounted, it simply resumes from the prevLead's\n * snapshot instead of taking a new one, but the ancestors scroll\n * might have updated while the prevLead is unmounted. We need to\n * update the scroll again to make sure the layout we measure is\n * up to date.\n */\n if (this.resumeFrom && !this.resumeFrom.instance) {\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.updateScroll();\n }\n }\n const prevLayout = this.layout;\n this.layout = this.measure(false);\n this.layoutCorrected = createBox();\n this.isLayoutDirty = false;\n this.projectionDelta = undefined;\n this.notifyListeners(\"measure\", this.layout.layoutBox);\n const { visualElement } = this.options;\n visualElement &&\n visualElement.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout ? prevLayout.layoutBox : undefined);\n }\n updateScroll(phase = \"measure\") {\n let needsMeasurement = Boolean(this.options.layoutScroll && this.instance);\n if (this.scroll &&\n this.scroll.animationId === this.root.animationId &&\n this.scroll.phase === phase) {\n needsMeasurement = false;\n }\n if (needsMeasurement) {\n const isRoot = checkIsScrollRoot(this.instance);\n this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot,\n offset: measureScroll(this.instance),\n wasRoot: this.scroll ? this.scroll.isRoot : isRoot,\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty ||\n this.shouldResetTransform ||\n this.options.alwaysMeasureLayout;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : undefined;\n const transformTemplateHasChanged = transformTemplateValue !== this.prevTransformTemplateValue;\n if (isResetRequested &&\n (hasProjection ||\n hasTransform(this.latestValues) ||\n transformTemplateHasChanged)) {\n resetTransform(this.instance, transformTemplateValue);\n this.shouldResetTransform = false;\n this.scheduleRender();\n }\n }\n measure(removeTransform = true) {\n const pageBox = this.measurePageBox();\n let layoutBox = this.removeElementScroll(pageBox);\n /**\n * Measurements taken during the pre-render stage\n * still have transforms applied so we remove them\n * via calculation.\n */\n if (removeTransform) {\n layoutBox = this.removeTransform(layoutBox);\n }\n roundBox(layoutBox);\n return {\n animationId: this.root.animationId,\n measuredBox: pageBox,\n layoutBox,\n latestValues: {},\n source: this.id,\n };\n }\n measurePageBox() {\n var _a;\n const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\n const wasInScrollRoot = ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) || this.path.some(checkNodeWasScrollRoot);\n if (!wasInScrollRoot) {\n // Remove viewport scroll to give page-relative coordinates\n const { scroll } = this.root;\n if (scroll) {\n translateAxis(box.x, scroll.offset.x);\n translateAxis(box.y, scroll.offset.y);\n }\n }\n return box;\n }\n removeElementScroll(box) {\n var _a;\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\n if ((_a = this.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot) {\n return boxWithoutScroll;\n }\n /**\n * Performance TODO: Keep a cumulative scroll offset down the tree\n * rather than loop back up the path.\n */\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n const { scroll, options } = node;\n if (node !== this.root && scroll && options.layoutScroll) {\n /**\n * If this is a new scroll root, we want to remove all previous scrolls\n * from the viewport box.\n */\n if (scroll.wasRoot) {\n copyBoxInto(boxWithoutScroll, box);\n }\n translateAxis(boxWithoutScroll.x, scroll.offset.x);\n translateAxis(boxWithoutScroll.y, scroll.offset.y);\n }\n }\n return boxWithoutScroll;\n }\n applyTransform(box, transformOnly = false) {\n const withTransforms = createBox();\n copyBoxInto(withTransforms, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!transformOnly &&\n node.options.layoutScroll &&\n node.scroll &&\n node !== node.root) {\n transformBox(withTransforms, {\n x: -node.scroll.offset.x,\n y: -node.scroll.offset.y,\n });\n }\n if (!hasTransform(node.latestValues))\n continue;\n transformBox(withTransforms, node.latestValues);\n }\n if (hasTransform(this.latestValues)) {\n transformBox(withTransforms, this.latestValues);\n }\n return withTransforms;\n }\n removeTransform(box) {\n const boxWithoutTransform = createBox();\n copyBoxInto(boxWithoutTransform, box);\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n if (!node.instance)\n continue;\n if (!hasTransform(node.latestValues))\n continue;\n hasScale(node.latestValues) && node.updateSnapshot();\n const sourceBox = createBox();\n const nodeBox = node.measurePageBox();\n copyBoxInto(sourceBox, nodeBox);\n removeBoxTransforms(boxWithoutTransform, node.latestValues, node.snapshot ? node.snapshot.layoutBox : undefined, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.root.scheduleUpdateProjection();\n this.isProjectionDirty = true;\n }\n setOptions(options) {\n this.options = {\n ...this.options,\n ...options,\n crossfade: options.crossfade !== undefined ? options.crossfade : true,\n };\n }\n clearMeasurements() {\n this.scroll = undefined;\n this.layout = undefined;\n this.snapshot = undefined;\n this.prevTransformTemplateValue = undefined;\n this.targetDelta = undefined;\n this.target = undefined;\n this.isLayoutDirty = false;\n }\n forceRelativeParentToResolveTarget() {\n if (!this.relativeParent)\n return;\n /**\n * If the parent target isn't up-to-date, force it to update.\n * This is an unfortunate de-optimisation as it means any updating relative\n * projection will cause all the relative parents to recalculate back\n * up the tree.\n */\n if (this.relativeParent.resolvedRelativeTargetAt !==\n frameData.timestamp) {\n this.relativeParent.resolveTargetDelta(true);\n }\n }\n resolveTargetDelta(forceRecalculation = false) {\n var _a;\n /**\n * Once the dirty status of nodes has been spread through the tree, we also\n * need to check if we have a shared node of a different depth that has itself\n * been dirtied.\n */\n const lead = this.getLead();\n this.isProjectionDirty || (this.isProjectionDirty = lead.isProjectionDirty);\n this.isTransformDirty || (this.isTransformDirty = lead.isTransformDirty);\n this.isSharedProjectionDirty || (this.isSharedProjectionDirty = lead.isSharedProjectionDirty);\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n /**\n * We don't use transform for this step of processing so we don't\n * need to check whether any nodes have changed transform.\n */\n const canSkip = !(forceRecalculation ||\n (isShared && this.isSharedProjectionDirty) ||\n this.isProjectionDirty ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty) ||\n this.attemptToResolveRelativeTarget ||\n this.root.updateBlockedByResize);\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If we have no layout, we can't perform projection, so early return\n */\n if (!this.layout || !(layout || layoutId))\n return;\n this.resolvedRelativeTargetAt = frameData.timestamp;\n /**\n * If we don't have a targetDelta but do have a layout, we can attempt to resolve\n * a relativeParent. This will allow a component to perform scale correction\n * even if no animation has started.\n */\n if (!this.targetDelta && !this.relativeTarget) {\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n relativeParent.layout &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.layout.layoutBox, relativeParent.layout.layoutBox);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * If we have no relative target or no target delta our target isn't valid\n * for this frame.\n */\n if (!this.relativeTarget && !this.targetDelta)\n return;\n /**\n * Lazy-init target data structure\n */\n if (!this.target) {\n this.target = createBox();\n this.targetWithTransforms = createBox();\n }\n /**\n * If we've got a relative box for this component, resolve it into a target relative to the parent.\n */\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.relativeParent &&\n this.relativeParent.target) {\n this.forceRelativeParentToResolveTarget();\n calcRelativeBox(this.target, this.relativeTarget, this.relativeParent.target);\n /**\n * If we've only got a targetDelta, resolve it into a target\n */\n }\n else if (this.targetDelta) {\n if (Boolean(this.resumingFrom)) {\n // TODO: This is creating a new object every frame\n this.target = this.applyTransform(this.layout.layoutBox);\n }\n else {\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n applyBoxDelta(this.target, this.targetDelta);\n }\n else {\n /**\n * If no target, use own layout as target\n */\n copyBoxInto(this.target, this.layout.layoutBox);\n }\n /**\n * If we've been told to attempt to resolve a relative target, do so.\n */\n if (this.attemptToResolveRelativeTarget) {\n this.attemptToResolveRelativeTarget = false;\n const relativeParent = this.getClosestProjectingParent();\n if (relativeParent &&\n Boolean(relativeParent.resumingFrom) ===\n Boolean(this.resumingFrom) &&\n !relativeParent.options.layoutScroll &&\n relativeParent.target &&\n this.animationProgress !== 1) {\n this.relativeParent = relativeParent;\n this.forceRelativeParentToResolveTarget();\n this.relativeTarget = createBox();\n this.relativeTargetOrigin = createBox();\n calcRelativePosition(this.relativeTargetOrigin, this.target, relativeParent.target);\n copyBoxInto(this.relativeTarget, this.relativeTargetOrigin);\n }\n else {\n this.relativeParent = this.relativeTarget = undefined;\n }\n }\n /**\n * Increase debug counter for resolved target deltas\n */\n if (isDebug) {\n metrics.resolvedTargetDeltas++;\n }\n }\n getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if (this.parent.isProjecting()) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n isProjecting() {\n return Boolean((this.relativeTarget ||\n this.targetDelta ||\n this.options.layoutRoot) &&\n this.layout);\n }\n calcProjection() {\n var _a;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n /**\n * If this is a normal layout animation and neither this node nor its nearest projecting\n * is dirty then we can't skip.\n */\n if (this.isProjectionDirty || ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isProjectionDirty)) {\n canSkip = false;\n }\n /**\n * If this is a shared layout animation and this node's shared projection is dirty then\n * we can't skip.\n */\n if (isShared &&\n (this.isSharedProjectionDirty || this.isTransformDirty)) {\n canSkip = false;\n }\n /**\n * If we have resolved the target this frame we must recalculate the\n * projection to ensure it visually represents the internal calculations.\n */\n if (this.resolvedRelativeTargetAt === frameData.timestamp) {\n canSkip = false;\n }\n if (canSkip)\n return;\n const { layout, layoutId } = this.options;\n /**\n * If this section of the tree isn't animating we can\n * delete our target sources for the following frame.\n */\n this.isTreeAnimating = Boolean((this.parent && this.parent.isTreeAnimating) ||\n this.currentAnimation ||\n this.pendingAnimation);\n if (!this.isTreeAnimating) {\n this.targetDelta = this.relativeTarget = undefined;\n }\n if (!this.layout || !(layout || layoutId))\n return;\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n copyBoxInto(this.layoutCorrected, this.layout.layoutBox);\n /**\n * Record previous tree scales before updating.\n */\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.layoutCorrected, this.treeScale, this.path, isShared);\n /**\n * If this layer needs to perform scale correction but doesn't have a target,\n * use the layout as the target.\n */\n if (lead.layout &&\n !lead.target &&\n (this.treeScale.x !== 1 || this.treeScale.y !== 1)) {\n lead.target = lead.layout.layoutBox;\n lead.targetWithTransforms = createBox();\n }\n const { target } = lead;\n if (!target) {\n /**\n * If we don't have a target to project into, but we were previously\n * projecting, we want to remove the stored transform and schedule\n * a render to ensure the elements reflect the removed transform.\n */\n if (this.prevProjectionDelta) {\n this.createProjectionDeltas();\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta || !this.prevProjectionDelta) {\n this.createProjectionDeltas();\n }\n else {\n copyAxisDeltaInto(this.prevProjectionDelta.x, this.projectionDelta.x);\n copyAxisDeltaInto(this.prevProjectionDelta.y, this.projectionDelta.y);\n }\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n calcBoxDelta(this.projectionDelta, this.layoutCorrected, target, this.latestValues);\n if (this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY ||\n !axisDeltaEquals(this.projectionDelta.x, this.prevProjectionDelta.x) ||\n !axisDeltaEquals(this.projectionDelta.y, this.prevProjectionDelta.y)) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n if (isDebug) {\n metrics.recalculatedProjection++;\n }\n }\n hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n var _a;\n (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.scheduleRender();\n if (notifyAll) {\n const stack = this.getStack();\n stack && stack.scheduleRender();\n }\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n createProjectionDeltas() {\n this.prevProjectionDelta = createDelta();\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n const snapshot = this.snapshot;\n const snapshotLatestValues = snapshot\n ? snapshot.latestValues\n : {};\n const mixedValues = { ...this.latestValues };\n const targetDelta = createDelta();\n if (!this.relativeParent ||\n !this.relativeParent.options.layoutRoot) {\n this.relativeTarget = this.relativeTargetOrigin = undefined;\n }\n this.attemptToResolveRelativeTarget = !hasOnlyRelativeTargetChanged;\n const relativeLayout = createBox();\n const snapshotSource = snapshot ? snapshot.source : undefined;\n const layoutSource = this.layout ? this.layout.source : undefined;\n const isSharedLayoutAnimation = snapshotSource !== layoutSource;\n const stack = this.getStack();\n const isOnlyMember = !stack || stack.members.length <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n let prevRelativeTarget;\n this.mixTargetDelta = (latest) => {\n const progress = latest / 1000;\n mixAxisDelta(targetDelta.x, delta.x, progress);\n mixAxisDelta(targetDelta.y, delta.y, progress);\n this.setTargetDelta(targetDelta);\n if (this.relativeTarget &&\n this.relativeTargetOrigin &&\n this.layout &&\n this.relativeParent &&\n this.relativeParent.layout) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\n /**\n * If this is an unchanged relative target we can consider the\n * projection not dirty.\n */\n if (prevRelativeTarget &&\n boxEquals(this.relativeTarget, prevRelativeTarget)) {\n this.isProjectionDirty = false;\n }\n if (!prevRelativeTarget)\n prevRelativeTarget = createBox();\n copyBoxInto(prevRelativeTarget, this.relativeTarget);\n }\n if (isSharedLayoutAnimation) {\n this.animationValues = mixedValues;\n mixValues(mixedValues, snapshotLatestValues, this.latestValues, progress, shouldCrossfadeOpacity, isOnlyMember);\n }\n this.root.scheduleUpdateProjection();\n this.scheduleRender();\n this.animationProgress = progress;\n };\n this.mixTargetDelta(this.options.layoutRoot ? 1000 : 0);\n }\n startAnimation(options) {\n this.notifyListeners(\"animationStart\");\n this.currentAnimation && this.currentAnimation.stop();\n if (this.resumingFrom && this.resumingFrom.currentAnimation) {\n this.resumingFrom.currentAnimation.stop();\n }\n if (this.pendingAnimation) {\n cancelFrame(this.pendingAnimation);\n this.pendingAnimation = undefined;\n }\n /**\n * Start the animation in the next frame to have a frame with progress 0,\n * where the target is the same as when the animation started, so we can\n * calculate the relative positions correctly for instant transitions.\n */\n this.pendingAnimation = frame.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animateSingleValue(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n this.mixTargetDelta(latest);\n options.onUpdate && options.onUpdate(latest);\n },\n onComplete: () => {\n options.onComplete && options.onComplete();\n this.completeAnimation();\n },\n });\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = this.currentAnimation;\n }\n this.pendingAnimation = undefined;\n });\n }\n completeAnimation() {\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n const stack = this.getStack();\n stack && stack.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n if (this.currentAnimation) {\n this.mixTargetDelta && this.mixTargetDelta(animationTarget);\n this.currentAnimation.stop();\n }\n this.completeAnimation();\n }\n applyTransformsToTarget() {\n const lead = this.getLead();\n let { targetWithTransforms, target, layout, latestValues } = lead;\n if (!targetWithTransforms || !target || !layout)\n return;\n /**\n * If we're only animating position, and this element isn't the lead element,\n * then instead of projecting into the lead box we instead want to calculate\n * a new target that aligns the two boxes but maintains the layout shape.\n */\n if (this !== lead &&\n this.layout &&\n layout &&\n shouldAnimatePositionOnly(this.options.animationType, this.layout.layoutBox, layout.layoutBox)) {\n target = this.target || createBox();\n const xLength = calcLength(this.layout.layoutBox.x);\n target.x.min = lead.target.x.min;\n target.x.max = target.x.min + xLength;\n const yLength = calcLength(this.layout.layoutBox.y);\n target.y.min = lead.target.y.min;\n target.y.max = target.y.min + yLength;\n }\n copyBoxInto(targetWithTransforms, target);\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n transformBox(targetWithTransforms, latestValues);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its layout layout\n * into the desired bounding box.\n */\n calcBoxDelta(this.projectionDeltaWithTransform, this.layoutCorrected, targetWithTransforms, latestValues);\n }\n registerSharedNode(layoutId, node) {\n if (!this.sharedNodes.has(layoutId)) {\n this.sharedNodes.set(layoutId, new NodeStack());\n }\n const stack = this.sharedNodes.get(layoutId);\n stack.add(node);\n const config = node.options.initialPromotionConfig;\n node.promote({\n transition: config ? config.transition : undefined,\n preserveFollowOpacity: config && config.shouldPreserveFollowOpacity\n ? config.shouldPreserveFollowOpacity(node)\n : undefined,\n });\n }\n isLead() {\n const stack = this.getStack();\n return stack ? stack.lead === this : true;\n }\n getLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? ((_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.lead) || this : this;\n }\n getPrevLead() {\n var _a;\n const { layoutId } = this.options;\n return layoutId ? (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.prevLead : undefined;\n }\n getStack() {\n const { layoutId } = this.options;\n if (layoutId)\n return this.root.sharedNodes.get(layoutId);\n }\n promote({ needsReset, transition, preserveFollowOpacity, } = {}) {\n const stack = this.getStack();\n if (stack)\n stack.promote(this, preserveFollowOpacity);\n if (needsReset) {\n this.projectionDelta = undefined;\n this.needsReset = true;\n }\n if (transition)\n this.setOptions({ transition });\n }\n relegate() {\n const stack = this.getStack();\n if (stack) {\n return stack.relegate(this);\n }\n else {\n return false;\n }\n }\n resetSkewAndRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected skew or rotation values, we can early return without a forced render.\n let hasDistortingTransform = false;\n /**\n * An unrolled check for rotation values. Most elements don't have any rotation and\n * skipping the nested loop and new object creation is 50% faster.\n */\n const { latestValues } = visualElement;\n if (latestValues.z ||\n latestValues.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ ||\n latestValues.skewX ||\n latestValues.skewY) {\n hasDistortingTransform = true;\n }\n // If there's no distorting values, we don't need to do any more.\n if (!hasDistortingTransform)\n return;\n const resetValues = {};\n if (latestValues.z) {\n resetDistortingTransform(\"z\", visualElement, resetValues, this.animationValues);\n }\n // Check the skew and rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n resetDistortingTransform(`rotate${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n resetDistortingTransform(`skew${transformAxes[i]}`, visualElement, resetValues, this.animationValues);\n }\n // Force a render of this element to apply the transform with all skews and rotations\n // set to 0.\n visualElement.render();\n // Put back all the values we reset\n for (const key in resetValues) {\n visualElement.setStaticValue(key, resetValues[key]);\n if (this.animationValues) {\n this.animationValues[key] = resetValues[key];\n }\n }\n // Schedule a render for the next frame. This ensures we won't visually\n // see the element with the reset rotate value applied.\n visualElement.scheduleRender();\n }\n getProjectionStyles(styleProp) {\n var _a, _b;\n if (!this.instance || this.isSVG)\n return undefined;\n if (!this.isVisible) {\n return hiddenVisibility;\n }\n const styles = {\n visibility: \"\",\n };\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n styles.transform = transformTemplate\n ? transformTemplate(this.latestValues, \"\")\n : \"none\";\n return styles;\n }\n const lead = this.getLead();\n if (!this.projectionDelta || !this.layout || !lead.target) {\n const emptyStyles = {};\n if (this.options.layoutId) {\n emptyStyles.opacity =\n this.latestValues.opacity !== undefined\n ? this.latestValues.opacity\n : 1;\n emptyStyles.pointerEvents =\n resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\";\n }\n if (this.hasProjected && !hasTransform(this.latestValues)) {\n emptyStyles.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n this.hasProjected = false;\n }\n return emptyStyles;\n }\n const valuesToRender = lead.animationValues || lead.latestValues;\n this.applyTransformsToTarget();\n styles.transform = buildProjectionTransform(this.projectionDeltaWithTransform, this.treeScale, valuesToRender);\n if (transformTemplate) {\n styles.transform = transformTemplate(valuesToRender, styles.transform);\n }\n const { x, y } = this.projectionDelta;\n styles.transformOrigin = `${x.origin * 100}% ${y.origin * 100}% 0`;\n if (lead.animationValues) {\n /**\n * If the lead component is animating, assign this either the entering/leaving\n * opacity\n */\n styles.opacity =\n lead === this\n ? (_b = (_a = valuesToRender.opacity) !== null && _a !== void 0 ? _a : this.latestValues.opacity) !== null && _b !== void 0 ? _b : 1\n : this.preserveOpacity\n ? this.latestValues.opacity\n : valuesToRender.opacityExit;\n }\n else {\n /**\n * Or we're not animating at all, set the lead component to its layout\n * opacity and other components to hidden.\n */\n styles.opacity =\n lead === this\n ? valuesToRender.opacity !== undefined\n ? valuesToRender.opacity\n : \"\"\n : valuesToRender.opacityExit !== undefined\n ? valuesToRender.opacityExit\n : 0;\n }\n /**\n * Apply scale correction\n */\n for (const key in scaleCorrectors) {\n if (valuesToRender[key] === undefined)\n continue;\n const { correct, applyTo } = scaleCorrectors[key];\n /**\n * Only apply scale correction to the value if we have an\n * active projection transform. Otherwise these values become\n * vulnerable to distortion if the element changes size without\n * a corresponding layout animation.\n */\n const corrected = styles.transform === \"none\"\n ? valuesToRender[key]\n : correct(valuesToRender[key], lead);\n if (applyTo) {\n const num = applyTo.length;\n for (let i = 0; i < num; i++) {\n styles[applyTo[i]] = corrected;\n }\n }\n else {\n styles[key] = corrected;\n }\n }\n /**\n * Disable pointer events on follow components. This is to ensure\n * that if a follow component covers a lead component it doesn't block\n * pointer events on the lead.\n */\n if (this.options.layoutId) {\n styles.pointerEvents =\n lead === this\n ? resolveMotionValue(styleProp === null || styleProp === void 0 ? void 0 : styleProp.pointerEvents) || \"\"\n : \"none\";\n }\n return styles;\n }\n clearSnapshot() {\n this.resumeFrom = this.snapshot = undefined;\n }\n // Only run on root\n resetTree() {\n this.root.nodes.forEach((node) => { var _a; return (_a = node.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop(); });\n this.root.nodes.forEach(clearMeasurements);\n this.root.sharedNodes.clear();\n }\n };\n}\nfunction updateLayout(node) {\n node.updateLayout();\n}\nfunction notifyLayoutUpdate(node) {\n var _a;\n const snapshot = ((_a = node.resumeFrom) === null || _a === void 0 ? void 0 : _a.snapshot) || node.snapshot;\n if (node.isLead() &&\n node.layout &&\n snapshot &&\n node.hasListeners(\"didUpdate\")) {\n const { layoutBox: layout, measuredBox: measuredLayout } = node.layout;\n const { animationType } = node.options;\n const isShared = snapshot.source !== node.layout.source;\n // TODO Maybe we want to also resize the layout snapshot so we don't trigger\n // animations for instance if layout=\"size\" and an element has only changed position\n if (animationType === \"size\") {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(axisSnapshot);\n axisSnapshot.min = layout[axis].min;\n axisSnapshot.max = axisSnapshot.min + length;\n });\n }\n else if (shouldAnimatePositionOnly(animationType, snapshot.layoutBox, layout)) {\n eachAxis((axis) => {\n const axisSnapshot = isShared\n ? snapshot.measuredBox[axis]\n : snapshot.layoutBox[axis];\n const length = calcLength(layout[axis]);\n axisSnapshot.max = axisSnapshot.min + length;\n /**\n * Ensure relative target gets resized and rerendererd\n */\n if (node.relativeTarget && !node.currentAnimation) {\n node.isProjectionDirty = true;\n node.relativeTarget[axis].max =\n node.relativeTarget[axis].min + length;\n }\n });\n }\n const layoutDelta = createDelta();\n calcBoxDelta(layoutDelta, layout, snapshot.layoutBox);\n const visualDelta = createDelta();\n if (isShared) {\n calcBoxDelta(visualDelta, node.applyTransform(measuredLayout, true), snapshot.measuredBox);\n }\n else {\n calcBoxDelta(visualDelta, layout, snapshot.layoutBox);\n }\n const hasLayoutChanged = !isDeltaZero(layoutDelta);\n let hasRelativeTargetChanged = false;\n if (!node.resumeFrom) {\n const relativeParent = node.getClosestProjectingParent();\n /**\n * If the relativeParent is itself resuming from a different element then\n * the relative snapshot is not relavent\n */\n if (relativeParent && !relativeParent.resumeFrom) {\n const { snapshot: parentSnapshot, layout: parentLayout } = relativeParent;\n if (parentSnapshot && parentLayout) {\n const relativeSnapshot = createBox();\n calcRelativePosition(relativeSnapshot, snapshot.layoutBox, parentSnapshot.layoutBox);\n const relativeLayout = createBox();\n calcRelativePosition(relativeLayout, layout, parentLayout.layoutBox);\n if (!boxEqualsRounded(relativeSnapshot, relativeLayout)) {\n hasRelativeTargetChanged = true;\n }\n if (relativeParent.options.layoutRoot) {\n node.relativeTarget = relativeLayout;\n node.relativeTargetOrigin = relativeSnapshot;\n node.relativeParent = relativeParent;\n }\n }\n }\n }\n node.notifyListeners(\"didUpdate\", {\n layout,\n snapshot,\n delta: visualDelta,\n layoutDelta,\n hasLayoutChanged,\n hasRelativeTargetChanged,\n });\n }\n else if (node.isLead()) {\n const { onExitComplete } = node.options;\n onExitComplete && onExitComplete();\n }\n /**\n * Clearing transition\n * TODO: Investigate why this transition is being passed in as {type: false } from Framer\n * and why we need it at all\n */\n node.options.transition = undefined;\n}\nfunction propagateDirtyNodes(node) {\n /**\n * Increase debug counter for nodes encountered this frame\n */\n if (isDebug) {\n metrics.totalNodes++;\n }\n if (!node.parent)\n return;\n /**\n * If this node isn't projecting, propagate isProjectionDirty. It will have\n * no performance impact but it will allow the next child that *is* projecting\n * but *isn't* dirty to just check its parent to see if *any* ancestor needs\n * correcting.\n */\n if (!node.isProjecting()) {\n node.isProjectionDirty = node.parent.isProjectionDirty;\n }\n /**\n * Propagate isSharedProjectionDirty and isTransformDirty\n * throughout the whole tree. A future revision can take another look at\n * this but for safety we still recalcualte shared nodes.\n */\n node.isSharedProjectionDirty || (node.isSharedProjectionDirty = Boolean(node.isProjectionDirty ||\n node.parent.isProjectionDirty ||\n node.parent.isSharedProjectionDirty));\n node.isTransformDirty || (node.isTransformDirty = node.parent.isTransformDirty);\n}\nfunction cleanDirtyNodes(node) {\n node.isProjectionDirty =\n node.isSharedProjectionDirty =\n node.isTransformDirty =\n false;\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction clearIsLayoutDirty(node) {\n node.isLayoutDirty = false;\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement && visualElement.getProps().onBeforeLayoutMeasure) {\n visualElement.notify(\"BeforeLayoutMeasure\");\n }\n node.resetTransform();\n}\nfunction finishAnimation(node) {\n node.finishAnimation();\n node.targetDelta = node.relativeTarget = node.target = undefined;\n node.isProjectionDirty = true;\n}\nfunction resolveTargetDelta(node) {\n node.resolveTargetDelta();\n}\nfunction calcProjection(node) {\n node.calcProjection();\n}\nfunction resetSkewAndRotation(node) {\n node.resetSkewAndRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mixNumber(delta.translate, 0, p);\n output.scale = mixNumber(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mixNumber(from.min, to.min, p);\n output.max = mixNumber(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== undefined);\n}\nconst defaultLayoutTransition = {\n duration: 0.45,\n ease: [0.4, 0, 0.1, 1],\n};\nconst userAgentContains = (string) => typeof navigator !== \"undefined\" &&\n navigator.userAgent &&\n navigator.userAgent.toLowerCase().includes(string);\n/**\n * Measured bounding boxes must be rounded in Safari and\n * left untouched in Chrome, otherwise non-integer layouts within scaled-up elements\n * can appear to jump.\n */\nconst roundPoint = userAgentContains(\"applewebkit/\") && !userAgentContains(\"chrome/\")\n ? Math.round\n : noop;\nfunction roundAxis(axis) {\n // Round to the nearest .5 pixels to support subpixel layouts\n axis.min = roundPoint(axis.min);\n axis.max = roundPoint(axis.max);\n}\nfunction roundBox(box) {\n roundAxis(box.x);\n roundAxis(box.y);\n}\nfunction shouldAnimatePositionOnly(animationType, snapshot, layout) {\n return (animationType === \"position\" ||\n (animationType === \"preserve-aspect\" &&\n !isNear(aspectRatio(snapshot), aspectRatio(layout), 0.2)));\n}\nfunction checkNodeWasScrollRoot(node) {\n var _a;\n return node !== node.root && ((_a = node.scroll) === null || _a === void 0 ? void 0 : _a.wasRoot);\n}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { time } from '../frameloop/sync-time.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = time.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\n\nexport { delay };\n","import { animateMotionValue } from './motion-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction animateSingleValue(value, keyframes, options) {\n const motionValue$1 = isMotionValue(value) ? value : motionValue(value);\n motionValue$1.start(animateMotionValue(\"\", motionValue$1, keyframes, options));\n return motionValue$1.animation;\n}\n\nexport { animateSingleValue };\n","function buildProjectionTransform(delta, treeScale, latestTransform) {\n let transform = \"\";\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n const xTranslate = delta.x.translate / treeScale.x;\n const yTranslate = delta.y.translate / treeScale.y;\n const zTranslate = (latestTransform === null || latestTransform === void 0 ? void 0 : latestTransform.z) || 0;\n if (xTranslate || yTranslate || zTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, ${zTranslate}px) `;\n }\n /**\n * Apply scale correction for the tree transform.\n * This will apply scale to the screen-orientated axes.\n */\n if (treeScale.x !== 1 || treeScale.y !== 1) {\n transform += `scale(${1 / treeScale.x}, ${1 / treeScale.y}) `;\n }\n if (latestTransform) {\n const { transformPerspective, rotate, rotateX, rotateY, skewX, skewY } = latestTransform;\n if (transformPerspective)\n transform = `perspective(${transformPerspective}px) ${transform}`;\n if (rotate)\n transform += `rotate(${rotate}deg) `;\n if (rotateX)\n transform += `rotateX(${rotateX}deg) `;\n if (rotateY)\n transform += `rotateY(${rotateY}deg) `;\n if (skewX)\n transform += `skewX(${skewX}deg) `;\n if (skewY)\n transform += `skewY(${skewY}deg) `;\n }\n /**\n * Apply scale to match the size of the element to the size we want it.\n * This will apply scale to the element-orientated axes.\n */\n const elementScaleX = delta.x.scale * treeScale.x;\n const elementScaleY = delta.y.scale * treeScale.y;\n if (elementScaleX !== 1 || elementScaleY !== 1) {\n transform += `scale(${elementScaleX}, ${elementScaleY})`;\n }\n return transform || \"none\";\n}\n\nexport { buildProjectionTransform };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/add-dom-event.mjs';\n\nconst DocumentProjectionNode = createProjectionNode({\n attachResizeListener: (ref, notify) => addDomEvent(ref, \"resize\", notify),\n measureScroll: () => ({\n x: document.documentElement.scrollLeft || document.body.scrollLeft,\n y: document.documentElement.scrollTop || document.body.scrollTop,\n }),\n checkIsScrollRoot: () => true,\n});\n\nexport { DocumentProjectionNode };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { DocumentProjectionNode } from './DocumentProjectionNode.mjs';\n\nconst rootProjectionNode = {\n current: undefined,\n};\nconst HTMLProjectionNode = createProjectionNode({\n measureScroll: (instance) => ({\n x: instance.scrollLeft,\n y: instance.scrollTop,\n }),\n defaultParent: () => {\n if (!rootProjectionNode.current) {\n const documentNode = new DocumentProjectionNode({});\n documentNode.mount(window);\n documentNode.setOptions({ layoutScroll: true });\n rootProjectionNode.current = documentNode;\n }\n return rootProjectionNode.current;\n },\n resetTransform: (instance, value) => {\n instance.style.transform = value !== undefined ? value : \"none\";\n },\n checkIsScrollRoot: (instance) => Boolean(window.getComputedStyle(instance).position === \"fixed\"),\n});\n\nexport { HTMLProjectionNode, rootProjectionNode };\n","import { DragGesture } from '../../gestures/drag/index.mjs';\nimport { PanGesture } from '../../gestures/pan/index.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst drag = {\n pan: {\n Feature: PanGesture,\n },\n drag: {\n Feature: DragGesture,\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { drag };\n","import { Feature } from '../../motion/features/Feature.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\n\nclass DragGesture extends Feature {\n constructor(node) {\n super(node);\n this.removeGroupControls = noop;\n this.removeListeners = noop;\n this.controls = new VisualElementDragControls(node);\n }\n mount() {\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n const { dragControls } = this.node.getProps();\n if (dragControls) {\n this.removeGroupControls = dragControls.subscribe(this.controls);\n }\n this.removeListeners = this.controls.addListeners() || noop;\n }\n unmount() {\n this.removeGroupControls();\n this.removeListeners();\n }\n}\n\nexport { DragGesture };\n","// Does this device prefer reduced motion? Returns `null` server-side.\nconst prefersReducedMotion = { current: null };\nconst hasReducedMotionListener = { current: false };\n\nexport { hasReducedMotionListener, prefersReducedMotion };\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 { 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 { 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 { createBox } from '../projection/geometry/models.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\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 /**\n * If true, will-change will be applied to the element. Only HTMLVisualElements\n * currently support this.\n */\n this.applyWillChange = false;\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 this.isRenderScheduled = false;\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.isRenderScheduled = false;\n this.scheduleRender = () => {\n if (!this.isRenderScheduled) {\n this.isRenderScheduled = true;\n frame.render(this.render, false, true);\n }\n };\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 necessarily 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 }\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 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 const feature = this.features[key];\n if (feature) {\n feature.unmount();\n feature.isMounted = false;\n }\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 updateFeatures() {\n let key = \"animation\";\n for (key in featureDefinitions) {\n const featureDefinition = featureDefinitions[key];\n if (!featureDefinition)\n continue;\n const { isEnabled, Feature: FeatureConstructor } = featureDefinition;\n /**\n * If this feature is enabled but not active, make a new instance.\n */\n if (!this.features[key] &&\n FeatureConstructor &&\n isEnabled(this.props)) {\n this.features[key] = new FeatureConstructor(this);\n }\n /**\n * If we have a feature, mount or update it.\n */\n if (this.features[key]) {\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 }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, 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","import { 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 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 /**\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.3.24\", `Attempting to mix Framer Motion versions ${nextValue.version} with 11.3.24 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 }\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 this.applyWillChange = true;\n this.renderInstance = renderHTML;\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, props) {\n buildHTMLStyles(renderState, latestValues, 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}\n\nexport { HTMLVisualElement, getComputedStyle };\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 this.measureInstanceViewportBox = createBox;\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 scrapeMotionValuesFromProps(props, prevProps, visualElement) {\n return scrapeMotionValuesFromProps(props, prevProps, visualElement);\n }\n build(renderState, latestValues, props) {\n buildSVGAttrs(renderState, latestValues, 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","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)\n : new HTMLVisualElement(options, {\n allowProjection: Component !== Fragment,\n });\n};\n\nexport { createDomVisualElement };\n","import { createMotionComponent } from '../../motion/index.mjs';\nimport { createMotionProxy } from './motion-proxy.mjs';\nimport { createDomMotionConfig } from './utils/create-config.mjs';\nimport { gestureAnimations } from '../../motion/features/gestures.mjs';\nimport { animations } from '../../motion/features/animations.mjs';\nimport { drag } from '../../motion/features/drag.mjs';\nimport { createDomVisualElement } from './create-visual-element.mjs';\nimport { layout } from '../../motion/features/layout.mjs';\n\nconst preloadedFeatures = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layout,\n};\n/**\n * HTML & SVG components, optimised for use with gestures and animation. These can be used as\n * drop-in replacements for any HTML & SVG component, all CSS & SVG properties are supported.\n *\n * @public\n */\nconst motion = /*@__PURE__*/ createMotionProxy((Component, config) => createDomMotionConfig(Component, config, preloadedFeatures, createDomVisualElement));\n/**\n * Create a DOM `motion` component with the provided string. This is primarily intended\n * as a full alternative to `motion` for consumers who have to support environments that don't\n * support `Proxy`.\n *\n * ```javascript\n * import { createDomMotionComponent } from \"framer-motion\"\n *\n * const motion = {\n * div: createDomMotionComponent('div')\n * }\n * ```\n *\n * @public\n */\nfunction createDomMotionComponent(key) {\n return createMotionComponent(createDomMotionConfig(key, { forwardMotionProps: false }, preloadedFeatures, createDomVisualElement));\n}\n\nexport { createDomMotionComponent, motion };\n","import { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\nimport { MeasureLayout } from './layout/MeasureLayout.mjs';\n\nconst layout = {\n layout: {\n ProjectionNode: HTMLProjectionNode,\n MeasureLayout,\n },\n};\n\nexport { layout };\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","import { propNames } from \"@chakra-ui/styled-system\"\n\n/**\n * List of props for emotion to omit from DOM.\n * It mostly consists of Chakra props\n */\nconst allPropNames = new Set([\n ...propNames,\n \"textStyle\",\n \"layerStyle\",\n \"apply\",\n \"noOfLines\",\n \"focusBorderColor\",\n \"errorBorderColor\",\n \"as\",\n \"__css\",\n \"css\",\n \"sx\",\n])\n\n/**\n * htmlWidth and htmlHeight is used in the \n * component to support the native `width` and `height` attributes\n *\n * https://github.com/chakra-ui/chakra-ui/issues/149\n */\nconst validHTMLProps = new Set([\n \"htmlWidth\",\n \"htmlHeight\",\n \"htmlSize\",\n \"htmlTranslate\",\n])\n\nexport function shouldForwardProp(prop: string): boolean {\n return validHTMLProps.has(prop) || !allPropNames.has(prop)\n}\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","import { useColorMode } from \"@chakra-ui/color-mode\"\nimport {\n css,\n isStyleProp,\n StyleProps,\n SystemStyleObject,\n} from \"@chakra-ui/styled-system\"\nimport { Dict, filterUndefined, objectFilter, runIfFn } from \"@chakra-ui/utils\"\nimport { assignAfter } from \"@chakra-ui/object-utils\"\nimport createStyled, { CSSObject, FunctionInterpolation } from \"@emotion/styled\"\nimport React from \"react\"\nimport { shouldForwardProp } from \"./should-forward-prop\"\nimport { As, ChakraComponent, ChakraProps, PropsOf } from \"./system.types\"\nimport { DOMElements } from \"./system.utils\"\n\nconst emotion_styled = ((createStyled as any).default ??\n createStyled) as typeof createStyled\n\ntype StyleResolverProps = SystemStyleObject & {\n __css?: SystemStyleObject\n sx?: SystemStyleObject\n theme: any\n css?: CSSObject\n}\n\ninterface GetStyleObject {\n (options: {\n baseStyle?:\n | SystemStyleObject\n | ((props: StyleResolverProps) => SystemStyleObject)\n }): FunctionInterpolation\n}\n\n/**\n * Style resolver function that manages how style props are merged\n * in combination with other possible ways of defining styles.\n *\n * For example, take a component defined this way:\n * ```jsx\n * \n * ```\n *\n * We want to manage the priority of the styles properly to prevent unwanted\n * behaviors. Right now, the `sx` prop has the highest priority so the resolved\n * fontSize will be `40px`\n */\nexport const toCSSObject: GetStyleObject =\n ({ baseStyle }) =>\n (props) => {\n const { theme, css: cssProp, __css, sx, ...rest } = props\n const styleProps = objectFilter(rest, (_, prop) => isStyleProp(prop))\n const finalBaseStyle = runIfFn(baseStyle, props)\n const finalStyles = assignAfter(\n {},\n __css,\n finalBaseStyle,\n filterUndefined(styleProps),\n sx,\n )\n const computedCSS = css(finalStyles)(props.theme)\n return cssProp ? [computedCSS, cssProp] : computedCSS\n }\n\nexport interface ChakraStyledOptions extends Dict {\n shouldForwardProp?(prop: string): boolean\n label?: string\n baseStyle?:\n | SystemStyleObject\n | ((props: StyleResolverProps) => SystemStyleObject)\n}\n\nexport function styled(\n component: T,\n options?: ChakraStyledOptions,\n) {\n const { baseStyle, ...styledOptions } = options ?? {}\n\n if (!styledOptions.shouldForwardProp) {\n styledOptions.shouldForwardProp = shouldForwardProp\n }\n\n const styleObject = toCSSObject({ baseStyle })\n const Component = emotion_styled(\n component as React.ComponentType,\n styledOptions,\n )(styleObject)\n\n const chakraComponent = React.forwardRef(function ChakraComponent(\n props,\n ref,\n ) {\n const { colorMode, forced } = useColorMode()\n return React.createElement(Component, {\n ref,\n \"data-theme\": forced ? colorMode : undefined,\n ...props,\n })\n })\n\n return chakraComponent as ChakraComponent\n}\n\nexport type HTMLChakraComponents = {\n [Tag in DOMElements]: ChakraComponent\n}\n\nexport type HTMLChakraProps = Omit<\n PropsOf,\n \"ref\" | keyof StyleProps\n> &\n ChakraProps & { as?: As }\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\n/* import type {\n ElementType,\n StatelessFunctionalComponent,\n AbstractComponent\n} from 'react' */\n/*\nexport type Interpolations = Array\n\nexport type StyledElementType =\n | string\n | AbstractComponent<{ ...Props, className: string }, mixed>\n\nexport type StyledOptions = {\n label?: string,\n shouldForwardProp?: string => boolean,\n target?: string\n}\n\nexport type StyledComponent = StatelessFunctionalComponent & {\n defaultProps: any,\n toString: () => string,\n withComponent: (\n nextTag: StyledElementType,\n nextOptions?: StyledOptions\n ) => StyledComponent\n}\n\nexport type PrivateStyledComponent = StyledComponent & {\n __emotion_real: StyledComponent,\n __emotion_base: any,\n __emotion_styles: any,\n __emotion_forwardProp: any\n}\n*/\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key\n/*: string */\n) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag\n/*: ElementType */\n) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag\n/*: PrivateStyledComponent */\n, options\n/*: StyledOptions | void */\n, isReal\n/*: boolean */\n) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName\n /*: string */\n ) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n/*\nexport type CreateStyledComponent = (\n ...args: Interpolations\n) => StyledComponent\n\nexport type CreateStyled = {\n (\n tag: StyledElementType,\n options?: StyledOptions\n ): (...args: Interpolations) => StyledComponent,\n [key: string]: CreateStyledComponent,\n bind: () => CreateStyled\n}\n*/\n\nvar isDevelopment = false;\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled\n/*: CreateStyled */\n= function createStyled\n/*: CreateStyled */\n(tag\n/*: any */\n, options\n/* ?: StyledOptions */\n) {\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n /* return function(): PrivateStyledComponent { */\n\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n\n styles.push(args[i], args[0][i]);\n }\n }\n\n var Styled\n /*: PrivateStyledComponent */\n = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = React.useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if (finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n\n if (ref) {\n newProps.ref = ref;\n }\n\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/React.createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && isDevelopment) {\n return 'NO_COMPONENT_SELECTOR';\n }\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag\n /*: StyledElementType */\n , nextOptions\n /* ?: StyledOptions */\n ) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport { createStyled as default };\n","import createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport { newStyled as default };\n","// src/assign-after.ts\nfunction assignAfter(target, ...sources) {\n if (target == null) {\n throw new TypeError(\"Cannot convert undefined or null to object\");\n }\n const result = { ...target };\n for (const nextSource of sources) {\n if (nextSource == null)\n continue;\n for (const nextKey in nextSource) {\n if (!Object.prototype.hasOwnProperty.call(nextSource, nextKey))\n continue;\n if (nextKey in result)\n delete result[nextKey];\n result[nextKey] = nextSource[nextKey];\n }\n }\n return result;\n}\n\nexport {\n assignAfter\n};\n","import { DOMElements } from \"./system.utils\"\nimport { ChakraStyledOptions, HTMLChakraComponents, styled } from \"./system\"\nimport { As, ChakraComponent } from \"./system.types\"\n\ntype ChakraFactory = {\n (\n component: T,\n options?: ChakraStyledOptions,\n ): ChakraComponent\n}\n\nfunction factory() {\n const cache = new Map>()\n\n return new Proxy(styled, {\n /**\n * @example\n * const Div = chakra(\"div\")\n * const WithChakra = chakra(AnotherComponent)\n */\n apply(target, thisArg, argArray: [DOMElements, ChakraStyledOptions]) {\n return styled(...argArray)\n },\n /**\n * @example\n * \n */\n get(_, element: DOMElements) {\n if (!cache.has(element)) {\n cache.set(element, styled(element))\n }\n return cache.get(element)\n },\n }) as ChakraFactory & HTMLChakraComponents\n}\n/**\n * The Chakra factory serves as an object of chakra enabled JSX elements,\n * and also a function that can be used to enable custom component receive chakra's style props.\n *\n * @see Docs https://chakra-ui.com/docs/styled-system/chakra-factory\n */\nexport const chakra = factory()\n","import { useTimeout } from \"@chakra-ui/react-use-timeout\"\nimport { useUpdateEffect } from \"@chakra-ui/react-use-update-effect\"\nimport { runIfFn } from \"@chakra-ui/shared-utils\"\nimport { motion, useIsPresent, Variants } from \"framer-motion\"\nimport { chakra } from \"@chakra-ui/system\"\nimport type { ToastOptions } from \"./toast.types\"\nimport { getToastStyle } from \"./toast.utils\"\nimport { ToastProviderProps } from \"./toast.provider\"\nimport { memo, useEffect, useMemo, useState } from \"react\"\n\nconst toastMotionVariants: Variants = {\n initial: (props) => {\n const { position } = props\n\n const dir = [\"top\", \"bottom\"].includes(position) ? \"y\" : \"x\"\n\n let factor = [\"top-right\", \"bottom-right\"].includes(position) ? 1 : -1\n if (position === \"bottom\") factor = 1\n\n return {\n opacity: 0,\n [dir]: factor * 24,\n }\n },\n animate: {\n opacity: 1,\n y: 0,\n x: 0,\n scale: 1,\n transition: {\n duration: 0.4,\n ease: [0.4, 0, 0.2, 1],\n },\n },\n exit: {\n opacity: 0,\n scale: 0.85,\n transition: {\n duration: 0.2,\n ease: [0.4, 0, 1, 1],\n },\n },\n}\n\nexport interface ToastComponentProps\n extends ToastOptions,\n Pick {}\n\nexport const ToastComponent = memo((props: ToastComponentProps) => {\n const {\n id,\n message,\n onCloseComplete,\n onRequestRemove,\n requestClose = false,\n position = \"bottom\",\n duration = 5000,\n containerStyle,\n motionVariants = toastMotionVariants,\n toastSpacing = \"0.5rem\",\n } = props\n\n const [delay, setDelay] = useState(duration)\n const isPresent = useIsPresent()\n\n useUpdateEffect(() => {\n if (!isPresent) {\n onCloseComplete?.()\n }\n }, [isPresent])\n\n useUpdateEffect(() => {\n setDelay(duration)\n }, [duration])\n\n const onMouseEnter = () => setDelay(null)\n const onMouseLeave = () => setDelay(duration)\n\n const close = () => {\n if (isPresent) onRequestRemove()\n }\n\n useEffect(() => {\n if (isPresent && requestClose) {\n onRequestRemove()\n }\n }, [isPresent, requestClose, onRequestRemove])\n\n useTimeout(close, delay)\n\n const containerStyles = useMemo(\n () => ({\n pointerEvents: \"auto\",\n maxWidth: 560,\n minWidth: 300,\n margin: toastSpacing,\n ...containerStyle,\n }),\n [containerStyle, toastSpacing],\n )\n\n const toastStyle = useMemo(() => getToastStyle(position), [position])\n\n return (\n \n \n {runIfFn(message, { id, onClose: close })}\n \n \n )\n})\n\nToastComponent.displayName = \"ToastComponent\"\n","/**\n * All credit goes to Chance (Reach UI), Haz (Reakit) and (fluentui)\n * for creating the base type definitions upon which we improved on\n */\nimport { forwardRef as forwardReactRef } from \"react\"\nimport { As, ComponentWithAs, PropsOf, RightJoinProps } from \"./system.types\"\n\nexport function forwardRef(\n component: React.ForwardRefRenderFunction<\n any,\n RightJoinProps, Props> & {\n as?: As\n }\n >,\n) {\n return forwardReactRef(component) as unknown as ComponentWithAs<\n Component,\n Props\n >\n}\n","import { WithCSSVar } from \"@chakra-ui/styled-system\"\nimport { Dict } from \"@chakra-ui/utils\"\nimport { ThemeContext } from \"@emotion/react\"\nimport { useContext } from \"react\"\n\n/**\n * `useTheme` is a custom hook used to get the theme object from context.\n *\n * @see Docs https://chakra-ui.com/docs/hooks/use-theme\n */\nexport function useTheme() {\n const theme = useContext(\n ThemeContext as unknown as React.Context,\n )\n if (!theme) {\n throw Error(\n \"useTheme: `theme` is undefined. Seems you forgot to wrap your app in `` or ``\",\n )\n }\n\n return theme as WithCSSVar\n}\n","import { useColorMode } from \"@chakra-ui/color-mode\"\nimport { Dict, StringOrNumber } from \"@chakra-ui/utils\"\nimport { useTheme } from \"./use-theme\"\n\nexport function useChakra() {\n const colorModeResult = useColorMode()\n const theme = useTheme() as T\n return { ...colorModeResult, theme }\n}\n\nfunction getBreakpointValue(\n theme: Dict,\n value: T,\n fallback: any,\n) {\n if (value == null) return value\n const getValue = (val: T) => theme.__breakpoints?.asArray?.[val]\n return getValue(value) ?? getValue(fallback) ?? fallback\n}\n\nfunction getTokenValue(\n theme: Dict,\n value: T,\n fallback: any,\n) {\n if (value == null) return value\n const getValue = (val: T) => theme.__cssMap?.[val]?.value\n return getValue(value) ?? getValue(fallback) ?? fallback\n}\n\n/**\n * `useToken` is a custom hook used to resolve design tokens from the theme.\n *\n * @see Docs https://chakra-ui.com/docs/hooks/use-token\n */\nexport function useToken(\n scale: string,\n token: T,\n fallback?: T,\n) {\n const theme = useTheme()\n return getToken(scale, token, fallback)(theme)\n}\n\nexport function getToken(\n scale: string,\n token: T,\n fallback?: T,\n): (theme: Dict) => T {\n const _token = Array.isArray(token) ? token : [token]\n const _fallback = Array.isArray(fallback) ? fallback : [fallback]\n return (theme: Dict) => {\n const fallbackArr = _fallback.filter(Boolean) as T[]\n const result = _token.map((token, index) => {\n if (scale === \"breakpoints\") {\n return getBreakpointValue(theme, token, fallbackArr[index] ?? token)\n }\n const path = `${scale}.${token}`\n return getTokenValue(theme, path, fallbackArr[index] ?? token)\n })\n return Array.isArray(token) ? result : result[0]\n }\n}\n","import {\n resolveStyleConfig,\n SystemStyleObject,\n ThemingProps,\n} from \"@chakra-ui/styled-system\"\nimport { mergeThemeOverride } from \"@chakra-ui/theme-utils\"\nimport {\n Dict,\n filterUndefined,\n memoizedGet as get,\n mergeWith,\n omit,\n} from \"@chakra-ui/utils\"\nimport { useRef } from \"react\"\nimport isEqual from \"react-fast-compare\"\nimport { useChakra } from \"./hooks\"\n\ntype StylesRef = SystemStyleObject | Record\n\nfunction useStyleConfigImpl(\n themeKey: string | null,\n props: ThemingProps & Dict = {},\n) {\n const { styleConfig: styleConfigProp, ...rest } = props\n\n const { theme, colorMode } = useChakra()\n\n const themeStyleConfig = themeKey\n ? get(theme, `components.${themeKey}`)\n : undefined\n\n const styleConfig = styleConfigProp || themeStyleConfig\n\n const mergedProps = mergeWith(\n { theme, colorMode },\n styleConfig?.defaultProps ?? {},\n filterUndefined(omit(rest, [\"children\"])),\n )\n\n /**\n * Store the computed styles in a `ref` to avoid unneeded re-computation\n */\n const stylesRef = useRef({})\n\n if (styleConfig) {\n const getStyles = resolveStyleConfig(styleConfig)\n const styles = getStyles(mergedProps)\n\n const isStyleEqual = isEqual(stylesRef.current, styles)\n\n if (!isStyleEqual) {\n stylesRef.current = styles\n }\n }\n\n return stylesRef.current\n}\n\nexport function useStyleConfig(\n themeKey: string,\n props: ThemingProps & Dict = {},\n) {\n return useStyleConfigImpl(themeKey, props) as SystemStyleObject\n}\n\nexport function useMultiStyleConfig(\n themeKey: string,\n props: ThemingProps & Dict = {},\n) {\n return useStyleConfigImpl(themeKey, props) as Record<\n string,\n SystemStyleObject\n >\n}\n\ntype MultipartStyles = Record\n\nexport function useComponentStyles__unstable(\n themeKey: string,\n props: ThemingProps & { baseConfig: any },\n) {\n const { baseConfig, ...restProps } = props\n const { theme } = useChakra()\n\n const overrides = theme.components?.[themeKey]\n\n const styleConfig = overrides\n ? mergeThemeOverride(overrides, baseConfig)\n : baseConfig\n\n return useStyleConfigImpl(null, {\n ...restProps,\n styleConfig,\n }) as MultipartStyles\n}\n","import {\n chakra,\n ChakraProps,\n forwardRef,\n SystemStyleObject,\n useStyleConfig,\n} from \"@chakra-ui/system\"\nimport { cx } from \"@chakra-ui/shared-utils\"\n\nconst fallbackIcon = {\n path: (\n \n \n \n \n \n ),\n viewBox: \"0 0 24 24\",\n}\n\ntype Orientation = \"vertical\" | \"horizontal\"\n\nexport interface IconProps\n extends Omit, keyof ChakraProps>,\n ChakraProps {\n orientation?: Orientation\n}\n\n/**\n * The Icon component renders as an svg element to help define your own custom components.\n *\n * @see Docs https://chakra-ui.com/docs/components/icon#using-the-icon-component\n */\nexport const Icon = forwardRef((props, ref) => {\n const {\n as: element,\n viewBox,\n color = \"currentColor\",\n focusable = false,\n children,\n className,\n __css,\n ...rest\n } = props\n\n const _className = cx(\"chakra-icon\", className)\n const customStyles = useStyleConfig(\"Icon\", props)\n\n const styles: SystemStyleObject = {\n w: \"1em\",\n h: \"1em\",\n display: \"inline-block\",\n lineHeight: \"1em\",\n flexShrink: 0,\n color,\n ...__css,\n ...customStyles,\n }\n\n const shared: any = {\n ref,\n focusable,\n className: _className,\n __css: styles,\n }\n\n const _viewBox = viewBox ?? fallbackIcon.viewBox\n\n /**\n * If you're using an icon library like `react-icons`.\n * Note: anyone passing the `as` prop, should manage the `viewBox` from the external component\n */\n if (element && typeof element !== \"string\") {\n return \n }\n\n const _path = (children ?? fallbackIcon.path) as React.ReactNode\n\n return (\n \n {_path}\n \n )\n})\n\nIcon.displayName = \"Icon\"\n\nexport default Icon\n","import { Icon, IconProps } from \"@chakra-ui/icon\"\n\nexport function CheckIcon(props: IconProps) {\n return (\n \n \n \n )\n}\n\nexport function InfoIcon(props: IconProps) {\n return (\n \n \n \n )\n}\n\nexport function WarningIcon(props: IconProps) {\n return (\n \n \n \n )\n}\n","import {\n chakra,\n forwardRef,\n keyframes,\n omitThemingProps,\n ThemingProps,\n useStyleConfig,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\nimport { cx } from \"@chakra-ui/shared-utils\"\n\nconst spin = keyframes({\n \"0%\": {\n transform: \"rotate(0deg)\",\n },\n \"100%\": {\n transform: \"rotate(360deg)\",\n },\n})\n\ninterface SpinnerOptions {\n /**\n * The color of the empty area in the spinner\n * @default \"transparent\"\n */\n emptyColor?: string\n /**\n * The color of the spinner\n */\n color?: string\n /**\n * The thickness of the spinner\n * @default \"2px\"\n * @example\n * ```jsx\n * \n * ```\n */\n thickness?: string\n /**\n * The speed of the spinner.\n * @default \"0.45s\"\n * @example\n * ```jsx\n * \n * ```\n */\n speed?: string\n /**\n * For accessibility, it is important to add a fallback loading text.\n * This text will be visible to screen readers.\n * @default \"Loading...\"\n */\n label?: string\n}\n\nexport interface SpinnerProps\n extends Omit, keyof SpinnerOptions>,\n SpinnerOptions,\n ThemingProps<\"Spinner\"> {}\n\n/**\n * Spinner is used to indicate the loading state of a page or a component,\n * It renders a `div` by default.\n *\n * @see Docs https://chakra-ui.com/spinner\n */\nexport const Spinner = forwardRef((props, ref) => {\n const styles = useStyleConfig(\"Spinner\", props)\n\n const {\n label = \"Loading...\",\n thickness = \"2px\",\n speed = \"0.45s\",\n emptyColor = \"transparent\",\n className,\n ...rest\n } = omitThemingProps(props)\n\n const _className = cx(\"chakra-spinner\", className)\n\n const spinnerStyles = {\n display: \"inline-block\",\n borderColor: \"currentColor\",\n borderStyle: \"solid\",\n borderRadius: \"99999px\",\n borderWidth: thickness,\n borderBottomColor: emptyColor,\n borderLeftColor: emptyColor,\n animation: `${spin} ${speed} linear infinite`,\n ...styles,\n }\n\n return (\n \n {label && {label}}\n \n )\n})\n\nSpinner.displayName = \"Spinner\"\n","import { SystemStyleObject } from \"@chakra-ui/system\"\nimport { createContext } from \"@chakra-ui/react-context\"\nimport { CheckIcon, InfoIcon, WarningIcon } from \"./icons\"\nimport { Spinner } from \"@chakra-ui/spinner\"\n\nexport const [AlertProvider, useAlertContext] = createContext({\n name: \"AlertContext\",\n hookName: \"useAlertContext\",\n providerName: \"\",\n})\n\nexport const [AlertStylesProvider, useAlertStyles] = createContext<\n Record\n>({\n name: `AlertStylesContext`,\n hookName: `useAlertStyles`,\n providerName: \"\",\n})\n\nconst STATUSES = {\n info: { icon: InfoIcon, colorScheme: \"blue\" },\n warning: { icon: WarningIcon, colorScheme: \"orange\" },\n success: { icon: CheckIcon, colorScheme: \"green\" },\n error: { icon: WarningIcon, colorScheme: \"red\" },\n loading: { icon: Spinner, colorScheme: \"blue\" },\n}\n\nexport function getStatusColorScheme(status: AlertStatus) {\n return STATUSES[status].colorScheme\n}\n\nexport function getStatusIcon(status: AlertStatus) {\n return STATUSES[status].icon\n}\n\nexport type AlertStatus = keyof typeof STATUSES\n\nexport interface AlertContext {\n status: AlertStatus\n}\n","import { cx } from \"@chakra-ui/shared-utils\"\nimport {\n chakra,\n forwardRef,\n HTMLChakraProps,\n omitThemingProps,\n SystemStyleObject,\n ThemingProps,\n useMultiStyleConfig,\n} from \"@chakra-ui/system\"\nimport {\n AlertProvider,\n AlertStatus,\n AlertStylesProvider,\n getStatusColorScheme,\n} from \"./alert-context\"\n\ninterface AlertOptions {\n /**\n * The status of the alert\n * @default \"info\"\n */\n status?: AlertStatus\n}\n\nexport interface AlertProps\n extends HTMLChakraProps<\"div\">,\n AlertOptions,\n ThemingProps<\"Alert\"> {\n /**\n * @default false\n */\n addRole?: boolean\n}\n\n/**\n * Alert is used to communicate the state or status of a\n * page, feature or action\n *\n * @see Docs https://chakra-ui.com/docs/components/alert\n * @see WAI-ARIA https://www.w3.org/WAI/ARIA/apg/patterns/alert/\n */\nexport const Alert = forwardRef(function Alert(props, ref) {\n const { status = \"info\", addRole = true, ...rest } = omitThemingProps(props)\n const colorScheme = props.colorScheme ?? getStatusColorScheme(status)\n\n const styles = useMultiStyleConfig(\"Alert\", { ...props, colorScheme })\n\n const alertStyles: SystemStyleObject = {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n position: \"relative\",\n overflow: \"hidden\",\n ...styles.container,\n }\n\n return (\n \n \n \n \n \n )\n})\n\nAlert.displayName = \"Alert\"\n","import { cx } from \"@chakra-ui/shared-utils\"\nimport { chakra, HTMLChakraProps } from \"@chakra-ui/system\"\nimport { getStatusIcon, useAlertContext, useAlertStyles } from \"./alert-context\"\n\nexport interface AlertIconProps extends HTMLChakraProps<\"span\"> {}\n\nexport function AlertIcon(props: AlertIconProps) {\n const { status } = useAlertContext()\n const BaseIcon = getStatusIcon(status)\n const styles = useAlertStyles()\n const css = status === \"loading\" ? styles.spinner : styles.icon\n\n return (\n \n {props.children || }\n \n )\n}\n\nAlertIcon.displayName = \"AlertIcon\"\n","import { cx } from \"@chakra-ui/shared-utils\"\nimport { chakra, forwardRef, HTMLChakraProps } from \"@chakra-ui/system\"\nimport { useAlertContext, useAlertStyles } from \"./alert-context\"\n\nexport interface AlertTitleProps extends HTMLChakraProps<\"div\"> {}\n\nexport const AlertTitle = forwardRef(\n function AlertTitle(props, ref) {\n const styles = useAlertStyles()\n const { status } = useAlertContext()\n\n return (\n \n )\n },\n)\n\nAlertTitle.displayName = \"AlertTitle\"\n","import { cx } from \"@chakra-ui/shared-utils\"\nimport {\n HTMLChakraProps,\n SystemStyleObject,\n chakra,\n forwardRef,\n} from \"@chakra-ui/system\"\nimport { useAlertContext, useAlertStyles } from \"./alert-context\"\n\nexport interface AlertDescriptionProps extends HTMLChakraProps<\"div\"> {}\n\nexport const AlertDescription = forwardRef(\n function AlertDescription(props, ref) {\n const styles = useAlertStyles()\n const { status } = useAlertContext()\n const descriptionStyles: SystemStyleObject = {\n display: \"inline\",\n ...styles.description,\n }\n\n return (\n \n )\n },\n)\n\nAlertDescription.displayName = \"AlertDescription\"\n","import { Icon, IconProps } from \"@chakra-ui/icon\"\nimport {\n chakra,\n forwardRef,\n omitThemingProps,\n SystemStyleObject,\n ThemingProps,\n useStyleConfig,\n HTMLChakraProps,\n} from \"@chakra-ui/system\"\n\nfunction CloseIcon(props: IconProps) {\n return (\n \n \n \n )\n}\n\nexport interface CloseButtonProps\n extends HTMLChakraProps<\"button\">,\n ThemingProps<\"CloseButton\"> {\n /**\n * If `true`, the close button will be disabled.\n * @default false\n */\n isDisabled?: boolean\n}\n\n/**\n * A button with a close icon.\n *\n * It is used to handle the close functionality in feedback and overlay components\n * like Alerts, Toasts, Drawers and Modals.\n *\n * @see Docs https://chakra-ui.com/docs/components/close-button\n */\nexport const CloseButton = forwardRef(\n function CloseButton(props, ref) {\n const styles = useStyleConfig(\"CloseButton\", props)\n const { children, isDisabled, __css, ...rest } = omitThemingProps(props)\n\n const baseStyle: SystemStyleObject = {\n outline: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n }\n\n return (\n \n {children || }\n \n )\n },\n)\n\nCloseButton.displayName = \"CloseButton\"\n","import { createRenderToast } from \"./toast\"\nimport { ToastPosition } from \"./toast.placement\"\nimport { CreateToastOptions, ToastMethods } from \"./toast.provider\"\nimport type { ToastId, ToastMessage, ToastState } from \"./toast.types\"\nimport { findToast, getToastPosition } from \"./toast.utils\"\n\ntype ToastStore = ToastMethods & {\n getState: () => ToastState\n subscribe: (onStoreChange: () => void) => () => void\n removeToast: (id: ToastId, position: ToastPosition) => void\n}\n\nconst initialState = {\n top: [],\n \"top-left\": [],\n \"top-right\": [],\n \"bottom-left\": [],\n bottom: [],\n \"bottom-right\": [],\n}\n\n/**\n * Store to track all the toast across all positions\n */\nexport const toastStore = createStore(initialState)\n\nfunction createStore(initialState: ToastState): ToastStore {\n let state = initialState\n const listeners = new Set<() => void>()\n\n const setState = (setStateFn: (values: ToastState) => ToastState) => {\n state = setStateFn(state)\n listeners.forEach((l) => l())\n }\n\n return {\n getState: () => state,\n\n subscribe: (listener) => {\n listeners.add(listener)\n return () => {\n // Delete all toasts on unmount\n setState(() => initialState)\n listeners.delete(listener)\n }\n },\n\n /**\n * Delete a toast record at its position\n */\n removeToast: (id, position) => {\n setState((prevState) => ({\n ...prevState,\n // id may be string or number\n // eslint-disable-next-line eqeqeq\n [position]: prevState[position].filter((toast) => toast.id != id),\n }))\n },\n\n notify: (message, options) => {\n const toast = createToast(message, options)\n const { position, id } = toast\n\n setState((prevToasts) => {\n const isTop = position.includes(\"top\")\n\n /**\n * - If the toast is positioned at the top edges, the\n * recent toast stacks on top of the other toasts.\n *\n * - If the toast is positioned at the bottom edges, the recent\n * toast stacks below the other toasts.\n */\n const toasts = isTop\n ? [toast, ...(prevToasts[position] ?? [])]\n : [...(prevToasts[position] ?? []), toast]\n\n return {\n ...prevToasts,\n [position]: toasts,\n }\n })\n\n return id\n },\n\n update: (id, options) => {\n if (!id) return\n\n setState((prevState) => {\n const nextState = { ...prevState }\n const { position, index } = findToast(nextState, id)\n\n if (position && index !== -1) {\n nextState[position][index] = {\n ...nextState[position][index],\n ...options,\n message: createRenderToast(options),\n }\n }\n\n return nextState\n })\n },\n\n closeAll: ({ positions } = {}) => {\n // only one setState here for perf reasons\n // instead of spamming this.closeToast\n setState((prev) => {\n const allPositions: ToastPosition[] = [\n \"bottom\",\n \"bottom-right\",\n \"bottom-left\",\n \"top\",\n \"top-left\",\n \"top-right\",\n ]\n\n const positionsToClose = positions ?? allPositions\n\n return positionsToClose.reduce(\n (acc, position) => {\n acc[position] = prev[position].map((toast) => ({\n ...toast,\n requestClose: true,\n }))\n\n return acc\n },\n { ...prev } as ToastState,\n )\n })\n },\n\n close: (id) => {\n setState((prevState) => {\n const position = getToastPosition(prevState, id)\n\n if (!position) return prevState\n\n return {\n ...prevState,\n [position]: prevState[position].map((toast) => {\n // id may be string or number\n // eslint-disable-next-line eqeqeq\n if (toast.id == id) {\n return {\n ...toast,\n requestClose: true,\n }\n }\n\n return toast\n }),\n }\n })\n },\n\n isActive: (id) => Boolean(findToast(toastStore.getState(), id).position),\n }\n}\n\n/**\n * Static id counter to create unique ids\n * for each toast\n */\nlet counter = 0\n\n/**\n * Create properties for a new toast\n */\nfunction createToast(message: ToastMessage, options: CreateToastOptions = {}) {\n counter += 1\n const id = options.id ?? counter\n\n const position = options.position ?? \"bottom\"\n\n return {\n id,\n message,\n position,\n duration: options.duration,\n onCloseComplete: options.onCloseComplete,\n onRequestRemove: () => toastStore.removeToast(String(id), position),\n status: options.status,\n requestClose: false,\n containerStyle: options.containerStyle,\n }\n}\n","import {\n Alert,\n AlertDescription,\n AlertIcon,\n AlertProps,\n AlertTitle,\n} from \"@chakra-ui/alert\"\nimport { chakra } from \"@chakra-ui/system\"\nimport { CloseButton } from \"@chakra-ui/close-button\"\nimport { runIfFn } from \"@chakra-ui/shared-utils\"\nimport type { UseToastOptions } from \"./use-toast\"\nimport type { RenderProps, ToastId } from \"./toast.types\"\nimport { getToastPlacement } from \"./toast.placement\"\nimport { toastStore } from \"./toast.store\"\n\nexport interface ToastProps\n extends UseToastOptions,\n Omit {\n onClose?: () => void\n}\n\n/**\n * The `Toast` component is used to give feedback to users after an action has taken place.\n *\n * @see Docs https://chakra-ui.com/docs/components/toast\n */\nexport const Toast: React.FC = (props) => {\n const {\n status,\n variant = \"solid\",\n id,\n title,\n isClosable,\n onClose,\n description,\n colorScheme,\n icon,\n } = props\n\n const ids = id\n ? {\n root: `toast-${id}`,\n title: `toast-${id}-title`,\n description: `toast-${id}-description`,\n }\n : undefined\n\n return (\n \n {icon}\n \n {title && {title}}\n {description && (\n \n {description}\n \n )}\n \n {isClosable && (\n \n )}\n \n )\n}\n\nexport function createRenderToast(\n options: UseToastOptions & {\n toastComponent?: React.FC\n } = {},\n) {\n const { render, toastComponent: ToastComponent = Toast } = options\n const renderToast: React.FC = (props) => {\n if (typeof render === \"function\") {\n return render({ ...props, ...options }) as JSX.Element\n }\n return \n }\n return renderToast\n}\n\ntype UseToastPromiseOption = Omit\n\nexport function createToastFn(\n dir: \"ltr\" | \"rtl\",\n defaultOptions?: UseToastOptions,\n) {\n const normalizeToastOptions = (options?: UseToastOptions) => ({\n ...defaultOptions,\n ...options,\n position: getToastPlacement(\n options?.position ?? defaultOptions?.position,\n dir,\n ),\n })\n\n const toast = (options?: UseToastOptions) => {\n const normalizedToastOptions = normalizeToastOptions(options)\n const Message = createRenderToast(normalizedToastOptions)\n return toastStore.notify(Message, normalizedToastOptions)\n }\n\n toast.update = (id: ToastId, options: Omit) => {\n toastStore.update(id, normalizeToastOptions(options))\n }\n\n toast.promise = (\n promise: Promise,\n options: {\n success: MaybeFunction\n error: MaybeFunction\n loading: UseToastPromiseOption\n },\n ) => {\n const id = toast({\n ...options.loading,\n status: \"loading\",\n duration: null,\n })\n\n promise\n .then((data) =>\n toast.update(id, {\n status: \"success\",\n duration: 5_000,\n ...runIfFn(options.success, data),\n }),\n )\n .catch((error) =>\n toast.update(id, {\n status: \"error\",\n duration: 5_000,\n ...runIfFn(options.error, error),\n }),\n )\n }\n\n toast.closeAll = toastStore.closeAll\n toast.close = toastStore.close\n toast.isActive = toastStore.isActive\n\n return toast\n}\n\nexport type CreateToastFnReturn = ReturnType\n\ntype MaybeFunction = T | ((...args: Args) => T)\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 { Children, isValidElement } from 'react';\n\nconst getChildKey = (child) => child.key || \"\";\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\nexport { getChildKey, onlyElements };\n","import { jsx, Fragment } from 'react/jsx-runtime';\nimport { useMemo, useRef, useState, useContext } from 'react';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { invariant } from '../../utils/errors.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { onlyElements, getChildKey } from './utils.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\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, exitBeforeEnter, custom, initial = true, onExitComplete, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n /**\n * Filter any children that aren't ReactElements. We can only track components\n * between renders with a props.key.\n */\n const presentChildren = useMemo(() => onlyElements(children), [children]);\n /**\n * Track the keys of the currently rendered children. This is used to\n * determine which children are exiting.\n */\n const presentKeys = presentChildren.map(getChildKey);\n /**\n * If `initial={false}` we only want to pass this to components in the first render.\n */\n const isInitialRender = useRef(true);\n /**\n * A ref containing the currently present children. When all exit animations\n * are complete, we use this to re-render the component with the latest children\n * *committed* rather than the latest children *rendered*.\n */\n const pendingPresentChildren = useRef(presentChildren);\n /**\n * Track which exiting children have finished animating out.\n */\n const exitComplete = useConstant(() => new Map());\n /**\n * Save children to render as React state. To ensure this component is concurrent-safe,\n * we check for exiting children via an effect.\n */\n const [diffedChildren, setDiffedChildren] = useState(presentChildren);\n const [renderedChildren, setRenderedChildren] = useState(presentChildren);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n pendingPresentChildren.current = presentChildren;\n /**\n * Update complete status of exiting children.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const key = getChildKey(renderedChildren[i]);\n if (!presentKeys.includes(key)) {\n if (exitComplete.get(key) !== true) {\n exitComplete.set(key, false);\n }\n }\n else {\n exitComplete.delete(key);\n }\n }\n }, [renderedChildren, presentKeys.length, presentKeys.join(\"-\")]);\n const exitingChildren = [];\n if (presentChildren !== diffedChildren) {\n let nextChildren = [...presentChildren];\n /**\n * Loop through all the currently rendered components and decide which\n * are exiting.\n */\n for (let i = 0; i < renderedChildren.length; i++) {\n const child = renderedChildren[i];\n const key = getChildKey(child);\n if (!presentKeys.includes(key)) {\n nextChildren.splice(i, 0, child);\n exitingChildren.push(child);\n }\n }\n /**\n * If we're in \"wait\" mode, and we have exiting children, we want to\n * only render these until they've all exited.\n */\n if (mode === \"wait\" && exitingChildren.length) {\n nextChildren = exitingChildren;\n }\n setRenderedChildren(onlyElements(nextChildren));\n setDiffedChildren(presentChildren);\n /**\n * Early return to ensure once we've set state with the latest diffed\n * children, we can immediately re-render.\n */\n return;\n }\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n renderedChildren.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 /**\n * If we've been provided a forceRender function by the LayoutGroupContext,\n * we can use it to force a re-render amongst all surrounding components once\n * all components have finished animating out.\n */\n const { forceRender } = useContext(LayoutGroupContext);\n return (jsx(Fragment, { children: renderedChildren.map((child) => {\n const key = getChildKey(child);\n const isPresent = presentChildren === renderedChildren ||\n presentKeys.includes(key);\n const onExit = () => {\n if (exitComplete.has(key)) {\n exitComplete.set(key, true);\n }\n else {\n return;\n }\n let isEveryExitComplete = true;\n exitComplete.forEach((isExitComplete) => {\n if (!isExitComplete)\n isEveryExitComplete = false;\n });\n if (isEveryExitComplete) {\n forceRender === null || forceRender === void 0 ? void 0 : forceRender();\n setRenderedChildren(pendingPresentChildren.current);\n onExitComplete && onExitComplete();\n }\n };\n return (jsx(PresenceChild, { isPresent: isPresent, initial: !isInitialRender.current || initial\n ? undefined\n : false, custom: isPresent ? undefined : custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode, onExitComplete: isPresent ? undefined : onExit, children: child }, key));\n }) }));\n};\n\nexport { AnimatePresence };\n","import { useSafeLayoutEffect } from \"@chakra-ui/react-use-safe-layout-effect\"\nimport { createContext } from \"@chakra-ui/react-context\"\nimport { createPortal } from \"react-dom\"\nimport { usePortalManager } from \"./portal-manager\"\nimport { useEffect, useMemo, useRef, useState } from \"react\"\n\ntype PortalContext = HTMLDivElement | null\n\nconst [PortalContextProvider, usePortalContext] = createContext({\n strict: false,\n name: \"PortalContext\",\n})\n\nconst PORTAL_CLASSNAME = \"chakra-portal\"\nconst PORTAL_SELECTOR = `.chakra-portal`\n\nconst Container = (props: React.PropsWithChildren<{ zIndex: number }>) => (\n \n {props.children}\n
\n)\n\n/**\n * Portal that uses `document.body` as container\n */\nconst DefaultPortal = (\n props: React.PropsWithChildren<{ appendToParentPortal?: boolean }>,\n) => {\n const { appendToParentPortal, children } = props\n\n const [tempNode, setTempNode] = useState(null)\n const portal = useRef(null)\n\n const [, forceUpdate] = useState({})\n useEffect(() => forceUpdate({}), [])\n\n const parentPortal = usePortalContext()\n const manager = usePortalManager()\n\n useSafeLayoutEffect(() => {\n if (!tempNode) return\n\n const doc = tempNode.ownerDocument\n const host = appendToParentPortal ? parentPortal ?? doc.body : doc.body\n\n if (!host) return\n\n portal.current = doc.createElement(\"div\")\n portal.current.className = PORTAL_CLASSNAME\n\n host.appendChild(portal.current)\n forceUpdate({})\n\n const portalNode = portal.current\n return () => {\n if (host.contains(portalNode)) {\n host.removeChild(portalNode)\n }\n }\n }, [tempNode])\n\n const _children = manager?.zIndex ? (\n {children}\n ) : (\n children\n )\n\n return portal.current ? (\n createPortal(\n \n {_children}\n ,\n portal.current,\n )\n ) : (\n {\n if (el) setTempNode(el)\n }}\n />\n )\n}\n\ninterface ContainerPortalProps extends React.PropsWithChildren<{}> {\n containerRef: React.RefObject\n /**\n * @default false\n */\n appendToParentPortal?: boolean\n}\n\n/**\n * Portal that uses a custom container\n */\nconst ContainerPortal = (props: ContainerPortalProps) => {\n const { children, containerRef, appendToParentPortal } = props\n const containerEl = containerRef.current\n const host =\n containerEl ?? (typeof window !== \"undefined\" ? document.body : undefined)\n\n const portal = useMemo(() => {\n const node = containerEl?.ownerDocument.createElement(\"div\")\n if (node) node.className = PORTAL_CLASSNAME\n return node\n }, [containerEl])\n\n const [, forceUpdate] = useState({})\n useSafeLayoutEffect(() => forceUpdate({}), [])\n\n useSafeLayoutEffect(() => {\n if (!portal || !host) return\n host.appendChild(portal)\n return () => {\n host.removeChild(portal)\n }\n }, [portal, host])\n\n if (host && portal) {\n return createPortal(\n \n {children}\n ,\n portal,\n )\n }\n\n return null\n}\n\nexport interface PortalProps {\n /**\n * The `ref` to the component where the portal will be attached to.\n */\n containerRef?: React.RefObject\n /**\n * The content or node you'll like to portal\n */\n children: React.ReactNode\n /**\n * If `true`, the portal will check if it is within a parent portal\n * and append itself to the parent's portal node.\n * This provides nesting for portals.\n *\n * If `false`, the portal will always append to `document.body`\n * regardless of nesting. It is used to opt out of portal nesting.\n *\n * @default true\n */\n appendToParentPortal?: boolean\n}\n\n/**\n * Portal\n *\n * Declarative component used to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * @see Docs https://chakra-ui.com/portal\n */\n\nexport function Portal(props: PortalProps) {\n const portalProps: PortalProps = {\n appendToParentPortal: true,\n ...props,\n }\n\n const { containerRef, ...rest } = portalProps\n return containerRef ? (\n \n ) : (\n \n )\n}\n\nPortal.className = PORTAL_CLASSNAME\nPortal.selector = PORTAL_SELECTOR\n\nPortal.displayName = \"Portal\"\n","import { AnimatePresence, Variants } from \"framer-motion\"\nimport { Portal, PortalProps } from \"@chakra-ui/portal\"\nimport { ToastComponent, ToastComponentProps } from \"./toast.component\"\nimport type {\n CloseAllToastsOptions,\n ToastId,\n ToastMessage,\n ToastOptions,\n} from \"./toast.types\"\nimport type { UseToastOptions } from \"./use-toast\"\nimport { toastStore } from \"./toast.store\"\nimport { getToastListStyle } from \"./toast.utils\"\nimport { useSyncExternalStore } from \"react\"\nimport { createContext } from \"@chakra-ui/react-context\"\n\nexport interface ToastMethods {\n /**\n * Function to actually create a toast and add it\n * to state at the specified position\n */\n notify: (message: ToastMessage, options?: CreateToastOptions) => ToastId\n /**\n * Close all toasts at once.\n * If given positions, will only close those.\n */\n closeAll: (options?: CloseAllToastsOptions) => void\n /**\n * Requests to close a toast based on its id and position\n */\n close: (id: ToastId) => void\n /**\n * Update a specific toast with new options based on the\n * passed `id`\n */\n update: (id: ToastId, options: Omit) => void\n isActive: (id: ToastId) => boolean\n}\n\nexport type CreateToastOptions = Partial<\n Pick<\n ToastOptions,\n | \"status\"\n | \"duration\"\n | \"position\"\n | \"id\"\n | \"onCloseComplete\"\n | \"containerStyle\"\n >\n>\n\nexport type ToastProviderProps = React.PropsWithChildren<{\n /**\n * Default options for `useToast(options)`\n *\n * @example\n * \n */\n defaultOptions?: UseToastOptions\n\n /**\n * Customize the default motion config to animate the toasts your way\n *\n * @example\n * const motionVariants =\n * \n */\n motionVariants?: Variants\n\n /**\n * Are you looking for a way to style the toast? Use a custom `Alert` variant in the theme.\n * This property overrides the default ToastComponent with your own implementation.\n *\n * @example\n * const CustomToastComponent = (props: ToastComponentProps) => ...\n * \n *\n * @default ToastComponent\n */\n component?: React.FC\n\n /**\n * Define the margin between toasts\n *\n * @default 0.5rem\n */\n toastSpacing?: string | number\n /**\n * Props to be forwarded to the portal component\n */\n portalProps?: Pick\n}>\n\n/**\n * Passes default options down to be used by toast creator function\n */\nexport const [ToastOptionProvider, useToastOptionContext] = createContext<\n UseToastOptions | undefined\n>({\n name: `ToastOptionsContext`,\n strict: false,\n})\n\n/**\n * Manages the creation, and removal of toasts\n * across all corners (\"top\", \"bottom\", etc.)\n */\nexport const ToastProvider = (props: ToastProviderProps) => {\n const state = useSyncExternalStore(\n toastStore.subscribe,\n toastStore.getState,\n toastStore.getState,\n )\n\n const {\n motionVariants,\n component: Component = ToastComponent,\n portalProps,\n } = props\n\n const stateKeys = Object.keys(state) as Array\n const toastList = stateKeys.map((position) => {\n const toasts = state[position]\n\n return (\n \n \n {toasts.map((toast) => (\n \n ))}\n \n
\n )\n })\n\n return {toastList}\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 {\n ChakraProvider as BaseChakraProvider,\n ChakraProviderProps as BaseChakraProviderProps,\n} from \"@chakra-ui/provider\"\nimport { theme as defaultTheme, baseTheme, Theme } from \"@chakra-ui/theme\"\nimport {\n ToastProvider,\n ToastProviderProps,\n ToastOptionProvider,\n} from \"@chakra-ui/toast\"\nimport { Dict } from \"@chakra-ui/utils\"\n\nexport interface ChakraProviderProps extends BaseChakraProviderProps {\n /**\n * Provide defaults for `useToast()` usages for `ChakraProvider`s children\n */\n toastOptions?: ToastProviderProps\n}\n\nconst createChakraProvider = (\n providerTheme: Theme | (Omit & { components: Dict }),\n) => {\n return function ChakraProvider({\n children,\n theme = providerTheme,\n toastOptions,\n ...restProps\n }: ChakraProviderProps) {\n return (\n \n \n {children}\n \n \n \n )\n }\n}\n\nexport const ChakraProvider = createChakraProvider(defaultTheme)\nexport const ChakraBaseProvider = createChakraProvider(baseTheme)\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\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData\n status?: number;\n}\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 ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\nexport interface AgnosticPatchRoutesOnMissFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\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 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\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 HandlerResult,\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 AgnosticPatchRoutesOnMissFunction,\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 unstable_patchRoutesOnMiss?: AgnosticPatchRoutesOnMissFunction;\n unstable_dataStrategy?: DataStrategyFunction;\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 unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_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 unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_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 unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_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.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnMissImpl = init.unstable_patchRoutesOnMiss;\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 && !patchRoutesOnMissImpl) {\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 patchRoutesOnMiss 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 && patchRoutesOnMissImpl && !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 // We need to run patchRoutesOnMiss in initialize()\n initialized = false;\n initialMatches = [];\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 let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\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.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\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: string[] = [];\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 patchRoutesOnMiss() 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 ignoreNextHistoryUpdate = false;\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 (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\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 ignoreNextHistoryUpdate = true;\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\n 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 unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_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 cancelledFetcherLoads = [];\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.unstable_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.unstable_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 { overrideNavigation: state.navigation }\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 load 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, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n 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 request,\n [actionMatch],\n matches\n );\n result = results[0];\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, {\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, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: 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 if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\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.matches,\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 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, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\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 let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\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 matchesToLoad,\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 // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\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 if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_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 pendingPreventScrollReset = (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 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 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 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 let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, 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 fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\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, {\n fetcherSubmission: submission,\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 if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\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.matches,\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, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\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 let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\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 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 let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, 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 fetchRequest,\n [match],\n matches\n );\n let result = results[0];\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);\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 {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\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 ? HistoryAction.Replace : 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 this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\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 this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\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 request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\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 return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\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.push(key);\n abortFetcher(key);\n }\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 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 invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\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 handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\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 (patchRoutesOnMissImpl) {\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 let leafRoute = matches[matches.length - 1].route;\n if (\n leafRoute.path &&\n (leafRoute.path === \"*\" || leafRoute.path.endsWith(\"/*\"))\n ) {\n // If we matched a splat, it might only be because we haven't yet fetched\n // the children that would match with a higher score, so let's fetch\n // around and find out\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 let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n let route =\n partialMatches.length > 0\n ? partialMatches[partialMatches.length - 1].route\n : null;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnMissImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\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) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n let matchedSplat = false;\n if (newMatches) {\n let leafRoute = newMatches[newMatches.length - 1].route;\n\n if (leafRoute.index) {\n // If we found an index route, we can stop\n return { type: \"success\", matches: newMatches };\n }\n\n if (leafRoute.path && leafRoute.path.length > 0) {\n if (leafRoute.path === \"*\") {\n // If we found a splat route, we can't be sure there's not a\n // higher-scoring route down some partial matches trail so we need\n // to check that out\n matchedSplat = true;\n } else {\n // If we found a non-splat route, we can stop\n return { type: \"success\", matches: newMatches };\n }\n }\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // If we are no longer partially matching anything, this was either a\n // legit splat match above, or it's a 404. Also avoid loops if the\n // second pass results in the same partial matches\n if (\n !newPartialMatches ||\n partialMatches.map((m) => m.route.id).join(\"-\") ===\n newPartialMatches.map((m) => m.route.id).join(\"-\")\n ) {\n return { type: \"success\", matches: matchedSplat ? newMatches : null };\n }\n\n partialMatches = newPartialMatches;\n route = partialMatches[partialMatches.length - 1].route;\n if (route.path === \"*\") {\n // The splat is still our most accurate partial, so run with it\n return { type: \"success\", matches: partialMatches };\n }\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 unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_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 unstable_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 unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_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 unstable_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 unstable_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 unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_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 `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(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 unstable_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 unstable_dataStrategy\n );\n result = results[0];\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 unstable_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 unstable_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 unstable_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 unstable_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 matchesToLoad,\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 unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(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 matchesToLoad[i].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 return convertHandlerResultToDataResult(result);\n })\n );\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 // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\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 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) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\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 boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\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 (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\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 load (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 isInitialLoad ||\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.includes(key)) {\n // Always revalidate if the fetcher was cancelled\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 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\n/**\n * Idempotent utility to execute patchRoutesOnMiss() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnMissImpl: AgnosticPatchRoutesOnMissFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map>,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnMissImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\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\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\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: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\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 request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\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 manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\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;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\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 loadLazyRouteModule(match.route, mapRouteProperties, manifest),\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 loadLazyRouteModule(match.route, mapRouteProperties, manifest);\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 // HandlerResults 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 convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type, status } = handlerResult;\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 return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : status,\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 return { type: ResultType.data, data: result, statusCode: status };\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 matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\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 results.forEach((result, index) => {\n let id = matchesToLoad[index].route.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 matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\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 for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\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\" | \"route-discovery\";\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 (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnMiss()\\` ` +\n `function threw the following error:\\n${message}`;\n } else 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: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\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 isHandlerResult(result: unknown): result is HandlerResult {\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 isRedirectHandlerResult(result: HandlerResult) {\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 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 resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\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) && (isFetcher || 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 let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\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 unstable_flushSync?: boolean;\n unstable_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?.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 {\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