{"version":3,"file":"static/js/main.311b25e5.js","mappings":"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","sources":["../node_modules/css-mediaquery/index.js","../node_modules/eve/eve.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/matchmediaquery/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-awesome-reveal/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-awesome-reveal/node_modules/react-is/index.js","../node_modules/react-burger-menu/lib/BurgerMenu.js","../node_modules/react-burger-menu/lib/components/BurgerIcon.js","../node_modules/react-burger-menu/lib/components/CrossIcon.js","../node_modules/react-burger-menu/lib/helpers/baseStyles.js","../node_modules/react-burger-menu/lib/helpers/dom.js","../node_modules/react-burger-menu/lib/helpers/snapsvgImporter.js","../node_modules/react-burger-menu/lib/helpers/utils.js","../node_modules/react-burger-menu/lib/menuFactory.js","../node_modules/react-burger-menu/lib/menus/bubble.js","../node_modules/react-burger-menu/lib/menus/elastic.js","../node_modules/react-burger-menu/lib/menus/fallDown.js","../node_modules/react-burger-menu/lib/menus/push.js","../node_modules/react-burger-menu/lib/menus/pushRotate.js","../node_modules/react-burger-menu/lib/menus/reveal.js","../node_modules/react-burger-menu/lib/menus/scaleDown.js","../node_modules/react-burger-menu/lib/menus/scaleRotate.js","../node_modules/react-burger-menu/lib/menus/slide.js","../node_modules/react-burger-menu/lib/menus/stack.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/snapsvg-cjs/dist/snap.svg-cjs.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../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/context/PresenceContext.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/utils/is-ref-object.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/context/SwitchLayoutGroupContext.mjs","../node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","../node_modules/framer-motion/dist/es/motion/index.mjs","../node_modules/framer-motion/dist/es/motion/features/load-features.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/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/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/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-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/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../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/dom/utils/camel-to-dash.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/motion/utils/use-visual-state.mjs","../node_modules/framer-motion/dist/es/utils/noop.mjs","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/framer-motion/dist/es/frameloop/render-step.mjs","../node_modules/framer-motion/dist/es/frameloop/batcher.mjs","../node_modules/framer-motion/dist/es/frameloop/frame.mjs","../node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","../node_modules/framer-motion/dist/es/render/html/config-motion.mjs","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../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/focus.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/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../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/animation/optimized-appear/data-id.mjs","../node_modules/framer-motion/dist/es/utils/errors.mjs","../node_modules/framer-motion/dist/es/utils/time-conversion.mjs","../node_modules/framer-motion/dist/es/utils/use-instant-transition-state.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/easing/cubic-bezier.mjs","../node_modules/framer-motion/dist/es/easing/ease.mjs","../node_modules/framer-motion/dist/es/easing/utils/is-easing-array.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/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/utils/mix.mjs","../node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","../node_modules/framer-motion/dist/es/utils/mix-color.mjs","../node_modules/framer-motion/dist/es/value/types/complex/index.mjs","../node_modules/framer-motion/dist/es/utils/mix-complex.mjs","../node_modules/framer-motion/dist/es/utils/progress.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/utils/offsets/time.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/animation/animators/js/driver-frameloop.mjs","../node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs","../node_modules/framer-motion/dist/es/animation/animators/js/index.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/create-accelerated-animation.mjs","../node_modules/framer-motion/dist/es/utils/memo.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs","../node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs","../node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-animatable.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/utils/is-zero-value-string.mjs","../node_modules/framer-motion/dist/es/animation/utils/is-none.mjs","../node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs","../node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs","../node_modules/framer-motion/dist/es/animation/animators/instant.mjs","../node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","../node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","../node_modules/framer-motion/dist/es/utils/array.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/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/dom/value-types/find.mjs","../node_modules/framer-motion/dist/es/render/utils/setters.mjs","../node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs","../node_modules/framer-motion/dist/es/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/index.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/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/gestures/drag/VisualElementDragControls.mjs","../node_modules/framer-motion/dist/es/gestures/drag/index.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/components/AnimatePresence/use-presence.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/projection/styles/transform.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/debug/record.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/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/render/dom/utils/css-variables-conversion.mjs","../node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","../node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.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/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/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../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/motion/features/layout.mjs","../node_modules/framer-motion/dist/es/render/dom/motion.mjs","../node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","../node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../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/index.mjs","../node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","../node_modules/framer-motion/dist/es/utils/use-force-update.mjs","FormInput.jsx","EmailPopupForm.jsx","Footer.jsx","BubbleMenu.jsx","Modal.jsx","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.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/@emotion/utils/dist/emotion-utils.browser.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.browser.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-c39617d8.browser.esm.js","../node_modules/@emotion/react/jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/src/observe.ts","../node_modules/src/InView.tsx","../node_modules/src/useInView.tsx","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeIn.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/bounce.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/flash.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/headShake.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/heartBeat.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/jello.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/pulse.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/rubberBand.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/shake.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/shakeX.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/shakeY.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/swing.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/tada.ts","../node_modules/react-awesome-reveal/src/animations/attention_seekers/wobble.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInBottomLeft.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInBottomRight.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInDown.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInDownBig.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInLeft.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInLeftBig.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInRight.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInRightBig.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInTopLeft.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInTopRight.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInUp.ts","../node_modules/react-awesome-reveal/src/animations/fading_entrances/fadeInUpBig.ts","../node_modules/react-awesome-reveal/src/utils/patterns.ts","../node_modules/react-awesome-reveal/src/Reveal.tsx","../node_modules/react-awesome-reveal/src/utils/guards.ts","../node_modules/react-awesome-reveal/src/utils/animations.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_entrances/bounceIn.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_entrances/bounceInDown.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_entrances/bounceInLeft.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_entrances/bounceInRight.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_entrances/bounceInUp.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_exits/bounceOut.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_exits/bounceOutDown.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_exits/bounceOutLeft.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_exits/bounceOutRight.ts","../node_modules/react-awesome-reveal/src/animations/bouncing_exits/bounceOutUp.ts","../node_modules/react-awesome-reveal/src/components/Bounce.tsx","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOut.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutBottomLeft.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutBottomRight.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutDown.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutDownBig.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutLeft.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutLeftBig.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutRight.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutRightBig.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutTopLeft.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutTopRight.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutUp.ts","../node_modules/react-awesome-reveal/src/animations/fading_exits/fadeOutUpBig.ts","../node_modules/react-awesome-reveal/src/components/Fade.tsx","../node_modules/react-awesome-reveal/src/animations/flippers/flip.ts","../node_modules/react-awesome-reveal/src/animations/flippers/flipInX.ts","../node_modules/react-awesome-reveal/src/animations/flippers/flipInY.ts","../node_modules/react-awesome-reveal/src/animations/flippers/flipOutX.ts","../node_modules/react-awesome-reveal/src/animations/flippers/flipOutY.ts","../node_modules/react-awesome-reveal/src/animations/specials/hinge.ts","../node_modules/react-awesome-reveal/src/animations/specials/jackInTheBox.ts","../node_modules/react-awesome-reveal/src/animations/specials/rollIn.ts","../node_modules/react-awesome-reveal/src/animations/specials/rollOut.ts","../node_modules/react-awesome-reveal/src/animations/rotating_entrances/rotateIn.ts","../node_modules/react-awesome-reveal/src/animations/rotating_entrances/rotateInDownLeft.ts","../node_modules/react-awesome-reveal/src/animations/rotating_entrances/rotateInDownRight.ts","../node_modules/react-awesome-reveal/src/animations/rotating_entrances/rotateInUpLeft.ts","../node_modules/react-awesome-reveal/src/animations/rotating_entrances/rotateInUpRight.ts","../node_modules/react-awesome-reveal/src/animations/rotating_exits/rotateOut.ts","../node_modules/react-awesome-reveal/src/animations/rotating_exits/rotateOutDownLeft.ts","../node_modules/react-awesome-reveal/src/animations/rotating_exits/rotateOutDownRight.ts","../node_modules/react-awesome-reveal/src/animations/rotating_exits/rotateOutUpLeft.ts","../node_modules/react-awesome-reveal/src/animations/rotating_exits/rotateOutUpRight.ts","../node_modules/react-awesome-reveal/src/animations/sliding_entrances/slideInDown.ts","../node_modules/react-awesome-reveal/src/animations/sliding_entrances/slideInLeft.ts","../node_modules/react-awesome-reveal/src/animations/sliding_entrances/slideInRight.ts","../node_modules/react-awesome-reveal/src/animations/sliding_entrances/slideInUp.ts","../node_modules/react-awesome-reveal/src/animations/sliding_exits/slideOutDown.ts","../node_modules/react-awesome-reveal/src/animations/sliding_exits/slideOutLeft.ts","../node_modules/react-awesome-reveal/src/animations/sliding_exits/slideOutRight.ts","../node_modules/react-awesome-reveal/src/animations/sliding_exits/slideOutUp.ts","../node_modules/react-awesome-reveal/src/animations/zooming_entrances/zoomIn.ts","../node_modules/react-awesome-reveal/src/animations/zooming_entrances/zoomInDown.ts","../node_modules/react-awesome-reveal/src/animations/zooming_entrances/zoomInLeft.ts","../node_modules/react-awesome-reveal/src/animations/zooming_entrances/zoomInRight.ts","../node_modules/react-awesome-reveal/src/animations/zooming_entrances/zoomInUp.ts","../node_modules/react-awesome-reveal/src/animations/zooming_exits/zoomOut.ts","../node_modules/react-awesome-reveal/src/animations/zooming_exits/zoomOutDown.ts","../node_modules/react-awesome-reveal/src/animations/zooming_exits/zoomOutLeft.ts","../node_modules/react-awesome-reveal/src/animations/zooming_exits/zoomOutRight.ts","../node_modules/react-awesome-reveal/src/animations/zooming_exits/zoomOutUp.ts","../node_modules/react-awesome-reveal/src/components/Zoom.tsx","Rottnest.jsx","EmblaCarousel.jsx","HotelInformation.jsx","Lineup.jsx","../node_modules/hyphenate-style-name/index.js","../node_modules/shallow-equal/src/objects.ts","../node_modules/react-responsive/src/mediaQuery.ts","../node_modules/react-responsive/src/toQuery.ts","../node_modules/react-responsive/src/Context.ts","../node_modules/react-responsive/src/useMediaQuery.ts","MainPageBody.jsx","MainHeader.jsx","App.jsx","index.js"],"sourcesContent":["/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n RE_MQ_EXPRESSION = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n RE_MQ_FEATURE = /^(?:(min|max)-)?(.+)/,\n RE_LENGTH_UNIT = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n return parseQuery(mediaQuery).some(function (query) {\n var inverse = query.inverse;\n\n // Either the parsed or specified `type` is \"all\", or the types must be\n // equal for a match.\n var typeMatch = query.type === 'all' || values.type === query.type;\n\n // Quit early when `type` doesn't match, but take \"not\" into account.\n if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n return false;\n }\n\n var expressionsMatch = query.expressions.every(function (expression) {\n var feature = expression.feature,\n modifier = expression.modifier,\n expValue = expression.value,\n value = values[feature];\n\n // Missing or falsy values don't match.\n if (!value) { return false; }\n\n switch (feature) {\n case 'orientation':\n case 'scan':\n return value.toLowerCase() === expValue.toLowerCase();\n\n case 'width':\n case 'height':\n case 'device-width':\n case 'device-height':\n expValue = toPx(expValue);\n value = toPx(value);\n break;\n\n case 'resolution':\n expValue = toDpi(expValue);\n value = toDpi(value);\n break;\n\n case 'aspect-ratio':\n case 'device-aspect-ratio':\n case /* Deprecated */ 'device-pixel-ratio':\n expValue = toDecimal(expValue);\n value = toDecimal(value);\n break;\n\n case 'grid':\n case 'color':\n case 'color-index':\n case 'monochrome':\n expValue = parseInt(expValue, 10) || 1;\n value = parseInt(value, 10) || 0;\n break;\n }\n\n switch (modifier) {\n case 'min': return value >= expValue;\n case 'max': return value <= expValue;\n default : return value === expValue;\n }\n });\n\n return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n });\n}\n\nfunction parseQuery(mediaQuery) {\n return mediaQuery.split(',').map(function (query) {\n query = query.trim();\n\n var captures = query.match(RE_MEDIA_QUERY),\n modifier = captures[1],\n type = captures[2],\n expressions = captures[3] || '',\n parsed = {};\n\n parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n parsed.type = type ? type.toLowerCase() : 'all';\n\n // Split expressions into a list.\n expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n parsed.expressions = expressions.map(function (expression) {\n var captures = expression.match(RE_MQ_EXPRESSION),\n feature = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n return {\n modifier: feature[1],\n feature : feature[2],\n value : captures[2]\n };\n });\n\n return parsed;\n });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n var decimal = Number(ratio),\n numbers;\n\n if (!decimal) {\n numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n decimal = numbers[1] / numbers[2];\n }\n\n return decimal;\n}\n\nfunction toDpi(resolution) {\n var value = parseFloat(resolution),\n units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n switch (units) {\n case 'dpcm': return value / 2.54;\n case 'dppx': return value * 96;\n default : return value;\n }\n}\n\nfunction toPx(length) {\n var value = parseFloat(length),\n units = String(length).match(RE_LENGTH_UNIT)[1];\n\n switch (units) {\n case 'em' : return value * 16;\n case 'rem': return value * 16;\n case 'cm' : return value * 96 / 2.54;\n case 'mm' : return value * 96 / 2.54 / 10;\n case 'in' : return value * 96;\n case 'pt' : return value * 72;\n case 'pc' : return value * 72 / 12;\n default : return value;\n }\n}\n","// Copyright (c) 2017 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ┌────────────────────────────────────────────────────────────┐ \\\\\n// │ Eve 0.5.4 - JavaScript Events Library │ \\\\\n// ├────────────────────────────────────────────────────────────┤ \\\\\n// │ Author Dmitry Baranovskiy (http://dmitry.baranovskiy.com/) │ \\\\\n// └────────────────────────────────────────────────────────────┘ \\\\\n\n(function (glob) {\n var version = \"0.5.4\",\n has = \"hasOwnProperty\",\n separator = /[\\.\\/]/,\n comaseparator = /\\s*,\\s*/,\n wildcard = \"*\",\n numsort = function (a, b) {\n return a - b;\n },\n current_event,\n stop,\n events = {n: {}},\n firstDefined = function () {\n for (var i = 0, ii = this.length; i < ii; i++) {\n if (typeof this[i] != \"undefined\") {\n return this[i];\n }\n }\n },\n lastDefined = function () {\n var i = this.length;\n while (--i) {\n if (typeof this[i] != \"undefined\") {\n return this[i];\n }\n }\n },\n objtos = Object.prototype.toString,\n Str = String,\n isArray = Array.isArray || function (ar) {\n return ar instanceof Array || objtos.call(ar) == \"[object Array]\";\n },\n /*\\\n * eve\n [ method ]\n\n * Fires event with given `name`, given scope and other parameters.\n\n - name (string) name of the *event*, dot (`.`) or slash (`/`) separated\n - scope (object) context for the event handlers\n - varargs (...) the rest of arguments will be sent to event handlers\n\n = (object) array of returned values from the listeners. Array has two methods `.firstDefined()` and `.lastDefined()` to get first or last not `undefined` value.\n \\*/\n eve = function (name, scope) {\n var oldstop = stop,\n args = Array.prototype.slice.call(arguments, 2),\n listeners = eve.listeners(name),\n z = 0,\n l,\n indexed = [],\n queue = {},\n out = [],\n ce = current_event;\n out.firstDefined = firstDefined;\n out.lastDefined = lastDefined;\n current_event = name;\n stop = 0;\n for (var i = 0, ii = listeners.length; i < ii; i++) if (\"zIndex\" in listeners[i]) {\n indexed.push(listeners[i].zIndex);\n if (listeners[i].zIndex < 0) {\n queue[listeners[i].zIndex] = listeners[i];\n }\n }\n indexed.sort(numsort);\n while (indexed[z] < 0) {\n l = queue[indexed[z++]];\n out.push(l.apply(scope, args));\n if (stop) {\n stop = oldstop;\n return out;\n }\n }\n for (i = 0; i < ii; i++) {\n l = listeners[i];\n if (\"zIndex\" in l) {\n if (l.zIndex == indexed[z]) {\n out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n do {\n z++;\n l = queue[indexed[z]];\n l && out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n } while (l)\n } else {\n queue[l.zIndex] = l;\n }\n } else {\n out.push(l.apply(scope, args));\n if (stop) {\n break;\n }\n }\n }\n stop = oldstop;\n current_event = ce;\n return out;\n };\n // Undocumented. Debug only.\n eve._events = events;\n /*\\\n * eve.listeners\n [ method ]\n\n * Internal method which gives you array of all event handlers that will be triggered by the given `name`.\n\n - name (string) name of the event, dot (`.`) or slash (`/`) separated\n\n = (array) array of event handlers\n \\*/\n eve.listeners = function (name) {\n var names = isArray(name) ? name : name.split(separator),\n e = events,\n item,\n items,\n k,\n i,\n ii,\n j,\n jj,\n nes,\n es = [e],\n out = [];\n for (i = 0, ii = names.length; i < ii; i++) {\n nes = [];\n for (j = 0, jj = es.length; j < jj; j++) {\n e = es[j].n;\n items = [e[names[i]], e[wildcard]];\n k = 2;\n while (k--) {\n item = items[k];\n if (item) {\n nes.push(item);\n out = out.concat(item.f || []);\n }\n }\n }\n es = nes;\n }\n return out;\n };\n /*\\\n * eve.separator\n [ method ]\n\n * If for some reasons you don’t like default separators (`.` or `/`) you can specify yours\n * here. Be aware that if you pass a string longer than one character it will be treated as\n * a list of characters.\n\n - separator (string) new separator. Empty string resets to default: `.` or `/`.\n \\*/\n eve.separator = function (sep) {\n if (sep) {\n sep = Str(sep).replace(/(?=[\\.\\^\\]\\[\\-])/g, \"\\\\\");\n sep = \"[\" + sep + \"]\";\n separator = new RegExp(sep);\n } else {\n separator = /[\\.\\/]/;\n }\n };\n /*\\\n * eve.on\n [ method ]\n **\n * Binds given event handler with a given name. You can use wildcards “`*`” for the names:\n | eve.on(\"*.under.*\", f);\n | eve(\"mouse.under.floor\"); // triggers f\n * Use @eve to trigger the listener.\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n **\n - name (array) if you don’t want to use separators, you can use array of strings\n - f (function) event handler function\n **\n = (function) returned function accepts a single numeric parameter that represents z-index of the handler. It is an optional feature and only used when you need to ensure that some subset of handlers will be invoked in a given order, despite of the order of assignment.\n > Example:\n | eve.on(\"mouse\", eatIt)(2);\n | eve.on(\"mouse\", scream);\n | eve.on(\"mouse\", catchIt)(1);\n * This will ensure that `catchIt` function will be called before `eatIt`.\n *\n * If you want to put your handler before non-indexed handlers, specify a negative value.\n * Note: I assume most of the time you don’t need to worry about z-index, but it’s nice to have this feature “just in case”.\n \\*/\n eve.on = function (name, f) {\n if (typeof f != \"function\") {\n return function () {};\n }\n var names = isArray(name) ? isArray(name[0]) ? name : [name] : Str(name).split(comaseparator);\n for (var i = 0, ii = names.length; i < ii; i++) {\n (function (name) {\n var names = isArray(name) ? name : Str(name).split(separator),\n e = events,\n exist;\n for (var i = 0, ii = names.length; i < ii; i++) {\n e = e.n;\n e = e.hasOwnProperty(names[i]) && e[names[i]] || (e[names[i]] = {n: {}});\n }\n e.f = e.f || [];\n for (i = 0, ii = e.f.length; i < ii; i++) if (e.f[i] == f) {\n exist = true;\n break;\n }\n !exist && e.f.push(f);\n }(names[i]));\n }\n return function (zIndex) {\n if (+zIndex == +zIndex) {\n f.zIndex = +zIndex;\n }\n };\n };\n /*\\\n * eve.f\n [ method ]\n **\n * Returns function that will fire given event with optional arguments.\n * Arguments that will be passed to the result function will be also\n * concated to the list of final arguments.\n | el.onclick = eve.f(\"click\", 1, 2);\n | eve.on(\"click\", function (a, b, c) {\n | console.log(a, b, c); // 1, 2, [event object]\n | });\n - event (string) event name\n - varargs (…) and any other arguments\n = (function) possible event handler function\n \\*/\n eve.f = function (event) {\n var attrs = [].slice.call(arguments, 1);\n return function () {\n eve.apply(null, [event, null].concat(attrs).concat([].slice.call(arguments, 0)));\n };\n };\n /*\\\n * eve.stop\n [ method ]\n **\n * Is used inside an event handler to stop the event, preventing any subsequent listeners from firing.\n \\*/\n eve.stop = function () {\n stop = 1;\n };\n /*\\\n * eve.nt\n [ method ]\n **\n * Could be used inside event handler to figure out actual name of the event.\n **\n - subname (string) #optional subname of the event\n **\n = (string) name of the event, if `subname` is not specified\n * or\n = (boolean) `true`, if current event’s name contains `subname`\n \\*/\n eve.nt = function (subname) {\n var cur = isArray(current_event) ? current_event.join(\".\") : current_event;\n if (subname) {\n return new RegExp(\"(?:\\\\.|\\\\/|^)\" + subname + \"(?:\\\\.|\\\\/|$)\").test(cur);\n }\n return cur;\n };\n /*\\\n * eve.nts\n [ method ]\n **\n * Could be used inside event handler to figure out actual name of the event.\n **\n **\n = (array) names of the event\n \\*/\n eve.nts = function () {\n return isArray(current_event) ? current_event : current_event.split(separator);\n };\n /*\\\n * eve.off\n [ method ]\n **\n * Removes given function from the list of event listeners assigned to given name.\n * If no arguments specified all the events will be cleared.\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n \\*/\n /*\\\n * eve.unbind\n [ method ]\n **\n * See @eve.off\n \\*/\n eve.off = eve.unbind = function (name, f) {\n if (!name) {\n eve._events = events = {n: {}};\n return;\n }\n var names = isArray(name) ? isArray(name[0]) ? name : [name] : Str(name).split(comaseparator);\n if (names.length > 1) {\n for (var i = 0, ii = names.length; i < ii; i++) {\n eve.off(names[i], f);\n }\n return;\n }\n names = isArray(name) ? name : Str(name).split(separator);\n var e,\n key,\n splice,\n i, ii, j, jj,\n cur = [events],\n inodes = [];\n for (i = 0, ii = names.length; i < ii; i++) {\n for (j = 0; j < cur.length; j += splice.length - 2) {\n splice = [j, 1];\n e = cur[j].n;\n if (names[i] != wildcard) {\n if (e[names[i]]) {\n splice.push(e[names[i]]);\n inodes.unshift({\n n: e,\n name: names[i]\n });\n }\n } else {\n for (key in e) if (e[has](key)) {\n splice.push(e[key]);\n inodes.unshift({\n n: e,\n name: key\n });\n }\n }\n cur.splice.apply(cur, splice);\n }\n }\n for (i = 0, ii = cur.length; i < ii; i++) {\n e = cur[i];\n while (e.n) {\n if (f) {\n if (e.f) {\n for (j = 0, jj = e.f.length; j < jj; j++) if (e.f[j] == f) {\n e.f.splice(j, 1);\n break;\n }\n !e.f.length && delete e.f;\n }\n for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n var funcs = e.n[key].f;\n for (j = 0, jj = funcs.length; j < jj; j++) if (funcs[j] == f) {\n funcs.splice(j, 1);\n break;\n }\n !funcs.length && delete e.n[key].f;\n }\n } else {\n delete e.f;\n for (key in e.n) if (e.n[has](key) && e.n[key].f) {\n delete e.n[key].f;\n }\n }\n e = e.n;\n }\n }\n // prune inner nodes in path\n prune: for (i = 0, ii = inodes.length; i < ii; i++) {\n e = inodes[i];\n for (key in e.n[e.name].f) {\n // not empty (has listeners)\n continue prune;\n }\n for (key in e.n[e.name].n) {\n // not empty (has children)\n continue prune;\n }\n // is empty\n delete e.n[e.name];\n }\n };\n /*\\\n * eve.once\n [ method ]\n **\n * Binds given event handler with a given name to only run once then unbind itself.\n | eve.once(\"login\", f);\n | eve(\"login\"); // triggers f\n | eve(\"login\"); // no listeners\n * Use @eve to trigger the listener.\n **\n - name (string) name of the event, dot (`.`) or slash (`/`) separated, with optional wildcards\n - f (function) event handler function\n **\n = (function) same return function as @eve.on\n \\*/\n eve.once = function (name, f) {\n var f2 = function () {\n eve.off(name, f2);\n return f.apply(this, arguments);\n };\n return eve.on(name, f2);\n };\n /*\\\n * eve.version\n [ property (string) ]\n **\n * Current version of the library.\n \\*/\n eve.version = version;\n eve.toString = function () {\n return \"You are running Eve \" + version;\n };\n glob.eve = eve;\n typeof module != \"undefined\" && module.exports ? module.exports = eve : typeof define === \"function\" && define.amd ? define(\"eve\", [], function () { return eve; }) : glob.eve = eve;\n})(typeof window != \"undefined\" ? window : this);\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","/** @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","'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n var self = this;\n var mql;\n\n // matchMedia will return null in FF when it's called in a hidden iframe\n // ref: https://stackoverflow.com/a/12330568\n if(dynamicMatch && !forceStatic) mql = dynamicMatch.call(window, query);\n\n if (mql) {\n this.matches = mql.matches;\n this.media = mql.media;\n // TODO: is there a time it makes sense to remove this listener?\n mql.addListener(update);\n } else {\n this.matches = staticMatch(query, values);\n this.media = query;\n }\n\n this.addListener = addListener;\n this.removeListener = removeListener;\n this.dispose = dispose;\n\n function addListener(listener){\n if(mql){\n mql.addListener(listener);\n }\n }\n\n function removeListener(listener){\n if(mql){\n mql.removeListener(listener);\n }\n }\n\n // update ourselves!\n function update(evt){\n self.matches = evt.matches;\n self.media = evt.media;\n }\n\n function dispose(){\n if(mql){\n mql.removeListener(update);\n }\n }\n}\n\nfunction matchMedia(query, values, forceStatic){\n return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\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'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = 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 var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\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\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\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\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\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'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\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'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\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","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports['default'] = {\n slide: require('./menus/slide'),\n stack: require('./menus/stack'),\n elastic: require('./menus/elastic'),\n bubble: require('./menus/bubble'),\n push: require('./menus/push'),\n pushRotate: require('./menus/pushRotate'),\n scaleDown: require('./menus/scaleDown'),\n scaleRotate: require('./menus/scaleRotate'),\n fallDown: require('./menus/fallDown'),\n reveal: require('./menus/reveal')\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar BurgerIcon = (function (_Component) {\n _inherits(BurgerIcon, _Component);\n\n function BurgerIcon(props) {\n _classCallCheck(this, BurgerIcon);\n\n _get(Object.getPrototypeOf(BurgerIcon.prototype), 'constructor', this).call(this, props);\n this.state = {\n hover: false\n };\n }\n\n _createClass(BurgerIcon, [{\n key: 'getLineStyle',\n value: function getLineStyle(index) {\n return _extends({\n position: 'absolute',\n height: '20%',\n left: 0,\n right: 0,\n top: 20 * (index * 2) + '%',\n opacity: this.state.hover ? 0.6 : 1\n }, this.state.hover && this.props.styles.bmBurgerBarsHover);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this = this;\n\n var icon = undefined;\n var buttonStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 1,\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0,\n border: 'none',\n fontSize: 0,\n background: 'transparent',\n cursor: 'pointer'\n };\n\n if (this.props.customIcon) {\n var extraProps = {\n className: ('bm-icon ' + (this.props.customIcon.props.className || '')).trim(),\n style: _extends({ width: '100%', height: '100%' }, this.props.styles.bmIcon)\n };\n icon = _react2['default'].cloneElement(this.props.customIcon, extraProps);\n } else {\n icon = _react2['default'].createElement(\n 'span',\n null,\n [0, 1, 2].map(function (bar) {\n return _react2['default'].createElement('span', {\n key: bar,\n className: ('bm-burger-bars ' + _this.props.barClassName + ' ' + (_this.state.hover ? 'bm-burger-bars-hover' : '')).trim(),\n style: _extends({}, _this.getLineStyle(bar), _this.props.styles.bmBurgerBars)\n });\n })\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n {\n className: ('bm-burger-button ' + this.props.className).trim(),\n style: _extends({ zIndex: 1000 }, this.props.styles.bmBurgerButton)\n },\n _react2['default'].createElement(\n 'button',\n {\n type: 'button',\n id: 'react-burger-menu-btn',\n onClick: this.props.onClick,\n onMouseOver: function () {\n _this.setState({ hover: true });\n if (_this.props.onIconHoverChange) {\n _this.props.onIconHoverChange({ isMouseIn: true });\n }\n },\n onMouseOut: function () {\n _this.setState({ hover: false });\n if (_this.props.onIconHoverChange) {\n _this.props.onIconHoverChange({ isMouseIn: false });\n }\n },\n style: buttonStyle\n },\n 'Open Menu'\n ),\n icon\n );\n }\n }]);\n\n return BurgerIcon;\n})(_react.Component);\n\nexports['default'] = BurgerIcon;\n\nBurgerIcon.propTypes = {\n barClassName: _propTypes2['default'].string,\n customIcon: _propTypes2['default'].element,\n styles: _propTypes2['default'].object\n};\n\nBurgerIcon.defaultProps = {\n barClassName: '',\n className: '',\n styles: {}\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar CrossIcon = (function (_Component) {\n _inherits(CrossIcon, _Component);\n\n function CrossIcon() {\n _classCallCheck(this, CrossIcon);\n\n _get(Object.getPrototypeOf(CrossIcon.prototype), 'constructor', this).apply(this, arguments);\n }\n\n _createClass(CrossIcon, [{\n key: 'getCrossStyle',\n value: function getCrossStyle(type) {\n return {\n position: 'absolute',\n width: 3,\n height: 14,\n transform: type === 'before' ? 'rotate(45deg)' : 'rotate(-45deg)'\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _this = this;\n\n var icon;\n var buttonWrapperStyle = {\n position: 'absolute',\n width: 24,\n height: 24,\n right: 8,\n top: 8\n };\n var buttonStyle = {\n position: 'absolute',\n left: 0,\n top: 0,\n zIndex: 1,\n width: '100%',\n height: '100%',\n margin: 0,\n padding: 0,\n border: 'none',\n fontSize: 0,\n background: 'transparent',\n cursor: 'pointer'\n };\n\n if (this.props.customIcon) {\n var extraProps = {\n className: ('bm-cross ' + (this.props.customIcon.props.className || '')).trim(),\n style: _extends({ width: '100%', height: '100%' }, this.props.styles.bmCross)\n };\n icon = _react2['default'].cloneElement(this.props.customIcon, extraProps);\n } else {\n icon = _react2['default'].createElement(\n 'span',\n { style: { position: 'absolute', top: '6px', right: '14px' } },\n ['before', 'after'].map(function (type, i) {\n return _react2['default'].createElement('span', {\n key: i,\n className: ('bm-cross ' + _this.props.crossClassName).trim(),\n style: _extends({}, _this.getCrossStyle(type), _this.props.styles.bmCross)\n });\n })\n );\n }\n\n return _react2['default'].createElement(\n 'div',\n {\n className: ('bm-cross-button ' + this.props.className).trim(),\n style: _extends({}, buttonWrapperStyle, this.props.styles.bmCrossButton)\n },\n _react2['default'].createElement(\n 'button',\n _extends({\n type: 'button',\n id: 'react-burger-cross-btn',\n onClick: this.props.onClick,\n style: buttonStyle\n }, !this.props.isOpen && { tabIndex: -1 }),\n 'Close Menu'\n ),\n icon\n );\n }\n }]);\n\n return CrossIcon;\n})(_react.Component);\n\nexports['default'] = CrossIcon;\n\nCrossIcon.propTypes = {\n crossClassName: _propTypes2['default'].string,\n customIcon: _propTypes2['default'].element,\n isOpen: _propTypes2['default'].bool,\n styles: _propTypes2['default'].object\n};\n\nCrossIcon.defaultProps = {\n crossClassName: '',\n className: '',\n styles: {},\n isOpen: false\n};\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nvar styles = {\n overlay: function overlay(isOpen) {\n return {\n position: 'fixed',\n zIndex: 1000,\n width: '100%',\n height: '100%',\n background: 'rgba(0, 0, 0, 0.3)',\n opacity: isOpen ? 1 : 0,\n MozTransform: isOpen ? '' : 'translate3d(100%, 0, 0)',\n MsTransform: isOpen ? '' : 'translate3d(100%, 0, 0)',\n OTransform: isOpen ? '' : 'translate3d(100%, 0, 0)',\n WebkitTransform: isOpen ? '' : 'translate3d(100%, 0, 0)',\n transform: isOpen ? '' : 'translate3d(100%, 0, 0)',\n transition: isOpen ? 'opacity 0.3s' : 'opacity 0.3s, transform 0s 0.3s'\n };\n },\n\n menuWrap: function menuWrap(isOpen, width, right) {\n return {\n position: 'fixed',\n right: right ? 0 : 'inherit',\n zIndex: 1100,\n width: width,\n height: '100%',\n MozTransform: isOpen ? '' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n MsTransform: isOpen ? '' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n OTransform: isOpen ? '' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n transform: isOpen ? '' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n transition: 'all 0.5s'\n };\n },\n\n menu: function menu() {\n return {\n height: '100%',\n boxSizing: 'border-box',\n overflow: 'auto'\n };\n },\n\n itemList: function itemList() {\n return {\n height: '100%'\n };\n },\n\n item: function item() {\n return {\n display: 'block'\n };\n }\n};\n\nexports['default'] = styles;\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\nexports.focusOnFirstMenuItem = focusOnFirstMenuItem;\nexports.focusOnLastMenuItem = focusOnLastMenuItem;\nexports.focusOnCrossButton = focusOnCrossButton;\nexports.focusOnMenuButton = focusOnMenuButton;\nexports.focusOnMenuItem = focusOnMenuItem;\nexports.focusOnNextMenuItem = focusOnNextMenuItem;\nexports.focusOnPreviousMenuItem = focusOnPreviousMenuItem;\n\nfunction focusOnFirstMenuItem() {\n var firstItem = Array.from(document.getElementsByClassName('bm-item')).shift();\n if (firstItem) {\n firstItem.focus();\n }\n}\n\nfunction focusOnLastMenuItem() {\n var lastItem = Array.from(document.getElementsByClassName('bm-item')).pop();\n if (lastItem) {\n lastItem.focus();\n }\n}\n\nfunction focusOnCrossButton() {\n var crossButton = document.getElementById('react-burger-cross-btn');\n if (crossButton) {\n crossButton.focus();\n }\n}\n\nfunction focusOnMenuButton() {\n var menuButton = document.getElementById('react-burger-menu-btn');\n if (menuButton) {\n menuButton.focus();\n }\n}\n\nfunction focusOnMenuItem(siblingType) {\n if (document.activeElement.className.includes('bm-item')) {\n var sibling = document.activeElement[siblingType];\n if (sibling) {\n sibling.focus();\n } else {\n focusOnCrossButton();\n }\n } else {\n if (siblingType === 'previousElementSibling') {\n focusOnLastMenuItem();\n } else {\n focusOnFirstMenuItem();\n }\n }\n}\n\nfunction focusOnNextMenuItem() {\n focusOnMenuItem('nextElementSibling');\n}\n\nfunction focusOnPreviousMenuItem() {\n focusOnMenuItem('previousElementSibling');\n}","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nexports['default'] = function () {\n var Snap = undefined;\n try {\n Snap = require('snapsvg-cjs');\n } finally {\n return Snap;\n }\n};\n\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar pxToNum = function pxToNum(val) {\n return parseInt(val.slice(0, -2), 10);\n};\nexports.pxToNum = pxToNum;","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = require('react-dom');\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _helpersBaseStyles = require('./helpers/baseStyles');\n\nvar _helpersBaseStyles2 = _interopRequireDefault(_helpersBaseStyles);\n\nvar _helpersDom = require('./helpers/dom');\n\nvar _componentsBurgerIcon = require('./components/BurgerIcon');\n\nvar _componentsBurgerIcon2 = _interopRequireDefault(_componentsBurgerIcon);\n\nvar _componentsCrossIcon = require('./components/CrossIcon');\n\nvar _componentsCrossIcon2 = _interopRequireDefault(_componentsCrossIcon);\n\nexports['default'] = function (styles) {\n if (!styles) {\n throw new Error('No styles supplied');\n }\n\n var ARROW_DOWN = 'ArrowDown';\n var ARROW_UP = 'ArrowUp';\n var ESCAPE = 'Escape';\n var SPACE = ' ';\n var HOME = 'Home';\n var END = 'End';\n\n function usePrevious(value) {\n var ref = _react2['default'].useRef(value);\n _react2['default'].useEffect(function () {\n ref.current = value;\n });\n return ref.current;\n }\n\n var Menu = function Menu(props) {\n var _React$useState = _react2['default'].useState(false);\n\n var _React$useState2 = _slicedToArray(_React$useState, 2);\n\n var isOpen = _React$useState2[0];\n var setIsOpen = _React$useState2[1];\n\n var timeoutId = _react2['default'].useRef();\n var toggleOptions = _react2['default'].useRef({});\n var prevIsOpenProp = usePrevious(props.isOpen);\n\n _react2['default'].useEffect(function () {\n if (props.isOpen) {\n toggleMenu({ isOpen: true, noStateChange: true });\n }\n\n return function cleanup() {\n applyWrapperStyles(false);\n clearCurrentTimeout();\n };\n }, []);\n\n _react2['default'].useEffect(function () {\n var wasToggled = typeof props.isOpen !== 'undefined' && props.isOpen !== isOpen && props.isOpen !== prevIsOpenProp;\n\n if (wasToggled) {\n toggleMenu();\n // Toggling changes SVG animation requirements, so defer these until next update\n return;\n }\n\n if (styles.svg) {\n (function () {\n var morphShape = document.getElementById('bm-morph-shape');\n var path = styles.svg.lib(morphShape).select('path');\n\n if (isOpen) {\n // Animate SVG path\n styles.svg.animate(path);\n } else {\n // Reset path (timeout ensures animation happens off screen)\n setTimeout(function () {\n path.attr('d', styles.svg.pathInitial);\n }, 300);\n }\n })();\n }\n });\n\n _react2['default'].useEffect(function () {\n var _toggleOptions$current = toggleOptions.current;\n var noStateChange = _toggleOptions$current.noStateChange;\n var focusOnLastItem = _toggleOptions$current.focusOnLastItem;\n\n if (!noStateChange) {\n props.onStateChange({ isOpen: isOpen });\n }\n\n if (!props.disableAutoFocus) {\n // For accessibility reasons, ensures that when we toggle open,\n // we focus the first or last menu item according to given parameter\n if (isOpen) {\n focusOnLastItem ? (0, _helpersDom.focusOnLastMenuItem)() : (0, _helpersDom.focusOnFirstMenuItem)();\n } else {\n if (document.activeElement) {\n document.activeElement.blur();\n } else {\n document.body.blur(); // Needed for IE\n }\n }\n }\n\n // Timeout ensures wrappers are cleared after animation finishes\n clearCurrentTimeout();\n timeoutId.current = setTimeout(function () {\n timeoutId.current = null;\n if (!isOpen) {\n applyWrapperStyles(false);\n }\n }, 500);\n\n // Bind keydown handlers (or custom function if supplied)\n var defaultOnKeyDown = isOpen ? onKeyDownOpen : onKeyDownClosed;\n var onKeyDown = props.customOnKeyDown || defaultOnKeyDown;\n window.addEventListener('keydown', onKeyDown);\n\n return function cleanup() {\n window.removeEventListener('keydown', onKeyDown);\n };\n }, [isOpen]);\n\n function toggleMenu() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n toggleOptions.current = options;\n\n applyWrapperStyles();\n\n // Ensures wrapper styles are applied before the menu is toggled\n setTimeout(function () {\n setIsOpen(function (open) {\n return typeof options.isOpen !== 'undefined' ? options.isOpen : !open;\n });\n });\n }\n\n function open() {\n if (typeof props.onOpen === 'function') {\n props.onOpen();\n } else {\n toggleMenu();\n }\n }\n\n function close() {\n if (typeof props.onClose === 'function') {\n props.onClose();\n } else {\n toggleMenu();\n }\n }\n\n function getStyle(style, index) {\n var width = props.width;\n var right = props.right;\n\n var formattedWidth = typeof width !== 'string' ? width + 'px' : width;\n return style(isOpen, formattedWidth, right, index);\n }\n\n // Builds styles incrementally for a given element\n function getStyles(el, index, inline) {\n var propName = 'bm' + el.replace(el.charAt(0), el.charAt(0).toUpperCase());\n\n // Set base styles\n var output = _helpersBaseStyles2['default'][el] ? getStyle(_helpersBaseStyles2['default'][el]) : {};\n\n // Add animation-specific styles\n if (styles[el]) {\n output = _extends({}, output, getStyle(styles[el], index + 1));\n }\n\n // Add custom styles\n if (props.styles[propName]) {\n output = _extends({}, output, props.styles[propName]);\n }\n\n // Add element inline styles\n if (inline) {\n output = _extends({}, output, inline);\n }\n\n // Remove transition if required\n // (useful if rendering open initially)\n if (props.noTransition) {\n delete output.transition;\n }\n\n return output;\n }\n\n // Sets or unsets styles on DOM elements outside the menu component\n // This is necessary for correct page interaction with some of the menus\n // Throws and returns if the required external elements don't exist,\n // which means any external page animations won't be applied\n function handleExternalWrapper(id, wrapperStyles, set) {\n var wrapper = document.getElementById(id);\n\n if (!wrapper) {\n console.error(\"Element with ID '\" + id + \"' not found\");\n return;\n }\n\n var builtStyles = getStyle(wrapperStyles);\n\n for (var prop in builtStyles) {\n if (builtStyles.hasOwnProperty(prop)) {\n wrapper.style[prop] = set ? builtStyles[prop] : '';\n }\n }\n\n // Prevent any horizontal scroll\n // Only set overflow-x as an inline style if htmlClassName or\n // bodyClassName is not passed in. Otherwise, it is up to the caller to\n // decide if they want to set the overflow style in CSS using the custom\n // class names\n var applyOverflow = function applyOverflow(el) {\n return el.style['overflow-x'] = set ? 'hidden' : '';\n };\n if (!props.htmlClassName) {\n applyOverflow(document.querySelector('html'));\n }\n if (!props.bodyClassName) {\n applyOverflow(document.querySelector('body'));\n }\n }\n\n // Applies component-specific styles to external wrapper elements\n function applyWrapperStyles() {\n var set = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\n var applyClass = function applyClass(el, className) {\n return el.classList[set ? 'add' : 'remove'](className);\n };\n\n if (props.htmlClassName) {\n applyClass(document.querySelector('html'), props.htmlClassName);\n }\n if (props.bodyClassName) {\n applyClass(document.querySelector('body'), props.bodyClassName);\n }\n\n if (styles.pageWrap && props.pageWrapId) {\n handleExternalWrapper(props.pageWrapId, styles.pageWrap, set);\n }\n\n if (styles.outerContainer && props.outerContainerId) {\n handleExternalWrapper(props.outerContainerId, styles.outerContainer, set);\n }\n\n var menuWrap = document.querySelector('.bm-menu-wrap');\n if (menuWrap) {\n if (set) {\n menuWrap.removeAttribute('hidden');\n } else {\n menuWrap.setAttribute('hidden', true);\n }\n }\n }\n\n // Avoids potentially attempting to update an unmounted component\n function clearCurrentTimeout() {\n if (timeoutId.current) {\n clearTimeout(timeoutId.current);\n }\n }\n\n function onKeyDownOpen(e) {\n e = e || window.event;\n switch (e.key) {\n case ESCAPE:\n // Close on ESC, unless disabled\n if (!props.disableCloseOnEsc) {\n close();\n (0, _helpersDom.focusOnMenuButton)();\n }\n break;\n case ARROW_DOWN:\n (0, _helpersDom.focusOnNextMenuItem)();\n break;\n case ARROW_UP:\n (0, _helpersDom.focusOnPreviousMenuItem)();\n break;\n case HOME:\n (0, _helpersDom.focusOnFirstMenuItem)();\n break;\n case END:\n (0, _helpersDom.focusOnLastMenuItem)();\n break;\n }\n }\n\n function onKeyDownClosed(e) {\n e = e || window.event;\n // Key downs came from menu button\n if (e.target === document.getElementById('react-burger-menu-btn')) {\n switch (e.key) {\n case ARROW_DOWN:\n case SPACE:\n // If down arrow, space or enter, open menu and focus on first menuitem\n toggleMenu();\n break;\n case ARROW_UP:\n // If arrow up, open menu and focus on last menuitem\n toggleMenu({ focusOnLastItem: true });\n break;\n }\n }\n }\n\n function handleOverlayClick() {\n if (props.disableOverlayClick === true || typeof props.disableOverlayClick === 'function' && props.disableOverlayClick()) {\n return;\n } else {\n close();\n }\n }\n\n return _react2['default'].createElement(\n 'div',\n null,\n !props.noOverlay && _react2['default'].createElement('div', {\n className: ('bm-overlay ' + props.overlayClassName).trim(),\n onClick: handleOverlayClick,\n style: getStyles('overlay')\n }),\n props.customBurgerIcon !== false && _react2['default'].createElement(\n 'div',\n { style: getStyles('burgerIcon') },\n _react2['default'].createElement(_componentsBurgerIcon2['default'], {\n onClick: open,\n styles: props.styles,\n customIcon: props.customBurgerIcon,\n className: props.burgerButtonClassName,\n barClassName: props.burgerBarClassName,\n onIconStateChange: props.onIconStateChange\n })\n ),\n _react2['default'].createElement(\n 'div',\n {\n id: props.id,\n className: ('bm-menu-wrap ' + props.className).trim(),\n style: getStyles('menuWrap'),\n 'aria-hidden': !isOpen\n },\n styles.svg && _react2['default'].createElement(\n 'div',\n {\n id: 'bm-morph-shape',\n className: ('bm-morph-shape ' + props.morphShapeClassName).trim(),\n style: getStyles('morphShape')\n },\n _react2['default'].createElement(\n 'svg',\n {\n width: '100%',\n height: '100%',\n viewBox: '0 0 100 800',\n preserveAspectRatio: 'none'\n },\n _react2['default'].createElement('path', { d: styles.svg.pathInitial })\n )\n ),\n _react2['default'].createElement(\n 'div',\n {\n className: ('bm-menu ' + props.menuClassName).trim(),\n style: getStyles('menu')\n },\n _react2['default'].createElement(props.itemListElement, {\n className: ('bm-item-list ' + props.itemListClassName).trim(),\n style: getStyles('itemList')\n }, _react2['default'].Children.map(props.children, function (item, index) {\n if (item) {\n var classList = ['bm-item', props.itemClassName, item.props.className].filter(function (className) {\n return !!className;\n }).join(' ');\n var extraProps = _extends({\n key: index,\n className: classList,\n style: getStyles('item', index, item.props.style)\n }, !isOpen && { tabIndex: -1 });\n return _react2['default'].cloneElement(item, extraProps);\n }\n }))\n ),\n props.customCrossIcon !== false && _react2['default'].createElement(\n 'div',\n { style: getStyles('closeButton') },\n _react2['default'].createElement(_componentsCrossIcon2['default'], {\n onClick: close,\n styles: props.styles,\n customIcon: props.customCrossIcon,\n className: props.crossButtonClassName,\n crossClassName: props.crossClassName,\n isOpen: isOpen\n })\n )\n )\n );\n };\n\n Menu.propTypes = {\n bodyClassName: _propTypes2['default'].string,\n burgerBarClassName: _propTypes2['default'].string,\n burgerButtonClassName: _propTypes2['default'].string,\n className: _propTypes2['default'].string,\n crossButtonClassName: _propTypes2['default'].string,\n crossClassName: _propTypes2['default'].string,\n customBurgerIcon: _propTypes2['default'].oneOfType([_propTypes2['default'].element, _propTypes2['default'].oneOf([false])]),\n customCrossIcon: _propTypes2['default'].oneOfType([_propTypes2['default'].element, _propTypes2['default'].oneOf([false])]),\n customOnKeyDown: _propTypes2['default'].func,\n disableAutoFocus: _propTypes2['default'].bool,\n disableCloseOnEsc: _propTypes2['default'].bool,\n disableOverlayClick: _propTypes2['default'].oneOfType([_propTypes2['default'].bool, _propTypes2['default'].func]),\n htmlClassName: _propTypes2['default'].string,\n id: _propTypes2['default'].string,\n isOpen: _propTypes2['default'].bool,\n itemClassName: _propTypes2['default'].string,\n itemListClassName: _propTypes2['default'].string,\n itemListElement: _propTypes2['default'].oneOf(['div', 'nav']),\n menuClassName: _propTypes2['default'].string,\n morphShapeClassName: _propTypes2['default'].string,\n noOverlay: _propTypes2['default'].bool,\n noTransition: _propTypes2['default'].bool,\n onClose: _propTypes2['default'].func,\n onIconHoverChange: _propTypes2['default'].func,\n onOpen: _propTypes2['default'].func,\n onStateChange: _propTypes2['default'].func,\n outerContainerId: styles && styles.outerContainer ? _propTypes2['default'].string.isRequired : _propTypes2['default'].string,\n overlayClassName: _propTypes2['default'].string,\n pageWrapId: styles && styles.pageWrap ? _propTypes2['default'].string.isRequired : _propTypes2['default'].string,\n right: _propTypes2['default'].bool,\n styles: _propTypes2['default'].object,\n width: _propTypes2['default'].oneOfType([_propTypes2['default'].number, _propTypes2['default'].string])\n };\n\n Menu.defaultProps = {\n bodyClassName: '',\n burgerBarClassName: '',\n burgerButtonClassName: '',\n className: '',\n crossButtonClassName: '',\n crossClassName: '',\n disableAutoFocus: false,\n disableCloseOnEsc: false,\n htmlClassName: '',\n id: '',\n itemClassName: '',\n itemListClassName: '',\n menuClassName: '',\n morphShapeClassName: '',\n noOverlay: false,\n noTransition: false,\n onStateChange: function onStateChange() {},\n outerContainerId: '',\n overlayClassName: '',\n pageWrapId: '',\n styles: {},\n width: 300,\n onIconHoverChange: function onIconHoverChange() {},\n itemListElement: 'nav'\n };\n\n return Menu;\n};\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersSnapsvgImporter = require('../helpers/snapsvgImporter');\n\nvar _helpersSnapsvgImporter2 = _interopRequireDefault(_helpersSnapsvgImporter);\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar _helpersUtils = require('../helpers/utils');\n\nvar BUBBLE_WIDTH = 140;\n\nvar styles = {\n svg: {\n lib: _helpersSnapsvgImporter2['default'],\n pathInitial: 'M-7.312,0H0c0,0,0,113.839,0,400c0,264.506,0,400,0,400h-7.312V0z',\n pathOpen: 'M-7.312,0H15c0,0,66,113.339,66,399.5C81,664.006,15,800,15,800H-7.312V0z;M-7.312,0H100c0,0,0,113.839,0,400c0,264.506,0,400,0,400H-7.312V0z',\n animate: function animate(path) {\n var pos = 0;\n var steps = this.pathOpen.split(';');\n var stepsTotal = steps.length;\n var mina = window.mina;\n\n var nextStep = function nextStep() {\n if (pos > stepsTotal - 1) return;\n\n path.animate({ path: steps[pos] }, pos === 0 ? 400 : 500, pos === 0 ? mina.easein : mina.elastic, function () {\n nextStep();\n });\n\n pos++;\n };\n\n nextStep();\n }\n },\n\n morphShape: function morphShape(isOpen, width, right) {\n return {\n position: 'absolute',\n width: '100%',\n height: '100%',\n right: right ? 'inherit' : 0,\n left: right ? 0 : 'inherit',\n MozTransform: right ? 'rotateY(180deg)' : 'rotateY(0deg)',\n MsTransform: right ? 'rotateY(180deg)' : 'rotateY(0deg)',\n OTransform: right ? 'rotateY(180deg)' : 'rotateY(0deg)',\n WebkitTransform: right ? 'rotateY(180deg)' : 'rotateY(0deg)',\n transform: right ? 'rotateY(180deg)' : 'rotateY(0deg)'\n };\n },\n\n menuWrap: function menuWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n MsTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n OTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n WebkitTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n transform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n transition: isOpen ? 'transform 0.4s 0s' : 'transform 0.4s'\n };\n },\n\n menu: function menu(isOpen, width, right) {\n var finalWidth = (0, _helpersUtils.pxToNum)(width) - BUBBLE_WIDTH;\n return {\n position: 'fixed',\n MozTransform: isOpen ? '' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n MsTransform: isOpen ? '' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n OTransform: isOpen ? '' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n transform: isOpen ? '' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n transition: isOpen ? 'opacity 0.1s 0.4s cubic-bezier(.17, .67, .1, 1.27), transform 0.1s 0.4s cubic-bezier(.17, .67, .1, 1.27)' : 'opacity 0s 0.3s cubic-bezier(.17, .67, .1, 1.27), transform 0s 0.3s cubic-bezier(.17, .67, .1, 1.27)',\n opacity: isOpen ? 1 : 0\n };\n },\n\n item: function item(isOpen, width, right, nthChild) {\n var finalWidth = (0, _helpersUtils.pxToNum)(width) - BUBBLE_WIDTH;\n return {\n MozTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n MsTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n OTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n WebkitTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n transform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n transition: isOpen ? 'opacity 0.3s 0.4s, transform 0.3s 0.4s' : 'opacity 0s 0.3s cubic-bezier(.17, .67, .1, 1.27), transform 0s 0.3s cubic-bezier(.17, .67, .1, 1.27)',\n opacity: isOpen ? 1 : 0\n };\n },\n\n closeButton: function closeButton(isOpen, width, right) {\n var finalWidth = (0, _helpersUtils.pxToNum)(width) - BUBBLE_WIDTH;\n return {\n MozTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n MsTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n OTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n WebkitTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n transform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(' + finalWidth + ', 0, 0)' : 'translate3d(-' + finalWidth + ', 0, 0)',\n transition: isOpen ? 'opacity 0.3s 0.4s cubic-bezier(.17, .67, .1, 1.27), transform 0.3s 0.4s cubic-bezier(.17, .67, .1, 1.27)' : 'opacity 0s 0.3s cubic-bezier(.17, .67, .1, 1.27), transform 0s 0.3s cubic-bezier(.17, .67, .1, 1.27)',\n opacity: isOpen ? 1 : 0\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersSnapsvgImporter = require('../helpers/snapsvgImporter');\n\nvar _helpersSnapsvgImporter2 = _interopRequireDefault(_helpersSnapsvgImporter);\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar _helpersUtils = require('../helpers/utils');\n\nvar MORPH_SHAPE_WIDTH = 120;\n\nvar styles = {\n svg: {\n lib: _helpersSnapsvgImporter2['default'],\n pathInitial: 'M-1,0h101c0,0-97.833,153.603-97.833,396.167C2.167,627.579,100,800,100,800H-1V0z',\n pathOpen: 'M-1,0h101c0,0,0-1,0,395c0,404,0,405,0,405H-1V0z',\n animate: function animate(path) {\n path.animate({ path: this.pathOpen }, 400, window.mina.easeinout);\n }\n },\n\n morphShape: function morphShape(isOpen, width, right) {\n return {\n position: 'absolute',\n width: MORPH_SHAPE_WIDTH,\n height: '100%',\n right: right ? 'inherit' : 0,\n left: right ? 0 : 'inherit',\n MozTransform: right ? 'rotateY(180deg)' : '',\n MsTransform: right ? 'rotateY(180deg)' : '',\n OTransform: right ? 'rotateY(180deg)' : '',\n WebkitTransform: right ? 'rotateY(180deg)' : '',\n transform: right ? 'rotateY(180deg)' : ''\n };\n },\n\n menuWrap: function menuWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n MsTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n OTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n WebkitTransform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n transform: isOpen ? 'translate3d(0, 0, 0)' : right ? 'translate3d(100%, 0, 0)' : 'translate3d(-100%, 0, 0)',\n transition: 'all 0.3s'\n };\n },\n\n menu: function menu(isOpen, width, right) {\n return {\n position: 'fixed',\n right: right ? 0 : 'inherit',\n width: (0, _helpersUtils.pxToNum)(width) - MORPH_SHAPE_WIDTH,\n whiteSpace: 'nowrap',\n boxSizing: 'border-box',\n overflow: 'visible'\n };\n },\n\n itemList: function itemList(isOpen, width, right) {\n if (right) {\n return {\n position: 'relative',\n left: '-110px',\n width: '170%',\n overflow: 'auto'\n };\n }\n },\n\n pageWrap: function pageWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, 0)' : 'translate3d(100px, 0, 0)',\n MsTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, 0)' : 'translate3d(100px, 0, 0)',\n OTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, 0)' : 'translate3d(100px, 0, 0)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, 0)' : 'translate3d(100px, 0, 0)',\n transform: isOpen ? '' : right ? 'translate3d(-100px, 0, 0)' : 'translate3d(100px, 0, 0)',\n transition: isOpen ? 'all 0.3s' : 'all 0.3s 0.1s'\n };\n },\n\n outerContainer: function outerContainer(isOpen) {\n return {\n overflow: isOpen ? '' : 'hidden'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {\n menuWrap: function menuWrap(isOpen) {\n return {\n MozTransform: isOpen ? '' : 'translate3d(0, -100%, 0)',\n MsTransform: isOpen ? '' : 'translate3d(0, -100%, 0)',\n OTransform: isOpen ? '' : 'translate3d(0, -100%, 0)',\n WebkitTransform: isOpen ? '' : 'translate3d(0, -100%, 0)',\n transform: isOpen ? '' : 'translate3d(0, -100%, 0)',\n transition: 'all 0.5s ease-in-out'\n };\n },\n\n pageWrap: function pageWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n MsTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n OTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n transform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n transition: 'all 0.5s'\n };\n },\n\n outerContainer: function outerContainer(isOpen) {\n return {\n perspective: '1500px',\n perspectiveOrigin: '0% 50%',\n overflow: isOpen ? '' : 'hidden'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {\n pageWrap: function pageWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n MsTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n OTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n transform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n transition: 'all 0.5s'\n };\n },\n\n outerContainer: function outerContainer(isOpen) {\n return {\n overflow: isOpen ? '' : 'hidden'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {\n pageWrap: function pageWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0) rotateY(15deg)' : 'translate3d(' + width + ', 0, 0) rotateY(-15deg)',\n MsTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0) rotateY(15deg)' : 'translate3d(' + width + ', 0, 0) rotateY(-15deg)',\n OTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0) rotateY(15deg)' : 'translate3d(' + width + ', 0, 0) rotateY(-15deg)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0) rotateY(15deg)' : 'translate3d(' + width + ', 0, 0) rotateY(-15deg)',\n transform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0) rotateY(15deg)' : 'translate3d(' + width + ', 0, 0) rotateY(-15deg)',\n transformOrigin: right ? '100% 50%' : '0% 50%',\n transformStyle: 'preserve-3d',\n transition: 'all 0.5s'\n };\n },\n\n outerContainer: function outerContainer(isOpen) {\n return {\n perspective: '1500px',\n overflow: isOpen ? '' : 'hidden'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {\n menuWrap: function menuWrap(isOpen, width, right) {\n return {\n MozTransform: 'translate3d(0, 0, 0)',\n MsTransform: 'translate3d(0, 0, 0)',\n OTransform: 'translate3d(0, 0, 0)',\n WebkitTransform: 'translate3d(0, 0, 0)',\n transform: 'translate3d(0, 0, 0)',\n zIndex: isOpen ? 1000 : -1\n };\n },\n\n overlay: function overlay(isOpen, width, right) {\n return {\n zIndex: 1400,\n MozTransform: isOpen ? right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n MsTransform: isOpen ? right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n OTransform: isOpen ? right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n WebkitTransform: isOpen ? right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n transform: isOpen ? right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n transition: 'all 0.5s',\n visibility: isOpen ? 'visible' : 'hidden'\n };\n },\n\n pageWrap: function pageWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n MsTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n OTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n transform: isOpen ? '' : right ? 'translate3d(-' + width + ', 0, 0)' : 'translate3d(' + width + ', 0, 0)',\n transition: 'all 0.5s',\n zIndex: 1200,\n position: 'relative'\n };\n },\n\n burgerIcon: function burgerIcon(isOpen, width, right) {\n return {\n MozTransform: isOpen ? right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n MsTransform: isOpen ? right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n OTransform: isOpen ? right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n WebkitTransform: isOpen ? right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n transform: isOpen ? right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)' : 'translate3d(0, 0, 0)',\n transition: 'all 0.1s',\n position: 'relative',\n zIndex: 1300\n };\n },\n\n outerContainer: function outerContainer(isOpen) {\n return {\n overflow: isOpen ? '' : 'hidden'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {\n pageWrap: function pageWrap(isOpen, width) {\n return {\n MozTransform: isOpen ? '' : 'translate3d(0, 0, -' + width + ')',\n MsTransform: isOpen ? '' : 'translate3d(0, 0, -' + width + ')',\n OTransform: isOpen ? '' : 'translate3d(0, 0, -' + width + ')',\n WebkitTransform: isOpen ? '' : 'translate3d(0, 0, -' + width + ')',\n transform: isOpen ? '' : 'translate3d(0, 0, -' + width + ')',\n transformOrigin: '100%',\n transformStyle: 'preserve-3d',\n transition: 'all 0.5s'\n };\n },\n\n outerContainer: function outerContainer() {\n return {\n perspective: '1500px'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {\n pageWrap: function pageWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, -600px) rotateY(20deg)' : 'translate3d(100px, 0, -600px) rotateY(-20deg)',\n MsTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, -600px) rotateY(20deg)' : 'translate3d(100px, 0, -600px) rotateY(-20deg)',\n OTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, -600px) rotateY(20deg)' : 'translate3d(100px, 0, -600px) rotateY(-20deg)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(-100px, 0, -600px) rotateY(20deg)' : 'translate3d(100px, 0, -600px) rotateY(-20deg)',\n transform: isOpen ? '' : right ? 'translate3d(-100px, 0, -600px) rotateY(20deg)' : 'translate3d(100px, 0, -600px) rotateY(-20deg)',\n transformStyle: 'preserve-3d',\n transition: 'all 0.5s',\n overflow: isOpen ? '' : 'hidden'\n };\n },\n\n outerContainer: function outerContainer(isOpen) {\n return {\n perspective: '1500px',\n overflow: isOpen ? '' : 'hidden'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n value: true\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _menuFactory = require('../menuFactory');\n\nvar _menuFactory2 = _interopRequireDefault(_menuFactory);\n\nvar styles = {\n menuWrap: function menuWrap(isOpen, width, right) {\n return {\n MozTransform: isOpen ? '' : right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)',\n MsTransform: isOpen ? '' : right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)',\n OTransform: isOpen ? '' : right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)',\n WebkitTransform: isOpen ? '' : right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)',\n transform: isOpen ? '' : right ? 'translate3d(' + width + ', 0, 0)' : 'translate3d(-' + width + ', 0, 0)',\n transition: isOpen ? 'transform 0.8s cubic-bezier(0.7, 0, 0.3, 1)' : 'transform 0.4s cubic-bezier(0.7, 0, 0.3, 1)'\n };\n },\n\n item: function item(isOpen, width, right, nthChild) {\n return {\n MozTransform: isOpen ? '' : 'translate3d(0, ' + nthChild * 500 + 'px, 0)',\n MsTransform: isOpen ? '' : 'translate3d(0, ' + nthChild * 500 + 'px, 0)',\n OTransform: isOpen ? '' : 'translate3d(0, ' + nthChild * 500 + 'px, 0)',\n WebkitTransform: isOpen ? '' : 'translate3d(0, ' + nthChild * 500 + 'px, 0)',\n transform: isOpen ? '' : 'translate3d(0, ' + nthChild * 500 + 'px, 0)',\n transition: isOpen ? 'transform 0.8s cubic-bezier(0.7, 0, 0.3, 1)' : 'transform 0s 0.2s cubic-bezier(0.7, 0, 0.3, 1)'\n };\n }\n};\n\nexports['default'] = (0, _menuFactory2['default'])(styles);\nmodule.exports = exports['default'];","/**\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&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(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=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(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=zh(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);th(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=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(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,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();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=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;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;Aj(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;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(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=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&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 Jj(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 Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);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(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(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 Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(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:Lg(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=Oj;Oj=!1;return n}\nfunction Qj(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&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(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 Sj(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 Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(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 Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(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 Wj(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(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(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(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(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=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=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)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(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)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(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*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=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()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(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);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();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,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(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:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(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=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(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),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(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(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(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=ch(-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);Sg(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);Sg(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}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(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 al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(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 wh(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 yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(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 qj(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 Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(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 bl(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 cl(a,b,c,d,e,f,g,h,k){a=new bl(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};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","window.eve = require('eve')\n\n// Copyright (c) 2017 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar mina = (function (eve) {\n var animations = {},\n requestAnimFrame = window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.oRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function (callback) {\n setTimeout(callback, 16, new Date().getTime());\n return true;\n },\n requestID,\n isArray = Array.isArray || function (a) {\n return a instanceof Array ||\n Object.prototype.toString.call(a) == \"[object Array]\";\n },\n idgen = 0,\n idprefix = \"M\" + (+new Date).toString(36),\n ID = function () {\n return idprefix + (idgen++).toString(36);\n },\n diff = function (a, b, A, B) {\n if (isArray(a)) {\n res = [];\n for (var i = 0, ii = a.length; i < ii; i++) {\n res[i] = diff(a[i], b, A[i], B);\n }\n return res;\n }\n var dif = (A - a) / (B - b);\n return function (bb) {\n return a + dif * (bb - b);\n };\n },\n timer = Date.now || function () {\n return +new Date;\n },\n sta = function (val) {\n var a = this;\n if (val == null) {\n return a.s;\n }\n var ds = a.s - val;\n a.b += a.dur * ds;\n a.B += a.dur * ds;\n a.s = val;\n },\n speed = function (val) {\n var a = this;\n if (val == null) {\n return a.spd;\n }\n a.spd = val;\n },\n duration = function (val) {\n var a = this;\n if (val == null) {\n return a.dur;\n }\n a.s = a.s * val / a.dur;\n a.dur = val;\n },\n stopit = function () {\n var a = this;\n delete animations[a.id];\n a.update();\n eve(\"mina.stop.\" + a.id, a);\n },\n pause = function () {\n var a = this;\n if (a.pdif) {\n return;\n }\n delete animations[a.id];\n a.update();\n a.pdif = a.get() - a.b;\n },\n resume = function () {\n var a = this;\n if (!a.pdif) {\n return;\n }\n a.b = a.get() - a.pdif;\n delete a.pdif;\n animations[a.id] = a;\n frame();\n },\n update = function () {\n var a = this,\n res;\n if (isArray(a.start)) {\n res = [];\n for (var j = 0, jj = a.start.length; j < jj; j++) {\n res[j] = +a.start[j] +\n (a.end[j] - a.start[j]) * a.easing(a.s);\n }\n } else {\n res = +a.start + (a.end - a.start) * a.easing(a.s);\n }\n a.set(res);\n },\n frame = function (timeStamp) {\n // Manual invokation?\n if (!timeStamp) {\n // Frame loop stopped?\n if (!requestID) {\n // Start frame loop...\n requestID = requestAnimFrame(frame);\n }\n return;\n }\n var len = 0;\n for (var i in animations) if (animations.hasOwnProperty(i)) {\n var a = animations[i],\n b = a.get(),\n res;\n len++;\n a.s = (b - a.b) / (a.dur / a.spd);\n if (a.s >= 1) {\n delete animations[i];\n a.s = 1;\n len--;\n (function (a) {\n setTimeout(function () {\n eve(\"mina.finish.\" + a.id, a);\n });\n }(a));\n }\n a.update();\n }\n requestID = len ? requestAnimFrame(frame) : false;\n },\n /*\\\n * mina\n [ method ]\n **\n * Generic animation of numbers\n **\n - a (number) start _slave_ number\n - A (number) end _slave_ number\n - b (number) start _master_ number (start time in general case)\n - B (number) end _master_ number (end time in general case)\n - get (function) getter of _master_ number (see @mina.time)\n - set (function) setter of _slave_ number\n - easing (function) #optional easing function, default is @mina.linear\n = (object) animation descriptor\n o {\n o id (string) animation id,\n o start (number) start _slave_ number,\n o end (number) end _slave_ number,\n o b (number) start _master_ number,\n o s (number) animation status (0..1),\n o dur (number) animation duration,\n o spd (number) animation speed,\n o get (function) getter of _master_ number (see @mina.time),\n o set (function) setter of _slave_ number,\n o easing (function) easing function, default is @mina.linear,\n o status (function) status getter/setter,\n o speed (function) speed getter/setter,\n o duration (function) duration getter/setter,\n o stop (function) animation stopper\n o pause (function) pauses the animation\n o resume (function) resumes the animation\n o update (function) calles setter with the right value of the animation\n o }\n \\*/\n mina = function (a, A, b, B, get, set, easing) {\n var anim = {\n id: ID(),\n start: a,\n end: A,\n b: b,\n s: 0,\n dur: B - b,\n spd: 1,\n get: get,\n set: set,\n easing: easing || mina.linear,\n status: sta,\n speed: speed,\n duration: duration,\n stop: stopit,\n pause: pause,\n resume: resume,\n update: update\n };\n animations[anim.id] = anim;\n var len = 0, i;\n for (i in animations) if (animations.hasOwnProperty(i)) {\n len++;\n if (len == 2) {\n break;\n }\n }\n len == 1 && frame();\n return anim;\n };\n /*\\\n * mina.time\n [ method ]\n **\n * Returns the current time. Equivalent to:\n | function () {\n | return (new Date).getTime();\n | }\n \\*/\n mina.time = timer;\n /*\\\n * mina.getById\n [ method ]\n **\n * Returns an animation by its id\n - id (string) animation's id\n = (object) See @mina\n \\*/\n mina.getById = function (id) {\n return animations[id] || null;\n };\n\n /*\\\n * mina.linear\n [ method ]\n **\n * Default linear easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.linear = function (n) {\n return n;\n };\n /*\\\n * mina.easeout\n [ method ]\n **\n * Easeout easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.easeout = function (n) {\n return Math.pow(n, 1.7);\n };\n /*\\\n * mina.easein\n [ method ]\n **\n * Easein easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.easein = function (n) {\n return Math.pow(n, .48);\n };\n /*\\\n * mina.easeinout\n [ method ]\n **\n * Easeinout easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.easeinout = function (n) {\n if (n == 1) {\n return 1;\n }\n if (n == 0) {\n return 0;\n }\n var q = .48 - n / 1.04,\n Q = Math.sqrt(.1734 + q * q),\n x = Q - q,\n X = Math.pow(Math.abs(x), 1 / 3) * (x < 0 ? -1 : 1),\n y = -Q - q,\n Y = Math.pow(Math.abs(y), 1 / 3) * (y < 0 ? -1 : 1),\n t = X + Y + .5;\n return (1 - t) * 3 * t * t + t * t * t;\n };\n /*\\\n * mina.backin\n [ method ]\n **\n * Backin easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.backin = function (n) {\n if (n == 1) {\n return 1;\n }\n var s = 1.70158;\n return n * n * ((s + 1) * n - s);\n };\n /*\\\n * mina.backout\n [ method ]\n **\n * Backout easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.backout = function (n) {\n if (n == 0) {\n return 0;\n }\n n = n - 1;\n var s = 1.70158;\n return n * n * ((s + 1) * n + s) + 1;\n };\n /*\\\n * mina.elastic\n [ method ]\n **\n * Elastic easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.elastic = function (n) {\n if (n == !!n) {\n return n;\n }\n return Math.pow(2, -10 * n) * Math.sin((n - .075) *\n (2 * Math.PI) / .3) + 1;\n };\n /*\\\n * mina.bounce\n [ method ]\n **\n * Bounce easing\n - n (number) input 0..1\n = (number) output 0..1\n \\*/\n mina.bounce = function (n) {\n var s = 7.5625,\n p = 2.75,\n l;\n if (n < 1 / p) {\n l = s * n * n;\n } else {\n if (n < 2 / p) {\n n -= 1.5 / p;\n l = s * n * n + .75;\n } else {\n if (n < 2.5 / p) {\n n -= 2.25 / p;\n l = s * n * n + .9375;\n } else {\n n -= 2.625 / p;\n l = s * n * n + .984375;\n }\n }\n }\n return l;\n };\n window.mina = mina;\n return mina;\n})(typeof eve == \"undefined\" ? function () {} : eve);\n\n// Copyright (c) 2013 - 2017 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n\nvar Snap = (function(root) {\nSnap.version = \"0.5.1\";\n/*\\\n * Snap\n [ method ]\n **\n * Creates a drawing surface or wraps existing SVG element.\n **\n - width (number|string) width of surface\n - height (number|string) height of surface\n * or\n - DOM (SVGElement) element to be wrapped into Snap structure\n * or\n - array (array) array of elements (will return set of elements)\n * or\n - query (string) CSS query selector\n = (object) @Element\n\\*/\nfunction Snap(w, h) {\n if (w) {\n if (w.nodeType) {\n return wrap(w);\n }\n if (is(w, \"array\") && Snap.set) {\n return Snap.set.apply(Snap, w);\n }\n if (w instanceof Element) {\n return w;\n }\n if (h == null) {\n try {\n w = glob.doc.querySelector(String(w));\n return wrap(w);\n } catch (e) {\n return null;\n }\n }\n }\n w = w == null ? \"100%\" : w;\n h = h == null ? \"100%\" : h;\n return new Paper(w, h);\n}\nSnap.toString = function () {\n return \"Snap v\" + this.version;\n};\nSnap._ = {};\nvar glob = {\n win: root.window,\n doc: root.window.document\n};\nSnap._.glob = glob;\nvar has = \"hasOwnProperty\",\n Str = String,\n toFloat = parseFloat,\n toInt = parseInt,\n math = Math,\n mmax = math.max,\n mmin = math.min,\n abs = math.abs,\n pow = math.pow,\n PI = math.PI,\n round = math.round,\n E = \"\",\n S = \" \",\n objectToString = Object.prototype.toString,\n ISURL = /^url\\(['\"]?([^\\)]+?)['\"]?\\)$/i,\n colourRegExp = /^\\s*((#[a-f\\d]{6})|(#[a-f\\d]{3})|rgba?\\(\\s*([\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+%?(?:\\s*,\\s*[\\d\\.]+%?)?)\\s*\\)|hsba?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\)|hsla?\\(\\s*([\\d\\.]+(?:deg|\\xb0|%)?\\s*,\\s*[\\d\\.]+%?\\s*,\\s*[\\d\\.]+(?:%?\\s*,\\s*[\\d\\.]+)?%?)\\s*\\))\\s*$/i,\n bezierrg = /^(?:cubic-)?bezier\\(([^,]+),([^,]+),([^,]+),([^\\)]+)\\)/,\n separator = Snap._.separator = /[,\\s]+/,\n whitespace = /[\\s]/g,\n commaSpaces = /[\\s]*,[\\s]*/,\n hsrg = {hs: 1, rg: 1},\n pathCommand = /([a-z])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\s]*,?[\\s]*)+)/ig,\n tCommand = /([rstm])[\\s,]*((-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?[\\s]*,?[\\s]*)+)/ig,\n pathValues = /(-?\\d*\\.?\\d*(?:e[\\-+]?\\d+)?)[\\s]*,?[\\s]*/ig,\n idgen = 0,\n idprefix = \"S\" + (+new Date).toString(36),\n ID = function (el) {\n return (el && el.type ? el.type : E) + idprefix + (idgen++).toString(36);\n },\n xlink = \"http://www.w3.org/1999/xlink\",\n xmlns = \"http://www.w3.org/2000/svg\",\n hub = {},\n /*\\\n * Snap.url\n [ method ]\n **\n * Wraps path into `\"url('')\"`.\n - value (string) path\n = (string) wrapped path\n \\*/\n URL = Snap.url = function (url) {\n return \"url('#\" + url + \"')\";\n };\n\nfunction $(el, attr) {\n if (attr) {\n if (el == \"#text\") {\n el = glob.doc.createTextNode(attr.text || attr[\"#text\"] || \"\");\n }\n if (el == \"#comment\") {\n el = glob.doc.createComment(attr.text || attr[\"#text\"] || \"\");\n }\n if (typeof el == \"string\") {\n el = $(el);\n }\n if (typeof attr == \"string\") {\n if (el.nodeType == 1) {\n if (attr.substring(0, 6) == \"xlink:\") {\n return el.getAttributeNS(xlink, attr.substring(6));\n }\n if (attr.substring(0, 4) == \"xml:\") {\n return el.getAttributeNS(xmlns, attr.substring(4));\n }\n return el.getAttribute(attr);\n } else if (attr == \"text\") {\n return el.nodeValue;\n } else {\n return null;\n }\n }\n if (el.nodeType == 1) {\n for (var key in attr) if (attr[has](key)) {\n var val = Str(attr[key]);\n if (val) {\n if (key.substring(0, 6) == \"xlink:\") {\n el.setAttributeNS(xlink, key.substring(6), val);\n } else if (key.substring(0, 4) == \"xml:\") {\n el.setAttributeNS(xmlns, key.substring(4), val);\n } else {\n el.setAttribute(key, val);\n }\n } else {\n el.removeAttribute(key);\n }\n }\n } else if (\"text\" in attr) {\n el.nodeValue = attr.text;\n }\n } else {\n el = glob.doc.createElementNS(xmlns, el);\n }\n return el;\n}\nSnap._.$ = $;\nSnap._.id = ID;\nfunction getAttrs(el) {\n var attrs = el.attributes,\n name,\n out = {};\n for (var i = 0; i < attrs.length; i++) {\n if (attrs[i].namespaceURI == xlink) {\n name = \"xlink:\";\n } else {\n name = \"\";\n }\n name += attrs[i].name;\n out[name] = attrs[i].textContent;\n }\n return out;\n}\nfunction is(o, type) {\n type = Str.prototype.toLowerCase.call(type);\n if (type == \"finite\") {\n return isFinite(o);\n }\n if (type == \"array\" &&\n (o instanceof Array || Array.isArray && Array.isArray(o))) {\n return true;\n }\n return type == \"null\" && o === null ||\n type == typeof o && o !== null ||\n type == \"object\" && o === Object(o) ||\n objectToString.call(o).slice(8, -1).toLowerCase() == type;\n}\n/*\\\n * Snap.format\n [ method ]\n **\n * Replaces construction of type `{}` to the corresponding argument\n **\n - token (string) string to format\n - json (object) object which properties are used as a replacement\n = (string) formatted string\n > Usage\n | // this draws a rectangular shape equivalent to \"M10,20h40v50h-40z\"\n | paper.path(Snap.format(\"M{x},{y}h{dim.width}v{dim.height}h{dim['negative width']}z\", {\n | x: 10,\n | y: 20,\n | dim: {\n | width: 40,\n | height: 50,\n | \"negative width\": -40\n | }\n | }));\n\\*/\nSnap.format = (function () {\n var tokenRegex = /\\{([^\\}]+)\\}/g,\n objNotationRegex = /(?:(?:^|\\.)(.+?)(?=\\[|\\.|$|\\()|\\[('|\")(.+?)\\2\\])(\\(\\))?/g, // matches .xxxxx or [\"xxxxx\"] to run over object properties\n replacer = function (all, key, obj) {\n var res = obj;\n key.replace(objNotationRegex, function (all, name, quote, quotedName, isFunc) {\n name = name || quotedName;\n if (res) {\n if (name in res) {\n res = res[name];\n }\n typeof res == \"function\" && isFunc && (res = res());\n }\n });\n res = (res == null || res == obj ? all : res) + \"\";\n return res;\n };\n return function (str, obj) {\n return Str(str).replace(tokenRegex, function (all, key) {\n return replacer(all, key, obj);\n });\n };\n})();\nfunction clone(obj) {\n if (typeof obj == \"function\" || Object(obj) !== obj) {\n return obj;\n }\n var res = new obj.constructor;\n for (var key in obj) if (obj[has](key)) {\n res[key] = clone(obj[key]);\n }\n return res;\n}\nSnap._.clone = clone;\nfunction repush(array, item) {\n for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) {\n return array.push(array.splice(i, 1)[0]);\n }\n}\nfunction cacher(f, scope, postprocessor) {\n function newf() {\n var arg = Array.prototype.slice.call(arguments, 0),\n args = arg.join(\"\\u2400\"),\n cache = newf.cache = newf.cache || {},\n count = newf.count = newf.count || [];\n if (cache[has](args)) {\n repush(count, args);\n return postprocessor ? postprocessor(cache[args]) : cache[args];\n }\n count.length >= 1e3 && delete cache[count.shift()];\n count.push(args);\n cache[args] = f.apply(scope, arg);\n return postprocessor ? postprocessor(cache[args]) : cache[args];\n }\n return newf;\n}\nSnap._.cacher = cacher;\nfunction angle(x1, y1, x2, y2, x3, y3) {\n if (x3 == null) {\n var x = x1 - x2,\n y = y1 - y2;\n if (!x && !y) {\n return 0;\n }\n return (180 + math.atan2(-y, -x) * 180 / PI + 360) % 360;\n } else {\n return angle(x1, y1, x3, y3) - angle(x2, y2, x3, y3);\n }\n}\nfunction rad(deg) {\n return deg % 360 * PI / 180;\n}\nfunction deg(rad) {\n return rad * 180 / PI % 360;\n}\nfunction x_y() {\n return this.x + S + this.y;\n}\nfunction x_y_w_h() {\n return this.x + S + this.y + S + this.width + \" \\xd7 \" + this.height;\n}\n\n/*\\\n * Snap.rad\n [ method ]\n **\n * Transform angle to radians\n - deg (number) angle in degrees\n = (number) angle in radians\n\\*/\nSnap.rad = rad;\n/*\\\n * Snap.deg\n [ method ]\n **\n * Transform angle to degrees\n - rad (number) angle in radians\n = (number) angle in degrees\n\\*/\nSnap.deg = deg;\n/*\\\n * Snap.sin\n [ method ]\n **\n * Equivalent to `Math.sin()` only works with degrees, not radians.\n - angle (number) angle in degrees\n = (number) sin\n\\*/\nSnap.sin = function (angle) {\n return math.sin(Snap.rad(angle));\n};\n/*\\\n * Snap.tan\n [ method ]\n **\n * Equivalent to `Math.tan()` only works with degrees, not radians.\n - angle (number) angle in degrees\n = (number) tan\n\\*/\nSnap.tan = function (angle) {\n return math.tan(Snap.rad(angle));\n};\n/*\\\n * Snap.cos\n [ method ]\n **\n * Equivalent to `Math.cos()` only works with degrees, not radians.\n - angle (number) angle in degrees\n = (number) cos\n\\*/\nSnap.cos = function (angle) {\n return math.cos(Snap.rad(angle));\n};\n/*\\\n * Snap.asin\n [ method ]\n **\n * Equivalent to `Math.asin()` only works with degrees, not radians.\n - num (number) value\n = (number) asin in degrees\n\\*/\nSnap.asin = function (num) {\n return Snap.deg(math.asin(num));\n};\n/*\\\n * Snap.acos\n [ method ]\n **\n * Equivalent to `Math.acos()` only works with degrees, not radians.\n - num (number) value\n = (number) acos in degrees\n\\*/\nSnap.acos = function (num) {\n return Snap.deg(math.acos(num));\n};\n/*\\\n * Snap.atan\n [ method ]\n **\n * Equivalent to `Math.atan()` only works with degrees, not radians.\n - num (number) value\n = (number) atan in degrees\n\\*/\nSnap.atan = function (num) {\n return Snap.deg(math.atan(num));\n};\n/*\\\n * Snap.atan2\n [ method ]\n **\n * Equivalent to `Math.atan2()` only works with degrees, not radians.\n - num (number) value\n = (number) atan2 in degrees\n\\*/\nSnap.atan2 = function (num) {\n return Snap.deg(math.atan2(num));\n};\n/*\\\n * Snap.angle\n [ method ]\n **\n * Returns an angle between two or three points\n - x1 (number) x coord of first point\n - y1 (number) y coord of first point\n - x2 (number) x coord of second point\n - y2 (number) y coord of second point\n - x3 (number) #optional x coord of third point\n - y3 (number) #optional y coord of third point\n = (number) angle in degrees\n\\*/\nSnap.angle = angle;\n/*\\\n * Snap.len\n [ method ]\n **\n * Returns distance between two points\n - x1 (number) x coord of first point\n - y1 (number) y coord of first point\n - x2 (number) x coord of second point\n - y2 (number) y coord of second point\n = (number) distance\n\\*/\nSnap.len = function (x1, y1, x2, y2) {\n return Math.sqrt(Snap.len2(x1, y1, x2, y2));\n};\n/*\\\n * Snap.len2\n [ method ]\n **\n * Returns squared distance between two points\n - x1 (number) x coord of first point\n - y1 (number) y coord of first point\n - x2 (number) x coord of second point\n - y2 (number) y coord of second point\n = (number) distance\n\\*/\nSnap.len2 = function (x1, y1, x2, y2) {\n return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n};\n/*\\\n * Snap.closestPoint\n [ method ]\n **\n * Returns closest point to a given one on a given path.\n - path (Element) path element\n - x (number) x coord of a point\n - y (number) y coord of a point\n = (object) in format\n {\n x (number) x coord of the point on the path\n y (number) y coord of the point on the path\n length (number) length of the path to the point\n distance (number) distance from the given point to the path\n }\n\\*/\n// Copied from http://bl.ocks.org/mbostock/8027637\nSnap.closestPoint = function (path, x, y) {\n function distance2(p) {\n var dx = p.x - x,\n dy = p.y - y;\n return dx * dx + dy * dy;\n }\n var pathNode = path.node,\n pathLength = pathNode.getTotalLength(),\n precision = pathLength / pathNode.pathSegList.numberOfItems * .125,\n best,\n bestLength,\n bestDistance = Infinity;\n\n // linear scan for coarse approximation\n for (var scan, scanLength = 0, scanDistance; scanLength <= pathLength; scanLength += precision) {\n if ((scanDistance = distance2(scan = pathNode.getPointAtLength(scanLength))) < bestDistance) {\n best = scan;\n bestLength = scanLength;\n bestDistance = scanDistance;\n }\n }\n\n // binary search for precise estimate\n precision *= .5;\n while (precision > .5) {\n var before,\n after,\n beforeLength,\n afterLength,\n beforeDistance,\n afterDistance;\n if ((beforeLength = bestLength - precision) >= 0 && (beforeDistance = distance2(before = pathNode.getPointAtLength(beforeLength))) < bestDistance) {\n best = before;\n bestLength = beforeLength;\n bestDistance = beforeDistance;\n } else if ((afterLength = bestLength + precision) <= pathLength && (afterDistance = distance2(after = pathNode.getPointAtLength(afterLength))) < bestDistance) {\n best = after;\n bestLength = afterLength;\n bestDistance = afterDistance;\n } else {\n precision *= .5;\n }\n }\n\n best = {\n x: best.x,\n y: best.y,\n length: bestLength,\n distance: Math.sqrt(bestDistance)\n };\n return best;\n}\n/*\\\n * Snap.is\n [ method ]\n **\n * Handy replacement for the `typeof` operator\n - o (…) any object or primitive\n - type (string) name of the type, e.g., `string`, `function`, `number`, etc.\n = (boolean) `true` if given value is of given type\n\\*/\nSnap.is = is;\n/*\\\n * Snap.snapTo\n [ method ]\n **\n * Snaps given value to given grid\n - values (array|number) given array of values or step of the grid\n - value (number) value to adjust\n - tolerance (number) #optional maximum distance to the target value that would trigger the snap. Default is `10`.\n = (number) adjusted value\n\\*/\nSnap.snapTo = function (values, value, tolerance) {\n tolerance = is(tolerance, \"finite\") ? tolerance : 10;\n if (is(values, \"array\")) {\n var i = values.length;\n while (i--) if (abs(values[i] - value) <= tolerance) {\n return values[i];\n }\n } else {\n values = +values;\n var rem = value % values;\n if (rem < tolerance) {\n return value - rem;\n }\n if (rem > values - tolerance) {\n return value - rem + values;\n }\n }\n return value;\n};\n// Colour\n/*\\\n * Snap.getRGB\n [ method ]\n **\n * Parses color string as RGB object\n - color (string) color string in one of the following formats:\n #
    \n #
  • Color name (red, green, cornflowerblue, etc)
  • \n #
  • #••• — shortened HTML color: (#000, #fc0, etc.)
  • \n #
  • #•••••• — full length HTML color: (#000000, #bd2300)
  • \n #
  • rgb(•••, •••, •••) — red, green and blue channels values: (rgb(200, 100, 0))
  • \n #
  • rgba(•••, •••, •••, •••) — also with opacity
  • \n #
  • rgb(•••%, •••%, •••%) — same as above, but in %: (rgb(100%, 175%, 0%))
  • \n #
  • rgba(•••%, •••%, •••%, •••%) — also with opacity
  • \n #
  • hsb(•••, •••, •••) — hue, saturation and brightness values: (hsb(0.5, 0.25, 1))
  • \n #
  • hsba(•••, •••, •••, •••) — also with opacity
  • \n #
  • hsb(•••%, •••%, •••%) — same as above, but in %
  • \n #
  • hsba(•••%, •••%, •••%, •••%) — also with opacity
  • \n #
  • hsl(•••, •••, •••) — hue, saturation and luminosity values: (hsb(0.5, 0.25, 0.5))
  • \n #
  • hsla(•••, •••, •••, •••) — also with opacity
  • \n #
  • hsl(•••%, •••%, •••%) — same as above, but in %
  • \n #
  • hsla(•••%, •••%, •••%, •••%) — also with opacity
  • \n #
\n * Note that `%` can be used any time: `rgb(20%, 255, 50%)`.\n = (object) RGB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••,\n o error (boolean) true if string can't be parsed\n o }\n\\*/\nSnap.getRGB = cacher(function (colour) {\n if (!colour || !!((colour = Str(colour)).indexOf(\"-\") + 1)) {\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: rgbtoString};\n }\n if (colour == \"none\") {\n return {r: -1, g: -1, b: -1, hex: \"none\", toString: rgbtoString};\n }\n !(hsrg[has](colour.toLowerCase().substring(0, 2)) || colour.charAt() == \"#\") && (colour = toHex(colour));\n if (!colour) {\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: rgbtoString};\n }\n var res,\n red,\n green,\n blue,\n opacity,\n t,\n values,\n rgb = colour.match(colourRegExp);\n if (rgb) {\n if (rgb[2]) {\n blue = toInt(rgb[2].substring(5), 16);\n green = toInt(rgb[2].substring(3, 5), 16);\n red = toInt(rgb[2].substring(1, 3), 16);\n }\n if (rgb[3]) {\n blue = toInt((t = rgb[3].charAt(3)) + t, 16);\n green = toInt((t = rgb[3].charAt(2)) + t, 16);\n red = toInt((t = rgb[3].charAt(1)) + t, 16);\n }\n if (rgb[4]) {\n values = rgb[4].split(commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red *= 2.55);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green *= 2.55);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue *= 2.55);\n rgb[1].toLowerCase().slice(0, 4) == \"rgba\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n }\n if (rgb[5]) {\n values = rgb[5].split(commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red /= 100);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green /= 100);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue /= 100);\n (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n rgb[1].toLowerCase().slice(0, 4) == \"hsba\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n return Snap.hsb2rgb(red, green, blue, opacity);\n }\n if (rgb[6]) {\n values = rgb[6].split(commaSpaces);\n red = toFloat(values[0]);\n values[0].slice(-1) == \"%\" && (red /= 100);\n green = toFloat(values[1]);\n values[1].slice(-1) == \"%\" && (green /= 100);\n blue = toFloat(values[2]);\n values[2].slice(-1) == \"%\" && (blue /= 100);\n (values[0].slice(-3) == \"deg\" || values[0].slice(-1) == \"\\xb0\") && (red /= 360);\n rgb[1].toLowerCase().slice(0, 4) == \"hsla\" && (opacity = toFloat(values[3]));\n values[3] && values[3].slice(-1) == \"%\" && (opacity /= 100);\n return Snap.hsl2rgb(red, green, blue, opacity);\n }\n red = mmin(math.round(red), 255);\n green = mmin(math.round(green), 255);\n blue = mmin(math.round(blue), 255);\n opacity = mmin(mmax(opacity, 0), 1);\n rgb = {r: red, g: green, b: blue, toString: rgbtoString};\n rgb.hex = \"#\" + (16777216 | blue | green << 8 | red << 16).toString(16).slice(1);\n rgb.opacity = is(opacity, \"finite\") ? opacity : 1;\n return rgb;\n }\n return {r: -1, g: -1, b: -1, hex: \"none\", error: 1, toString: rgbtoString};\n}, Snap);\n/*\\\n * Snap.hsb\n [ method ]\n **\n * Converts HSB values to a hex representation of the color\n - h (number) hue\n - s (number) saturation\n - b (number) value or brightness\n = (string) hex representation of the color\n\\*/\nSnap.hsb = cacher(function (h, s, b) {\n return Snap.hsb2rgb(h, s, b).hex;\n});\n/*\\\n * Snap.hsl\n [ method ]\n **\n * Converts HSL values to a hex representation of the color\n - h (number) hue\n - s (number) saturation\n - l (number) luminosity\n = (string) hex representation of the color\n\\*/\nSnap.hsl = cacher(function (h, s, l) {\n return Snap.hsl2rgb(h, s, l).hex;\n});\n/*\\\n * Snap.rgb\n [ method ]\n **\n * Converts RGB values to a hex representation of the color\n - r (number) red\n - g (number) green\n - b (number) blue\n = (string) hex representation of the color\n\\*/\nSnap.rgb = cacher(function (r, g, b, o) {\n if (is(o, \"finite\")) {\n var round = math.round;\n return \"rgba(\" + [round(r), round(g), round(b), +o.toFixed(2)] + \")\";\n }\n return \"#\" + (16777216 | b | g << 8 | r << 16).toString(16).slice(1);\n});\nvar toHex = function (color) {\n var i = glob.doc.getElementsByTagName(\"head\")[0] || glob.doc.getElementsByTagName(\"svg\")[0],\n red = \"rgb(255, 0, 0)\";\n toHex = cacher(function (color) {\n if (color.toLowerCase() == \"red\") {\n return red;\n }\n i.style.color = red;\n i.style.color = color;\n var out = glob.doc.defaultView.getComputedStyle(i, E).getPropertyValue(\"color\");\n return out == red ? null : out;\n });\n return toHex(color);\n},\nhsbtoString = function () {\n return \"hsb(\" + [this.h, this.s, this.b] + \")\";\n},\nhsltoString = function () {\n return \"hsl(\" + [this.h, this.s, this.l] + \")\";\n},\nrgbtoString = function () {\n return this.opacity == 1 || this.opacity == null ?\n this.hex :\n \"rgba(\" + [this.r, this.g, this.b, this.opacity] + \")\";\n},\nprepareRGB = function (r, g, b) {\n if (g == null && is(r, \"object\") && \"r\" in r && \"g\" in r && \"b\" in r) {\n b = r.b;\n g = r.g;\n r = r.r;\n }\n if (g == null && is(r, string)) {\n var clr = Snap.getRGB(r);\n r = clr.r;\n g = clr.g;\n b = clr.b;\n }\n if (r > 1 || g > 1 || b > 1) {\n r /= 255;\n g /= 255;\n b /= 255;\n }\n\n return [r, g, b];\n},\npackageRGB = function (r, g, b, o) {\n r = math.round(r * 255);\n g = math.round(g * 255);\n b = math.round(b * 255);\n var rgb = {\n r: r,\n g: g,\n b: b,\n opacity: is(o, \"finite\") ? o : 1,\n hex: Snap.rgb(r, g, b),\n toString: rgbtoString\n };\n is(o, \"finite\") && (rgb.opacity = o);\n return rgb;\n};\n/*\\\n * Snap.color\n [ method ]\n **\n * Parses the color string and returns an object featuring the color's component values\n - clr (string) color string in one of the supported formats (see @Snap.getRGB)\n = (object) Combined RGB/HSB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••,\n o error (boolean) `true` if string can't be parsed,\n o h (number) hue,\n o s (number) saturation,\n o v (number) value (brightness),\n o l (number) lightness\n o }\n\\*/\nSnap.color = function (clr) {\n var rgb;\n if (is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"b\" in clr) {\n rgb = Snap.hsb2rgb(clr);\n clr.r = rgb.r;\n clr.g = rgb.g;\n clr.b = rgb.b;\n clr.opacity = 1;\n clr.hex = rgb.hex;\n } else if (is(clr, \"object\") && \"h\" in clr && \"s\" in clr && \"l\" in clr) {\n rgb = Snap.hsl2rgb(clr);\n clr.r = rgb.r;\n clr.g = rgb.g;\n clr.b = rgb.b;\n clr.opacity = 1;\n clr.hex = rgb.hex;\n } else {\n if (is(clr, \"string\")) {\n clr = Snap.getRGB(clr);\n }\n if (is(clr, \"object\") && \"r\" in clr && \"g\" in clr && \"b\" in clr && !(\"error\" in clr)) {\n rgb = Snap.rgb2hsl(clr);\n clr.h = rgb.h;\n clr.s = rgb.s;\n clr.l = rgb.l;\n rgb = Snap.rgb2hsb(clr);\n clr.v = rgb.b;\n } else {\n clr = {hex: \"none\"};\n clr.r = clr.g = clr.b = clr.h = clr.s = clr.v = clr.l = -1;\n clr.error = 1;\n }\n }\n clr.toString = rgbtoString;\n return clr;\n};\n/*\\\n * Snap.hsb2rgb\n [ method ]\n **\n * Converts HSB values to an RGB object\n - h (number) hue\n - s (number) saturation\n - v (number) value or brightness\n = (object) RGB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••\n o }\n\\*/\nSnap.hsb2rgb = function (h, s, v, o) {\n if (is(h, \"object\") && \"h\" in h && \"s\" in h && \"b\" in h) {\n v = h.b;\n s = h.s;\n o = h.o;\n h = h.h;\n }\n h *= 360;\n var R, G, B, X, C;\n h = h % 360 / 60;\n C = v * s;\n X = C * (1 - abs(h % 2 - 1));\n R = G = B = v - C;\n\n h = ~~h;\n R += [C, X, 0, 0, X, C][h];\n G += [X, C, C, X, 0, 0][h];\n B += [0, 0, X, C, C, X][h];\n return packageRGB(R, G, B, o);\n};\n/*\\\n * Snap.hsl2rgb\n [ method ]\n **\n * Converts HSL values to an RGB object\n - h (number) hue\n - s (number) saturation\n - l (number) luminosity\n = (object) RGB object in the following format:\n o {\n o r (number) red,\n o g (number) green,\n o b (number) blue,\n o hex (string) color in HTML/CSS format: #••••••\n o }\n\\*/\nSnap.hsl2rgb = function (h, s, l, o) {\n if (is(h, \"object\") && \"h\" in h && \"s\" in h && \"l\" in h) {\n l = h.l;\n s = h.s;\n h = h.h;\n }\n if (h > 1 || s > 1 || l > 1) {\n h /= 360;\n s /= 100;\n l /= 100;\n }\n h *= 360;\n var R, G, B, X, C;\n h = h % 360 / 60;\n C = 2 * s * (l < .5 ? l : 1 - l);\n X = C * (1 - abs(h % 2 - 1));\n R = G = B = l - C / 2;\n\n h = ~~h;\n R += [C, X, 0, 0, X, C][h];\n G += [X, C, C, X, 0, 0][h];\n B += [0, 0, X, C, C, X][h];\n return packageRGB(R, G, B, o);\n};\n/*\\\n * Snap.rgb2hsb\n [ method ]\n **\n * Converts RGB values to an HSB object\n - r (number) red\n - g (number) green\n - b (number) blue\n = (object) HSB object in the following format:\n o {\n o h (number) hue,\n o s (number) saturation,\n o b (number) brightness\n o }\n\\*/\nSnap.rgb2hsb = function (r, g, b) {\n b = prepareRGB(r, g, b);\n r = b[0];\n g = b[1];\n b = b[2];\n\n var H, S, V, C;\n V = mmax(r, g, b);\n C = V - mmin(r, g, b);\n H = C == 0 ? null :\n V == r ? (g - b) / C :\n V == g ? (b - r) / C + 2 :\n (r - g) / C + 4;\n H = (H + 360) % 6 * 60 / 360;\n S = C == 0 ? 0 : C / V;\n return {h: H, s: S, b: V, toString: hsbtoString};\n};\n/*\\\n * Snap.rgb2hsl\n [ method ]\n **\n * Converts RGB values to an HSL object\n - r (number) red\n - g (number) green\n - b (number) blue\n = (object) HSL object in the following format:\n o {\n o h (number) hue,\n o s (number) saturation,\n o l (number) luminosity\n o }\n\\*/\nSnap.rgb2hsl = function (r, g, b) {\n b = prepareRGB(r, g, b);\n r = b[0];\n g = b[1];\n b = b[2];\n\n var H, S, L, M, m, C;\n M = mmax(r, g, b);\n m = mmin(r, g, b);\n C = M - m;\n H = C == 0 ? null :\n M == r ? (g - b) / C :\n M == g ? (b - r) / C + 2 :\n (r - g) / C + 4;\n H = (H + 360) % 6 * 60 / 360;\n L = (M + m) / 2;\n S = C == 0 ? 0 :\n L < .5 ? C / (2 * L) :\n C / (2 - 2 * L);\n return {h: H, s: S, l: L, toString: hsltoString};\n};\n\n// Transformations\n/*\\\n * Snap.parsePathString\n [ method ]\n **\n * Utility method\n **\n * Parses given path string into an array of arrays of path segments\n - pathString (string|array) path string or array of segments (in the last case it is returned straight away)\n = (array) array of segments\n\\*/\nSnap.parsePathString = function (pathString) {\n if (!pathString) {\n return null;\n }\n var pth = Snap.path(pathString);\n if (pth.arr) {\n return Snap.path.clone(pth.arr);\n }\n\n var paramCounts = {a: 7, c: 6, o: 2, h: 1, l: 2, m: 2, r: 4, q: 4, s: 4, t: 2, v: 1, u: 3, z: 0},\n data = [];\n if (is(pathString, \"array\") && is(pathString[0], \"array\")) { // rough assumption\n data = Snap.path.clone(pathString);\n }\n if (!data.length) {\n Str(pathString).replace(pathCommand, function (a, b, c) {\n var params = [],\n name = b.toLowerCase();\n c.replace(pathValues, function (a, b) {\n b && params.push(+b);\n });\n if (name == \"m\" && params.length > 2) {\n data.push([b].concat(params.splice(0, 2)));\n name = \"l\";\n b = b == \"m\" ? \"l\" : \"L\";\n }\n if (name == \"o\" && params.length == 1) {\n data.push([b, params[0]]);\n }\n if (name == \"r\") {\n data.push([b].concat(params));\n } else while (params.length >= paramCounts[name]) {\n data.push([b].concat(params.splice(0, paramCounts[name])));\n if (!paramCounts[name]) {\n break;\n }\n }\n });\n }\n data.toString = Snap.path.toString;\n pth.arr = Snap.path.clone(data);\n return data;\n};\n/*\\\n * Snap.parseTransformString\n [ method ]\n **\n * Utility method\n **\n * Parses given transform string into an array of transformations\n - TString (string|array) transform string or array of transformations (in the last case it is returned straight away)\n = (array) array of transformations\n\\*/\nvar parseTransformString = Snap.parseTransformString = function (TString) {\n if (!TString) {\n return null;\n }\n var paramCounts = {r: 3, s: 4, t: 2, m: 6},\n data = [];\n if (is(TString, \"array\") && is(TString[0], \"array\")) { // rough assumption\n data = Snap.path.clone(TString);\n }\n if (!data.length) {\n Str(TString).replace(tCommand, function (a, b, c) {\n var params = [],\n name = b.toLowerCase();\n c.replace(pathValues, function (a, b) {\n b && params.push(+b);\n });\n data.push([b].concat(params));\n });\n }\n data.toString = Snap.path.toString;\n return data;\n};\nfunction svgTransform2string(tstr) {\n var res = [];\n tstr = tstr.replace(/(?:^|\\s)(\\w+)\\(([^)]+)\\)/g, function (all, name, params) {\n params = params.split(/\\s*,\\s*|\\s+/);\n if (name == \"rotate\" && params.length == 1) {\n params.push(0, 0);\n }\n if (name == \"scale\") {\n if (params.length > 2) {\n params = params.slice(0, 2);\n } else if (params.length == 2) {\n params.push(0, 0);\n }\n if (params.length == 1) {\n params.push(params[0], 0, 0);\n }\n }\n if (name == \"skewX\") {\n res.push([\"m\", 1, 0, math.tan(rad(params[0])), 1, 0, 0]);\n } else if (name == \"skewY\") {\n res.push([\"m\", 1, math.tan(rad(params[0])), 0, 1, 0, 0]);\n } else {\n res.push([name.charAt(0)].concat(params));\n }\n return all;\n });\n return res;\n}\nSnap._.svgTransform2string = svgTransform2string;\nSnap._.rgTransform = /^[a-z][\\s]*-?\\.?\\d/i;\nfunction transform2matrix(tstr, bbox) {\n var tdata = parseTransformString(tstr),\n m = new Snap.Matrix;\n if (tdata) {\n for (var i = 0, ii = tdata.length; i < ii; i++) {\n var t = tdata[i],\n tlen = t.length,\n command = Str(t[0]).toLowerCase(),\n absolute = t[0] != command,\n inver = absolute ? m.invert() : 0,\n x1,\n y1,\n x2,\n y2,\n bb;\n if (command == \"t\" && tlen == 2){\n m.translate(t[1], 0);\n } else if (command == \"t\" && tlen == 3) {\n if (absolute) {\n x1 = inver.x(0, 0);\n y1 = inver.y(0, 0);\n x2 = inver.x(t[1], t[2]);\n y2 = inver.y(t[1], t[2]);\n m.translate(x2 - x1, y2 - y1);\n } else {\n m.translate(t[1], t[2]);\n }\n } else if (command == \"r\") {\n if (tlen == 2) {\n bb = bb || bbox;\n m.rotate(t[1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n } else if (tlen == 4) {\n if (absolute) {\n x2 = inver.x(t[2], t[3]);\n y2 = inver.y(t[2], t[3]);\n m.rotate(t[1], x2, y2);\n } else {\n m.rotate(t[1], t[2], t[3]);\n }\n }\n } else if (command == \"s\") {\n if (tlen == 2 || tlen == 3) {\n bb = bb || bbox;\n m.scale(t[1], t[tlen - 1], bb.x + bb.width / 2, bb.y + bb.height / 2);\n } else if (tlen == 4) {\n if (absolute) {\n x2 = inver.x(t[2], t[3]);\n y2 = inver.y(t[2], t[3]);\n m.scale(t[1], t[1], x2, y2);\n } else {\n m.scale(t[1], t[1], t[2], t[3]);\n }\n } else if (tlen == 5) {\n if (absolute) {\n x2 = inver.x(t[3], t[4]);\n y2 = inver.y(t[3], t[4]);\n m.scale(t[1], t[2], x2, y2);\n } else {\n m.scale(t[1], t[2], t[3], t[4]);\n }\n }\n } else if (command == \"m\" && tlen == 7) {\n m.add(t[1], t[2], t[3], t[4], t[5], t[6]);\n }\n }\n }\n return m;\n}\nSnap._.transform2matrix = transform2matrix;\nSnap._unit2px = unit2px;\nvar contains = glob.doc.contains || glob.doc.compareDocumentPosition ?\n function (a, b) {\n var adown = a.nodeType == 9 ? a.documentElement : a,\n bup = b && b.parentNode;\n return a == bup || !!(bup && bup.nodeType == 1 && (\n adown.contains ?\n adown.contains(bup) :\n a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16\n ));\n } :\n function (a, b) {\n if (b) {\n while (b) {\n b = b.parentNode;\n if (b == a) {\n return true;\n }\n }\n }\n return false;\n };\nfunction getSomeDefs(el) {\n var p = el.node.ownerSVGElement && wrap(el.node.ownerSVGElement) ||\n el.node.parentNode && wrap(el.node.parentNode) ||\n Snap.select(\"svg\") ||\n Snap(0, 0),\n pdefs = p.select(\"defs\"),\n defs = pdefs == null ? false : pdefs.node;\n if (!defs) {\n defs = make(\"defs\", p.node).node;\n }\n return defs;\n}\nfunction getSomeSVG(el) {\n return el.node.ownerSVGElement && wrap(el.node.ownerSVGElement) || Snap.select(\"svg\");\n}\nSnap._.getSomeDefs = getSomeDefs;\nSnap._.getSomeSVG = getSomeSVG;\nfunction unit2px(el, name, value) {\n var svg = getSomeSVG(el).node,\n out = {},\n mgr = svg.querySelector(\".svg---mgr\");\n if (!mgr) {\n mgr = $(\"rect\");\n $(mgr, {x: -9e9, y: -9e9, width: 10, height: 10, \"class\": \"svg---mgr\", fill: \"none\"});\n svg.appendChild(mgr);\n }\n function getW(val) {\n if (val == null) {\n return E;\n }\n if (val == +val) {\n return val;\n }\n $(mgr, {width: val});\n try {\n return mgr.getBBox().width;\n } catch (e) {\n return 0;\n }\n }\n function getH(val) {\n if (val == null) {\n return E;\n }\n if (val == +val) {\n return val;\n }\n $(mgr, {height: val});\n try {\n return mgr.getBBox().height;\n } catch (e) {\n return 0;\n }\n }\n function set(nam, f) {\n if (name == null) {\n out[nam] = f(el.attr(nam) || 0);\n } else if (nam == name) {\n out = f(value == null ? el.attr(nam) || 0 : value);\n }\n }\n switch (el.type) {\n case \"rect\":\n set(\"rx\", getW);\n set(\"ry\", getH);\n case \"image\":\n set(\"width\", getW);\n set(\"height\", getH);\n case \"text\":\n set(\"x\", getW);\n set(\"y\", getH);\n break;\n case \"circle\":\n set(\"cx\", getW);\n set(\"cy\", getH);\n set(\"r\", getW);\n break;\n case \"ellipse\":\n set(\"cx\", getW);\n set(\"cy\", getH);\n set(\"rx\", getW);\n set(\"ry\", getH);\n break;\n case \"line\":\n set(\"x1\", getW);\n set(\"x2\", getW);\n set(\"y1\", getH);\n set(\"y2\", getH);\n break;\n case \"marker\":\n set(\"refX\", getW);\n set(\"markerWidth\", getW);\n set(\"refY\", getH);\n set(\"markerHeight\", getH);\n break;\n case \"radialGradient\":\n set(\"fx\", getW);\n set(\"fy\", getH);\n break;\n case \"tspan\":\n set(\"dx\", getW);\n set(\"dy\", getH);\n break;\n default:\n set(name, getW);\n }\n svg.removeChild(mgr);\n return out;\n}\n/*\\\n * Snap.select\n [ method ]\n **\n * Wraps a DOM element specified by CSS selector as @Element\n - query (string) CSS selector of the element\n = (Element) the current element\n\\*/\nSnap.select = function (query) {\n query = Str(query).replace(/([^\\\\]):/g, \"$1\\\\:\");\n return wrap(glob.doc.querySelector(query));\n};\n/*\\\n * Snap.selectAll\n [ method ]\n **\n * Wraps DOM elements specified by CSS selector as set or array of @Element\n - query (string) CSS selector of the element\n = (Element) the current element\n\\*/\nSnap.selectAll = function (query) {\n var nodelist = glob.doc.querySelectorAll(query),\n set = (Snap.set || Array)();\n for (var i = 0; i < nodelist.length; i++) {\n set.push(wrap(nodelist[i]));\n }\n return set;\n};\n\nfunction add2group(list) {\n if (!is(list, \"array\")) {\n list = Array.prototype.slice.call(arguments, 0);\n }\n var i = 0,\n j = 0,\n node = this.node;\n while (this[i]) delete this[i++];\n for (i = 0; i < list.length; i++) {\n if (list[i].type == \"set\") {\n list[i].forEach(function (el) {\n node.appendChild(el.node);\n });\n } else {\n node.appendChild(list[i].node);\n }\n }\n var children = node.childNodes;\n for (i = 0; i < children.length; i++) {\n this[j++] = wrap(children[i]);\n }\n return this;\n}\n// Hub garbage collector every 10s\nsetInterval(function () {\n for (var key in hub) if (hub[has](key)) {\n var el = hub[key],\n node = el.node;\n if (el.type != \"svg\" && !node.ownerSVGElement || el.type == \"svg\" && (!node.parentNode || \"ownerSVGElement\" in node.parentNode && !node.ownerSVGElement)) {\n delete hub[key];\n }\n }\n}, 1e4);\nfunction Element(el) {\n if (el.snap in hub) {\n return hub[el.snap];\n }\n var svg;\n try {\n svg = el.ownerSVGElement;\n } catch(e) {}\n /*\\\n * Element.node\n [ property (object) ]\n **\n * Gives you a reference to the DOM object, so you can assign event handlers or just mess around.\n > Usage\n | // draw a circle at coordinate 10,10 with radius of 10\n | var c = paper.circle(10, 10, 10);\n | c.node.onclick = function () {\n | c.attr(\"fill\", \"red\");\n | };\n \\*/\n this.node = el;\n if (svg) {\n this.paper = new Paper(svg);\n }\n /*\\\n * Element.type\n [ property (string) ]\n **\n * SVG tag name of the given element.\n \\*/\n this.type = el.tagName || el.nodeName;\n var id = this.id = ID(this);\n this.anims = {};\n this._ = {\n transform: []\n };\n el.snap = id;\n hub[id] = this;\n if (this.type == \"g\") {\n this.add = add2group;\n }\n if (this.type in {g: 1, mask: 1, pattern: 1, symbol: 1}) {\n for (var method in Paper.prototype) if (Paper.prototype[has](method)) {\n this[method] = Paper.prototype[method];\n }\n }\n}\n /*\\\n * Element.attr\n [ method ]\n **\n * Gets or sets given attributes of the element.\n **\n - params (object) contains key-value pairs of attributes you want to set\n * or\n - param (string) name of the attribute\n = (Element) the current element\n * or\n = (string) value of attribute\n > Usage\n | el.attr({\n | fill: \"#fc0\",\n | stroke: \"#000\",\n | strokeWidth: 2, // CamelCase...\n | \"fill-opacity\": 0.5, // or dash-separated names\n | width: \"*=2\" // prefixed values\n | });\n | console.log(el.attr(\"fill\")); // #fc0\n * Prefixed values in format `\"+=10\"` supported. All four operations\n * (`+`, `-`, `*` and `/`) could be used. Optionally you can use units for `+`\n * and `-`: `\"+=2em\"`.\n \\*/\n Element.prototype.attr = function (params, value) {\n var el = this,\n node = el.node;\n if (!params) {\n if (node.nodeType != 1) {\n return {\n text: node.nodeValue\n };\n }\n var attr = node.attributes,\n out = {};\n for (var i = 0, ii = attr.length; i < ii; i++) {\n out[attr[i].nodeName] = attr[i].nodeValue;\n }\n return out;\n }\n if (is(params, \"string\")) {\n if (arguments.length > 1) {\n var json = {};\n json[params] = value;\n params = json;\n } else {\n return eve(\"snap.util.getattr.\" + params, el).firstDefined();\n }\n }\n for (var att in params) {\n if (params[has](att)) {\n eve(\"snap.util.attr.\" + att, el, params[att]);\n }\n }\n return el;\n };\n/*\\\n * Snap.parse\n [ method ]\n **\n * Parses SVG fragment and converts it into a @Fragment\n **\n - svg (string) SVG string\n = (Fragment) the @Fragment\n\\*/\nSnap.parse = function (svg) {\n var f = glob.doc.createDocumentFragment(),\n full = true,\n div = glob.doc.createElement(\"div\");\n svg = Str(svg);\n if (!svg.match(/^\\s*<\\s*svg(?:\\s|>)/)) {\n svg = \"\" + svg + \"\";\n full = false;\n }\n div.innerHTML = svg;\n svg = div.getElementsByTagName(\"svg\")[0];\n if (svg) {\n if (full) {\n f = svg;\n } else {\n while (svg.firstChild) {\n f.appendChild(svg.firstChild);\n }\n }\n }\n return new Fragment(f);\n};\nfunction Fragment(frag) {\n this.node = frag;\n}\n/*\\\n * Snap.fragment\n [ method ]\n **\n * Creates a DOM fragment from a given list of elements or strings\n **\n - varargs (…) SVG string\n = (Fragment) the @Fragment\n\\*/\nSnap.fragment = function () {\n var args = Array.prototype.slice.call(arguments, 0),\n f = glob.doc.createDocumentFragment();\n for (var i = 0, ii = args.length; i < ii; i++) {\n var item = args[i];\n if (item.node && item.node.nodeType) {\n f.appendChild(item.node);\n }\n if (item.nodeType) {\n f.appendChild(item);\n }\n if (typeof item == \"string\") {\n f.appendChild(Snap.parse(item).node);\n }\n }\n return new Fragment(f);\n};\n\nfunction make(name, parent) {\n var res = $(name);\n parent.appendChild(res);\n var el = wrap(res);\n return el;\n}\nfunction Paper(w, h) {\n var res,\n desc,\n defs,\n proto = Paper.prototype;\n if (w && w.tagName && w.tagName.toLowerCase() == \"svg\") {\n if (w.snap in hub) {\n return hub[w.snap];\n }\n var doc = w.ownerDocument;\n res = new Element(w);\n desc = w.getElementsByTagName(\"desc\")[0];\n defs = w.getElementsByTagName(\"defs\")[0];\n if (!desc) {\n desc = $(\"desc\");\n desc.appendChild(doc.createTextNode(\"Created with Snap\"));\n res.node.appendChild(desc);\n }\n if (!defs) {\n defs = $(\"defs\");\n res.node.appendChild(defs);\n }\n res.defs = defs;\n for (var key in proto) if (proto[has](key)) {\n res[key] = proto[key];\n }\n res.paper = res.root = res;\n } else {\n res = make(\"svg\", glob.doc.body);\n $(res.node, {\n height: h,\n version: 1.1,\n width: w,\n xmlns: xmlns\n });\n }\n return res;\n}\nfunction wrap(dom) {\n if (!dom) {\n return dom;\n }\n if (dom instanceof Element || dom instanceof Fragment) {\n return dom;\n }\n if (dom.tagName && dom.tagName.toLowerCase() == \"svg\") {\n return new Paper(dom);\n }\n if (dom.tagName && dom.tagName.toLowerCase() == \"object\" && dom.type == \"image/svg+xml\") {\n return new Paper(dom.contentDocument.getElementsByTagName(\"svg\")[0]);\n }\n return new Element(dom);\n}\n\nSnap._.make = make;\nSnap._.wrap = wrap;\n/*\\\n * Paper.el\n [ method ]\n **\n * Creates an element on paper with a given name and no attributes\n **\n - name (string) tag name\n - attr (object) attributes\n = (Element) the current element\n > Usage\n | var c = paper.circle(10, 10, 10); // is the same as...\n | var c = paper.el(\"circle\").attr({\n | cx: 10,\n | cy: 10,\n | r: 10\n | });\n | // and the same as\n | var c = paper.el(\"circle\", {\n | cx: 10,\n | cy: 10,\n | r: 10\n | });\n\\*/\nPaper.prototype.el = function (name, attr) {\n var el = make(name, this.node);\n attr && el.attr(attr);\n return el;\n};\n/*\\\n * Element.children\n [ method ]\n **\n * Returns array of all the children of the element.\n = (array) array of Elements\n\\*/\nElement.prototype.children = function () {\n var out = [],\n ch = this.node.childNodes;\n for (var i = 0, ii = ch.length; i < ii; i++) {\n out[i] = Snap(ch[i]);\n }\n return out;\n};\nfunction jsonFiller(root, o) {\n for (var i = 0, ii = root.length; i < ii; i++) {\n var item = {\n type: root[i].type,\n attr: root[i].attr()\n },\n children = root[i].children();\n o.push(item);\n if (children.length) {\n jsonFiller(children, item.childNodes = []);\n }\n }\n}\n/*\\\n * Element.toJSON\n [ method ]\n **\n * Returns object representation of the given element and all its children.\n = (object) in format\n o {\n o type (string) this.type,\n o attr (object) attributes map,\n o childNodes (array) optional array of children in the same format\n o }\n\\*/\nElement.prototype.toJSON = function () {\n var out = [];\n jsonFiller([this], out);\n return out[0];\n};\n// default\neve.on(\"snap.util.getattr\", function () {\n var att = eve.nt();\n att = att.substring(att.lastIndexOf(\".\") + 1);\n var css = att.replace(/[A-Z]/g, function (letter) {\n return \"-\" + letter.toLowerCase();\n });\n if (cssAttr[has](css)) {\n return this.node.ownerDocument.defaultView.getComputedStyle(this.node, null).getPropertyValue(css);\n } else {\n return $(this.node, att);\n }\n});\nvar cssAttr = {\n \"alignment-baseline\": 0,\n \"baseline-shift\": 0,\n \"clip\": 0,\n \"clip-path\": 0,\n \"clip-rule\": 0,\n \"color\": 0,\n \"color-interpolation\": 0,\n \"color-interpolation-filters\": 0,\n \"color-profile\": 0,\n \"color-rendering\": 0,\n \"cursor\": 0,\n \"direction\": 0,\n \"display\": 0,\n \"dominant-baseline\": 0,\n \"enable-background\": 0,\n \"fill\": 0,\n \"fill-opacity\": 0,\n \"fill-rule\": 0,\n \"filter\": 0,\n \"flood-color\": 0,\n \"flood-opacity\": 0,\n \"font\": 0,\n \"font-family\": 0,\n \"font-size\": 0,\n \"font-size-adjust\": 0,\n \"font-stretch\": 0,\n \"font-style\": 0,\n \"font-variant\": 0,\n \"font-weight\": 0,\n \"glyph-orientation-horizontal\": 0,\n \"glyph-orientation-vertical\": 0,\n \"image-rendering\": 0,\n \"kerning\": 0,\n \"letter-spacing\": 0,\n \"lighting-color\": 0,\n \"marker\": 0,\n \"marker-end\": 0,\n \"marker-mid\": 0,\n \"marker-start\": 0,\n \"mask\": 0,\n \"opacity\": 0,\n \"overflow\": 0,\n \"pointer-events\": 0,\n \"shape-rendering\": 0,\n \"stop-color\": 0,\n \"stop-opacity\": 0,\n \"stroke\": 0,\n \"stroke-dasharray\": 0,\n \"stroke-dashoffset\": 0,\n \"stroke-linecap\": 0,\n \"stroke-linejoin\": 0,\n \"stroke-miterlimit\": 0,\n \"stroke-opacity\": 0,\n \"stroke-width\": 0,\n \"text-anchor\": 0,\n \"text-decoration\": 0,\n \"text-rendering\": 0,\n \"unicode-bidi\": 0,\n \"visibility\": 0,\n \"word-spacing\": 0,\n \"writing-mode\": 0\n};\n\neve.on(\"snap.util.attr\", function (value) {\n var att = eve.nt(),\n attr = {};\n att = att.substring(att.lastIndexOf(\".\") + 1);\n attr[att] = value;\n var style = att.replace(/-(\\w)/gi, function (all, letter) {\n return letter.toUpperCase();\n }),\n css = att.replace(/[A-Z]/g, function (letter) {\n return \"-\" + letter.toLowerCase();\n });\n if (cssAttr[has](css)) {\n this.node.style[style] = value == null ? E : value;\n } else {\n $(this.node, attr);\n }\n});\n(function (proto) {}(Paper.prototype));\n\n// simple ajax\n/*\\\n * Snap.ajax\n [ method ]\n **\n * Simple implementation of Ajax\n **\n - url (string) URL\n - postData (object|string) data for post request\n - callback (function) callback\n - scope (object) #optional scope of callback\n * or\n - url (string) URL\n - callback (function) callback\n - scope (object) #optional scope of callback\n = (XMLHttpRequest) the XMLHttpRequest object, just in case\n\\*/\nSnap.ajax = function (url, postData, callback, scope){\n var req = new XMLHttpRequest,\n id = ID();\n if (req) {\n if (is(postData, \"function\")) {\n scope = callback;\n callback = postData;\n postData = null;\n } else if (is(postData, \"object\")) {\n var pd = [];\n for (var key in postData) if (postData.hasOwnProperty(key)) {\n pd.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(postData[key]));\n }\n postData = pd.join(\"&\");\n }\n req.open(postData ? \"POST\" : \"GET\", url, true);\n if (postData) {\n req.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n req.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n }\n if (callback) {\n eve.once(\"snap.ajax.\" + id + \".0\", callback);\n eve.once(\"snap.ajax.\" + id + \".200\", callback);\n eve.once(\"snap.ajax.\" + id + \".304\", callback);\n }\n req.onreadystatechange = function() {\n if (req.readyState != 4) return;\n eve(\"snap.ajax.\" + id + \".\" + req.status, scope, req);\n };\n if (req.readyState == 4) {\n return req;\n }\n req.send(postData);\n return req;\n }\n};\n/*\\\n * Snap.load\n [ method ]\n **\n * Loads external SVG file as a @Fragment (see @Snap.ajax for more advanced AJAX)\n **\n - url (string) URL\n - callback (function) callback\n - scope (object) #optional scope of callback\n\\*/\nSnap.load = function (url, callback, scope) {\n Snap.ajax(url, function (req) {\n var f = Snap.parse(req.responseText);\n scope ? callback.call(scope, f) : callback(f);\n });\n};\nvar getOffset = function (elem) {\n var box = elem.getBoundingClientRect(),\n doc = elem.ownerDocument,\n body = doc.body,\n docElem = doc.documentElement,\n clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,\n top = box.top + (g.win.pageYOffset || docElem.scrollTop || body.scrollTop ) - clientTop,\n left = box.left + (g.win.pageXOffset || docElem.scrollLeft || body.scrollLeft) - clientLeft;\n return {\n y: top,\n x: left\n };\n};\n/*\\\n * Snap.getElementByPoint\n [ method ]\n **\n * Returns you topmost element under given point.\n **\n = (object) Snap element object\n - x (number) x coordinate from the top left corner of the window\n - y (number) y coordinate from the top left corner of the window\n > Usage\n | Snap.getElementByPoint(mouseX, mouseY).attr({stroke: \"#f00\"});\n\\*/\nSnap.getElementByPoint = function (x, y) {\n var paper = this,\n svg = paper.canvas,\n target = glob.doc.elementFromPoint(x, y);\n if (glob.win.opera && target.tagName == \"svg\") {\n var so = getOffset(target),\n sr = target.createSVGRect();\n sr.x = x - so.x;\n sr.y = y - so.y;\n sr.width = sr.height = 1;\n var hits = target.getIntersectionList(sr, null);\n if (hits.length) {\n target = hits[hits.length - 1];\n }\n }\n if (!target) {\n return null;\n }\n return wrap(target);\n};\n/*\\\n * Snap.plugin\n [ method ]\n **\n * Let you write plugins. You pass in a function with five arguments, like this:\n | Snap.plugin(function (Snap, Element, Paper, global, Fragment) {\n | Snap.newmethod = function () {};\n | Element.prototype.newmethod = function () {};\n | Paper.prototype.newmethod = function () {};\n | });\n * Inside the function you have access to all main objects (and their\n * prototypes). This allow you to extend anything you want.\n **\n - f (function) your plugin body\n\\*/\nSnap.plugin = function (f) {\n f(Snap, Element, Paper, glob, Fragment);\n};\nglob.win.Snap = Snap;\nreturn Snap;\n}(window || this));\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var elproto = Element.prototype,\n is = Snap.is,\n Str = String,\n unit2px = Snap._unit2px,\n $ = Snap._.$,\n make = Snap._.make,\n getSomeDefs = Snap._.getSomeDefs,\n has = \"hasOwnProperty\",\n wrap = Snap._.wrap;\n /*\\\n * Element.getBBox\n [ method ]\n **\n * Returns the bounding box descriptor for the given element\n **\n = (object) bounding box descriptor:\n o {\n o cx: (number) x of the center,\n o cy: (number) x of the center,\n o h: (number) height,\n o height: (number) height,\n o path: (string) path command for the box,\n o r0: (number) radius of a circle that fully encloses the box,\n o r1: (number) radius of the smallest circle that can be enclosed,\n o r2: (number) radius of the largest circle that can be enclosed,\n o vb: (string) box as a viewbox command,\n o w: (number) width,\n o width: (number) width,\n o x2: (number) x of the right side,\n o x: (number) x of the left side,\n o y2: (number) y of the bottom edge,\n o y: (number) y of the top edge\n o }\n \\*/\n elproto.getBBox = function (isWithoutTransform) {\n if (this.type == \"tspan\") {\n return Snap._.box(this.node.getClientRects().item(0));\n }\n if (!Snap.Matrix || !Snap.path) {\n return this.node.getBBox();\n }\n var el = this,\n m = new Snap.Matrix;\n if (el.removed) {\n return Snap._.box();\n }\n while (el.type == \"use\") {\n if (!isWithoutTransform) {\n m = m.add(el.transform().localMatrix.translate(el.attr(\"x\") || 0, el.attr(\"y\") || 0));\n }\n if (el.original) {\n el = el.original;\n } else {\n var href = el.attr(\"xlink:href\");\n el = el.original = el.node.ownerDocument.getElementById(href.substring(href.indexOf(\"#\") + 1));\n }\n }\n var _ = el._,\n pathfinder = Snap.path.get[el.type] || Snap.path.get.deflt;\n try {\n if (isWithoutTransform) {\n _.bboxwt = pathfinder ? Snap.path.getBBox(el.realPath = pathfinder(el)) : Snap._.box(el.node.getBBox());\n return Snap._.box(_.bboxwt);\n } else {\n el.realPath = pathfinder(el);\n el.matrix = el.transform().localMatrix;\n _.bbox = Snap.path.getBBox(Snap.path.map(el.realPath, m.add(el.matrix)));\n return Snap._.box(_.bbox);\n }\n } catch (e) {\n // Firefox doesn’t give you bbox of hidden element\n return Snap._.box();\n }\n };\n var propString = function () {\n return this.string;\n };\n function extractTransform(el, tstr) {\n if (tstr == null) {\n var doReturn = true;\n if (el.type == \"linearGradient\" || el.type == \"radialGradient\") {\n tstr = el.node.getAttribute(\"gradientTransform\");\n } else if (el.type == \"pattern\") {\n tstr = el.node.getAttribute(\"patternTransform\");\n } else {\n tstr = el.node.getAttribute(\"transform\");\n }\n if (!tstr) {\n return new Snap.Matrix;\n }\n tstr = Snap._.svgTransform2string(tstr);\n } else {\n if (!Snap._.rgTransform.test(tstr)) {\n tstr = Snap._.svgTransform2string(tstr);\n } else {\n tstr = Str(tstr).replace(/\\.{3}|\\u2026/g, el._.transform || \"\");\n }\n if (is(tstr, \"array\")) {\n tstr = Snap.path ? Snap.path.toString.call(tstr) : Str(tstr);\n }\n el._.transform = tstr;\n }\n var m = Snap._.transform2matrix(tstr, el.getBBox(1));\n if (doReturn) {\n return m;\n } else {\n el.matrix = m;\n }\n }\n /*\\\n * Element.transform\n [ method ]\n **\n * Gets or sets transformation of the element\n **\n - tstr (string) transform string in Snap or SVG format\n = (Element) the current element\n * or\n = (object) transformation descriptor:\n o {\n o string (string) transform string,\n o globalMatrix (Matrix) matrix of all transformations applied to element or its parents,\n o localMatrix (Matrix) matrix of transformations applied only to the element,\n o diffMatrix (Matrix) matrix of difference between global and local transformations,\n o global (string) global transformation as string,\n o local (string) local transformation as string,\n o toString (function) returns `string` property\n o }\n \\*/\n elproto.transform = function (tstr) {\n var _ = this._;\n if (tstr == null) {\n var papa = this,\n global = new Snap.Matrix(this.node.getCTM()),\n local = extractTransform(this),\n ms = [local],\n m = new Snap.Matrix,\n i,\n localString = local.toTransformString(),\n string = Str(local) == Str(this.matrix) ?\n Str(_.transform) : localString;\n while (papa.type != \"svg\" && (papa = papa.parent())) {\n ms.push(extractTransform(papa));\n }\n i = ms.length;\n while (i--) {\n m.add(ms[i]);\n }\n return {\n string: string,\n globalMatrix: global,\n totalMatrix: m,\n localMatrix: local,\n diffMatrix: global.clone().add(local.invert()),\n global: global.toTransformString(),\n total: m.toTransformString(),\n local: localString,\n toString: propString\n };\n }\n if (tstr instanceof Snap.Matrix) {\n this.matrix = tstr;\n this._.transform = tstr.toTransformString();\n } else {\n extractTransform(this, tstr);\n }\n\n if (this.node) {\n if (this.type == \"linearGradient\" || this.type == \"radialGradient\") {\n $(this.node, {gradientTransform: this.matrix});\n } else if (this.type == \"pattern\") {\n $(this.node, {patternTransform: this.matrix});\n } else {\n $(this.node, {transform: this.matrix});\n }\n }\n\n return this;\n };\n /*\\\n * Element.parent\n [ method ]\n **\n * Returns the element's parent\n **\n = (Element) the parent element\n \\*/\n elproto.parent = function () {\n return wrap(this.node.parentNode);\n };\n /*\\\n * Element.append\n [ method ]\n **\n * Appends the given element to current one\n **\n - el (Element|Set) element to append\n = (Element) the parent element\n \\*/\n /*\\\n * Element.add\n [ method ]\n **\n * See @Element.append\n \\*/\n elproto.append = elproto.add = function (el) {\n if (el) {\n if (el.type == \"set\") {\n var it = this;\n el.forEach(function (el) {\n it.add(el);\n });\n return this;\n }\n el = wrap(el);\n this.node.appendChild(el.node);\n el.paper = this.paper;\n }\n return this;\n };\n /*\\\n * Element.appendTo\n [ method ]\n **\n * Appends the current element to the given one\n **\n - el (Element) parent element to append to\n = (Element) the child element\n \\*/\n elproto.appendTo = function (el) {\n if (el) {\n el = wrap(el);\n el.append(this);\n }\n return this;\n };\n /*\\\n * Element.prepend\n [ method ]\n **\n * Prepends the given element to the current one\n **\n - el (Element) element to prepend\n = (Element) the parent element\n \\*/\n elproto.prepend = function (el) {\n if (el) {\n if (el.type == \"set\") {\n var it = this,\n first;\n el.forEach(function (el) {\n if (first) {\n first.after(el);\n } else {\n it.prepend(el);\n }\n first = el;\n });\n return this;\n }\n el = wrap(el);\n var parent = el.parent();\n this.node.insertBefore(el.node, this.node.firstChild);\n this.add && this.add();\n el.paper = this.paper;\n this.parent() && this.parent().add();\n parent && parent.add();\n }\n return this;\n };\n /*\\\n * Element.prependTo\n [ method ]\n **\n * Prepends the current element to the given one\n **\n - el (Element) parent element to prepend to\n = (Element) the child element\n \\*/\n elproto.prependTo = function (el) {\n el = wrap(el);\n el.prepend(this);\n return this;\n };\n /*\\\n * Element.before\n [ method ]\n **\n * Inserts given element before the current one\n **\n - el (Element) element to insert\n = (Element) the parent element\n \\*/\n elproto.before = function (el) {\n if (el.type == \"set\") {\n var it = this;\n el.forEach(function (el) {\n var parent = el.parent();\n it.node.parentNode.insertBefore(el.node, it.node);\n parent && parent.add();\n });\n this.parent().add();\n return this;\n }\n el = wrap(el);\n var parent = el.parent();\n this.node.parentNode.insertBefore(el.node, this.node);\n this.parent() && this.parent().add();\n parent && parent.add();\n el.paper = this.paper;\n return this;\n };\n /*\\\n * Element.after\n [ method ]\n **\n * Inserts given element after the current one\n **\n - el (Element) element to insert\n = (Element) the parent element\n \\*/\n elproto.after = function (el) {\n el = wrap(el);\n var parent = el.parent();\n if (this.node.nextSibling) {\n this.node.parentNode.insertBefore(el.node, this.node.nextSibling);\n } else {\n this.node.parentNode.appendChild(el.node);\n }\n this.parent() && this.parent().add();\n parent && parent.add();\n el.paper = this.paper;\n return this;\n };\n /*\\\n * Element.insertBefore\n [ method ]\n **\n * Inserts the element after the given one\n **\n - el (Element) element next to whom insert to\n = (Element) the parent element\n \\*/\n elproto.insertBefore = function (el) {\n el = wrap(el);\n var parent = this.parent();\n el.node.parentNode.insertBefore(this.node, el.node);\n this.paper = el.paper;\n parent && parent.add();\n el.parent() && el.parent().add();\n return this;\n };\n /*\\\n * Element.insertAfter\n [ method ]\n **\n * Inserts the element after the given one\n **\n - el (Element) element next to whom insert to\n = (Element) the parent element\n \\*/\n elproto.insertAfter = function (el) {\n el = wrap(el);\n var parent = this.parent();\n el.node.parentNode.insertBefore(this.node, el.node.nextSibling);\n this.paper = el.paper;\n parent && parent.add();\n el.parent() && el.parent().add();\n return this;\n };\n /*\\\n * Element.remove\n [ method ]\n **\n * Removes element from the DOM\n = (Element) the detached element\n \\*/\n elproto.remove = function () {\n var parent = this.parent();\n this.node.parentNode && this.node.parentNode.removeChild(this.node);\n delete this.paper;\n this.removed = true;\n parent && parent.add();\n return this;\n };\n /*\\\n * Element.select\n [ method ]\n **\n * Gathers the nested @Element matching the given set of CSS selectors\n **\n - query (string) CSS selector\n = (Element) result of query selection\n \\*/\n elproto.select = function (query) {\n return wrap(this.node.querySelector(query));\n };\n /*\\\n * Element.selectAll\n [ method ]\n **\n * Gathers nested @Element objects matching the given set of CSS selectors\n **\n - query (string) CSS selector\n = (Set|array) result of query selection\n \\*/\n elproto.selectAll = function (query) {\n var nodelist = this.node.querySelectorAll(query),\n set = (Snap.set || Array)();\n for (var i = 0; i < nodelist.length; i++) {\n set.push(wrap(nodelist[i]));\n }\n return set;\n };\n /*\\\n * Element.asPX\n [ method ]\n **\n * Returns given attribute of the element as a `px` value (not %, em, etc.)\n **\n - attr (string) attribute name\n - value (string) #optional attribute value\n = (Element) result of query selection\n \\*/\n elproto.asPX = function (attr, value) {\n if (value == null) {\n value = this.attr(attr);\n }\n return +unit2px(this, attr, value);\n };\n // SIERRA Element.use(): I suggest adding a note about how to access the original element the returned instantiates. It's a part of SVG with which ordinary web developers may be least familiar.\n /*\\\n * Element.use\n [ method ]\n **\n * Creates a `` element linked to the current element\n **\n = (Element) the `` element\n \\*/\n elproto.use = function () {\n var use,\n id = this.node.id;\n if (!id) {\n id = this.id;\n $(this.node, {\n id: id\n });\n }\n if (this.type == \"linearGradient\" || this.type == \"radialGradient\" ||\n this.type == \"pattern\") {\n use = make(this.type, this.node.parentNode);\n } else {\n use = make(\"use\", this.node.parentNode);\n }\n $(use.node, {\n \"xlink:href\": \"#\" + id\n });\n use.original = this;\n return use;\n };\n function fixids(el) {\n var els = el.selectAll(\"*\"),\n it,\n url = /^\\s*url\\((\"|'|)(.*)\\1\\)\\s*$/,\n ids = [],\n uses = {};\n function urltest(it, name) {\n var val = $(it.node, name);\n val = val && val.match(url);\n val = val && val[2];\n if (val && val.charAt() == \"#\") {\n val = val.substring(1);\n } else {\n return;\n }\n if (val) {\n uses[val] = (uses[val] || []).concat(function (id) {\n var attr = {};\n attr[name] = Snap.url(id);\n $(it.node, attr);\n });\n }\n }\n function linktest(it) {\n var val = $(it.node, \"xlink:href\");\n if (val && val.charAt() == \"#\") {\n val = val.substring(1);\n } else {\n return;\n }\n if (val) {\n uses[val] = (uses[val] || []).concat(function (id) {\n it.attr(\"xlink:href\", \"#\" + id);\n });\n }\n }\n for (var i = 0, ii = els.length; i < ii; i++) {\n it = els[i];\n urltest(it, \"fill\");\n urltest(it, \"stroke\");\n urltest(it, \"filter\");\n urltest(it, \"mask\");\n urltest(it, \"clip-path\");\n linktest(it);\n var oldid = $(it.node, \"id\");\n if (oldid) {\n $(it.node, {id: it.id});\n ids.push({\n old: oldid,\n id: it.id\n });\n }\n }\n for (i = 0, ii = ids.length; i < ii; i++) {\n var fs = uses[ids[i].old];\n if (fs) {\n for (var j = 0, jj = fs.length; j < jj; j++) {\n fs[j](ids[i].id);\n }\n }\n }\n }\n /*\\\n * Element.clone\n [ method ]\n **\n * Creates a clone of the element and inserts it after the element\n **\n = (Element) the clone\n \\*/\n elproto.clone = function () {\n var clone = wrap(this.node.cloneNode(true));\n if ($(clone.node, \"id\")) {\n $(clone.node, {id: clone.id});\n }\n fixids(clone);\n clone.insertAfter(this);\n return clone;\n };\n /*\\\n * Element.toDefs\n [ method ]\n **\n * Moves element to the shared `` area\n **\n = (Element) the element\n \\*/\n elproto.toDefs = function () {\n var defs = getSomeDefs(this);\n defs.appendChild(this.node);\n return this;\n };\n /*\\\n * Element.toPattern\n [ method ]\n **\n * Creates a `` element from the current element\n **\n * To create a pattern you have to specify the pattern rect:\n - x (string|number)\n - y (string|number)\n - width (string|number)\n - height (string|number)\n = (Element) the `` element\n * You can use pattern later on as an argument for `fill` attribute:\n | var p = paper.path(\"M10-5-10,15M15,0,0,15M0-5-20,15\").attr({\n | fill: \"none\",\n | stroke: \"#bada55\",\n | strokeWidth: 5\n | }).pattern(0, 0, 10, 10),\n | c = paper.circle(200, 200, 100);\n | c.attr({\n | fill: p\n | });\n \\*/\n elproto.pattern = elproto.toPattern = function (x, y, width, height) {\n var p = make(\"pattern\", getSomeDefs(this));\n if (x == null) {\n x = this.getBBox();\n }\n if (is(x, \"object\") && \"x\" in x) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n $(p.node, {\n x: x,\n y: y,\n width: width,\n height: height,\n patternUnits: \"userSpaceOnUse\",\n id: p.id,\n viewBox: [x, y, width, height].join(\" \")\n });\n p.node.appendChild(this.node);\n return p;\n };\n// SIERRA Element.marker(): clarify what a reference point is. E.g., helps you offset the object from its edge such as when centering it over a path.\n// SIERRA Element.marker(): I suggest the method should accept default reference point values. Perhaps centered with (refX = width/2) and (refY = height/2)? Also, couldn't it assume the element's current _width_ and _height_? And please specify what _x_ and _y_ mean: offsets? If so, from where? Couldn't they also be assigned default values?\n /*\\\n * Element.marker\n [ method ]\n **\n * Creates a `` element from the current element\n **\n * To create a marker you have to specify the bounding rect and reference point:\n - x (number)\n - y (number)\n - width (number)\n - height (number)\n - refX (number)\n - refY (number)\n = (Element) the `` element\n * You can specify the marker later as an argument for `marker-start`, `marker-end`, `marker-mid`, and `marker` attributes. The `marker` attribute places the marker at every point along the path, and `marker-mid` places them at every point except the start and end.\n \\*/\n // TODO add usage for markers\n elproto.marker = function (x, y, width, height, refX, refY) {\n var p = make(\"marker\", getSomeDefs(this));\n if (x == null) {\n x = this.getBBox();\n }\n if (is(x, \"object\") && \"x\" in x) {\n y = x.y;\n width = x.width;\n height = x.height;\n refX = x.refX || x.cx;\n refY = x.refY || x.cy;\n x = x.x;\n }\n $(p.node, {\n viewBox: [x, y, width, height].join(\" \"),\n markerWidth: width,\n markerHeight: height,\n orient: \"auto\",\n refX: refX || 0,\n refY: refY || 0,\n id: p.id\n });\n p.node.appendChild(this.node);\n return p;\n };\n var eldata = {};\n /*\\\n * Element.data\n [ method ]\n **\n * Adds or retrieves given value associated with given key. (Don’t confuse\n * with `data-` attributes)\n *\n * See also @Element.removeData\n - key (string) key to store data\n - value (any) #optional value to store\n = (object) @Element\n * or, if value is not specified:\n = (any) value\n > Usage\n | for (var i = 0, i < 5, i++) {\n | paper.circle(10 + 15 * i, 10, 10)\n | .attr({fill: \"#000\"})\n | .data(\"i\", i)\n | .click(function () {\n | alert(this.data(\"i\"));\n | });\n | }\n \\*/\n elproto.data = function (key, value) {\n var data = eldata[this.id] = eldata[this.id] || {};\n if (arguments.length == 0){\n eve(\"snap.data.get.\" + this.id, this, data, null);\n return data;\n }\n if (arguments.length == 1) {\n if (Snap.is(key, \"object\")) {\n for (var i in key) if (key[has](i)) {\n this.data(i, key[i]);\n }\n return this;\n }\n eve(\"snap.data.get.\" + this.id, this, data[key], key);\n return data[key];\n }\n data[key] = value;\n eve(\"snap.data.set.\" + this.id, this, value, key);\n return this;\n };\n /*\\\n * Element.removeData\n [ method ]\n **\n * Removes value associated with an element by given key.\n * If key is not provided, removes all the data of the element.\n - key (string) #optional key\n = (object) @Element\n \\*/\n elproto.removeData = function (key) {\n if (key == null) {\n eldata[this.id] = {};\n } else {\n eldata[this.id] && delete eldata[this.id][key];\n }\n return this;\n };\n /*\\\n * Element.outerSVG\n [ method ]\n **\n * Returns SVG code for the element, equivalent to HTML's `outerHTML`.\n *\n * See also @Element.innerSVG\n = (string) SVG code for the element\n \\*/\n /*\\\n * Element.toString\n [ method ]\n **\n * See @Element.outerSVG\n \\*/\n elproto.outerSVG = elproto.toString = toString(1);\n /*\\\n * Element.innerSVG\n [ method ]\n **\n * Returns SVG code for the element's contents, equivalent to HTML's `innerHTML`\n = (string) SVG code for the element\n \\*/\n elproto.innerSVG = toString();\n function toString(type) {\n return function () {\n var res = type ? \"<\" + this.type : \"\",\n attr = this.node.attributes,\n chld = this.node.childNodes;\n if (type) {\n for (var i = 0, ii = attr.length; i < ii; i++) {\n res += \" \" + attr[i].name + '=\"' +\n attr[i].value.replace(/\"/g, '\\\\\"') + '\"';\n }\n }\n if (chld.length) {\n type && (res += \">\");\n for (i = 0, ii = chld.length; i < ii; i++) {\n if (chld[i].nodeType == 3) {\n res += chld[i].nodeValue;\n } else if (chld[i].nodeType == 1) {\n res += wrap(chld[i]).toString();\n }\n }\n type && (res += \"\");\n } else {\n type && (res += \"/>\");\n }\n return res;\n };\n }\n elproto.toDataURL = function () {\n if (window && window.btoa) {\n var bb = this.getBBox(),\n svg = Snap.format('{contents}', {\n x: +bb.x.toFixed(3),\n y: +bb.y.toFixed(3),\n width: +bb.width.toFixed(3),\n height: +bb.height.toFixed(3),\n contents: this.outerSVG()\n });\n return \"data:image/svg+xml;base64,\" + btoa(unescape(encodeURIComponent(svg)));\n }\n };\n /*\\\n * Fragment.select\n [ method ]\n **\n * See @Element.select\n \\*/\n Fragment.prototype.select = elproto.select;\n /*\\\n * Fragment.selectAll\n [ method ]\n **\n * See @Element.selectAll\n \\*/\n Fragment.prototype.selectAll = elproto.selectAll;\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var objectToString = Object.prototype.toString,\n Str = String,\n math = Math,\n E = \"\";\n function Matrix(a, b, c, d, e, f) {\n if (b == null && objectToString.call(a) == \"[object SVGMatrix]\") {\n this.a = a.a;\n this.b = a.b;\n this.c = a.c;\n this.d = a.d;\n this.e = a.e;\n this.f = a.f;\n return;\n }\n if (a != null) {\n this.a = +a;\n this.b = +b;\n this.c = +c;\n this.d = +d;\n this.e = +e;\n this.f = +f;\n } else {\n this.a = 1;\n this.b = 0;\n this.c = 0;\n this.d = 1;\n this.e = 0;\n this.f = 0;\n }\n }\n (function (matrixproto) {\n /*\\\n * Matrix.add\n [ method ]\n **\n * Adds the given matrix to existing one\n - a (number)\n - b (number)\n - c (number)\n - d (number)\n - e (number)\n - f (number)\n * or\n - matrix (object) @Matrix\n \\*/\n matrixproto.add = function (a, b, c, d, e, f) {\n if (a && a instanceof Matrix) {\n return this.add(a.a, a.b, a.c, a.d, a.e, a.f);\n }\n var aNew = a * this.a + b * this.c,\n bNew = a * this.b + b * this.d;\n this.e += e * this.a + f * this.c;\n this.f += e * this.b + f * this.d;\n this.c = c * this.a + d * this.c;\n this.d = c * this.b + d * this.d;\n\n this.a = aNew;\n this.b = bNew;\n return this;\n };\n /*\\\n * Matrix.multLeft\n [ method ]\n **\n * Multiplies a passed affine transform to the left: M * this.\n - a (number)\n - b (number)\n - c (number)\n - d (number)\n - e (number)\n - f (number)\n * or\n - matrix (object) @Matrix\n \\*/\n Matrix.prototype.multLeft = function (a, b, c, d, e, f) {\n if (a && a instanceof Matrix) {\n return this.multLeft(a.a, a.b, a.c, a.d, a.e, a.f);\n }\n var aNew = a * this.a + c * this.b,\n cNew = a * this.c + c * this.d,\n eNew = a * this.e + c * this.f + e;\n this.b = b * this.a + d * this.b;\n this.d = b * this.c + d * this.d;\n this.f = b * this.e + d * this.f + f;\n\n this.a = aNew;\n this.c = cNew;\n this.e = eNew;\n return this;\n };\n /*\\\n * Matrix.invert\n [ method ]\n **\n * Returns an inverted version of the matrix\n = (object) @Matrix\n \\*/\n matrixproto.invert = function () {\n var me = this,\n x = me.a * me.d - me.b * me.c;\n return new Matrix(me.d / x, -me.b / x, -me.c / x, me.a / x, (me.c * me.f - me.d * me.e) / x, (me.b * me.e - me.a * me.f) / x);\n };\n /*\\\n * Matrix.clone\n [ method ]\n **\n * Returns a copy of the matrix\n = (object) @Matrix\n \\*/\n matrixproto.clone = function () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n /*\\\n * Matrix.translate\n [ method ]\n **\n * Translate the matrix\n - x (number) horizontal offset distance\n - y (number) vertical offset distance\n \\*/\n matrixproto.translate = function (x, y) {\n this.e += x * this.a + y * this.c;\n this.f += x * this.b + y * this.d;\n return this;\n };\n /*\\\n * Matrix.scale\n [ method ]\n **\n * Scales the matrix\n - x (number) amount to be scaled, with `1` resulting in no change\n - y (number) #optional amount to scale along the vertical axis. (Otherwise `x` applies to both axes.)\n - cx (number) #optional horizontal origin point from which to scale\n - cy (number) #optional vertical origin point from which to scale\n * Default cx, cy is the middle point of the element.\n \\*/\n matrixproto.scale = function (x, y, cx, cy) {\n y == null && (y = x);\n (cx || cy) && this.translate(cx, cy);\n this.a *= x;\n this.b *= x;\n this.c *= y;\n this.d *= y;\n (cx || cy) && this.translate(-cx, -cy);\n return this;\n };\n /*\\\n * Matrix.rotate\n [ method ]\n **\n * Rotates the matrix\n - a (number) angle of rotation, in degrees\n - x (number) horizontal origin point from which to rotate\n - y (number) vertical origin point from which to rotate\n \\*/\n matrixproto.rotate = function (a, x, y) {\n a = Snap.rad(a);\n x = x || 0;\n y = y || 0;\n var cos = +math.cos(a).toFixed(9),\n sin = +math.sin(a).toFixed(9);\n this.add(cos, sin, -sin, cos, x, y);\n return this.add(1, 0, 0, 1, -x, -y);\n };\n /*\\\n * Matrix.skewX\n [ method ]\n **\n * Skews the matrix along the x-axis\n - x (number) Angle to skew along the x-axis (in degrees).\n \\*/\n matrixproto.skewX = function (x) {\n return this.skew(x, 0);\n };\n /*\\\n * Matrix.skewY\n [ method ]\n **\n * Skews the matrix along the y-axis\n - y (number) Angle to skew along the y-axis (in degrees).\n \\*/\n matrixproto.skewY = function (y) {\n return this.skew(0, y);\n };\n /*\\\n * Matrix.skew\n [ method ]\n **\n * Skews the matrix\n - y (number) Angle to skew along the y-axis (in degrees).\n - x (number) Angle to skew along the x-axis (in degrees).\n \\*/\n matrixproto.skew = function (x, y) {\n x = x || 0;\n y = y || 0;\n x = Snap.rad(x);\n y = Snap.rad(y);\n var c = math.tan(x).toFixed(9);\n var b = math.tan(y).toFixed(9);\n return this.add(1, b, c, 1, 0, 0);\n };\n /*\\\n * Matrix.x\n [ method ]\n **\n * Returns x coordinate for given point after transformation described by the matrix. See also @Matrix.y\n - x (number)\n - y (number)\n = (number) x\n \\*/\n matrixproto.x = function (x, y) {\n return x * this.a + y * this.c + this.e;\n };\n /*\\\n * Matrix.y\n [ method ]\n **\n * Returns y coordinate for given point after transformation described by the matrix. See also @Matrix.x\n - x (number)\n - y (number)\n = (number) y\n \\*/\n matrixproto.y = function (x, y) {\n return x * this.b + y * this.d + this.f;\n };\n matrixproto.get = function (i) {\n return +this[Str.fromCharCode(97 + i)].toFixed(4);\n };\n matrixproto.toString = function () {\n return \"matrix(\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + \")\";\n };\n matrixproto.offset = function () {\n return [this.e.toFixed(4), this.f.toFixed(4)];\n };\n function norm(a) {\n return a[0] * a[0] + a[1] * a[1];\n }\n function normalize(a) {\n var mag = math.sqrt(norm(a));\n a[0] && (a[0] /= mag);\n a[1] && (a[1] /= mag);\n }\n /*\\\n * Matrix.determinant\n [ method ]\n **\n * Finds determinant of the given matrix.\n = (number) determinant\n \\*/\n matrixproto.determinant = function () {\n return this.a * this.d - this.b * this.c;\n };\n /*\\\n * Matrix.split\n [ method ]\n **\n * Splits matrix into primitive transformations\n = (object) in format:\n o dx (number) translation by x\n o dy (number) translation by y\n o scalex (number) scale by x\n o scaley (number) scale by y\n o shear (number) shear\n o rotate (number) rotation in deg\n o isSimple (boolean) could it be represented via simple transformations\n \\*/\n matrixproto.split = function () {\n var out = {};\n // translation\n out.dx = this.e;\n out.dy = this.f;\n\n // scale and shear\n var row = [[this.a, this.b], [this.c, this.d]];\n out.scalex = math.sqrt(norm(row[0]));\n normalize(row[0]);\n\n out.shear = row[0][0] * row[1][0] + row[0][1] * row[1][1];\n row[1] = [row[1][0] - row[0][0] * out.shear, row[1][1] - row[0][1] * out.shear];\n\n out.scaley = math.sqrt(norm(row[1]));\n normalize(row[1]);\n out.shear /= out.scaley;\n\n if (this.determinant() < 0) {\n out.scalex = -out.scalex;\n }\n\n // rotation\n var sin = row[0][1],\n cos = row[1][1];\n if (cos < 0) {\n out.rotate = Snap.deg(math.acos(cos));\n if (sin < 0) {\n out.rotate = 360 - out.rotate;\n }\n } else {\n out.rotate = Snap.deg(math.asin(sin));\n }\n\n out.isSimple = !+out.shear.toFixed(9) && (out.scalex.toFixed(9) == out.scaley.toFixed(9) || !out.rotate);\n out.isSuperSimple = !+out.shear.toFixed(9) && out.scalex.toFixed(9) == out.scaley.toFixed(9) && !out.rotate;\n out.noRotation = !+out.shear.toFixed(9) && !out.rotate;\n return out;\n };\n /*\\\n * Matrix.toTransformString\n [ method ]\n **\n * Returns transform string that represents given matrix\n = (string) transform string\n \\*/\n matrixproto.toTransformString = function (shorter) {\n var s = shorter || this.split();\n if (!+s.shear.toFixed(9)) {\n s.scalex = +s.scalex.toFixed(4);\n s.scaley = +s.scaley.toFixed(4);\n s.rotate = +s.rotate.toFixed(4);\n return (s.dx || s.dy ? \"t\" + [+s.dx.toFixed(4), +s.dy.toFixed(4)] : E) +\n (s.rotate ? \"r\" + [+s.rotate.toFixed(4), 0, 0] : E) +\n (s.scalex != 1 || s.scaley != 1 ? \"s\" + [s.scalex, s.scaley, 0, 0] : E);\n } else {\n return \"m\" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)];\n }\n };\n })(Matrix.prototype);\n /*\\\n * Snap.Matrix\n [ method ]\n **\n * Matrix constructor, extend on your own risk.\n * To create matrices use @Snap.matrix.\n \\*/\n Snap.Matrix = Matrix;\n /*\\\n * Snap.matrix\n [ method ]\n **\n * Utility method\n **\n * Returns a matrix based on the given parameters\n - a (number)\n - b (number)\n - c (number)\n - d (number)\n - e (number)\n - f (number)\n * or\n - svgMatrix (SVGMatrix)\n = (object) @Matrix\n \\*/\n Snap.matrix = function (a, b, c, d, e, f) {\n return new Matrix(a, b, c, d, e, f);\n };\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var has = \"hasOwnProperty\",\n make = Snap._.make,\n wrap = Snap._.wrap,\n is = Snap.is,\n getSomeDefs = Snap._.getSomeDefs,\n reURLValue = /^url\\((['\"]?)([^)]+)\\1\\)$/,\n $ = Snap._.$,\n URL = Snap.url,\n Str = String,\n separator = Snap._.separator,\n E = \"\";\n /*\\\n * Snap.deurl\n [ method ]\n **\n * Unwraps path from `\"url()\"`.\n - value (string) url path\n = (string) unwrapped path\n \\*/\n Snap.deurl = function (value) {\n var res = String(value).match(reURLValue);\n return res ? res[2] : value;\n }\n // Attributes event handlers\n eve.on(\"snap.util.attr.mask\", function (value) {\n if (value instanceof Element || value instanceof Fragment) {\n eve.stop();\n if (value instanceof Fragment && value.node.childNodes.length == 1) {\n value = value.node.firstChild;\n getSomeDefs(this).appendChild(value);\n value = wrap(value);\n }\n if (value.type == \"mask\") {\n var mask = value;\n } else {\n mask = make(\"mask\", getSomeDefs(this));\n mask.node.appendChild(value.node);\n }\n !mask.node.id && $(mask.node, {\n id: mask.id\n });\n $(this.node, {\n mask: URL(mask.id)\n });\n }\n });\n (function (clipIt) {\n eve.on(\"snap.util.attr.clip\", clipIt);\n eve.on(\"snap.util.attr.clip-path\", clipIt);\n eve.on(\"snap.util.attr.clipPath\", clipIt);\n }(function (value) {\n if (value instanceof Element || value instanceof Fragment) {\n eve.stop();\n var clip,\n node = value.node;\n while (node) {\n if (node.nodeName === \"clipPath\") {\n clip = new Element(node);\n break;\n }\n if (node.nodeName === \"svg\") {\n clip = undefined;\n break;\n }\n node = node.parentNode;\n }\n if (!clip) {\n clip = make(\"clipPath\", getSomeDefs(this));\n clip.node.appendChild(value.node);\n !clip.node.id && $(clip.node, {\n id: clip.id\n });\n }\n $(this.node, {\n \"clip-path\": URL(clip.node.id || clip.id)\n });\n }\n }));\n function fillStroke(name) {\n return function (value) {\n eve.stop();\n if (value instanceof Fragment && value.node.childNodes.length == 1 &&\n (value.node.firstChild.tagName == \"radialGradient\" ||\n value.node.firstChild.tagName == \"linearGradient\" ||\n value.node.firstChild.tagName == \"pattern\")) {\n value = value.node.firstChild;\n getSomeDefs(this).appendChild(value);\n value = wrap(value);\n }\n if (value instanceof Element) {\n if (value.type == \"radialGradient\" || value.type == \"linearGradient\"\n || value.type == \"pattern\") {\n if (!value.node.id) {\n $(value.node, {\n id: value.id\n });\n }\n var fill = URL(value.node.id);\n } else {\n fill = value.attr(name);\n }\n } else {\n fill = Snap.color(value);\n if (fill.error) {\n var grad = Snap(getSomeDefs(this).ownerSVGElement).gradient(value);\n if (grad) {\n if (!grad.node.id) {\n $(grad.node, {\n id: grad.id\n });\n }\n fill = URL(grad.node.id);\n } else {\n fill = value;\n }\n } else {\n fill = Str(fill);\n }\n }\n var attrs = {};\n attrs[name] = fill;\n $(this.node, attrs);\n this.node.style[name] = E;\n };\n }\n eve.on(\"snap.util.attr.fill\", fillStroke(\"fill\"));\n eve.on(\"snap.util.attr.stroke\", fillStroke(\"stroke\"));\n var gradrg = /^([lr])(?:\\(([^)]*)\\))?(.*)$/i;\n eve.on(\"snap.util.grad.parse\", function parseGrad(string) {\n string = Str(string);\n var tokens = string.match(gradrg);\n if (!tokens) {\n return null;\n }\n var type = tokens[1],\n params = tokens[2],\n stops = tokens[3];\n params = params.split(/\\s*,\\s*/).map(function (el) {\n return +el == el ? +el : el;\n });\n if (params.length == 1 && params[0] == 0) {\n params = [];\n }\n stops = stops.split(\"-\");\n stops = stops.map(function (el) {\n el = el.split(\":\");\n var out = {\n color: el[0]\n };\n if (el[1]) {\n out.offset = parseFloat(el[1]);\n }\n return out;\n });\n var len = stops.length,\n start = 0,\n j = 0;\n function seed(i, end) {\n var step = (end - start) / (i - j);\n for (var k = j; k < i; k++) {\n stops[k].offset = +(+start + step * (k - j)).toFixed(2);\n }\n j = i;\n start = end;\n }\n len--;\n for (var i = 0; i < len; i++) if (\"offset\" in stops[i]) {\n seed(i, stops[i].offset);\n }\n stops[len].offset = stops[len].offset || 100;\n seed(len, stops[len].offset);\n return {\n type: type,\n params: params,\n stops: stops\n };\n });\n\n eve.on(\"snap.util.attr.d\", function (value) {\n eve.stop();\n if (is(value, \"array\") && is(value[0], \"array\")) {\n value = Snap.path.toString.call(value);\n }\n value = Str(value);\n if (value.match(/[ruo]/i)) {\n value = Snap.path.toAbsolute(value);\n }\n $(this.node, {d: value});\n })(-1);\n eve.on(\"snap.util.attr.#text\", function (value) {\n eve.stop();\n value = Str(value);\n var txt = glob.doc.createTextNode(value);\n while (this.node.firstChild) {\n this.node.removeChild(this.node.firstChild);\n }\n this.node.appendChild(txt);\n })(-1);\n eve.on(\"snap.util.attr.path\", function (value) {\n eve.stop();\n this.attr({d: value});\n })(-1);\n eve.on(\"snap.util.attr.class\", function (value) {\n eve.stop();\n this.node.className.baseVal = value;\n })(-1);\n eve.on(\"snap.util.attr.viewBox\", function (value) {\n var vb;\n if (is(value, \"object\") && \"x\" in value) {\n vb = [value.x, value.y, value.width, value.height].join(\" \");\n } else if (is(value, \"array\")) {\n vb = value.join(\" \");\n } else {\n vb = value;\n }\n $(this.node, {\n viewBox: vb\n });\n eve.stop();\n })(-1);\n eve.on(\"snap.util.attr.transform\", function (value) {\n this.transform(value);\n eve.stop();\n })(-1);\n eve.on(\"snap.util.attr.r\", function (value) {\n if (this.type == \"rect\") {\n eve.stop();\n $(this.node, {\n rx: value,\n ry: value\n });\n }\n })(-1);\n eve.on(\"snap.util.attr.textpath\", function (value) {\n eve.stop();\n if (this.type == \"text\") {\n var id, tp, node;\n if (!value && this.textPath) {\n tp = this.textPath;\n while (tp.node.firstChild) {\n this.node.appendChild(tp.node.firstChild);\n }\n tp.remove();\n delete this.textPath;\n return;\n }\n if (is(value, \"string\")) {\n var defs = getSomeDefs(this),\n path = wrap(defs.parentNode).path(value);\n defs.appendChild(path.node);\n id = path.id;\n path.attr({id: id});\n } else {\n value = wrap(value);\n if (value instanceof Element) {\n id = value.attr(\"id\");\n if (!id) {\n id = value.id;\n value.attr({id: id});\n }\n }\n }\n if (id) {\n tp = this.textPath;\n node = this.node;\n if (tp) {\n tp.attr({\"xlink:href\": \"#\" + id});\n } else {\n tp = $(\"textPath\", {\n \"xlink:href\": \"#\" + id\n });\n while (node.firstChild) {\n tp.appendChild(node.firstChild);\n }\n node.appendChild(tp);\n this.textPath = wrap(tp);\n }\n }\n }\n })(-1);\n eve.on(\"snap.util.attr.text\", function (value) {\n if (this.type == \"text\") {\n var i = 0,\n node = this.node,\n tuner = function (chunk) {\n var out = $(\"tspan\");\n if (is(chunk, \"array\")) {\n for (var i = 0; i < chunk.length; i++) {\n out.appendChild(tuner(chunk[i]));\n }\n } else {\n out.appendChild(glob.doc.createTextNode(chunk));\n }\n out.normalize && out.normalize();\n return out;\n };\n while (node.firstChild) {\n node.removeChild(node.firstChild);\n }\n var tuned = tuner(value);\n while (tuned.firstChild) {\n node.appendChild(tuned.firstChild);\n }\n }\n eve.stop();\n })(-1);\n function setFontSize(value) {\n eve.stop();\n if (value == +value) {\n value += \"px\";\n }\n this.node.style.fontSize = value;\n }\n eve.on(\"snap.util.attr.fontSize\", setFontSize)(-1);\n eve.on(\"snap.util.attr.font-size\", setFontSize)(-1);\n\n\n eve.on(\"snap.util.getattr.transform\", function () {\n eve.stop();\n return this.transform();\n })(-1);\n eve.on(\"snap.util.getattr.textpath\", function () {\n eve.stop();\n return this.textPath;\n })(-1);\n // Markers\n (function () {\n function getter(end) {\n return function () {\n eve.stop();\n var style = glob.doc.defaultView.getComputedStyle(this.node, null).getPropertyValue(\"marker-\" + end);\n if (style == \"none\") {\n return style;\n } else {\n return Snap(glob.doc.getElementById(style.match(reURLValue)[1]));\n }\n };\n }\n function setter(end) {\n return function (value) {\n eve.stop();\n var name = \"marker\" + end.charAt(0).toUpperCase() + end.substring(1);\n if (value == \"\" || !value) {\n this.node.style[name] = \"none\";\n return;\n }\n if (value.type == \"marker\") {\n var id = value.node.id;\n if (!id) {\n $(value.node, {id: value.id});\n }\n this.node.style[name] = URL(id);\n return;\n }\n };\n }\n eve.on(\"snap.util.getattr.marker-end\", getter(\"end\"))(-1);\n eve.on(\"snap.util.getattr.markerEnd\", getter(\"end\"))(-1);\n eve.on(\"snap.util.getattr.marker-start\", getter(\"start\"))(-1);\n eve.on(\"snap.util.getattr.markerStart\", getter(\"start\"))(-1);\n eve.on(\"snap.util.getattr.marker-mid\", getter(\"mid\"))(-1);\n eve.on(\"snap.util.getattr.markerMid\", getter(\"mid\"))(-1);\n eve.on(\"snap.util.attr.marker-end\", setter(\"end\"))(-1);\n eve.on(\"snap.util.attr.markerEnd\", setter(\"end\"))(-1);\n eve.on(\"snap.util.attr.marker-start\", setter(\"start\"))(-1);\n eve.on(\"snap.util.attr.markerStart\", setter(\"start\"))(-1);\n eve.on(\"snap.util.attr.marker-mid\", setter(\"mid\"))(-1);\n eve.on(\"snap.util.attr.markerMid\", setter(\"mid\"))(-1);\n }());\n eve.on(\"snap.util.getattr.r\", function () {\n if (this.type == \"rect\" && $(this.node, \"rx\") == $(this.node, \"ry\")) {\n eve.stop();\n return $(this.node, \"rx\");\n }\n })(-1);\n function textExtract(node) {\n var out = [];\n var children = node.childNodes;\n for (var i = 0, ii = children.length; i < ii; i++) {\n var chi = children[i];\n if (chi.nodeType == 3) {\n out.push(chi.nodeValue);\n }\n if (chi.tagName == \"tspan\") {\n if (chi.childNodes.length == 1 && chi.firstChild.nodeType == 3) {\n out.push(chi.firstChild.nodeValue);\n } else {\n out.push(textExtract(chi));\n }\n }\n }\n return out;\n }\n eve.on(\"snap.util.getattr.text\", function () {\n if (this.type == \"text\" || this.type == \"tspan\") {\n eve.stop();\n var out = textExtract(this.node);\n return out.length == 1 ? out[0] : out;\n }\n })(-1);\n eve.on(\"snap.util.getattr.#text\", function () {\n return this.node.textContent;\n })(-1);\n eve.on(\"snap.util.getattr.fill\", function (internal) {\n if (internal) {\n return;\n }\n eve.stop();\n var value = eve(\"snap.util.getattr.fill\", this, true).firstDefined();\n return Snap(Snap.deurl(value)) || value;\n })(-1);\n eve.on(\"snap.util.getattr.stroke\", function (internal) {\n if (internal) {\n return;\n }\n eve.stop();\n var value = eve(\"snap.util.getattr.stroke\", this, true).firstDefined();\n return Snap(Snap.deurl(value)) || value;\n })(-1);\n eve.on(\"snap.util.getattr.viewBox\", function () {\n eve.stop();\n var vb = $(this.node, \"viewBox\");\n if (vb) {\n vb = vb.split(separator);\n return Snap._.box(+vb[0], +vb[1], +vb[2], +vb[3]);\n } else {\n return;\n }\n })(-1);\n eve.on(\"snap.util.getattr.points\", function () {\n var p = $(this.node, \"points\");\n eve.stop();\n if (p) {\n return p.split(separator);\n } else {\n return;\n }\n })(-1);\n eve.on(\"snap.util.getattr.path\", function () {\n var p = $(this.node, \"d\");\n eve.stop();\n return p;\n })(-1);\n eve.on(\"snap.util.getattr.class\", function () {\n return this.node.className.baseVal;\n })(-1);\n function getFontSize() {\n eve.stop();\n return this.node.style.fontSize;\n }\n eve.on(\"snap.util.getattr.fontSize\", getFontSize)(-1);\n eve.on(\"snap.util.getattr.font-size\", getFontSize)(-1);\n});\n\n// Copyright (c) 2014 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var rgNotSpace = /\\S+/g,\n rgBadSpace = /[\\t\\r\\n\\f]/g,\n rgTrim = /(^\\s+|\\s+$)/g,\n Str = String,\n elproto = Element.prototype;\n /*\\\n * Element.addClass\n [ method ]\n **\n * Adds given class name or list of class names to the element.\n - value (string) class name or space separated list of class names\n **\n = (Element) original element.\n \\*/\n elproto.addClass = function (value) {\n var classes = Str(value || \"\").match(rgNotSpace) || [],\n elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [],\n j,\n pos,\n clazz,\n finalValue;\n\n if (classes.length) {\n j = 0;\n while (clazz = classes[j++]) {\n pos = curClasses.indexOf(clazz);\n if (!~pos) {\n curClasses.push(clazz);\n }\n }\n\n finalValue = curClasses.join(\" \");\n if (className != finalValue) {\n elem.className.baseVal = finalValue;\n }\n }\n return this;\n };\n /*\\\n * Element.removeClass\n [ method ]\n **\n * Removes given class name or list of class names from the element.\n - value (string) class name or space separated list of class names\n **\n = (Element) original element.\n \\*/\n elproto.removeClass = function (value) {\n var classes = Str(value || \"\").match(rgNotSpace) || [],\n elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [],\n j,\n pos,\n clazz,\n finalValue;\n if (curClasses.length) {\n j = 0;\n while (clazz = classes[j++]) {\n pos = curClasses.indexOf(clazz);\n if (~pos) {\n curClasses.splice(pos, 1);\n }\n }\n\n finalValue = curClasses.join(\" \");\n if (className != finalValue) {\n elem.className.baseVal = finalValue;\n }\n }\n return this;\n };\n /*\\\n * Element.hasClass\n [ method ]\n **\n * Checks if the element has a given class name in the list of class names applied to it.\n - value (string) class name\n **\n = (boolean) `true` if the element has given class\n \\*/\n elproto.hasClass = function (value) {\n var elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [];\n return !!~curClasses.indexOf(value);\n };\n /*\\\n * Element.toggleClass\n [ method ]\n **\n * Add or remove one or more classes from the element, depending on either\n * the class’s presence or the value of the `flag` argument.\n - value (string) class name or space separated list of class names\n - flag (boolean) value to determine whether the class should be added or removed\n **\n = (Element) original element.\n \\*/\n elproto.toggleClass = function (value, flag) {\n if (flag != null) {\n if (flag) {\n return this.addClass(value);\n } else {\n return this.removeClass(value);\n }\n }\n var classes = (value || \"\").match(rgNotSpace) || [],\n elem = this.node,\n className = elem.className.baseVal,\n curClasses = className.match(rgNotSpace) || [],\n j,\n pos,\n clazz,\n finalValue;\n j = 0;\n while (clazz = classes[j++]) {\n pos = curClasses.indexOf(clazz);\n if (~pos) {\n curClasses.splice(pos, 1);\n } else {\n curClasses.push(clazz);\n }\n }\n\n finalValue = curClasses.join(\" \");\n if (className != finalValue) {\n elem.className.baseVal = finalValue;\n }\n return this;\n };\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var operators = {\n \"+\": function (x, y) {\n return x + y;\n },\n \"-\": function (x, y) {\n return x - y;\n },\n \"/\": function (x, y) {\n return x / y;\n },\n \"*\": function (x, y) {\n return x * y;\n }\n },\n Str = String,\n reUnit = /[a-z]+$/i,\n reAddon = /^\\s*([+\\-\\/*])\\s*=\\s*([\\d.eE+\\-]+)\\s*([^\\d\\s]+)?\\s*$/;\n function getNumber(val) {\n return val;\n }\n function getUnit(unit) {\n return function (val) {\n return +val.toFixed(3) + unit;\n };\n }\n eve.on(\"snap.util.attr\", function (val) {\n var plus = Str(val).match(reAddon);\n if (plus) {\n var evnt = eve.nt(),\n name = evnt.substring(evnt.lastIndexOf(\".\") + 1),\n a = this.attr(name),\n atr = {};\n eve.stop();\n var unit = plus[3] || \"\",\n aUnit = a.match(reUnit),\n op = operators[plus[1]];\n if (aUnit && aUnit == unit) {\n val = op(parseFloat(a), +plus[2]);\n } else {\n a = this.asPX(name);\n val = op(this.asPX(name), this.asPX(name, plus[2] + unit));\n }\n if (isNaN(a) || isNaN(val)) {\n return;\n }\n atr[name] = val;\n this.attr(atr);\n }\n })(-10);\n eve.on(\"snap.util.equal\", function (name, b) {\n var A, B, a = Str(this.attr(name) || \"\"),\n el = this,\n bplus = Str(b).match(reAddon);\n if (bplus) {\n eve.stop();\n var unit = bplus[3] || \"\",\n aUnit = a.match(reUnit),\n op = operators[bplus[1]];\n if (aUnit && aUnit == unit) {\n return {\n from: parseFloat(a),\n to: op(parseFloat(a), +bplus[2]),\n f: getUnit(aUnit)\n };\n } else {\n a = this.asPX(name);\n return {\n from: a,\n to: op(a, this.asPX(name, bplus[2] + unit)),\n f: getNumber\n };\n }\n }\n })(-10);\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var proto = Paper.prototype,\n is = Snap.is;\n /*\\\n * Paper.rect\n [ method ]\n *\n * Draws a rectangle\n **\n - x (number) x coordinate of the top left corner\n - y (number) y coordinate of the top left corner\n - width (number) width\n - height (number) height\n - rx (number) #optional horizontal radius for rounded corners, default is 0\n - ry (number) #optional vertical radius for rounded corners, default is rx or 0\n = (object) the `rect` element\n **\n > Usage\n | // regular rectangle\n | var c = paper.rect(10, 10, 50, 50);\n | // rectangle with rounded corners\n | var c = paper.rect(40, 40, 50, 50, 10);\n \\*/\n proto.rect = function (x, y, w, h, rx, ry) {\n var attr;\n if (ry == null) {\n ry = rx;\n }\n if (is(x, \"object\") && x == \"[object Object]\") {\n attr = x;\n } else if (x != null) {\n attr = {\n x: x,\n y: y,\n width: w,\n height: h\n };\n if (rx != null) {\n attr.rx = rx;\n attr.ry = ry;\n }\n }\n return this.el(\"rect\", attr);\n };\n /*\\\n * Paper.circle\n [ method ]\n **\n * Draws a circle\n **\n - x (number) x coordinate of the centre\n - y (number) y coordinate of the centre\n - r (number) radius\n = (object) the `circle` element\n **\n > Usage\n | var c = paper.circle(50, 50, 40);\n \\*/\n proto.circle = function (cx, cy, r) {\n var attr;\n if (is(cx, \"object\") && cx == \"[object Object]\") {\n attr = cx;\n } else if (cx != null) {\n attr = {\n cx: cx,\n cy: cy,\n r: r\n };\n }\n return this.el(\"circle\", attr);\n };\n\n var preload = (function () {\n function onerror() {\n this.parentNode.removeChild(this);\n }\n return function (src, f) {\n var img = glob.doc.createElement(\"img\"),\n body = glob.doc.body;\n img.style.cssText = \"position:absolute;left:-9999em;top:-9999em\";\n img.onload = function () {\n f.call(img);\n img.onload = img.onerror = null;\n body.removeChild(img);\n };\n img.onerror = onerror;\n body.appendChild(img);\n img.src = src;\n };\n }());\n\n /*\\\n * Paper.image\n [ method ]\n **\n * Places an image on the surface\n **\n - src (string) URI of the source image\n - x (number) x offset position\n - y (number) y offset position\n - width (number) width of the image\n - height (number) height of the image\n = (object) the `image` element\n * or\n = (object) Snap element object with type `image`\n **\n > Usage\n | var c = paper.image(\"apple.png\", 10, 10, 80, 80);\n \\*/\n proto.image = function (src, x, y, width, height) {\n var el = this.el(\"image\");\n if (is(src, \"object\") && \"src\" in src) {\n el.attr(src);\n } else if (src != null) {\n var set = {\n \"xlink:href\": src,\n preserveAspectRatio: \"none\"\n };\n if (x != null && y != null) {\n set.x = x;\n set.y = y;\n }\n if (width != null && height != null) {\n set.width = width;\n set.height = height;\n } else {\n preload(src, function () {\n Snap._.$(el.node, {\n width: this.offsetWidth,\n height: this.offsetHeight\n });\n });\n }\n Snap._.$(el.node, set);\n }\n return el;\n };\n /*\\\n * Paper.ellipse\n [ method ]\n **\n * Draws an ellipse\n **\n - x (number) x coordinate of the centre\n - y (number) y coordinate of the centre\n - rx (number) horizontal radius\n - ry (number) vertical radius\n = (object) the `ellipse` element\n **\n > Usage\n | var c = paper.ellipse(50, 50, 40, 20);\n \\*/\n proto.ellipse = function (cx, cy, rx, ry) {\n var attr;\n if (is(cx, \"object\") && cx == \"[object Object]\") {\n attr = cx;\n } else if (cx != null) {\n attr ={\n cx: cx,\n cy: cy,\n rx: rx,\n ry: ry\n };\n }\n return this.el(\"ellipse\", attr);\n };\n // SIERRA Paper.path(): Unclear from the link what a Catmull-Rom curveto is, and why it would make life any easier.\n /*\\\n * Paper.path\n [ method ]\n **\n * Creates a `` element using the given string as the path's definition\n - pathString (string) #optional path string in SVG format\n * Path string consists of one-letter commands, followed by comma seprarated arguments in numerical form. Example:\n | \"M10,20L30,40\"\n * This example features two commands: `M`, with arguments `(10, 20)` and `L` with arguments `(30, 40)`. Uppercase letter commands express coordinates in absolute terms, while lowercase commands express them in relative terms from the most recently declared coordinates.\n *\n #

Here is short list of commands available, for more details see SVG path string format or article about path strings at MDN.

\n # \n # \n # \n # \n # \n # \n # \n # \n # \n # \n # \n #
CommandNameParameters
Mmoveto(x y)+
Zclosepath(none)
Llineto(x y)+
Hhorizontal linetox+
Vvertical linetoy+
Ccurveto(x1 y1 x2 y2 x y)+
Ssmooth curveto(x2 y2 x y)+
Qquadratic Bézier curveto(x1 y1 x y)+
Tsmooth quadratic Bézier curveto(x y)+
Aelliptical arc(rx ry x-axis-rotation large-arc-flag sweep-flag x y)+
RCatmull-Rom curveto*x1 y1 (x y)+
\n * * _Catmull-Rom curveto_ is a not standard SVG command and added to make life easier.\n * Note: there is a special case when a path consists of only three commands: `M10,10R…z`. In this case the path connects back to its starting point.\n > Usage\n | var c = paper.path(\"M10 10L90 90\");\n | // draw a diagonal line:\n | // move to 10,10, line to 90,90\n \\*/\n proto.path = function (d) {\n var attr;\n if (is(d, \"object\") && !is(d, \"array\")) {\n attr = d;\n } else if (d) {\n attr = {d: d};\n }\n return this.el(\"path\", attr);\n };\n /*\\\n * Paper.g\n [ method ]\n **\n * Creates a group element\n **\n - varargs (…) #optional elements to nest within the group\n = (object) the `g` element\n **\n > Usage\n | var c1 = paper.circle(),\n | c2 = paper.rect(),\n | g = paper.g(c2, c1); // note that the order of elements is different\n * or\n | var c1 = paper.circle(),\n | c2 = paper.rect(),\n | g = paper.g();\n | g.add(c2, c1);\n \\*/\n /*\\\n * Paper.group\n [ method ]\n **\n * See @Paper.g\n \\*/\n proto.group = proto.g = function (first) {\n var attr,\n el = this.el(\"g\");\n if (arguments.length == 1 && first && !first.type) {\n el.attr(first);\n } else if (arguments.length) {\n el.add(Array.prototype.slice.call(arguments, 0));\n }\n return el;\n };\n /*\\\n * Paper.svg\n [ method ]\n **\n * Creates a nested SVG element.\n - x (number) @optional X of the element\n - y (number) @optional Y of the element\n - width (number) @optional width of the element\n - height (number) @optional height of the element\n - vbx (number) @optional viewbox X\n - vby (number) @optional viewbox Y\n - vbw (number) @optional viewbox width\n - vbh (number) @optional viewbox height\n **\n = (object) the `svg` element\n **\n \\*/\n proto.svg = function (x, y, width, height, vbx, vby, vbw, vbh) {\n var attrs = {};\n if (is(x, \"object\") && y == null) {\n attrs = x;\n } else {\n if (x != null) {\n attrs.x = x;\n }\n if (y != null) {\n attrs.y = y;\n }\n if (width != null) {\n attrs.width = width;\n }\n if (height != null) {\n attrs.height = height;\n }\n if (vbx != null && vby != null && vbw != null && vbh != null) {\n attrs.viewBox = [vbx, vby, vbw, vbh];\n }\n }\n return this.el(\"svg\", attrs);\n };\n /*\\\n * Paper.mask\n [ method ]\n **\n * Equivalent in behaviour to @Paper.g, except it’s a mask.\n **\n = (object) the `mask` element\n **\n \\*/\n proto.mask = function (first) {\n var attr,\n el = this.el(\"mask\");\n if (arguments.length == 1 && first && !first.type) {\n el.attr(first);\n } else if (arguments.length) {\n el.add(Array.prototype.slice.call(arguments, 0));\n }\n return el;\n };\n /*\\\n * Paper.ptrn\n [ method ]\n **\n * Equivalent in behaviour to @Paper.g, except it’s a pattern.\n - x (number) @optional X of the element\n - y (number) @optional Y of the element\n - width (number) @optional width of the element\n - height (number) @optional height of the element\n - vbx (number) @optional viewbox X\n - vby (number) @optional viewbox Y\n - vbw (number) @optional viewbox width\n - vbh (number) @optional viewbox height\n **\n = (object) the `pattern` element\n **\n \\*/\n proto.ptrn = function (x, y, width, height, vx, vy, vw, vh) {\n if (is(x, \"object\")) {\n var attr = x;\n } else {\n attr = {patternUnits: \"userSpaceOnUse\"};\n if (x) {\n attr.x = x;\n }\n if (y) {\n attr.y = y;\n }\n if (width != null) {\n attr.width = width;\n }\n if (height != null) {\n attr.height = height;\n }\n if (vx != null && vy != null && vw != null && vh != null) {\n attr.viewBox = [vx, vy, vw, vh];\n } else {\n attr.viewBox = [x || 0, y || 0, width || 0, height || 0];\n }\n }\n return this.el(\"pattern\", attr);\n };\n /*\\\n * Paper.use\n [ method ]\n **\n * Creates a element.\n - id (string) @optional id of element to link\n * or\n - id (Element) @optional element to link\n **\n = (object) the `use` element\n **\n \\*/\n proto.use = function (id) {\n if (id != null) {\n if (id instanceof Element) {\n if (!id.attr(\"id\")) {\n id.attr({id: Snap._.id(id)});\n }\n id = id.attr(\"id\");\n }\n if (String(id).charAt() == \"#\") {\n id = id.substring(1);\n }\n return this.el(\"use\", {\"xlink:href\": \"#\" + id});\n } else {\n return Element.prototype.use.call(this);\n }\n };\n /*\\\n * Paper.symbol\n [ method ]\n **\n * Creates a element.\n - vbx (number) @optional viewbox X\n - vby (number) @optional viewbox Y\n - vbw (number) @optional viewbox width\n - vbh (number) @optional viewbox height\n = (object) the `symbol` element\n **\n \\*/\n proto.symbol = function (vx, vy, vw, vh) {\n var attr = {};\n if (vx != null && vy != null && vw != null && vh != null) {\n attr.viewBox = [vx, vy, vw, vh];\n }\n\n return this.el(\"symbol\", attr);\n };\n /*\\\n * Paper.text\n [ method ]\n **\n * Draws a text string\n **\n - x (number) x coordinate position\n - y (number) y coordinate position\n - text (string|array) The text string to draw or array of strings to nest within separate `` elements\n = (object) the `text` element\n **\n > Usage\n | var t1 = paper.text(50, 50, \"Snap\");\n | var t2 = paper.text(50, 50, [\"S\",\"n\",\"a\",\"p\"]);\n | // Text path usage\n | t1.attr({textpath: \"M10,10L100,100\"});\n | // or\n | var pth = paper.path(\"M10,10L100,100\");\n | t1.attr({textpath: pth});\n \\*/\n proto.text = function (x, y, text) {\n var attr = {};\n if (is(x, \"object\")) {\n attr = x;\n } else if (x != null) {\n attr = {\n x: x,\n y: y,\n text: text || \"\"\n };\n }\n return this.el(\"text\", attr);\n };\n /*\\\n * Paper.line\n [ method ]\n **\n * Draws a line\n **\n - x1 (number) x coordinate position of the start\n - y1 (number) y coordinate position of the start\n - x2 (number) x coordinate position of the end\n - y2 (number) y coordinate position of the end\n = (object) the `line` element\n **\n > Usage\n | var t1 = paper.line(50, 50, 100, 100);\n \\*/\n proto.line = function (x1, y1, x2, y2) {\n var attr = {};\n if (is(x1, \"object\")) {\n attr = x1;\n } else if (x1 != null) {\n attr = {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n }\n return this.el(\"line\", attr);\n };\n /*\\\n * Paper.polyline\n [ method ]\n **\n * Draws a polyline\n **\n - points (array) array of points\n * or\n - varargs (…) points\n = (object) the `polyline` element\n **\n > Usage\n | var p1 = paper.polyline([10, 10, 100, 100]);\n | var p2 = paper.polyline(10, 10, 100, 100);\n \\*/\n proto.polyline = function (points) {\n if (arguments.length > 1) {\n points = Array.prototype.slice.call(arguments, 0);\n }\n var attr = {};\n if (is(points, \"object\") && !is(points, \"array\")) {\n attr = points;\n } else if (points != null) {\n attr = {points: points};\n }\n return this.el(\"polyline\", attr);\n };\n /*\\\n * Paper.polygon\n [ method ]\n **\n * Draws a polygon. See @Paper.polyline\n \\*/\n proto.polygon = function (points) {\n if (arguments.length > 1) {\n points = Array.prototype.slice.call(arguments, 0);\n }\n var attr = {};\n if (is(points, \"object\") && !is(points, \"array\")) {\n attr = points;\n } else if (points != null) {\n attr = {points: points};\n }\n return this.el(\"polygon\", attr);\n };\n // gradients\n (function () {\n var $ = Snap._.$;\n // gradients' helpers\n /*\\\n * Element.stops\n [ method ]\n **\n * Only for gradients!\n * Returns array of gradient stops elements.\n = (array) the stops array.\n \\*/\n function Gstops() {\n return this.selectAll(\"stop\");\n }\n /*\\\n * Element.addStop\n [ method ]\n **\n * Only for gradients!\n * Adds another stop to the gradient.\n - color (string) stops color\n - offset (number) stops offset 0..100\n = (object) gradient element\n \\*/\n function GaddStop(color, offset) {\n var stop = $(\"stop\"),\n attr = {\n offset: +offset + \"%\"\n };\n color = Snap.color(color);\n attr[\"stop-color\"] = color.hex;\n if (color.opacity < 1) {\n attr[\"stop-opacity\"] = color.opacity;\n }\n $(stop, attr);\n var stops = this.stops(),\n inserted;\n for (var i = 0; i < stops.length; i++) {\n var stopOffset = parseFloat(stops[i].attr(\"offset\"));\n if (stopOffset > offset) {\n this.node.insertBefore(stop, stops[i].node);\n inserted = true;\n break;\n }\n }\n if (!inserted) {\n this.node.appendChild(stop);\n }\n return this;\n }\n function GgetBBox() {\n if (this.type == \"linearGradient\") {\n var x1 = $(this.node, \"x1\") || 0,\n x2 = $(this.node, \"x2\") || 1,\n y1 = $(this.node, \"y1\") || 0,\n y2 = $(this.node, \"y2\") || 0;\n return Snap._.box(x1, y1, math.abs(x2 - x1), math.abs(y2 - y1));\n } else {\n var cx = this.node.cx || .5,\n cy = this.node.cy || .5,\n r = this.node.r || 0;\n return Snap._.box(cx - r, cy - r, r * 2, r * 2);\n }\n }\n /*\\\n * Element.setStops\n [ method ]\n **\n * Only for gradients!\n * Updates stops of the gradient based on passed gradient descriptor. See @Ppaer.gradient\n - str (string) gradient descriptor part after `()`.\n = (object) gradient element\n | var g = paper.gradient(\"l(0, 0, 1, 1)#000-#f00-#fff\");\n | g.setStops(\"#fff-#000-#f00-#fc0\");\n \\*/\n function GsetStops(str) {\n var grad = str,\n stops = this.stops();\n if (typeof str == \"string\") {\n grad = eve(\"snap.util.grad.parse\", null, \"l(0,0,0,1)\" + str).firstDefined().stops;\n }\n if (!Snap.is(grad, \"array\")) {\n return;\n }\n for (var i = 0; i < stops.length; i++) {\n if (grad[i]) {\n var color = Snap.color(grad[i].color),\n attr = {\"offset\": grad[i].offset + \"%\"};\n attr[\"stop-color\"] = color.hex;\n if (color.opacity < 1) {\n attr[\"stop-opacity\"] = color.opacity;\n }\n stops[i].attr(attr);\n } else {\n stops[i].remove();\n }\n }\n for (i = stops.length; i < grad.length; i++) {\n this.addStop(grad[i].color, grad[i].offset);\n }\n return this;\n }\n function gradient(defs, str) {\n var grad = eve(\"snap.util.grad.parse\", null, str).firstDefined(),\n el;\n if (!grad) {\n return null;\n }\n grad.params.unshift(defs);\n if (grad.type.toLowerCase() == \"l\") {\n el = gradientLinear.apply(0, grad.params);\n } else {\n el = gradientRadial.apply(0, grad.params);\n }\n if (grad.type != grad.type.toLowerCase()) {\n $(el.node, {\n gradientUnits: \"userSpaceOnUse\"\n });\n }\n var stops = grad.stops,\n len = stops.length;\n for (var i = 0; i < len; i++) {\n var stop = stops[i];\n el.addStop(stop.color, stop.offset);\n }\n return el;\n }\n function gradientLinear(defs, x1, y1, x2, y2) {\n var el = Snap._.make(\"linearGradient\", defs);\n el.stops = Gstops;\n el.addStop = GaddStop;\n el.getBBox = GgetBBox;\n el.setStops = GsetStops;\n if (x1 != null) {\n $(el.node, {\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2\n });\n }\n return el;\n }\n function gradientRadial(defs, cx, cy, r, fx, fy) {\n var el = Snap._.make(\"radialGradient\", defs);\n el.stops = Gstops;\n el.addStop = GaddStop;\n el.getBBox = GgetBBox;\n if (cx != null) {\n $(el.node, {\n cx: cx,\n cy: cy,\n r: r\n });\n }\n if (fx != null && fy != null) {\n $(el.node, {\n fx: fx,\n fy: fy\n });\n }\n return el;\n }\n /*\\\n * Paper.gradient\n [ method ]\n **\n * Creates a gradient element\n **\n - gradient (string) gradient descriptor\n > Gradient Descriptor\n * The gradient descriptor is an expression formatted as\n * follows: `()`. The `` can be\n * either linear or radial. The uppercase `L` or `R` letters\n * indicate absolute coordinates offset from the SVG surface.\n * Lowercase `l` or `r` letters indicate coordinates\n * calculated relative to the element to which the gradient is\n * applied. Coordinates specify a linear gradient vector as\n * `x1`, `y1`, `x2`, `y2`, or a radial gradient as `cx`, `cy`,\n * `r` and optional `fx`, `fy` specifying a focal point away\n * from the center of the circle. Specify `` as a list\n * of dash-separated CSS color values. Each color may be\n * followed by a custom offset value, separated with a colon\n * character.\n > Examples\n * Linear gradient, relative from top-left corner to bottom-right\n * corner, from black through red to white:\n | var g = paper.gradient(\"l(0, 0, 1, 1)#000-#f00-#fff\");\n * Linear gradient, absolute from (0, 0) to (100, 100), from black\n * through red at 25% to white:\n | var g = paper.gradient(\"L(0, 0, 100, 100)#000-#f00:25-#fff\");\n * Radial gradient, relative from the center of the element with radius\n * half the width, from black to white:\n | var g = paper.gradient(\"r(0.5, 0.5, 0.5)#000-#fff\");\n * To apply the gradient:\n | paper.circle(50, 50, 40).attr({\n | fill: g\n | });\n = (object) the `gradient` element\n \\*/\n proto.gradient = function (str) {\n return gradient(this.defs, str);\n };\n proto.gradientLinear = function (x1, y1, x2, y2) {\n return gradientLinear(this.defs, x1, y1, x2, y2);\n };\n proto.gradientRadial = function (cx, cy, r, fx, fy) {\n return gradientRadial(this.defs, cx, cy, r, fx, fy);\n };\n /*\\\n * Paper.toString\n [ method ]\n **\n * Returns SVG code for the @Paper\n = (string) SVG code for the @Paper\n \\*/\n proto.toString = function () {\n var doc = this.node.ownerDocument,\n f = doc.createDocumentFragment(),\n d = doc.createElement(\"div\"),\n svg = this.node.cloneNode(true),\n res;\n f.appendChild(d);\n d.appendChild(svg);\n Snap._.$(svg, {xmlns: \"http://www.w3.org/2000/svg\"});\n res = d.innerHTML;\n f.removeChild(f.firstChild);\n return res;\n };\n /*\\\n * Paper.toDataURL\n [ method ]\n **\n * Returns SVG code for the @Paper as Data URI string.\n = (string) Data URI string\n \\*/\n proto.toDataURL = function () {\n if (window && window.btoa) {\n return \"data:image/svg+xml;base64,\" + btoa(unescape(encodeURIComponent(this)));\n }\n };\n /*\\\n * Paper.clear\n [ method ]\n **\n * Removes all child nodes of the paper, except .\n \\*/\n proto.clear = function () {\n var node = this.node.firstChild,\n next;\n while (node) {\n next = node.nextSibling;\n if (node.tagName != \"defs\") {\n node.parentNode.removeChild(node);\n } else {\n proto.clear.call({node: node});\n }\n node = next;\n }\n };\n }());\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var elproto = Element.prototype,\n is = Snap.is,\n clone = Snap._.clone,\n has = \"hasOwnProperty\",\n p2s = /,?([a-z]),?/gi,\n toFloat = parseFloat,\n math = Math,\n PI = math.PI,\n mmin = math.min,\n mmax = math.max,\n pow = math.pow,\n abs = math.abs;\n function paths(ps) {\n var p = paths.ps = paths.ps || {};\n if (p[ps]) {\n p[ps].sleep = 100;\n } else {\n p[ps] = {\n sleep: 100\n };\n }\n setTimeout(function () {\n for (var key in p) if (p[has](key) && key != ps) {\n p[key].sleep--;\n !p[key].sleep && delete p[key];\n }\n });\n return p[ps];\n }\n function box(x, y, width, height) {\n if (x == null) {\n x = y = width = height = 0;\n }\n if (y == null) {\n y = x.y;\n width = x.width;\n height = x.height;\n x = x.x;\n }\n return {\n x: x,\n y: y,\n width: width,\n w: width,\n height: height,\n h: height,\n x2: x + width,\n y2: y + height,\n cx: x + width / 2,\n cy: y + height / 2,\n r1: math.min(width, height) / 2,\n r2: math.max(width, height) / 2,\n r0: math.sqrt(width * width + height * height) / 2,\n path: rectPath(x, y, width, height),\n vb: [x, y, width, height].join(\" \")\n };\n }\n function toString() {\n return this.join(\",\").replace(p2s, \"$1\");\n }\n function pathClone(pathArray) {\n var res = clone(pathArray);\n res.toString = toString;\n return res;\n }\n function getPointAtSegmentLength(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length) {\n if (length == null) {\n return bezlen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y);\n } else {\n return findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y,\n getTotLen(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, length));\n }\n }\n function getLengthFactory(istotal, subpath) {\n function O(val) {\n return +(+val).toFixed(3);\n }\n return Snap._.cacher(function (path, length, onlystart) {\n if (path instanceof Element) {\n path = path.attr(\"d\");\n }\n path = path2curve(path);\n var x, y, p, l, sp = \"\", subpaths = {}, point,\n len = 0;\n for (var i = 0, ii = path.length; i < ii; i++) {\n p = path[i];\n if (p[0] == \"M\") {\n x = +p[1];\n y = +p[2];\n } else {\n l = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n if (len + l > length) {\n if (subpath && !subpaths.start) {\n point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n sp += [\n \"C\" + O(point.start.x),\n O(point.start.y),\n O(point.m.x),\n O(point.m.y),\n O(point.x),\n O(point.y)\n ];\n if (onlystart) {return sp;}\n subpaths.start = sp;\n sp = [\n \"M\" + O(point.x),\n O(point.y) + \"C\" + O(point.n.x),\n O(point.n.y),\n O(point.end.x),\n O(point.end.y),\n O(p[5]),\n O(p[6])\n ].join();\n len += l;\n x = +p[5];\n y = +p[6];\n continue;\n }\n if (!istotal && !subpath) {\n point = getPointAtSegmentLength(x, y, p[1], p[2], p[3], p[4], p[5], p[6], length - len);\n return point;\n }\n }\n len += l;\n x = +p[5];\n y = +p[6];\n }\n sp += p.shift() + p;\n }\n subpaths.end = sp;\n point = istotal ? len : subpath ? subpaths : findDotsAtSegment(x, y, p[0], p[1], p[2], p[3], p[4], p[5], 1);\n return point;\n }, null, Snap._.clone);\n }\n var getTotalLength = getLengthFactory(1),\n getPointAtLength = getLengthFactory(),\n getSubpathsAtLength = getLengthFactory(0, 1);\n function findDotsAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t,\n t13 = pow(t1, 3),\n t12 = pow(t1, 2),\n t2 = t * t,\n t3 = t2 * t,\n x = t13 * p1x + t12 * 3 * t * c1x + t1 * 3 * t * t * c2x + t3 * p2x,\n y = t13 * p1y + t12 * 3 * t * c1y + t1 * 3 * t * t * c2y + t3 * p2y,\n mx = p1x + 2 * t * (c1x - p1x) + t2 * (c2x - 2 * c1x + p1x),\n my = p1y + 2 * t * (c1y - p1y) + t2 * (c2y - 2 * c1y + p1y),\n nx = c1x + 2 * t * (c2x - c1x) + t2 * (p2x - 2 * c2x + c1x),\n ny = c1y + 2 * t * (c2y - c1y) + t2 * (p2y - 2 * c2y + c1y),\n ax = t1 * p1x + t * c1x,\n ay = t1 * p1y + t * c1y,\n cx = t1 * c2x + t * p2x,\n cy = t1 * c2y + t * p2y,\n alpha = 90 - math.atan2(mx - nx, my - ny) * 180 / PI;\n // (mx > nx || my < ny) && (alpha += 180);\n return {\n x: x,\n y: y,\n m: {x: mx, y: my},\n n: {x: nx, y: ny},\n start: {x: ax, y: ay},\n end: {x: cx, y: cy},\n alpha: alpha\n };\n }\n function bezierBBox(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) {\n if (!Snap.is(p1x, \"array\")) {\n p1x = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y];\n }\n var bbox = curveDim.apply(null, p1x);\n return box(\n bbox.min.x,\n bbox.min.y,\n bbox.max.x - bbox.min.x,\n bbox.max.y - bbox.min.y\n );\n }\n function isPointInsideBBox(bbox, x, y) {\n return x >= bbox.x &&\n x <= bbox.x + bbox.width &&\n y >= bbox.y &&\n y <= bbox.y + bbox.height;\n }\n function isBBoxIntersect(bbox1, bbox2) {\n bbox1 = box(bbox1);\n bbox2 = box(bbox2);\n return isPointInsideBBox(bbox2, bbox1.x, bbox1.y)\n || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y)\n || isPointInsideBBox(bbox2, bbox1.x, bbox1.y2)\n || isPointInsideBBox(bbox2, bbox1.x2, bbox1.y2)\n || isPointInsideBBox(bbox1, bbox2.x, bbox2.y)\n || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y)\n || isPointInsideBBox(bbox1, bbox2.x, bbox2.y2)\n || isPointInsideBBox(bbox1, bbox2.x2, bbox2.y2)\n || (bbox1.x < bbox2.x2 && bbox1.x > bbox2.x\n || bbox2.x < bbox1.x2 && bbox2.x > bbox1.x)\n && (bbox1.y < bbox2.y2 && bbox1.y > bbox2.y\n || bbox2.y < bbox1.y2 && bbox2.y > bbox1.y);\n }\n function base3(t, p1, p2, p3, p4) {\n var t1 = -3 * p1 + 9 * p2 - 9 * p3 + 3 * p4,\n t2 = t * t1 + 6 * p1 - 12 * p2 + 6 * p3;\n return t * t2 - 3 * p1 + 3 * p2;\n }\n function bezlen(x1, y1, x2, y2, x3, y3, x4, y4, z) {\n if (z == null) {\n z = 1;\n }\n z = z > 1 ? 1 : z < 0 ? 0 : z;\n var z2 = z / 2,\n n = 12,\n Tvalues = [-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],\n Cvalues = [0.2491,0.2491,0.2335,0.2335,0.2032,0.2032,0.1601,0.1601,0.1069,0.1069,0.0472,0.0472],\n sum = 0;\n for (var i = 0; i < n; i++) {\n var ct = z2 * Tvalues[i] + z2,\n xbase = base3(ct, x1, x2, x3, x4),\n ybase = base3(ct, y1, y2, y3, y4),\n comb = xbase * xbase + ybase * ybase;\n sum += Cvalues[i] * math.sqrt(comb);\n }\n return z2 * sum;\n }\n function getTotLen(x1, y1, x2, y2, x3, y3, x4, y4, ll) {\n if (ll < 0 || bezlen(x1, y1, x2, y2, x3, y3, x4, y4) < ll) {\n return;\n }\n var t = 1,\n step = t / 2,\n t2 = t - step,\n l,\n e = .01;\n l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n while (abs(l - ll) > e) {\n step /= 2;\n t2 += (l < ll ? 1 : -1) * step;\n l = bezlen(x1, y1, x2, y2, x3, y3, x4, y4, t2);\n }\n return t2;\n }\n function intersect(x1, y1, x2, y2, x3, y3, x4, y4) {\n if (\n mmax(x1, x2) < mmin(x3, x4) ||\n mmin(x1, x2) > mmax(x3, x4) ||\n mmax(y1, y2) < mmin(y3, y4) ||\n mmin(y1, y2) > mmax(y3, y4)\n ) {\n return;\n }\n var nx = (x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4),\n ny = (x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4),\n denominator = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4);\n\n if (!denominator) {\n return;\n }\n var px = nx / denominator,\n py = ny / denominator,\n px2 = +px.toFixed(2),\n py2 = +py.toFixed(2);\n if (\n px2 < +mmin(x1, x2).toFixed(2) ||\n px2 > +mmax(x1, x2).toFixed(2) ||\n px2 < +mmin(x3, x4).toFixed(2) ||\n px2 > +mmax(x3, x4).toFixed(2) ||\n py2 < +mmin(y1, y2).toFixed(2) ||\n py2 > +mmax(y1, y2).toFixed(2) ||\n py2 < +mmin(y3, y4).toFixed(2) ||\n py2 > +mmax(y3, y4).toFixed(2)\n ) {\n return;\n }\n return {x: px, y: py};\n }\n function inter(bez1, bez2) {\n return interHelper(bez1, bez2);\n }\n function interCount(bez1, bez2) {\n return interHelper(bez1, bez2, 1);\n }\n function interHelper(bez1, bez2, justCount) {\n var bbox1 = bezierBBox(bez1),\n bbox2 = bezierBBox(bez2);\n if (!isBBoxIntersect(bbox1, bbox2)) {\n return justCount ? 0 : [];\n }\n var l1 = bezlen.apply(0, bez1),\n l2 = bezlen.apply(0, bez2),\n n1 = ~~(l1 / 8),\n n2 = ~~(l2 / 8),\n dots1 = [],\n dots2 = [],\n xy = {},\n res = justCount ? 0 : [];\n for (var i = 0; i < n1 + 1; i++) {\n var p = findDotsAtSegment.apply(0, bez1.concat(i / n1));\n dots1.push({x: p.x, y: p.y, t: i / n1});\n }\n for (i = 0; i < n2 + 1; i++) {\n p = findDotsAtSegment.apply(0, bez2.concat(i / n2));\n dots2.push({x: p.x, y: p.y, t: i / n2});\n }\n for (i = 0; i < n1; i++) {\n for (var j = 0; j < n2; j++) {\n var di = dots1[i],\n di1 = dots1[i + 1],\n dj = dots2[j],\n dj1 = dots2[j + 1],\n ci = abs(di1.x - di.x) < .001 ? \"y\" : \"x\",\n cj = abs(dj1.x - dj.x) < .001 ? \"y\" : \"x\",\n is = intersect(di.x, di.y, di1.x, di1.y, dj.x, dj.y, dj1.x, dj1.y);\n if (is) {\n if (xy[is.x.toFixed(4)] == is.y.toFixed(4)) {\n continue;\n }\n xy[is.x.toFixed(4)] = is.y.toFixed(4);\n var t1 = di.t + abs((is[ci] - di[ci]) / (di1[ci] - di[ci])) * (di1.t - di.t),\n t2 = dj.t + abs((is[cj] - dj[cj]) / (dj1[cj] - dj[cj])) * (dj1.t - dj.t);\n if (t1 >= 0 && t1 <= 1 && t2 >= 0 && t2 <= 1) {\n if (justCount) {\n res++;\n } else {\n res.push({\n x: is.x,\n y: is.y,\n t1: t1,\n t2: t2\n });\n }\n }\n }\n }\n }\n return res;\n }\n function pathIntersection(path1, path2) {\n return interPathHelper(path1, path2);\n }\n function pathIntersectionNumber(path1, path2) {\n return interPathHelper(path1, path2, 1);\n }\n function interPathHelper(path1, path2, justCount) {\n path1 = path2curve(path1);\n path2 = path2curve(path2);\n var x1, y1, x2, y2, x1m, y1m, x2m, y2m, bez1, bez2,\n res = justCount ? 0 : [];\n for (var i = 0, ii = path1.length; i < ii; i++) {\n var pi = path1[i];\n if (pi[0] == \"M\") {\n x1 = x1m = pi[1];\n y1 = y1m = pi[2];\n } else {\n if (pi[0] == \"C\") {\n bez1 = [x1, y1].concat(pi.slice(1));\n x1 = bez1[6];\n y1 = bez1[7];\n } else {\n bez1 = [x1, y1, x1, y1, x1m, y1m, x1m, y1m];\n x1 = x1m;\n y1 = y1m;\n }\n for (var j = 0, jj = path2.length; j < jj; j++) {\n var pj = path2[j];\n if (pj[0] == \"M\") {\n x2 = x2m = pj[1];\n y2 = y2m = pj[2];\n } else {\n if (pj[0] == \"C\") {\n bez2 = [x2, y2].concat(pj.slice(1));\n x2 = bez2[6];\n y2 = bez2[7];\n } else {\n bez2 = [x2, y2, x2, y2, x2m, y2m, x2m, y2m];\n x2 = x2m;\n y2 = y2m;\n }\n var intr = interHelper(bez1, bez2, justCount);\n if (justCount) {\n res += intr;\n } else {\n for (var k = 0, kk = intr.length; k < kk; k++) {\n intr[k].segment1 = i;\n intr[k].segment2 = j;\n intr[k].bez1 = bez1;\n intr[k].bez2 = bez2;\n }\n res = res.concat(intr);\n }\n }\n }\n }\n }\n return res;\n }\n function isPointInsidePath(path, x, y) {\n var bbox = pathBBox(path);\n return isPointInsideBBox(bbox, x, y) &&\n interPathHelper(path, [[\"M\", x, y], [\"H\", bbox.x2 + 10]], 1) % 2 == 1;\n }\n function pathBBox(path) {\n var pth = paths(path);\n if (pth.bbox) {\n return clone(pth.bbox);\n }\n if (!path) {\n return box();\n }\n path = path2curve(path);\n var x = 0,\n y = 0,\n X = [],\n Y = [],\n p;\n for (var i = 0, ii = path.length; i < ii; i++) {\n p = path[i];\n if (p[0] == \"M\") {\n x = p[1];\n y = p[2];\n X.push(x);\n Y.push(y);\n } else {\n var dim = curveDim(x, y, p[1], p[2], p[3], p[4], p[5], p[6]);\n X = X.concat(dim.min.x, dim.max.x);\n Y = Y.concat(dim.min.y, dim.max.y);\n x = p[5];\n y = p[6];\n }\n }\n var xmin = mmin.apply(0, X),\n ymin = mmin.apply(0, Y),\n xmax = mmax.apply(0, X),\n ymax = mmax.apply(0, Y),\n bb = box(xmin, ymin, xmax - xmin, ymax - ymin);\n pth.bbox = clone(bb);\n return bb;\n }\n function rectPath(x, y, w, h, r) {\n if (r) {\n return [\n [\"M\", +x + +r, y],\n [\"l\", w - r * 2, 0],\n [\"a\", r, r, 0, 0, 1, r, r],\n [\"l\", 0, h - r * 2],\n [\"a\", r, r, 0, 0, 1, -r, r],\n [\"l\", r * 2 - w, 0],\n [\"a\", r, r, 0, 0, 1, -r, -r],\n [\"l\", 0, r * 2 - h],\n [\"a\", r, r, 0, 0, 1, r, -r],\n [\"z\"]\n ];\n }\n var res = [[\"M\", x, y], [\"l\", w, 0], [\"l\", 0, h], [\"l\", -w, 0], [\"z\"]];\n res.toString = toString;\n return res;\n }\n function ellipsePath(x, y, rx, ry, a) {\n if (a == null && ry == null) {\n ry = rx;\n }\n x = +x;\n y = +y;\n rx = +rx;\n ry = +ry;\n if (a != null) {\n var rad = Math.PI / 180,\n x1 = x + rx * Math.cos(-ry * rad),\n x2 = x + rx * Math.cos(-a * rad),\n y1 = y + rx * Math.sin(-ry * rad),\n y2 = y + rx * Math.sin(-a * rad),\n res = [[\"M\", x1, y1], [\"A\", rx, rx, 0, +(a - ry > 180), 0, x2, y2]];\n } else {\n res = [\n [\"M\", x, y],\n [\"m\", 0, -ry],\n [\"a\", rx, ry, 0, 1, 1, 0, 2 * ry],\n [\"a\", rx, ry, 0, 1, 1, 0, -2 * ry],\n [\"z\"]\n ];\n }\n res.toString = toString;\n return res;\n }\n var unit2px = Snap._unit2px,\n getPath = {\n path: function (el) {\n return el.attr(\"path\");\n },\n circle: function (el) {\n var attr = unit2px(el);\n return ellipsePath(attr.cx, attr.cy, attr.r);\n },\n ellipse: function (el) {\n var attr = unit2px(el);\n return ellipsePath(attr.cx || 0, attr.cy || 0, attr.rx, attr.ry);\n },\n rect: function (el) {\n var attr = unit2px(el);\n return rectPath(attr.x || 0, attr.y || 0, attr.width, attr.height, attr.rx, attr.ry);\n },\n image: function (el) {\n var attr = unit2px(el);\n return rectPath(attr.x || 0, attr.y || 0, attr.width, attr.height);\n },\n line: function (el) {\n return \"M\" + [el.attr(\"x1\") || 0, el.attr(\"y1\") || 0, el.attr(\"x2\"), el.attr(\"y2\")];\n },\n polyline: function (el) {\n return \"M\" + el.attr(\"points\");\n },\n polygon: function (el) {\n return \"M\" + el.attr(\"points\") + \"z\";\n },\n deflt: function (el) {\n var bbox = el.node.getBBox();\n return rectPath(bbox.x, bbox.y, bbox.width, bbox.height);\n }\n };\n function pathToRelative(pathArray) {\n var pth = paths(pathArray),\n lowerCase = String.prototype.toLowerCase;\n if (pth.rel) {\n return pathClone(pth.rel);\n }\n if (!Snap.is(pathArray, \"array\") || !Snap.is(pathArray && pathArray[0], \"array\")) {\n pathArray = Snap.parsePathString(pathArray);\n }\n var res = [],\n x = 0,\n y = 0,\n mx = 0,\n my = 0,\n start = 0;\n if (pathArray[0][0] == \"M\") {\n x = pathArray[0][1];\n y = pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res.push([\"M\", x, y]);\n }\n for (var i = start, ii = pathArray.length; i < ii; i++) {\n var r = res[i] = [],\n pa = pathArray[i];\n if (pa[0] != lowerCase.call(pa[0])) {\n r[0] = lowerCase.call(pa[0]);\n switch (r[0]) {\n case \"a\":\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +(pa[6] - x).toFixed(3);\n r[7] = +(pa[7] - y).toFixed(3);\n break;\n case \"v\":\n r[1] = +(pa[1] - y).toFixed(3);\n break;\n case \"m\":\n mx = pa[1];\n my = pa[2];\n default:\n for (var j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +(pa[j] - (j % 2 ? x : y)).toFixed(3);\n }\n }\n } else {\n r = res[i] = [];\n if (pa[0] == \"m\") {\n mx = pa[1] + x;\n my = pa[2] + y;\n }\n for (var k = 0, kk = pa.length; k < kk; k++) {\n res[i][k] = pa[k];\n }\n }\n var len = res[i].length;\n switch (res[i][0]) {\n case \"z\":\n x = mx;\n y = my;\n break;\n case \"h\":\n x += +res[i][len - 1];\n break;\n case \"v\":\n y += +res[i][len - 1];\n break;\n default:\n x += +res[i][len - 2];\n y += +res[i][len - 1];\n }\n }\n res.toString = toString;\n pth.rel = pathClone(res);\n return res;\n }\n function pathToAbsolute(pathArray) {\n var pth = paths(pathArray);\n if (pth.abs) {\n return pathClone(pth.abs);\n }\n if (!is(pathArray, \"array\") || !is(pathArray && pathArray[0], \"array\")) { // rough assumption\n pathArray = Snap.parsePathString(pathArray);\n }\n if (!pathArray || !pathArray.length) {\n return [[\"M\", 0, 0]];\n }\n var res = [],\n x = 0,\n y = 0,\n mx = 0,\n my = 0,\n start = 0,\n pa0;\n if (pathArray[0][0] == \"M\") {\n x = +pathArray[0][1];\n y = +pathArray[0][2];\n mx = x;\n my = y;\n start++;\n res[0] = [\"M\", x, y];\n }\n var crz = pathArray.length == 3 &&\n pathArray[0][0] == \"M\" &&\n pathArray[1][0].toUpperCase() == \"R\" &&\n pathArray[2][0].toUpperCase() == \"Z\";\n for (var r, pa, i = start, ii = pathArray.length; i < ii; i++) {\n res.push(r = []);\n pa = pathArray[i];\n pa0 = pa[0];\n if (pa0 != pa0.toUpperCase()) {\n r[0] = pa0.toUpperCase();\n switch (r[0]) {\n case \"A\":\n r[1] = pa[1];\n r[2] = pa[2];\n r[3] = pa[3];\n r[4] = pa[4];\n r[5] = pa[5];\n r[6] = +pa[6] + x;\n r[7] = +pa[7] + y;\n break;\n case \"V\":\n r[1] = +pa[1] + y;\n break;\n case \"H\":\n r[1] = +pa[1] + x;\n break;\n case \"R\":\n var dots = [x, y].concat(pa.slice(1));\n for (var j = 2, jj = dots.length; j < jj; j++) {\n dots[j] = +dots[j] + x;\n dots[++j] = +dots[j] + y;\n }\n res.pop();\n res = res.concat(catmullRom2bezier(dots, crz));\n break;\n case \"O\":\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n break;\n case \"U\":\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = [\"U\"].concat(res[res.length - 1].slice(-2));\n break;\n case \"M\":\n mx = +pa[1] + x;\n my = +pa[2] + y;\n default:\n for (j = 1, jj = pa.length; j < jj; j++) {\n r[j] = +pa[j] + (j % 2 ? x : y);\n }\n }\n } else if (pa0 == \"R\") {\n dots = [x, y].concat(pa.slice(1));\n res.pop();\n res = res.concat(catmullRom2bezier(dots, crz));\n r = [\"R\"].concat(pa.slice(-2));\n } else if (pa0 == \"O\") {\n res.pop();\n dots = ellipsePath(x, y, pa[1], pa[2]);\n dots.push(dots[0]);\n res = res.concat(dots);\n } else if (pa0 == \"U\") {\n res.pop();\n res = res.concat(ellipsePath(x, y, pa[1], pa[2], pa[3]));\n r = [\"U\"].concat(res[res.length - 1].slice(-2));\n } else {\n for (var k = 0, kk = pa.length; k < kk; k++) {\n r[k] = pa[k];\n }\n }\n pa0 = pa0.toUpperCase();\n if (pa0 != \"O\") {\n switch (r[0]) {\n case \"Z\":\n x = +mx;\n y = +my;\n break;\n case \"H\":\n x = r[1];\n break;\n case \"V\":\n y = r[1];\n break;\n case \"M\":\n mx = r[r.length - 2];\n my = r[r.length - 1];\n default:\n x = r[r.length - 2];\n y = r[r.length - 1];\n }\n }\n }\n res.toString = toString;\n pth.abs = pathClone(res);\n return res;\n }\n function l2c(x1, y1, x2, y2) {\n return [x1, y1, x2, y2, x2, y2];\n }\n function q2c(x1, y1, ax, ay, x2, y2) {\n var _13 = 1 / 3,\n _23 = 2 / 3;\n return [\n _13 * x1 + _23 * ax,\n _13 * y1 + _23 * ay,\n _13 * x2 + _23 * ax,\n _13 * y2 + _23 * ay,\n x2,\n y2\n ];\n }\n function a2c(x1, y1, rx, ry, angle, large_arc_flag, sweep_flag, x2, y2, recursive) {\n // for more information of where this math came from visit:\n // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes\n var _120 = PI * 120 / 180,\n rad = PI / 180 * (+angle || 0),\n res = [],\n xy,\n rotate = Snap._.cacher(function (x, y, rad) {\n var X = x * math.cos(rad) - y * math.sin(rad),\n Y = x * math.sin(rad) + y * math.cos(rad);\n return {x: X, y: Y};\n });\n if (!rx || !ry) {\n return [x1, y1, x2, y2, x2, y2];\n }\n if (!recursive) {\n xy = rotate(x1, y1, -rad);\n x1 = xy.x;\n y1 = xy.y;\n xy = rotate(x2, y2, -rad);\n x2 = xy.x;\n y2 = xy.y;\n var cos = math.cos(PI / 180 * angle),\n sin = math.sin(PI / 180 * angle),\n x = (x1 - x2) / 2,\n y = (y1 - y2) / 2;\n var h = x * x / (rx * rx) + y * y / (ry * ry);\n if (h > 1) {\n h = math.sqrt(h);\n rx = h * rx;\n ry = h * ry;\n }\n var rx2 = rx * rx,\n ry2 = ry * ry,\n k = (large_arc_flag == sweep_flag ? -1 : 1) *\n math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))),\n cx = k * rx * y / ry + (x1 + x2) / 2,\n cy = k * -ry * x / rx + (y1 + y2) / 2,\n f1 = math.asin(((y1 - cy) / ry).toFixed(9)),\n f2 = math.asin(((y2 - cy) / ry).toFixed(9));\n\n f1 = x1 < cx ? PI - f1 : f1;\n f2 = x2 < cx ? PI - f2 : f2;\n f1 < 0 && (f1 = PI * 2 + f1);\n f2 < 0 && (f2 = PI * 2 + f2);\n if (sweep_flag && f1 > f2) {\n f1 = f1 - PI * 2;\n }\n if (!sweep_flag && f2 > f1) {\n f2 = f2 - PI * 2;\n }\n } else {\n f1 = recursive[0];\n f2 = recursive[1];\n cx = recursive[2];\n cy = recursive[3];\n }\n var df = f2 - f1;\n if (abs(df) > _120) {\n var f2old = f2,\n x2old = x2,\n y2old = y2;\n f2 = f1 + _120 * (sweep_flag && f2 > f1 ? 1 : -1);\n x2 = cx + rx * math.cos(f2);\n y2 = cy + ry * math.sin(f2);\n res = a2c(x2, y2, rx, ry, angle, 0, sweep_flag, x2old, y2old, [f2, f2old, cx, cy]);\n }\n df = f2 - f1;\n var c1 = math.cos(f1),\n s1 = math.sin(f1),\n c2 = math.cos(f2),\n s2 = math.sin(f2),\n t = math.tan(df / 4),\n hx = 4 / 3 * rx * t,\n hy = 4 / 3 * ry * t,\n m1 = [x1, y1],\n m2 = [x1 + hx * s1, y1 - hy * c1],\n m3 = [x2 + hx * s2, y2 - hy * c2],\n m4 = [x2, y2];\n m2[0] = 2 * m1[0] - m2[0];\n m2[1] = 2 * m1[1] - m2[1];\n if (recursive) {\n return [m2, m3, m4].concat(res);\n } else {\n res = [m2, m3, m4].concat(res).join().split(\",\");\n var newres = [];\n for (var i = 0, ii = res.length; i < ii; i++) {\n newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x;\n }\n return newres;\n }\n }\n function findDotAtSegment(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) {\n var t1 = 1 - t;\n return {\n x: pow(t1, 3) * p1x + pow(t1, 2) * 3 * t * c1x + t1 * 3 * t * t * c2x + pow(t, 3) * p2x,\n y: pow(t1, 3) * p1y + pow(t1, 2) * 3 * t * c1y + t1 * 3 * t * t * c2y + pow(t, 3) * p2y\n };\n }\n\n // Returns bounding box of cubic bezier curve.\n // Source: http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html\n // Original version: NISHIO Hirokazu\n // Modifications: https://github.com/timo22345\n function curveDim(x0, y0, x1, y1, x2, y2, x3, y3) {\n var tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (var i = 0; i < 2; ++i) {\n if (i == 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length,\n jlen = j,\n mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n\n return {\n min: {x: mmin.apply(0, bounds[0]), y: mmin.apply(0, bounds[1])},\n max: {x: mmax.apply(0, bounds[0]), y: mmax.apply(0, bounds[1])}\n };\n }\n\n function path2curve(path, path2) {\n var pth = !path2 && paths(path);\n if (!path2 && pth.curve) {\n return pathClone(pth.curve);\n }\n var p = pathToAbsolute(path),\n p2 = path2 && pathToAbsolute(path2),\n attrs = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n attrs2 = {x: 0, y: 0, bx: 0, by: 0, X: 0, Y: 0, qx: null, qy: null},\n processPath = function (path, d, pcom) {\n var nx, ny;\n if (!path) {\n return [\"C\", d.x, d.y, d.x, d.y, d.x, d.y];\n }\n !(path[0] in {T: 1, Q: 1}) && (d.qx = d.qy = null);\n switch (path[0]) {\n case \"M\":\n d.X = path[1];\n d.Y = path[2];\n break;\n case \"A\":\n path = [\"C\"].concat(a2c.apply(0, [d.x, d.y].concat(path.slice(1))));\n break;\n case \"S\":\n if (pcom == \"C\" || pcom == \"S\") { // In \"S\" case we have to take into account, if the previous command is C/S.\n nx = d.x * 2 - d.bx; // And reflect the previous\n ny = d.y * 2 - d.by; // command's control point relative to the current point.\n }\n else { // or some else or nothing\n nx = d.x;\n ny = d.y;\n }\n path = [\"C\", nx, ny].concat(path.slice(1));\n break;\n case \"T\":\n if (pcom == \"Q\" || pcom == \"T\") { // In \"T\" case we have to take into account, if the previous command is Q/T.\n d.qx = d.x * 2 - d.qx; // And make a reflection similar\n d.qy = d.y * 2 - d.qy; // to case \"S\".\n }\n else { // or something else or nothing\n d.qx = d.x;\n d.qy = d.y;\n }\n path = [\"C\"].concat(q2c(d.x, d.y, d.qx, d.qy, path[1], path[2]));\n break;\n case \"Q\":\n d.qx = path[1];\n d.qy = path[2];\n path = [\"C\"].concat(q2c(d.x, d.y, path[1], path[2], path[3], path[4]));\n break;\n case \"L\":\n path = [\"C\"].concat(l2c(d.x, d.y, path[1], path[2]));\n break;\n case \"H\":\n path = [\"C\"].concat(l2c(d.x, d.y, path[1], d.y));\n break;\n case \"V\":\n path = [\"C\"].concat(l2c(d.x, d.y, d.x, path[1]));\n break;\n case \"Z\":\n path = [\"C\"].concat(l2c(d.x, d.y, d.X, d.Y));\n break;\n }\n return path;\n },\n fixArc = function (pp, i) {\n if (pp[i].length > 7) {\n pp[i].shift();\n var pi = pp[i];\n while (pi.length) {\n pcoms1[i] = \"A\"; // if created multiple C:s, their original seg is saved\n p2 && (pcoms2[i] = \"A\"); // the same as above\n pp.splice(i++, 0, [\"C\"].concat(pi.splice(0, 6)));\n }\n pp.splice(i, 1);\n ii = mmax(p.length, p2 && p2.length || 0);\n }\n },\n fixM = function (path1, path2, a1, a2, i) {\n if (path1 && path2 && path1[i][0] == \"M\" && path2[i][0] != \"M\") {\n path2.splice(i, 0, [\"M\", a2.x, a2.y]);\n a1.bx = 0;\n a1.by = 0;\n a1.x = path1[i][1];\n a1.y = path1[i][2];\n ii = mmax(p.length, p2 && p2.length || 0);\n }\n },\n pcoms1 = [], // path commands of original path p\n pcoms2 = [], // path commands of original path p2\n pfirst = \"\", // temporary holder for original path command\n pcom = \"\"; // holder for previous path command of original path\n for (var i = 0, ii = mmax(p.length, p2 && p2.length || 0); i < ii; i++) {\n p[i] && (pfirst = p[i][0]); // save current path command\n\n if (pfirst != \"C\") // C is not saved yet, because it may be result of conversion\n {\n pcoms1[i] = pfirst; // Save current path command\n i && ( pcom = pcoms1[i - 1]); // Get previous path command pcom\n }\n p[i] = processPath(p[i], attrs, pcom); // Previous path command is inputted to processPath\n\n if (pcoms1[i] != \"A\" && pfirst == \"C\") pcoms1[i] = \"C\"; // A is the only command\n // which may produce multiple C:s\n // so we have to make sure that C is also C in original path\n\n fixArc(p, i); // fixArc adds also the right amount of A:s to pcoms1\n\n if (p2) { // the same procedures is done to p2\n p2[i] && (pfirst = p2[i][0]);\n if (pfirst != \"C\") {\n pcoms2[i] = pfirst;\n i && (pcom = pcoms2[i - 1]);\n }\n p2[i] = processPath(p2[i], attrs2, pcom);\n\n if (pcoms2[i] != \"A\" && pfirst == \"C\") {\n pcoms2[i] = \"C\";\n }\n\n fixArc(p2, i);\n }\n fixM(p, p2, attrs, attrs2, i);\n fixM(p2, p, attrs2, attrs, i);\n var seg = p[i],\n seg2 = p2 && p2[i],\n seglen = seg.length,\n seg2len = p2 && seg2.length;\n attrs.x = seg[seglen - 2];\n attrs.y = seg[seglen - 1];\n attrs.bx = toFloat(seg[seglen - 4]) || attrs.x;\n attrs.by = toFloat(seg[seglen - 3]) || attrs.y;\n attrs2.bx = p2 && (toFloat(seg2[seg2len - 4]) || attrs2.x);\n attrs2.by = p2 && (toFloat(seg2[seg2len - 3]) || attrs2.y);\n attrs2.x = p2 && seg2[seg2len - 2];\n attrs2.y = p2 && seg2[seg2len - 1];\n }\n if (!p2) {\n pth.curve = pathClone(p);\n }\n return p2 ? [p, p2] : p;\n }\n function mapPath(path, matrix) {\n if (!matrix) {\n return path;\n }\n var x, y, i, j, ii, jj, pathi;\n path = path2curve(path);\n for (i = 0, ii = path.length; i < ii; i++) {\n pathi = path[i];\n for (j = 1, jj = pathi.length; j < jj; j += 2) {\n x = matrix.x(pathi[j], pathi[j + 1]);\n y = matrix.y(pathi[j], pathi[j + 1]);\n pathi[j] = x;\n pathi[j + 1] = y;\n }\n }\n return path;\n }\n\n // http://schepers.cc/getting-to-the-point\n function catmullRom2bezier(crp, z) {\n var d = [];\n for (var i = 0, iLen = crp.length; iLen - 2 * !z > i; i += 2) {\n var p = [\n {x: +crp[i - 2], y: +crp[i - 1]},\n {x: +crp[i], y: +crp[i + 1]},\n {x: +crp[i + 2], y: +crp[i + 3]},\n {x: +crp[i + 4], y: +crp[i + 5]}\n ];\n if (z) {\n if (!i) {\n p[0] = {x: +crp[iLen - 2], y: +crp[iLen - 1]};\n } else if (iLen - 4 == i) {\n p[3] = {x: +crp[0], y: +crp[1]};\n } else if (iLen - 2 == i) {\n p[2] = {x: +crp[0], y: +crp[1]};\n p[3] = {x: +crp[2], y: +crp[3]};\n }\n } else {\n if (iLen - 4 == i) {\n p[3] = p[2];\n } else if (!i) {\n p[0] = {x: +crp[i], y: +crp[i + 1]};\n }\n }\n d.push([\"C\",\n (-p[0].x + 6 * p[1].x + p[2].x) / 6,\n (-p[0].y + 6 * p[1].y + p[2].y) / 6,\n (p[1].x + 6 * p[2].x - p[3].x) / 6,\n (p[1].y + 6*p[2].y - p[3].y) / 6,\n p[2].x,\n p[2].y\n ]);\n }\n\n return d;\n }\n\n // export\n Snap.path = paths;\n\n /*\\\n * Snap.path.getTotalLength\n [ method ]\n **\n * Returns the length of the given path in pixels\n **\n - path (string) SVG path string\n **\n = (number) length\n \\*/\n Snap.path.getTotalLength = getTotalLength;\n /*\\\n * Snap.path.getPointAtLength\n [ method ]\n **\n * Returns the coordinates of the point located at the given length along the given path\n **\n - path (string) SVG path string\n - length (number) length, in pixels, from the start of the path, excluding non-rendering jumps\n **\n = (object) representation of the point:\n o {\n o x: (number) x coordinate,\n o y: (number) y coordinate,\n o alpha: (number) angle of derivative\n o }\n \\*/\n Snap.path.getPointAtLength = getPointAtLength;\n /*\\\n * Snap.path.getSubpath\n [ method ]\n **\n * Returns the subpath of a given path between given start and end lengths\n **\n - path (string) SVG path string\n - from (number) length, in pixels, from the start of the path to the start of the segment\n - to (number) length, in pixels, from the start of the path to the end of the segment\n **\n = (string) path string definition for the segment\n \\*/\n Snap.path.getSubpath = function (path, from, to) {\n if (this.getTotalLength(path) - to < 1e-6) {\n return getSubpathsAtLength(path, from).end;\n }\n var a = getSubpathsAtLength(path, to, 1);\n return from ? getSubpathsAtLength(a, from).end : a;\n };\n /*\\\n * Element.getTotalLength\n [ method ]\n **\n * Returns the length of the path in pixels (only works for `path` elements)\n = (number) length\n \\*/\n elproto.getTotalLength = function () {\n if (this.node.getTotalLength) {\n return this.node.getTotalLength();\n }\n };\n // SIERRA Element.getPointAtLength()/Element.getTotalLength(): If a is broken into different segments, is the jump distance to the new coordinates set by the _M_ or _m_ commands calculated as part of the path's total length?\n /*\\\n * Element.getPointAtLength\n [ method ]\n **\n * Returns coordinates of the point located at the given length on the given path (only works for `path` elements)\n **\n - length (number) length, in pixels, from the start of the path, excluding non-rendering jumps\n **\n = (object) representation of the point:\n o {\n o x: (number) x coordinate,\n o y: (number) y coordinate,\n o alpha: (number) angle of derivative\n o }\n \\*/\n elproto.getPointAtLength = function (length) {\n return getPointAtLength(this.attr(\"d\"), length);\n };\n // SIERRA Element.getSubpath(): Similar to the problem for Element.getPointAtLength(). Unclear how this would work for a segmented path. Overall, the concept of _subpath_ and what I'm calling a _segment_ (series of non-_M_ or _Z_ commands) is unclear.\n /*\\\n * Element.getSubpath\n [ method ]\n **\n * Returns subpath of a given element from given start and end lengths (only works for `path` elements)\n **\n - from (number) length, in pixels, from the start of the path to the start of the segment\n - to (number) length, in pixels, from the start of the path to the end of the segment\n **\n = (string) path string definition for the segment\n \\*/\n elproto.getSubpath = function (from, to) {\n return Snap.path.getSubpath(this.attr(\"d\"), from, to);\n };\n Snap._.box = box;\n /*\\\n * Snap.path.findDotsAtSegment\n [ method ]\n **\n * Utility method\n **\n * Finds dot coordinates on the given cubic beziér curve at the given t\n - p1x (number) x of the first point of the curve\n - p1y (number) y of the first point of the curve\n - c1x (number) x of the first anchor of the curve\n - c1y (number) y of the first anchor of the curve\n - c2x (number) x of the second anchor of the curve\n - c2y (number) y of the second anchor of the curve\n - p2x (number) x of the second point of the curve\n - p2y (number) y of the second point of the curve\n - t (number) position on the curve (0..1)\n = (object) point information in format:\n o {\n o x: (number) x coordinate of the point,\n o y: (number) y coordinate of the point,\n o m: {\n o x: (number) x coordinate of the left anchor,\n o y: (number) y coordinate of the left anchor\n o },\n o n: {\n o x: (number) x coordinate of the right anchor,\n o y: (number) y coordinate of the right anchor\n o },\n o start: {\n o x: (number) x coordinate of the start of the curve,\n o y: (number) y coordinate of the start of the curve\n o },\n o end: {\n o x: (number) x coordinate of the end of the curve,\n o y: (number) y coordinate of the end of the curve\n o },\n o alpha: (number) angle of the curve derivative at the point\n o }\n \\*/\n Snap.path.findDotsAtSegment = findDotsAtSegment;\n /*\\\n * Snap.path.bezierBBox\n [ method ]\n **\n * Utility method\n **\n * Returns the bounding box of a given cubic beziér curve\n - p1x (number) x of the first point of the curve\n - p1y (number) y of the first point of the curve\n - c1x (number) x of the first anchor of the curve\n - c1y (number) y of the first anchor of the curve\n - c2x (number) x of the second anchor of the curve\n - c2y (number) y of the second anchor of the curve\n - p2x (number) x of the second point of the curve\n - p2y (number) y of the second point of the curve\n * or\n - bez (array) array of six points for beziér curve\n = (object) bounding box\n o {\n o x: (number) x coordinate of the left top point of the box,\n o y: (number) y coordinate of the left top point of the box,\n o x2: (number) x coordinate of the right bottom point of the box,\n o y2: (number) y coordinate of the right bottom point of the box,\n o width: (number) width of the box,\n o height: (number) height of the box\n o }\n \\*/\n Snap.path.bezierBBox = bezierBBox;\n /*\\\n * Snap.path.isPointInsideBBox\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if given point is inside bounding box\n - bbox (string) bounding box\n - x (string) x coordinate of the point\n - y (string) y coordinate of the point\n = (boolean) `true` if point is inside\n \\*/\n Snap.path.isPointInsideBBox = isPointInsideBBox;\n Snap.closest = function (x, y, X, Y) {\n var r = 100,\n b = box(x - r / 2, y - r / 2, r, r),\n inside = [],\n getter = X[0].hasOwnProperty(\"x\") ? function (i) {\n return {\n x: X[i].x,\n y: X[i].y\n };\n } : function (i) {\n return {\n x: X[i],\n y: Y[i]\n };\n },\n found = 0;\n while (r <= 1e6 && !found) {\n for (var i = 0, ii = X.length; i < ii; i++) {\n var xy = getter(i);\n if (isPointInsideBBox(b, xy.x, xy.y)) {\n found++;\n inside.push(xy);\n break;\n }\n }\n if (!found) {\n r *= 2;\n b = box(x - r / 2, y - r / 2, r, r)\n }\n }\n if (r == 1e6) {\n return;\n }\n var len = Infinity,\n res;\n for (i = 0, ii = inside.length; i < ii; i++) {\n var l = Snap.len(x, y, inside[i].x, inside[i].y);\n if (len > l) {\n len = l;\n inside[i].len = l;\n res = inside[i];\n }\n }\n return res;\n };\n /*\\\n * Snap.path.isBBoxIntersect\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if two bounding boxes intersect\n - bbox1 (string) first bounding box\n - bbox2 (string) second bounding box\n = (boolean) `true` if bounding boxes intersect\n \\*/\n Snap.path.isBBoxIntersect = isBBoxIntersect;\n /*\\\n * Snap.path.intersection\n [ method ]\n **\n * Utility method\n **\n * Finds intersections of two paths\n - path1 (string) path string\n - path2 (string) path string\n = (array) dots of intersection\n o [\n o {\n o x: (number) x coordinate of the point,\n o y: (number) y coordinate of the point,\n o t1: (number) t value for segment of path1,\n o t2: (number) t value for segment of path2,\n o segment1: (number) order number for segment of path1,\n o segment2: (number) order number for segment of path2,\n o bez1: (array) eight coordinates representing beziér curve for the segment of path1,\n o bez2: (array) eight coordinates representing beziér curve for the segment of path2\n o }\n o ]\n \\*/\n Snap.path.intersection = pathIntersection;\n Snap.path.intersectionNumber = pathIntersectionNumber;\n /*\\\n * Snap.path.isPointInside\n [ method ]\n **\n * Utility method\n **\n * Returns `true` if given point is inside a given closed path.\n *\n * Note: fill mode doesn’t affect the result of this method.\n - path (string) path string\n - x (number) x of the point\n - y (number) y of the point\n = (boolean) `true` if point is inside the path\n \\*/\n Snap.path.isPointInside = isPointInsidePath;\n /*\\\n * Snap.path.getBBox\n [ method ]\n **\n * Utility method\n **\n * Returns the bounding box of a given path\n - path (string) path string\n = (object) bounding box\n o {\n o x: (number) x coordinate of the left top point of the box,\n o y: (number) y coordinate of the left top point of the box,\n o x2: (number) x coordinate of the right bottom point of the box,\n o y2: (number) y coordinate of the right bottom point of the box,\n o width: (number) width of the box,\n o height: (number) height of the box\n o }\n \\*/\n Snap.path.getBBox = pathBBox;\n Snap.path.get = getPath;\n /*\\\n * Snap.path.toRelative\n [ method ]\n **\n * Utility method\n **\n * Converts path coordinates into relative values\n - path (string) path string\n = (array) path string\n \\*/\n Snap.path.toRelative = pathToRelative;\n /*\\\n * Snap.path.toAbsolute\n [ method ]\n **\n * Utility method\n **\n * Converts path coordinates into absolute values\n - path (string) path string\n = (array) path string\n \\*/\n Snap.path.toAbsolute = pathToAbsolute;\n /*\\\n * Snap.path.toCubic\n [ method ]\n **\n * Utility method\n **\n * Converts path to a new path where all segments are cubic beziér curves\n - pathString (string|array) path string or array of segments\n = (array) array of segments\n \\*/\n Snap.path.toCubic = path2curve;\n /*\\\n * Snap.path.map\n [ method ]\n **\n * Transform the path string with the given matrix\n - path (string) path string\n - matrix (object) see @Matrix\n = (string) transformed path string\n \\*/\n Snap.path.map = mapPath;\n Snap.path.toString = toString;\n Snap.path.clone = pathClone;\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var mmax = Math.max,\n mmin = Math.min;\n\n // Set\n var Set = function (items) {\n this.items = [];\n\tthis.bindings = {};\n this.length = 0;\n this.type = \"set\";\n if (items) {\n for (var i = 0, ii = items.length; i < ii; i++) {\n if (items[i]) {\n this[this.items.length] = this.items[this.items.length] = items[i];\n this.length++;\n }\n }\n }\n },\n setproto = Set.prototype;\n /*\\\n * Set.push\n [ method ]\n **\n * Adds each argument to the current set\n = (object) original element\n \\*/\n setproto.push = function () {\n var item,\n len;\n for (var i = 0, ii = arguments.length; i < ii; i++) {\n item = arguments[i];\n if (item) {\n len = this.items.length;\n this[len] = this.items[len] = item;\n this.length++;\n }\n }\n return this;\n };\n /*\\\n * Set.pop\n [ method ]\n **\n * Removes last element and returns it\n = (object) element\n \\*/\n setproto.pop = function () {\n this.length && delete this[this.length--];\n return this.items.pop();\n };\n /*\\\n * Set.forEach\n [ method ]\n **\n * Executes given function for each element in the set\n *\n * If the function returns `false`, the loop stops running.\n **\n - callback (function) function to run\n - thisArg (object) context object for the callback\n = (object) Set object\n \\*/\n setproto.forEach = function (callback, thisArg) {\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n if (callback.call(thisArg, this.items[i], i) === false) {\n return this;\n }\n }\n return this;\n };\n /*\\\n * Set.animate\n [ method ]\n **\n * Animates each element in set in sync.\n *\n **\n - attrs (object) key-value pairs of destination attributes\n - duration (number) duration of the animation in milliseconds\n - easing (function) #optional easing function from @mina or custom\n - callback (function) #optional callback function that executes when the animation ends\n * or\n - animation (array) array of animation parameter for each element in set in format `[attrs, duration, easing, callback]`\n > Usage\n | // animate all elements in set to radius 10\n | set.animate({r: 10}, 500, mina.easein);\n | // or\n | // animate first element to radius 10, but second to radius 20 and in different time\n | set.animate([{r: 10}, 500, mina.easein], [{r: 20}, 1500, mina.easein]);\n = (Element) the current element\n \\*/\n setproto.animate = function (attrs, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n if (attrs instanceof Snap._.Animation) {\n callback = attrs.callback;\n easing = attrs.easing;\n ms = easing.dur;\n attrs = attrs.attr;\n }\n var args = arguments;\n if (Snap.is(attrs, \"array\") && Snap.is(args[args.length - 1], \"array\")) {\n var each = true;\n }\n var begin,\n handler = function () {\n if (begin) {\n this.b = begin;\n } else {\n begin = this.b;\n }\n },\n cb = 0,\n set = this,\n callbacker = callback && function () {\n if (++cb == set.length) {\n callback.call(this);\n }\n };\n return this.forEach(function (el, i) {\n eve.once(\"snap.animcreated.\" + el.id, handler);\n if (each) {\n args[i] && el.animate.apply(el, args[i]);\n } else {\n el.animate(attrs, ms, easing, callbacker);\n }\n });\n };\n /*\\\n * Set.remove\n [ method ]\n **\n * Removes all children of the set.\n *\n = (object) Set object\n \\*/\n setproto.remove = function () {\n while (this.length) {\n this.pop().remove();\n }\n return this;\n };\n /*\\\n * Set.bind\n [ method ]\n **\n * Specifies how to handle a specific attribute when applied\n * to a set.\n *\n **\n - attr (string) attribute name\n - callback (function) function to run\n * or\n - attr (string) attribute name\n - element (Element) specific element in the set to apply the attribute to\n * or\n - attr (string) attribute name\n - element (Element) specific element in the set to apply the attribute to\n - eattr (string) attribute on the element to bind the attribute to\n = (object) Set object\n \\*/\n setproto.bind = function (attr, a, b) {\n var data = {};\n if (typeof a == \"function\") {\n this.bindings[attr] = a;\n } else {\n var aname = b || attr;\n this.bindings[attr] = function (v) {\n data[aname] = v;\n a.attr(data);\n };\n }\n return this;\n };\n /*\\\n * Set.attr\n [ method ]\n **\n * Equivalent of @Element.attr.\n = (object) Set object\n \\*/\n setproto.attr = function (value) {\n var unbound = {};\n for (var k in value) {\n if (this.bindings[k]) {\n this.bindings[k](value[k]);\n } else {\n unbound[k] = value[k];\n }\n }\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n this.items[i].attr(unbound);\n }\n return this;\n };\n /*\\\n * Set.clear\n [ method ]\n **\n * Removes all elements from the set\n \\*/\n setproto.clear = function () {\n while (this.length) {\n this.pop();\n }\n };\n /*\\\n * Set.splice\n [ method ]\n **\n * Removes range of elements from the set\n **\n - index (number) position of the deletion\n - count (number) number of element to remove\n - insertion… (object) #optional elements to insert\n = (object) set elements that were deleted\n \\*/\n setproto.splice = function (index, count, insertion) {\n index = index < 0 ? mmax(this.length + index, 0) : index;\n count = mmax(0, mmin(this.length - index, count));\n var tail = [],\n todel = [],\n args = [],\n i;\n for (i = 2; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n for (i = 0; i < count; i++) {\n todel.push(this[index + i]);\n }\n for (; i < this.length - index; i++) {\n tail.push(this[index + i]);\n }\n var arglen = args.length;\n for (i = 0; i < arglen + tail.length; i++) {\n this.items[index + i] = this[index + i] = i < arglen ? args[i] : tail[i - arglen];\n }\n i = this.items.length = this.length -= count - arglen;\n while (this[i]) {\n delete this[i++];\n }\n return new Set(todel);\n };\n /*\\\n * Set.exclude\n [ method ]\n **\n * Removes given element from the set\n **\n - element (object) element to remove\n = (boolean) `true` if object was found and removed from the set\n \\*/\n setproto.exclude = function (el) {\n for (var i = 0, ii = this.length; i < ii; i++) if (this[i] == el) {\n this.splice(i, 1);\n return true;\n }\n return false;\n };\n /*\\\n * Set.insertAfter\n [ method ]\n **\n * Inserts set elements after given element.\n **\n - element (object) set will be inserted after this element\n = (object) Set object\n \\*/\n setproto.insertAfter = function (el) {\n var i = this.items.length;\n while (i--) {\n this.items[i].insertAfter(el);\n }\n return this;\n };\n /*\\\n * Set.getBBox\n [ method ]\n **\n * Union of all bboxes of the set. See @Element.getBBox.\n = (object) bounding box descriptor. See @Element.getBBox.\n \\*/\n setproto.getBBox = function () {\n var x = [],\n y = [],\n x2 = [],\n y2 = [];\n for (var i = this.items.length; i--;) if (!this.items[i].removed) {\n var box = this.items[i].getBBox();\n x.push(box.x);\n y.push(box.y);\n x2.push(box.x + box.width);\n y2.push(box.y + box.height);\n }\n x = mmin.apply(0, x);\n y = mmin.apply(0, y);\n x2 = mmax.apply(0, x2);\n y2 = mmax.apply(0, y2);\n return {\n x: x,\n y: y,\n x2: x2,\n y2: y2,\n width: x2 - x,\n height: y2 - y,\n cx: x + (x2 - x) / 2,\n cy: y + (y2 - y) / 2\n };\n };\n /*\\\n * Set.insertAfter\n [ method ]\n **\n * Creates a clone of the set.\n **\n = (object) New Set object\n \\*/\n setproto.clone = function (s) {\n s = new Set;\n for (var i = 0, ii = this.items.length; i < ii; i++) {\n s.push(this.items[i].clone());\n }\n return s;\n };\n setproto.toString = function () {\n return \"Snap\\u2018s set\";\n };\n setproto.type = \"set\";\n // export\n /*\\\n * Snap.Set\n [ property ]\n **\n * Set constructor.\n \\*/\n Snap.Set = Set;\n /*\\\n * Snap.set\n [ method ]\n **\n * Creates a set and fills it with list of arguments.\n **\n = (object) New Set object\n | var r = paper.rect(0, 0, 10, 10),\n | s1 = Snap.set(), // empty set\n | s2 = Snap.set(r, paper.circle(100, 100, 20)); // prefilled set\n \\*/\n Snap.set = function () {\n var set = new Set;\n if (arguments.length) {\n set.push.apply(set, Array.prototype.slice.call(arguments, 0));\n }\n return set;\n };\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var names = {},\n reUnit = /[%a-z]+$/i,\n Str = String;\n names.stroke = names.fill = \"colour\";\n function getEmpty(item) {\n var l = item[0];\n switch (l.toLowerCase()) {\n case \"t\": return [l, 0, 0];\n case \"m\": return [l, 1, 0, 0, 1, 0, 0];\n case \"r\": if (item.length == 4) {\n return [l, 0, item[2], item[3]];\n } else {\n return [l, 0];\n }\n case \"s\": if (item.length == 5) {\n return [l, 1, 1, item[3], item[4]];\n } else if (item.length == 3) {\n return [l, 1, 1];\n } else {\n return [l, 1];\n }\n }\n }\n function equaliseTransform(t1, t2, getBBox) {\n t1 = t1 || new Snap.Matrix;\n t2 = t2 || new Snap.Matrix;\n t1 = Snap.parseTransformString(t1.toTransformString()) || [];\n t2 = Snap.parseTransformString(t2.toTransformString()) || [];\n var maxlength = Math.max(t1.length, t2.length),\n from = [],\n to = [],\n i = 0, j, jj,\n tt1, tt2;\n for (; i < maxlength; i++) {\n tt1 = t1[i] || getEmpty(t2[i]);\n tt2 = t2[i] || getEmpty(tt1);\n if (tt1[0] != tt2[0] ||\n tt1[0].toLowerCase() == \"r\" && (tt1[2] != tt2[2] || tt1[3] != tt2[3]) ||\n tt1[0].toLowerCase() == \"s\" && (tt1[3] != tt2[3] || tt1[4] != tt2[4])\n ) {\n t1 = Snap._.transform2matrix(t1, getBBox());\n t2 = Snap._.transform2matrix(t2, getBBox());\n from = [[\"m\", t1.a, t1.b, t1.c, t1.d, t1.e, t1.f]];\n to = [[\"m\", t2.a, t2.b, t2.c, t2.d, t2.e, t2.f]];\n break;\n }\n from[i] = [];\n to[i] = [];\n for (j = 0, jj = Math.max(tt1.length, tt2.length); j < jj; j++) {\n j in tt1 && (from[i][j] = tt1[j]);\n j in tt2 && (to[i][j] = tt2[j]);\n }\n }\n return {\n from: path2array(from),\n to: path2array(to),\n f: getPath(from)\n };\n }\n function getNumber(val) {\n return val;\n }\n function getUnit(unit) {\n return function (val) {\n return +val.toFixed(3) + unit;\n };\n }\n function getViewBox(val) {\n return val.join(\" \");\n }\n function getColour(clr) {\n return Snap.rgb(clr[0], clr[1], clr[2], clr[3]);\n }\n function getPath(path) {\n var k = 0, i, ii, j, jj, out, a, b = [];\n for (i = 0, ii = path.length; i < ii; i++) {\n out = \"[\";\n a = ['\"' + path[i][0] + '\"'];\n for (j = 1, jj = path[i].length; j < jj; j++) {\n a[j] = \"val[\" + k++ + \"]\";\n }\n out += a + \"]\";\n b[i] = out;\n }\n return Function(\"val\", \"return Snap.path.toString.call([\" + b + \"])\");\n }\n function path2array(path) {\n var out = [];\n for (var i = 0, ii = path.length; i < ii; i++) {\n for (var j = 1, jj = path[i].length; j < jj; j++) {\n out.push(path[i][j]);\n }\n }\n return out;\n }\n function isNumeric(obj) {\n return isFinite(obj);\n }\n function arrayEqual(arr1, arr2) {\n if (!Snap.is(arr1, \"array\") || !Snap.is(arr2, \"array\")) {\n return false;\n }\n return arr1.toString() == arr2.toString();\n }\n Element.prototype.equal = function (name, b) {\n return eve(\"snap.util.equal\", this, name, b).firstDefined();\n };\n eve.on(\"snap.util.equal\", function (name, b) {\n var A, B, a = Str(this.attr(name) || \"\"),\n el = this;\n if (names[name] == \"colour\") {\n A = Snap.color(a);\n B = Snap.color(b);\n return {\n from: [A.r, A.g, A.b, A.opacity],\n to: [B.r, B.g, B.b, B.opacity],\n f: getColour\n };\n }\n if (name == \"viewBox\") {\n A = this.attr(name).vb.split(\" \").map(Number);\n B = b.split(\" \").map(Number);\n return {\n from: A,\n to: B,\n f: getViewBox\n };\n }\n if (name == \"transform\" || name == \"gradientTransform\" || name == \"patternTransform\") {\n if (typeof b == \"string\") {\n b = Str(b).replace(/\\.{3}|\\u2026/g, a);\n }\n a = this.matrix;\n if (!Snap._.rgTransform.test(b)) {\n b = Snap._.transform2matrix(Snap._.svgTransform2string(b), this.getBBox());\n } else {\n b = Snap._.transform2matrix(b, this.getBBox());\n }\n return equaliseTransform(a, b, function () {\n return el.getBBox(1);\n });\n }\n if (name == \"d\" || name == \"path\") {\n A = Snap.path.toCubic(a, b);\n return {\n from: path2array(A[0]),\n to: path2array(A[1]),\n f: getPath(A[0])\n };\n }\n if (name == \"points\") {\n A = Str(a).split(Snap._.separator);\n B = Str(b).split(Snap._.separator);\n return {\n from: A,\n to: B,\n f: function (val) { return val; }\n };\n }\n if (isNumeric(a) && isNumeric(b)) {\n return {\n from: parseFloat(a),\n to: parseFloat(b),\n f: getNumber\n };\n }\n var aUnit = a.match(reUnit),\n bUnit = Str(b).match(reUnit);\n if (aUnit && arrayEqual(aUnit, bUnit)) {\n return {\n from: parseFloat(a),\n to: parseFloat(b),\n f: getUnit(aUnit)\n };\n } else {\n return {\n from: this.asPX(name),\n to: this.asPX(name, b),\n f: getNumber\n };\n }\n });\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n// \n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n// \n// http://www.apache.org/licenses/LICENSE-2.0\n// \n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var elproto = Element.prototype,\n has = \"hasOwnProperty\",\n supportsTouch = \"createTouch\" in glob.doc,\n events = [\n \"click\", \"dblclick\", \"mousedown\", \"mousemove\", \"mouseout\",\n \"mouseover\", \"mouseup\", \"touchstart\", \"touchmove\", \"touchend\",\n \"touchcancel\"\n ],\n touchMap = {\n mousedown: \"touchstart\",\n mousemove: \"touchmove\",\n mouseup: \"touchend\"\n },\n getScroll = function (xy, el) {\n var name = xy == \"y\" ? \"scrollTop\" : \"scrollLeft\",\n doc = el && el.node ? el.node.ownerDocument : glob.doc;\n return doc[name in doc.documentElement ? \"documentElement\" : \"body\"][name];\n },\n preventDefault = function () {\n this.returnValue = false;\n },\n preventTouch = function () {\n return this.originalEvent.preventDefault();\n },\n stopPropagation = function () {\n this.cancelBubble = true;\n },\n stopTouch = function () {\n return this.originalEvent.stopPropagation();\n },\n addEvent = function (obj, type, fn, element) {\n var realName = supportsTouch && touchMap[type] ? touchMap[type] : type,\n f = function (e) {\n var scrollY = getScroll(\"y\", element),\n scrollX = getScroll(\"x\", element);\n if (supportsTouch && touchMap[has](type)) {\n for (var i = 0, ii = e.targetTouches && e.targetTouches.length; i < ii; i++) {\n if (e.targetTouches[i].target == obj || obj.contains(e.targetTouches[i].target)) {\n var olde = e;\n e = e.targetTouches[i];\n e.originalEvent = olde;\n e.preventDefault = preventTouch;\n e.stopPropagation = stopTouch;\n break;\n }\n }\n }\n var x = e.clientX + scrollX,\n y = e.clientY + scrollY;\n return fn.call(element, e, x, y);\n };\n\n if (type !== realName) {\n obj.addEventListener(type, f, false);\n }\n\n obj.addEventListener(realName, f, false);\n\n return function () {\n if (type !== realName) {\n obj.removeEventListener(type, f, false);\n }\n\n obj.removeEventListener(realName, f, false);\n return true;\n };\n },\n drag = [],\n dragMove = function (e) {\n var x = e.clientX,\n y = e.clientY,\n scrollY = getScroll(\"y\"),\n scrollX = getScroll(\"x\"),\n dragi,\n j = drag.length;\n while (j--) {\n dragi = drag[j];\n if (supportsTouch) {\n var i = e.touches && e.touches.length,\n touch;\n while (i--) {\n touch = e.touches[i];\n if (touch.identifier == dragi.el._drag.id || dragi.el.node.contains(touch.target)) {\n x = touch.clientX;\n y = touch.clientY;\n (e.originalEvent ? e.originalEvent : e).preventDefault();\n break;\n }\n }\n } else {\n e.preventDefault();\n }\n var node = dragi.el.node,\n o,\n next = node.nextSibling,\n parent = node.parentNode,\n display = node.style.display;\n // glob.win.opera && parent.removeChild(node);\n // node.style.display = \"none\";\n // o = dragi.el.paper.getElementByPoint(x, y);\n // node.style.display = display;\n // glob.win.opera && (next ? parent.insertBefore(node, next) : parent.appendChild(node));\n // o && eve(\"snap.drag.over.\" + dragi.el.id, dragi.el, o);\n x += scrollX;\n y += scrollY;\n eve(\"snap.drag.move.\" + dragi.el.id, dragi.move_scope || dragi.el, x - dragi.el._drag.x, y - dragi.el._drag.y, x, y, e);\n }\n },\n dragUp = function (e) {\n Snap.unmousemove(dragMove).unmouseup(dragUp);\n var i = drag.length,\n dragi;\n while (i--) {\n dragi = drag[i];\n dragi.el._drag = {};\n eve(\"snap.drag.end.\" + dragi.el.id, dragi.end_scope || dragi.start_scope || dragi.move_scope || dragi.el, e);\n eve.off(\"snap.drag.*.\" + dragi.el.id);\n }\n drag = [];\n };\n /*\\\n * Element.click\n [ method ]\n **\n * Adds a click event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unclick\n [ method ]\n **\n * Removes a click event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.dblclick\n [ method ]\n **\n * Adds a double click event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.undblclick\n [ method ]\n **\n * Removes a double click event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mousedown\n [ method ]\n **\n * Adds a mousedown event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmousedown\n [ method ]\n **\n * Removes a mousedown event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mousemove\n [ method ]\n **\n * Adds a mousemove event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmousemove\n [ method ]\n **\n * Removes a mousemove event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mouseout\n [ method ]\n **\n * Adds a mouseout event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseout\n [ method ]\n **\n * Removes a mouseout event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mouseover\n [ method ]\n **\n * Adds a mouseover event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseover\n [ method ]\n **\n * Removes a mouseover event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.mouseup\n [ method ]\n **\n * Adds a mouseup event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.unmouseup\n [ method ]\n **\n * Removes a mouseup event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchstart\n [ method ]\n **\n * Adds a touchstart event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchstart\n [ method ]\n **\n * Removes a touchstart event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchmove\n [ method ]\n **\n * Adds a touchmove event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchmove\n [ method ]\n **\n * Removes a touchmove event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchend\n [ method ]\n **\n * Adds a touchend event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchend\n [ method ]\n **\n * Removes a touchend event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n \n /*\\\n * Element.touchcancel\n [ method ]\n **\n * Adds a touchcancel event handler to the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n /*\\\n * Element.untouchcancel\n [ method ]\n **\n * Removes a touchcancel event handler from the element\n - handler (function) handler for the event\n = (object) @Element\n \\*/\n for (var i = events.length; i--;) {\n (function (eventName) {\n Snap[eventName] = elproto[eventName] = function (fn, scope) {\n if (Snap.is(fn, \"function\")) {\n this.events = this.events || [];\n this.events.push({\n name: eventName,\n f: fn,\n unbind: addEvent(this.node || document, eventName, fn, scope || this)\n });\n } else {\n for (var i = 0, ii = this.events.length; i < ii; i++) if (this.events[i].name == eventName) {\n try {\n this.events[i].f.call(this);\n } catch (e) {}\n }\n }\n return this;\n };\n Snap[\"un\" + eventName] =\n elproto[\"un\" + eventName] = function (fn) {\n var events = this.events || [],\n l = events.length;\n while (l--) if (events[l].name == eventName &&\n (events[l].f == fn || !fn)) {\n events[l].unbind();\n events.splice(l, 1);\n !events.length && delete this.events;\n return this;\n }\n return this;\n };\n })(events[i]);\n }\n /*\\\n * Element.hover\n [ method ]\n **\n * Adds hover event handlers to the element\n - f_in (function) handler for hover in\n - f_out (function) handler for hover out\n - icontext (object) #optional context for hover in handler\n - ocontext (object) #optional context for hover out handler\n = (object) @Element\n \\*/\n elproto.hover = function (f_in, f_out, scope_in, scope_out) {\n return this.mouseover(f_in, scope_in).mouseout(f_out, scope_out || scope_in);\n };\n /*\\\n * Element.unhover\n [ method ]\n **\n * Removes hover event handlers from the element\n - f_in (function) handler for hover in\n - f_out (function) handler for hover out\n = (object) @Element\n \\*/\n elproto.unhover = function (f_in, f_out) {\n return this.unmouseover(f_in).unmouseout(f_out);\n };\n var draggable = [];\n // SIERRA unclear what _context_ refers to for starting, ending, moving the drag gesture.\n // SIERRA Element.drag(): _x position of the mouse_: Where are the x/y values offset from?\n // SIERRA Element.drag(): much of this member's doc appears to be duplicated for some reason.\n // SIERRA Unclear about this sentence: _Additionally following drag events will be triggered: drag.start. on start, drag.end. on end and drag.move. on every move._ Is there a global _drag_ object to which you can assign handlers keyed by an element's ID?\n /*\\\n * Element.drag\n [ method ]\n **\n * Adds event handlers for an element's drag gesture\n **\n - onmove (function) handler for moving\n - onstart (function) handler for drag start\n - onend (function) handler for drag end\n - mcontext (object) #optional context for moving handler\n - scontext (object) #optional context for drag start handler\n - econtext (object) #optional context for drag end handler\n * Additionaly following `drag` events are triggered: `drag.start.` on start, \n * `drag.end.` on end and `drag.move.` on every move. When element is dragged over another element \n * `drag.over.` fires as well.\n *\n * Start event and start handler are called in specified context or in context of the element with following parameters:\n o x (number) x position of the mouse\n o y (number) y position of the mouse\n o event (object) DOM event object\n * Move event and move handler are called in specified context or in context of the element with following parameters:\n o dx (number) shift by x from the start point\n o dy (number) shift by y from the start point\n o x (number) x position of the mouse\n o y (number) y position of the mouse\n o event (object) DOM event object\n * End event and end handler are called in specified context or in context of the element with following parameters:\n o event (object) DOM event object\n = (object) @Element\n \\*/\n elproto.drag = function (onmove, onstart, onend, move_scope, start_scope, end_scope) {\n var el = this;\n if (!arguments.length) {\n var origTransform;\n return el.drag(function (dx, dy) {\n this.attr({\n transform: origTransform + (origTransform ? \"T\" : \"t\") + [dx, dy]\n });\n }, function () {\n origTransform = this.transform().local;\n });\n }\n function start(e, x, y) {\n (e.originalEvent || e).preventDefault();\n el._drag.x = x;\n el._drag.y = y;\n el._drag.id = e.identifier;\n !drag.length && Snap.mousemove(dragMove).mouseup(dragUp);\n drag.push({el: el, move_scope: move_scope, start_scope: start_scope, end_scope: end_scope});\n onstart && eve.on(\"snap.drag.start.\" + el.id, onstart);\n onmove && eve.on(\"snap.drag.move.\" + el.id, onmove);\n onend && eve.on(\"snap.drag.end.\" + el.id, onend);\n eve(\"snap.drag.start.\" + el.id, start_scope || move_scope || el, x, y, e);\n }\n function init(e, x, y) {\n eve(\"snap.draginit.\" + el.id, el, e, x, y);\n }\n eve.on(\"snap.draginit.\" + el.id, start);\n el._drag = {};\n draggable.push({el: el, start: start, init: init});\n el.mousedown(init);\n return el;\n };\n /*\n * Element.onDragOver\n [ method ]\n **\n * Shortcut to assign event handler for `drag.over.` event, where `id` is the element's `id` (see @Element.id)\n - f (function) handler for event, first argument would be the element you are dragging over\n \\*/\n // elproto.onDragOver = function (f) {\n // f ? eve.on(\"snap.drag.over.\" + this.id, f) : eve.unbind(\"snap.drag.over.\" + this.id);\n // };\n /*\\\n * Element.undrag\n [ method ]\n **\n * Removes all drag event handlers from the given element\n \\*/\n elproto.undrag = function () {\n var i = draggable.length;\n while (i--) if (draggable[i].el == this) {\n this.unmousedown(draggable[i].init);\n draggable.splice(i, 1);\n eve.unbind(\"snap.drag.*.\" + this.id);\n eve.unbind(\"snap.draginit.\" + this.id);\n }\n !draggable.length && Snap.unmousemove(dragMove).unmouseup(dragUp);\n return this;\n };\n});\n\n// Copyright (c) 2013 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n var elproto = Element.prototype,\n pproto = Paper.prototype,\n rgurl = /^\\s*url\\((.+)\\)/,\n Str = String,\n $ = Snap._.$;\n Snap.filter = {};\n /*\\\n * Paper.filter\n [ method ]\n **\n * Creates a `` element\n **\n - filstr (string) SVG fragment of filter provided as a string\n = (object) @Element\n * Note: It is recommended to use filters embedded into the page inside an empty SVG element.\n > Usage\n | var f = paper.filter(''),\n | c = paper.circle(10, 10, 10).attr({\n | filter: f\n | });\n \\*/\n pproto.filter = function (filstr) {\n var paper = this;\n if (paper.type != \"svg\") {\n paper = paper.paper;\n }\n var f = Snap.parse(Str(filstr)),\n id = Snap._.id(),\n width = paper.node.offsetWidth,\n height = paper.node.offsetHeight,\n filter = $(\"filter\");\n $(filter, {\n id: id,\n filterUnits: \"userSpaceOnUse\"\n });\n filter.appendChild(f.node);\n paper.defs.appendChild(filter);\n return new Element(filter);\n };\n\n eve.on(\"snap.util.getattr.filter\", function () {\n eve.stop();\n var p = $(this.node, \"filter\");\n if (p) {\n var match = Str(p).match(rgurl);\n return match && Snap.select(match[1]);\n }\n });\n eve.on(\"snap.util.attr.filter\", function (value) {\n if (value instanceof Element && value.type == \"filter\") {\n eve.stop();\n var id = value.node.id;\n if (!id) {\n $(value.node, {id: value.id});\n id = value.id;\n }\n $(this.node, {\n filter: Snap.url(id)\n });\n }\n if (!value || value == \"none\") {\n eve.stop();\n this.node.removeAttribute(\"filter\");\n }\n });\n /*\\\n * Snap.filter.blur\n [ method ]\n **\n * Returns an SVG markup string for the blur filter\n **\n - x (number) amount of horizontal blur, in pixels\n - y (number) #optional amount of vertical blur, in pixels\n = (string) filter representation\n > Usage\n | var f = paper.filter(Snap.filter.blur(5, 10)),\n | c = paper.circle(10, 10, 10).attr({\n | filter: f\n | });\n \\*/\n Snap.filter.blur = function (x, y) {\n if (x == null) {\n x = 2;\n }\n var def = y == null ? x : [x, y];\n return Snap.format('\\', {\n def: def\n });\n };\n Snap.filter.blur.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.shadow\n [ method ]\n **\n * Returns an SVG markup string for the shadow filter\n **\n - dx (number) #optional horizontal shift of the shadow, in pixels\n - dy (number) #optional vertical shift of the shadow, in pixels\n - blur (number) #optional amount of blur\n - color (string) #optional color of the shadow\n - opacity (number) #optional `0..1` opacity of the shadow\n * or\n - dx (number) #optional horizontal shift of the shadow, in pixels\n - dy (number) #optional vertical shift of the shadow, in pixels\n - color (string) #optional color of the shadow\n - opacity (number) #optional `0..1` opacity of the shadow\n * which makes blur default to `4`. Or\n - dx (number) #optional horizontal shift of the shadow, in pixels\n - dy (number) #optional vertical shift of the shadow, in pixels\n - opacity (number) #optional `0..1` opacity of the shadow\n = (string) filter representation\n > Usage\n | var f = paper.filter(Snap.filter.shadow(0, 2, .3)),\n | c = paper.circle(10, 10, 10).attr({\n | filter: f\n | });\n \\*/\n Snap.filter.shadow = function (dx, dy, blur, color, opacity) {\n if (opacity == null) {\n if (color == null) {\n opacity = blur;\n blur = 4;\n color = \"#000\";\n } else {\n opacity = color;\n color = blur;\n blur = 4;\n }\n }\n if (blur == null) {\n blur = 4;\n }\n if (opacity == null) {\n opacity = 1;\n }\n if (dx == null) {\n dx = 0;\n dy = 2;\n }\n if (dy == null) {\n dy = dx;\n }\n color = Snap.color(color);\n return Snap.format('', {\n color: color,\n dx: dx,\n dy: dy,\n blur: blur,\n opacity: opacity\n });\n };\n Snap.filter.shadow.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.grayscale\n [ method ]\n **\n * Returns an SVG markup string for the grayscale filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.grayscale = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('', {\n a: 0.2126 + 0.7874 * (1 - amount),\n b: 0.7152 - 0.7152 * (1 - amount),\n c: 0.0722 - 0.0722 * (1 - amount),\n d: 0.2126 - 0.2126 * (1 - amount),\n e: 0.7152 + 0.2848 * (1 - amount),\n f: 0.0722 - 0.0722 * (1 - amount),\n g: 0.2126 - 0.2126 * (1 - amount),\n h: 0.0722 + 0.9278 * (1 - amount)\n });\n };\n Snap.filter.grayscale.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.sepia\n [ method ]\n **\n * Returns an SVG markup string for the sepia filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.sepia = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('', {\n a: 0.393 + 0.607 * (1 - amount),\n b: 0.769 - 0.769 * (1 - amount),\n c: 0.189 - 0.189 * (1 - amount),\n d: 0.349 - 0.349 * (1 - amount),\n e: 0.686 + 0.314 * (1 - amount),\n f: 0.168 - 0.168 * (1 - amount),\n g: 0.272 - 0.272 * (1 - amount),\n h: 0.534 - 0.534 * (1 - amount),\n i: 0.131 + 0.869 * (1 - amount)\n });\n };\n Snap.filter.sepia.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.saturate\n [ method ]\n **\n * Returns an SVG markup string for the saturate filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.saturate = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('', {\n amount: 1 - amount\n });\n };\n Snap.filter.saturate.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.hueRotate\n [ method ]\n **\n * Returns an SVG markup string for the hue-rotate filter\n **\n - angle (number) angle of rotation\n = (string) filter representation\n \\*/\n Snap.filter.hueRotate = function (angle) {\n angle = angle || 0;\n return Snap.format('', {\n angle: angle\n });\n };\n Snap.filter.hueRotate.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.invert\n [ method ]\n **\n * Returns an SVG markup string for the invert filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.invert = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n// \n return Snap.format('', {\n amount: amount,\n amount2: 1 - amount\n });\n };\n Snap.filter.invert.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.brightness\n [ method ]\n **\n * Returns an SVG markup string for the brightness filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.brightness = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('', {\n amount: amount\n });\n };\n Snap.filter.brightness.toString = function () {\n return this();\n };\n /*\\\n * Snap.filter.contrast\n [ method ]\n **\n * Returns an SVG markup string for the contrast filter\n **\n - amount (number) amount of filter (`0..1`)\n = (string) filter representation\n \\*/\n Snap.filter.contrast = function (amount) {\n if (amount == null) {\n amount = 1;\n }\n return Snap.format('', {\n amount: amount,\n amount2: .5 - amount / 2\n });\n };\n Snap.filter.contrast.toString = function () {\n return this();\n };\n});\n\n// Copyright (c) 2014 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var box = Snap._.box,\n is = Snap.is,\n firstLetter = /^[^a-z]*([tbmlrc])/i,\n toString = function () {\n return \"T\" + this.dx + \",\" + this.dy;\n };\n /*\\\n * Element.getAlign\n [ method ]\n **\n * Returns shift needed to align the element relatively to given element.\n * If no elements specified, parent `` container will be used.\n - el (object) @optional alignment element\n - way (string) one of six values: `\"top\"`, `\"middle\"`, `\"bottom\"`, `\"left\"`, `\"center\"`, `\"right\"`\n = (object|string) Object in format `{dx: , dy: }` also has a string representation as a transformation string\n > Usage\n | el.transform(el.getAlign(el2, \"top\"));\n * or\n | var dy = el.getAlign(el2, \"top\").dy;\n \\*/\n Element.prototype.getAlign = function (el, way) {\n if (way == null && is(el, \"string\")) {\n way = el;\n el = null;\n }\n el = el || this.paper;\n var bx = el.getBBox ? el.getBBox() : box(el),\n bb = this.getBBox(),\n out = {};\n way = way && way.match(firstLetter);\n way = way ? way[1].toLowerCase() : \"c\";\n switch (way) {\n case \"t\":\n out.dx = 0;\n out.dy = bx.y - bb.y;\n break;\n case \"b\":\n out.dx = 0;\n out.dy = bx.y2 - bb.y2;\n break;\n case \"m\":\n out.dx = 0;\n out.dy = bx.cy - bb.cy;\n break;\n case \"l\":\n out.dx = bx.x - bb.x;\n out.dy = 0;\n break;\n case \"r\":\n out.dx = bx.x2 - bb.x2;\n out.dy = 0;\n break;\n default:\n out.dx = bx.cx - bb.cx;\n out.dy = 0;\n break;\n }\n out.toString = toString;\n return out;\n };\n /*\\\n * Element.align\n [ method ]\n **\n * Aligns the element relatively to given one via transformation.\n * If no elements specified, parent `` container will be used.\n - el (object) @optional alignment element\n - way (string) one of six values: `\"top\"`, `\"middle\"`, `\"bottom\"`, `\"left\"`, `\"center\"`, `\"right\"`\n = (object) this element\n > Usage\n | el.align(el2, \"top\");\n * or\n | el.align(\"middle\");\n \\*/\n Element.prototype.align = function (el, way) {\n return this.transform(\"...\" + this.getAlign(el, way));\n };\n});\n\n// Copyright (c) 2016 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob, Fragment) {\n var elproto = Element.prototype,\n is = Snap.is,\n Str = String,\n has = \"hasOwnProperty\";\n function slice(from, to, f) {\n return function (arr) {\n var res = arr.slice(from, to);\n if (res.length == 1) {\n res = res[0];\n }\n return f ? f(res) : res;\n };\n }\n var Animation = function (attr, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n this.attr = attr;\n this.dur = ms;\n easing && (this.easing = easing);\n callback && (this.callback = callback);\n };\n Snap._.Animation = Animation;\n /*\\\n * Snap.animation\n [ method ]\n **\n * Creates an animation object\n **\n - attr (object) attributes of final destination\n - duration (number) duration of the animation, in milliseconds\n - easing (function) #optional one of easing functions of @mina or custom one\n - callback (function) #optional callback function that fires when animation ends\n = (object) animation object\n \\*/\n Snap.animation = function (attr, ms, easing, callback) {\n return new Animation(attr, ms, easing, callback);\n };\n /*\\\n * Element.inAnim\n [ method ]\n **\n * Returns a set of animations that may be able to manipulate the current element\n **\n = (object) in format:\n o {\n o anim (object) animation object,\n o mina (object) @mina object,\n o curStatus (number) 0..1 — status of the animation: 0 — just started, 1 — just finished,\n o status (function) gets or sets the status of the animation,\n o stop (function) stops the animation\n o }\n \\*/\n elproto.inAnim = function () {\n var el = this,\n res = [];\n for (var id in el.anims) if (el.anims[has](id)) {\n (function (a) {\n res.push({\n anim: new Animation(a._attrs, a.dur, a.easing, a._callback),\n mina: a,\n curStatus: a.status(),\n status: function (val) {\n return a.status(val);\n },\n stop: function () {\n a.stop();\n }\n });\n }(el.anims[id]));\n }\n return res;\n };\n /*\\\n * Snap.animate\n [ method ]\n **\n * Runs generic animation of one number into another with a caring function\n **\n - from (number|array) number or array of numbers\n - to (number|array) number or array of numbers\n - setter (function) caring function that accepts one number argument\n - duration (number) duration, in milliseconds\n - easing (function) #optional easing function from @mina or custom\n - callback (function) #optional callback function to execute when animation ends\n = (object) animation object in @mina format\n o {\n o id (string) animation id, consider it read-only,\n o duration (function) gets or sets the duration of the animation,\n o easing (function) easing,\n o speed (function) gets or sets the speed of the animation,\n o status (function) gets or sets the status of the animation,\n o stop (function) stops the animation\n o }\n | var rect = Snap().rect(0, 0, 10, 10);\n | Snap.animate(0, 10, function (val) {\n | rect.attr({\n | x: val\n | });\n | }, 1000);\n | // in given context is equivalent to\n | rect.animate({x: 10}, 1000);\n \\*/\n Snap.animate = function (from, to, setter, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n var now = mina.time(),\n anim = mina(from, to, now, now + ms, mina.time, setter, easing);\n callback && eve.once(\"mina.finish.\" + anim.id, callback);\n return anim;\n };\n /*\\\n * Element.stop\n [ method ]\n **\n * Stops all the animations for the current element\n **\n = (Element) the current element\n \\*/\n elproto.stop = function () {\n var anims = this.inAnim();\n for (var i = 0, ii = anims.length; i < ii; i++) {\n anims[i].stop();\n }\n return this;\n };\n /*\\\n * Element.animate\n [ method ]\n **\n * Animates the given attributes of the element\n **\n - attrs (object) key-value pairs of destination attributes\n - duration (number) duration of the animation in milliseconds\n - easing (function) #optional easing function from @mina or custom\n - callback (function) #optional callback function that executes when the animation ends\n = (Element) the current element\n \\*/\n elproto.animate = function (attrs, ms, easing, callback) {\n if (typeof easing == \"function\" && !easing.length) {\n callback = easing;\n easing = mina.linear;\n }\n if (attrs instanceof Animation) {\n callback = attrs.callback;\n easing = attrs.easing;\n ms = attrs.dur;\n attrs = attrs.attr;\n }\n var fkeys = [], tkeys = [], keys = {}, from, to, f, eq,\n el = this;\n for (var key in attrs) if (attrs[has](key)) {\n if (el.equal) {\n eq = el.equal(key, Str(attrs[key]));\n from = eq.from;\n to = eq.to;\n f = eq.f;\n } else {\n from = +el.attr(key);\n to = +attrs[key];\n }\n var len = is(from, \"array\") ? from.length : 1;\n keys[key] = slice(fkeys.length, fkeys.length + len, f);\n fkeys = fkeys.concat(from);\n tkeys = tkeys.concat(to);\n }\n var now = mina.time(),\n anim = mina(fkeys, tkeys, now, now + ms, mina.time, function (val) {\n var attr = {};\n for (var key in keys) if (keys[has](key)) {\n attr[key] = keys[key](val);\n }\n el.attr(attr);\n }, easing);\n el.anims[anim.id] = anim;\n anim._attrs = attrs;\n anim._callback = callback;\n eve(\"snap.animcreated.\" + el.id, anim);\n eve.once(\"mina.finish.\" + anim.id, function () {\n eve.off(\"mina.*.\" + anim.id);\n delete el.anims[anim.id];\n callback && callback.call(el);\n });\n eve.once(\"mina.stop.\" + anim.id, function () {\n eve.off(\"mina.*.\" + anim.id);\n delete el.anims[anim.id];\n });\n return el;\n };\n});\n\n// Copyright (c) 2017 Adobe Systems Incorporated. All rights reserved.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nSnap.plugin(function (Snap, Element, Paper, glob) {\n // Colours are from https://www.materialui.co\n var red = \"#ffebee#ffcdd2#ef9a9a#e57373#ef5350#f44336#e53935#d32f2f#c62828#b71c1c#ff8a80#ff5252#ff1744#d50000\",\n pink = \"#FCE4EC#F8BBD0#F48FB1#F06292#EC407A#E91E63#D81B60#C2185B#AD1457#880E4F#FF80AB#FF4081#F50057#C51162\",\n purple = \"#F3E5F5#E1BEE7#CE93D8#BA68C8#AB47BC#9C27B0#8E24AA#7B1FA2#6A1B9A#4A148C#EA80FC#E040FB#D500F9#AA00FF\",\n deeppurple = \"#EDE7F6#D1C4E9#B39DDB#9575CD#7E57C2#673AB7#5E35B1#512DA8#4527A0#311B92#B388FF#7C4DFF#651FFF#6200EA\",\n indigo = \"#E8EAF6#C5CAE9#9FA8DA#7986CB#5C6BC0#3F51B5#3949AB#303F9F#283593#1A237E#8C9EFF#536DFE#3D5AFE#304FFE\",\n blue = \"#E3F2FD#BBDEFB#90CAF9#64B5F6#64B5F6#2196F3#1E88E5#1976D2#1565C0#0D47A1#82B1FF#448AFF#2979FF#2962FF\",\n lightblue = \"#E1F5FE#B3E5FC#81D4FA#4FC3F7#29B6F6#03A9F4#039BE5#0288D1#0277BD#01579B#80D8FF#40C4FF#00B0FF#0091EA\",\n cyan = \"#E0F7FA#B2EBF2#80DEEA#4DD0E1#26C6DA#00BCD4#00ACC1#0097A7#00838F#006064#84FFFF#18FFFF#00E5FF#00B8D4\",\n teal = \"#E0F2F1#B2DFDB#80CBC4#4DB6AC#26A69A#009688#00897B#00796B#00695C#004D40#A7FFEB#64FFDA#1DE9B6#00BFA5\",\n green = \"#E8F5E9#C8E6C9#A5D6A7#81C784#66BB6A#4CAF50#43A047#388E3C#2E7D32#1B5E20#B9F6CA#69F0AE#00E676#00C853\",\n lightgreen = \"#F1F8E9#DCEDC8#C5E1A5#AED581#9CCC65#8BC34A#7CB342#689F38#558B2F#33691E#CCFF90#B2FF59#76FF03#64DD17\",\n lime = \"#F9FBE7#F0F4C3#E6EE9C#DCE775#D4E157#CDDC39#C0CA33#AFB42B#9E9D24#827717#F4FF81#EEFF41#C6FF00#AEEA00\",\n yellow = \"#FFFDE7#FFF9C4#FFF59D#FFF176#FFEE58#FFEB3B#FDD835#FBC02D#F9A825#F57F17#FFFF8D#FFFF00#FFEA00#FFD600\",\n amber = \"#FFF8E1#FFECB3#FFE082#FFD54F#FFCA28#FFC107#FFB300#FFA000#FF8F00#FF6F00#FFE57F#FFD740#FFC400#FFAB00\",\n orange = \"#FFF3E0#FFE0B2#FFCC80#FFB74D#FFA726#FF9800#FB8C00#F57C00#EF6C00#E65100#FFD180#FFAB40#FF9100#FF6D00\",\n deeporange = \"#FBE9E7#FFCCBC#FFAB91#FF8A65#FF7043#FF5722#F4511E#E64A19#D84315#BF360C#FF9E80#FF6E40#FF3D00#DD2C00\",\n brown = \"#EFEBE9#D7CCC8#BCAAA4#A1887F#8D6E63#795548#6D4C41#5D4037#4E342E#3E2723\",\n grey = \"#FAFAFA#F5F5F5#EEEEEE#E0E0E0#BDBDBD#9E9E9E#757575#616161#424242#212121\",\n bluegrey = \"#ECEFF1#CFD8DC#B0BEC5#90A4AE#78909C#607D8B#546E7A#455A64#37474F#263238\";\n /*\\\n * Snap.mui\n [ property ]\n **\n * Contain Material UI colours.\n | Snap().rect(0, 0, 10, 10).attr({fill: Snap.mui.deeppurple, stroke: Snap.mui.amber[600]});\n # For colour reference: https://www.materialui.co.\n \\*/\n Snap.mui = {};\n /*\\\n * Snap.flat\n [ property ]\n **\n * Contain Flat UI colours.\n | Snap().rect(0, 0, 10, 10).attr({fill: Snap.flat.carrot, stroke: Snap.flat.wetasphalt});\n # For colour reference: https://www.materialui.co.\n \\*/\n Snap.flat = {};\n function saveColor(colors) {\n colors = colors.split(/(?=#)/);\n var color = new String(colors[5]);\n color[50] = colors[0];\n color[100] = colors[1];\n color[200] = colors[2];\n color[300] = colors[3];\n color[400] = colors[4];\n color[500] = colors[5];\n color[600] = colors[6];\n color[700] = colors[7];\n color[800] = colors[8];\n color[900] = colors[9];\n if (colors[10]) {\n color.A100 = colors[10];\n color.A200 = colors[11];\n color.A400 = colors[12];\n color.A700 = colors[13];\n }\n return color;\n }\n Snap.mui.red = saveColor(red);\n Snap.mui.pink = saveColor(pink);\n Snap.mui.purple = saveColor(purple);\n Snap.mui.deeppurple = saveColor(deeppurple);\n Snap.mui.indigo = saveColor(indigo);\n Snap.mui.blue = saveColor(blue);\n Snap.mui.lightblue = saveColor(lightblue);\n Snap.mui.cyan = saveColor(cyan);\n Snap.mui.teal = saveColor(teal);\n Snap.mui.green = saveColor(green);\n Snap.mui.lightgreen = saveColor(lightgreen);\n Snap.mui.lime = saveColor(lime);\n Snap.mui.yellow = saveColor(yellow);\n Snap.mui.amber = saveColor(amber);\n Snap.mui.orange = saveColor(orange);\n Snap.mui.deeporange = saveColor(deeporange);\n Snap.mui.brown = saveColor(brown);\n Snap.mui.grey = saveColor(grey);\n Snap.mui.bluegrey = saveColor(bluegrey);\n Snap.flat.turquoise = \"#1abc9c\";\n Snap.flat.greensea = \"#16a085\";\n Snap.flat.sunflower = \"#f1c40f\";\n Snap.flat.orange = \"#f39c12\";\n Snap.flat.emerland = \"#2ecc71\";\n Snap.flat.nephritis = \"#27ae60\";\n Snap.flat.carrot = \"#e67e22\";\n Snap.flat.pumpkin = \"#d35400\";\n Snap.flat.peterriver = \"#3498db\";\n Snap.flat.belizehole = \"#2980b9\";\n Snap.flat.alizarin = \"#e74c3c\";\n Snap.flat.pomegranate = \"#c0392b\";\n Snap.flat.amethyst = \"#9b59b6\";\n Snap.flat.wisteria = \"#8e44ad\";\n Snap.flat.clouds = \"#ecf0f1\";\n Snap.flat.silver = \"#bdc3c7\";\n Snap.flat.wetasphalt = \"#34495e\";\n Snap.flat.midnightblue = \"#2c3e50\";\n Snap.flat.concrete = \"#95a5a6\";\n Snap.flat.asbestos = \"#7f8c8d\";\n /*\\\n * Snap.importMUIColors\n [ method ]\n **\n * Imports Material UI colours into global object.\n | Snap.importMUIColors();\n | Snap().rect(0, 0, 10, 10).attr({fill: deeppurple, stroke: amber[600]});\n # For colour reference: https://www.materialui.co.\n \\*/\n Snap.importMUIColors = function () {\n for (var color in Snap.mui) {\n if (Snap.mui.hasOwnProperty(color)) {\n window[color] = Snap.mui[color];\n }\n }\n };\n});\n\nmodule.exports = Snap\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\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return 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(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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};","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n };\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nexport default function _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default 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}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","export default 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}","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","import { createContext } from 'react';\n\n/**\n * @public\n */\nconst PresenceContext = createContext(null);\n\nexport { PresenceContext };\n","const isBrowser = typeof document !== \"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","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\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 typeof v === \"object\" && 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","import { createContext } from 'react';\n\n/**\n * Internal, exported only for usage in Framer\n */\nconst SwitchLayoutGroupContext = createContext({});\n\nexport { SwitchLayoutGroupContext };\n","const motionComponentSymbol = Symbol.for(\"motionComponentSymbol\");\n\nexport { motionComponentSymbol };\n","import * as React from 'react';\nimport { forwardRef, useContext } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { MotionContext } from '../context/MotionContext/index.mjs';\nimport { useVisualElement } from './utils/use-visual-element.mjs';\nimport { useMotionRef } from './utils/use-motion-ref.mjs';\nimport { useCreateMotionContext } from '../context/MotionContext/create.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { LazyContext } from '../context/LazyContext.mjs';\nimport { SwitchLayoutGroupContext } from '../context/SwitchLayoutGroupContext.mjs';\nimport { motionComponentSymbol } from './utils/symbol.mjs';\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n */\nfunction createMotionComponent({ preloadedFeatures, createVisualElement, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n /**\n * If we need to measure the element we load this functionality in a\n * separate class component in order to gain access to getSnapshotBeforeUpdate.\n */\n let MeasureLayout;\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n const context = useCreateMotionContext(props);\n const visualState = useVisualState(props, isStatic);\n if (!isStatic && isBrowser) {\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n context.visualElement = useVisualElement(Component, visualState, configAndProps, createVisualElement);\n /**\n * Load Motion gesture and animation features. These are rendered as renderless\n * components so each feature can optionally make use of React lifecycle methods.\n */\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n const isStrict = useContext(LazyContext).strict;\n if (context.visualElement) {\n MeasureLayout = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, isStrict, preloadedFeatures, initialLayoutGroupConfig);\n }\n }\n /**\n * The mount order and hierarchy is specific to ensure our element ref\n * is hydrated by the time features fire their effects.\n */\n return (React.createElement(MotionContext.Provider, { value: context },\n MeasureLayout && context.visualElement ? (React.createElement(MeasureLayout, { visualElement: context.visualElement, ...configAndProps })) : null,\n useRender(Component, props, useMotionRef(visualState, context.visualElement, externalRef), visualState, isStatic, context.visualElement)));\n }\n const ForwardRefComponent = forwardRef(MotionComponent);\n ForwardRefComponent[motionComponentSymbol] = Component;\n return ForwardRefComponent;\n}\nfunction useLayoutId({ layoutId }) {\n const layoutGroupId = useContext(LayoutGroupContext).id;\n return layoutGroupId && layoutId !== undefined\n ? layoutGroupId + \"-\" + layoutId\n : layoutId;\n}\n\nexport { createMotionComponent };\n","import { 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 { 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';\n\nfunction useVisualElement(Component, visualState, props, createVisualElement) {\n const { visualElement: parent } = useContext(MotionContext);\n const lazyContext = useContext(LazyContext);\n const presenceContext = useContext(PresenceContext);\n const reducedMotionConfig = useContext(MotionConfigContext).reducedMotion;\n const visualElementRef = useRef();\n /**\n * If we haven't preloaded a renderer, check to see if we have one lazy-loaded\n */\n createVisualElement = createVisualElement || lazyContext.renderer;\n if (!visualElementRef.current && createVisualElement) {\n visualElementRef.current = createVisualElement(Component, {\n visualState,\n parent,\n props,\n presenceContext,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useInsertionEffect(() => {\n visualElement && visualElement.update(props, presenceContext);\n });\n /**\n * Cache this value as we want to know whether HandoffAppearAnimations\n * was present on initial render - it will be deleted after this.\n */\n const canHandoff = useRef(Boolean(window.HandoffAppearAnimations));\n useIsomorphicLayoutEffect(() => {\n if (!visualElement)\n return;\n 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 (canHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n useEffect(() => {\n if (!visualElement)\n return;\n visualElement.updateFeatures();\n if (!canHandoff.current && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n /**\n * Once we've handed off animations we can delete HandoffAppearAnimations\n * so components added after the initial render can animate changes\n * in useEffect vs useLayoutEffect.\n */\n window.HandoffAppearAnimations = undefined;\n canHandoff.current = false;\n });\n return visualElement;\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 instance\n ? visualElement.mount(instance)\n : visualElement.unmount();\n }\n if (externalRef) {\n if (typeof externalRef === \"function\") {\n externalRef(instance);\n }\n else if (isRefObject(externalRef)) {\n externalRef.current = instance;\n }\n }\n }, \n /**\n * Only pass a new ref callback to React if we've received a visual element\n * factory. Otherwise we'll be mounting/remounting every time externalRef\n * or other dependencies change.\n */\n [visualElement]);\n}\n\nexport { useMotionRef };\n","import { 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 seperately as we use the lowercase tag names as part\n * of the runtime bundle to detect SVG components\n */\nconst lowercaseSVGElements = [\n \"animate\",\n \"circle\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"g\",\n \"image\",\n \"line\",\n \"filter\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"rect\",\n \"stop\",\n \"switch\",\n \"symbol\",\n \"svg\",\n \"text\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nexport { lowercaseSVGElements };\n","import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';\n\nfunction isSVGComponent(Component) {\n if (\n /**\n * If it's not a string, it's a custom React component. Currently we only support\n * HTML custom React components.\n */\n typeof Component !== \"string\" ||\n /**\n * If it contains a dash, the element is a custom HTML webcomponent.\n */\n Component.includes(\"-\")) {\n return false;\n }\n else if (\n /**\n * If it's in our list of lowercase SVG tags, it's an SVG component\n */\n lowercaseSVGElements.indexOf(Component) > -1 ||\n /**\n * If it contains a capital letter, it's an SVG component\n */\n /[A-Z]/.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","import { transformPropOrder } from './transform.mjs';\n\nconst translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\nconst numTransforms = transformPropOrder.length;\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(transform, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n /**\n * Loop over all possible transforms in order, adding the ones that\n * are present to the transform string.\n */\n for (let i = 0; i < numTransforms; i++) {\n const key = transformPropOrder[i];\n if (transform[key] !== undefined) {\n const transformName = translateAlias[key] || key;\n transformString += `${transformName}(${transform[key]}) `;\n }\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","const checkStringStartsWith = (token) => (key) => typeof key === \"string\" && key.startsWith(token);\nconst isCSSVariableName = checkStringStartsWith(\"--\");\nconst isCSSVariableToken = checkStringStartsWith(\"var(--\");\nconst cssVariableRegex = /var\\s*\\(\\s*--[\\w-]+(\\s*,\\s*(?:(?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)+)?\\s*\\)/g;\n\nexport { cssVariableRegex, isCSSVariableName, isCSSVariableToken };\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) => Math.min(Math.max(v, min), max);\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])+/g;\nconst colorRegex = /(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))/gi;\nconst singleColorRegex = /^(#[0-9a-f]{3,8}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2}(-?[\\d\\.]+%?)\\s*[\\,\\/]?\\s*[\\d\\.]*%?\\))$/i;\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nexport { colorRegex, floatRegex, isString, sanitize, singleColorRegex };\n","import { isString } from '../utils.mjs';\n\nconst createUnitType = (unit) => ({\n test: (v) => isString(v) && v.endsWith(unit) && v.split(\" \").length === 1,\n parse: parseFloat,\n transform: (v) => `${v}${unit}`,\n});\nconst degrees = createUnitType(\"deg\");\nconst percent = createUnitType(\"%\");\nconst px = createUnitType(\"px\");\nconst vh = createUnitType(\"vh\");\nconst vw = createUnitType(\"vw\");\nconst progressPercentage = {\n ...percent,\n parse: (v) => percent.parse(v) / 100,\n transform: (v) => percent.transform(v * 100),\n};\n\nexport { degrees, percent, progressPercentage, px, vh, vw };\n","import { 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 // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n\nexport { numberValueTypes };\n","import { buildTransform } from './build-transform.mjs';\nimport { isCSSVariableName } from '../../dom/utils/is-css-variable.mjs';\nimport { transformProps } from './transform.mjs';\nimport { getValueAsType } from '../../dom/value-types/get-as-type.mjs';\nimport { numberValueTypes } from '../../dom/value-types/number.mjs';\n\nfunction buildHTMLStyles(state, latestValues, options, transformTemplate) {\n const { style, vars, transform, transformOrigin } = state;\n // Track whether we encounter any transform or transformOrigin values.\n let hasTransform = false;\n let hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n let transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable.\n *\n * Transforms and transform origins are kept seperately for further processing.\n */\n for (const key in latestValues) {\n const value = latestValues[key];\n /**\n * If this is a CSS variable we don't do any further processing.\n */\n if (isCSSVariableName(key)) {\n vars[key] = value;\n continue;\n }\n // Convert the value to its default value type, ie 0 -> \"0px\"\n const valueType = numberValueTypes[key];\n const valueAsType = getValueAsType(value, valueType);\n if (transformProps.has(key)) {\n // If this is a transform, flag to enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n // If we already know we have a non-default transform, early return\n if (!transformIsNone)\n continue;\n // Otherwise check to see if this is a default transform\n if (value !== (valueType.default || 0))\n transformIsNone = false;\n }\n else if (key.startsWith(\"origin\")) {\n // If this is a transform origin, flag and enable further transform-origin processing\n hasTransformOrigin = true;\n transformOrigin[key] = valueAsType;\n }\n else {\n style[key] = valueAsType;\n }\n }\n if (!latestValues.transform) {\n if (hasTransform || transformTemplate) {\n style.transform = buildTransform(state.transform, options, transformIsNone, transformTemplate);\n }\n else if (style.transform) {\n /**\n * If we have previously created a transform but currently don't have any,\n * reset transform style to none.\n */\n style.transform = \"none\";\n }\n }\n /**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\n if (hasTransformOrigin) {\n const { originX = \"50%\", originY = \"50%\", originZ = 0, } = transformOrigin;\n style.transformOrigin = `${originX} ${originY} ${originZ}`;\n }\n}\n\nexport { buildHTMLStyles };\n","const createHtmlRenderState = () => ({\n style: {},\n transform: {},\n transformOrigin: {},\n vars: {},\n});\n\nexport { createHtmlRenderState };\n","import { useMemo } from 'react';\nimport { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\nimport { buildHTMLStyles } from './utils/build-styles.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nfunction copyRawValuesOnly(target, source, props) {\n for (const key in source) {\n if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {\n target[key] = source[key];\n }\n }\n}\nfunction useInitialMotionValues({ transformTemplate }, visualState, isStatic) {\n return useMemo(() => {\n const state = createHtmlRenderState();\n buildHTMLStyles(state, visualState, { enableHardwareAcceleration: !isStatic }, transformTemplate);\n return Object.assign({}, state.vars, state.style);\n }, [visualState]);\n}\nfunction useStyle(props, visualState, isStatic) {\n const styleProp = props.style || {};\n const style = {};\n /**\n * Copy non-Motion Values straight into style\n */\n copyRawValuesOnly(style, styleProp, props);\n Object.assign(style, useInitialMotionValues(props, visualState, isStatic));\n return props.transformValues ? props.transformValues(style) : style;\n}\nfunction useHTMLProps(props, visualState, isStatic) {\n // The `any` isn't ideal but it is the type of createElement props argument\n const htmlProps = {};\n const style = useStyle(props, visualState, isStatic);\n if (props.drag && props.dragListener !== false) {\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n // Disable text selection\n style.userSelect =\n style.WebkitUserSelect =\n style.WebkitTouchCallout =\n \"none\";\n // Disable scrolling on the draggable direction\n style.touchAction =\n props.drag === true\n ? \"none\"\n : `pan-${props.drag === \"x\" ? \"y\" : \"x\"}`;\n }\n if (props.tabIndex === undefined &&\n (props.onTap || props.onTapStart || props.whileTap)) {\n htmlProps.tabIndex = 0;\n }\n htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","/**\n * A list of all valid MotionProps.\n *\n * @privateRemarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nconst validMotionProps = new Set([\n \"animate\",\n \"exit\",\n \"variants\",\n \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"onLayoutAnimationStart\",\n \"onLayoutAnimationComplete\",\n \"onLayoutMeasure\",\n \"onBeforeLayoutMeasure\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"_dragX\",\n \"_dragY\",\n \"onHoverStart\",\n \"onHoverEnd\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"ignoreStrict\",\n \"viewport\",\n]);\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 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\"] && key.startsWith(\"onDrag\"))) {\n filteredProps[key] = props[key];\n }\n }\n return filteredProps;\n}\n\nexport { filterProps, loadExternalIsValidProp };\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\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 return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\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 return target;\n}","import { px } from '../../../value/types/numbers/units.mjs';\n\nfunction calcOrigin(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n const pxOriginX = calcOrigin(originX, dimensions.x, dimensions.width);\n const pxOriginY = calcOrigin(originY, dimensions.y, dimensions.height);\n return `${pxOriginX} ${pxOriginY}`;\n}\n\nexport { calcSVGTransformOrigin };\n","import { px } from '../../../value/types/numbers/units.mjs';\n\nconst dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nconst camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, length, spacing = 1, offset = 0, useDashCase = true) {\n // Normalise path length by setting SVG attribute pathLength to 1\n attrs.pathLength = 1;\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n const keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = px.transform(-offset);\n // Build the dash array\n const pathLength = px.transform(length);\n const pathSpacing = px.transform(spacing);\n attrs[keys.array] = `${pathLength} ${pathSpacing}`;\n}\n\nexport { buildSVGPath };\n","import { buildHTMLStyles } from '../../html/utils/build-styles.mjs';\nimport { calcSVGTransformOrigin } from './transform-origin.mjs';\nimport { buildSVGPath } from './path.mjs';\n\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(state, { attrX, attrY, attrScale, originX, originY, pathLength, pathSpacing = 1, pathOffset = 0, \n// This is object creation, which we try to avoid per-frame.\n...latest }, options, isSVGTag, transformTemplate) {\n buildHTMLStyles(state, latest, options, transformTemplate);\n /**\n * For svg tags we just want to make sure viewBox is animatable and treat all the styles\n * as normal HTML tags.\n */\n if (isSVGTag) {\n if (state.style.viewBox) {\n state.attrs.viewBox = state.style.viewBox;\n }\n return;\n }\n state.attrs = state.style;\n state.style = {};\n const { attrs, style, dimensions } = state;\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n if (dimensions)\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (dimensions &&\n (originX !== undefined || originY !== undefined || style.transform)) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Render attrX/attrY/attrScale as attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n if (attrScale !== undefined)\n attrs.scale = attrScale;\n // Build SVG path if one has been defined\n if (pathLength !== undefined) {\n buildSVGPath(attrs, pathLength, pathSpacing, pathOffset, false);\n }\n}\n\nexport { buildSVGAttrs };\n","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, { enableHardwareAcceleration: false }, isSVGTag(Component), props.transformTemplate);\n return {\n ...state.attrs,\n style: { ...state.style },\n };\n }, [visualState]);\n if (props.style) {\n const rawStyles = {};\n copyRawValuesOnly(rawStyles, props.style, props);\n visualProps.style = { ...rawStyles, ...visualProps.style };\n }\n return visualProps;\n}\n\nexport { useSVGProps };\n","import { 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 = {\n ...filteredProps,\n ...visualProps,\n 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","/**\n * Convert camelCase to dash-case properties.\n */\nconst camelToDash = (str) => str.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { camelToDash };\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) {\n const { style } = props;\n const newValues = {};\n for (const key in style) {\n if (isMotionValue(style[key]) ||\n (prevProps.style && isMotionValue(prevProps.style[key])) ||\n isForcedMotionValue(key, props)) {\n newValues[key] = style[key];\n }\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) {\n const newValues = scrapeMotionValuesFromProps$1(props, prevProps);\n for (const key in props) {\n if (isMotionValue(props[key]) || 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 resolveVariantFromProps(props, definition, custom, currentValues = {}, currentVelocity = {}) {\n /**\n * If the variant definition is a function, resolve.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n /**\n * If the variant definition is a variant label, or\n * the function returned a variant label, resolve.\n */\n if (typeof definition === \"string\") {\n definition = props.variants && props.variants[definition];\n }\n /**\n * At this point we've resolved both functions and variant labels,\n * but the resolved variant label might itself have been a function.\n * If so, resolve. This can only have returned a valid target object.\n */\n if (typeof definition === \"function\") {\n definition = definition(custom !== undefined ? custom : props.custom, currentValues, currentVelocity);\n }\n return definition;\n}\n\nexport { resolveVariantFromProps };\n","import { 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","import { useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { resolveVariantFromProps } from '../../render/utils/resolve-variants.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { resolveMotionValue } from '../../value/utils/resolve-motion-value.mjs';\nimport { MotionContext } from '../../context/MotionContext/index.mjs';\nimport { isControllingVariants, isVariantNode } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction makeState({ scrapeMotionValuesFromProps, createRenderState, onMount, }, props, context, presenceContext) {\n const state = {\n latestValues: makeLatestValues(props, context, presenceContext, scrapeMotionValuesFromProps),\n renderState: createRenderState(),\n };\n if (onMount) {\n state.mount = (instance) => onMount(props, instance, state);\n }\n return state;\n}\nconst makeUseVisualState = (config) => (props, isStatic) => {\n const context = useContext(MotionContext);\n const presenceContext = useContext(PresenceContext);\n const make = () => makeState(config, props, context, presenceContext);\n return isStatic ? make() : useConstant(make);\n};\nfunction makeLatestValues(props, context, presenceContext, scrapeMotionValues) {\n const values = {};\n const motionValues = scrapeMotionValues(props, {});\n for (const key in motionValues) {\n values[key] = resolveMotionValue(motionValues[key]);\n }\n let { initial, animate } = props;\n const isControllingVariants$1 = isControllingVariants(props);\n const isVariantNode$1 = isVariantNode(props);\n if (context &&\n isVariantNode$1 &&\n !isControllingVariants$1 &&\n props.inherit !== false) {\n if (initial === undefined)\n initial = context.initial;\n if (animate === undefined)\n animate = context.animate;\n }\n let isInitialAnimationBlocked = presenceContext\n ? presenceContext.initial === false\n : false;\n isInitialAnimationBlocked = isInitialAnimationBlocked || initial === false;\n const variantToSet = isInitialAnimationBlocked ? animate : initial;\n if (variantToSet &&\n typeof variantToSet !== \"boolean\" &&\n !isAnimationControls(variantToSet)) {\n const list = Array.isArray(variantToSet) ? variantToSet : [variantToSet];\n list.forEach((definition) => {\n const resolved = resolveVariantFromProps(props, definition);\n if (!resolved)\n return;\n const { transitionEnd, transition, ...target } = resolved;\n for (const key in target) {\n let valueTarget = target[key];\n if (Array.isArray(valueTarget)) {\n /**\n * Take final keyframe if the initial animation is blocked because\n * we want to initialise at the end of that blocked animation.\n */\n const index = isInitialAnimationBlocked\n ? valueTarget.length - 1\n : 0;\n valueTarget = valueTarget[index];\n }\n if (valueTarget !== null) {\n values[key] = valueTarget;\n }\n }\n for (const key in transitionEnd)\n values[key] = transitionEnd[key];\n });\n }\n return values;\n}\n\nexport { makeUseVisualState };\n","const noop = (any) => any;\n\nexport { noop };\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","class Queue {\n constructor() {\n this.order = [];\n this.scheduled = new Set();\n }\n add(process) {\n if (!this.scheduled.has(process)) {\n this.scheduled.add(process);\n this.order.push(process);\n return true;\n }\n }\n remove(process) {\n const index = this.order.indexOf(process);\n if (index !== -1) {\n this.order.splice(index, 1);\n this.scheduled.delete(process);\n }\n }\n clear() {\n this.order.length = 0;\n this.scheduled.clear();\n }\n}\nfunction createRenderStep(runNextFrame) {\n /**\n * We create and reuse two queues, one to queue jobs for the current frame\n * and one for the next. We reuse to avoid triggering GC after x frames.\n */\n let thisFrame = new Queue();\n let nextFrame = new Queue();\n let numToRun = 0;\n /**\n * Track whether we're currently processing jobs in this step. This way\n * we can decide whether to schedule new jobs for this frame or next.\n */\n let isProcessing = false;\n let flushNextFrame = false;\n /**\n * A set of processes which were marked keepAlive when scheduled.\n */\n const toKeepAlive = new WeakSet();\n const step = {\n /**\n * Schedule a process to run on the next frame.\n */\n schedule: (callback, keepAlive = false, immediate = false) => {\n const addToCurrentFrame = immediate && isProcessing;\n const queue = addToCurrentFrame ? thisFrame : nextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n if (queue.add(callback) && addToCurrentFrame && isProcessing) {\n // If we're adding it to the currently running queue, update its measured size\n numToRun = thisFrame.order.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n nextFrame.remove(callback);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (frameData) => {\n /**\n * If we're already processing we've probably been triggered by a flushSync\n * inside an existing process. Instead of executing, mark flushNextFrame\n * as true and ensure we flush the following frame at the end of this one.\n */\n if (isProcessing) {\n flushNextFrame = true;\n return;\n }\n isProcessing = true;\n [thisFrame, nextFrame] = [nextFrame, thisFrame];\n // Clear the next frame queue\n nextFrame.clear();\n // Execute this frame\n numToRun = thisFrame.order.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = thisFrame.order[i];\n callback(frameData);\n if (toKeepAlive.has(callback)) {\n step.schedule(callback);\n runNextFrame();\n }\n }\n }\n isProcessing = false;\n if (flushNextFrame) {\n flushNextFrame = false;\n step.process(frameData);\n }\n },\n };\n return step;\n}\n\nexport { createRenderStep };\n","import { createRenderStep } from './render-step.mjs';\n\nconst stepsOrder = [\n \"prepare\",\n \"read\",\n \"update\",\n \"preRender\",\n \"render\",\n \"postRender\",\n];\nconst maxElapsed = 40;\nfunction createRenderBatcher(scheduleNextBatch, allowKeepAlive) {\n let runNextFrame = false;\n let useDefaultElapsed = true;\n const state = {\n delta: 0,\n timestamp: 0,\n isProcessing: false,\n };\n const steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n }, {});\n const processStep = (stepId) => steps[stepId].process(state);\n const processBatch = () => {\n const timestamp = performance.now();\n runNextFrame = false;\n state.delta = useDefaultElapsed\n ? 1000 / 60\n : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);\n state.timestamp = timestamp;\n state.isProcessing = true;\n stepsOrder.forEach(processStep);\n state.isProcessing = false;\n if (runNextFrame && allowKeepAlive) {\n useDefaultElapsed = false;\n scheduleNextBatch(processBatch);\n }\n };\n const wake = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!state.isProcessing) {\n scheduleNextBatch(processBatch);\n }\n };\n const schedule = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n wake();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n }, {});\n const cancel = (process) => stepsOrder.forEach((key) => steps[key].cancel(process));\n return { schedule, cancel, state, steps };\n}\n\nexport { createRenderBatcher, stepsOrder };\n","import { noop } from '../utils/noop.mjs';\nimport { createRenderBatcher } from './batcher.mjs';\n\nconst { schedule: frame, cancel: cancelFrame, state: frameData, steps, } = createRenderBatcher(typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : noop, true);\n\nexport { cancelFrame, frame, frameData, steps };\n","import { renderSVG } from './utils/render.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { createSvgRenderState } from './utils/create-render-state.mjs';\nimport { buildSVGAttrs } from './utils/build-attrs.mjs';\nimport { isSVGTag } from './utils/is-svg-tag.mjs';\nimport { frame } from '../../frameloop/frame.mjs';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\n frame.read(() => {\n try {\n renderState.dimensions =\n typeof instance.getBBox ===\n \"function\"\n ? instance.getBBox()\n : instance.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n renderState.dimensions = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n });\n frame.render(() => {\n buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n });\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\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 = \"pointer\" + (isActive ? \"enter\" : \"leave\");\n const callbackName = \"onHover\" + (isActive ? \"Start\" : \"End\");\n const handleEvent = (event, info) => {\n if (event.type === \"touch\" || isDragActive())\n return;\n const props = node.getProps();\n if (node.animationState && props.whileHover) {\n node.animationState.setActive(\"whileHover\", isActive);\n }\n if (props[callbackName]) {\n frame.update(() => props[callbackName](event, info));\n }\n };\n return addPointerEvent(node.current, eventName, handleEvent, {\n passive: !node.getProps()[callbackName],\n });\n}\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","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","/**\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 this.removeEndListeners();\n if (this.isPressing)\n return;\n const props = this.node.getProps();\n const endPointerPress = (endEvent, endInfo) => {\n if (!this.checkPressEnd())\n return;\n const { onTap, onTapCancel } = this.node.getProps();\n frame.update(() => {\n /**\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 !isNodeOrChild(this.node.current, endEvent.target)\n ? onTapCancel && onTapCancel(endEvent, endInfo)\n : onTap && onTap(endEvent, endInfo);\n });\n };\n const removePointerUpListener = addPointerEvent(window, \"pointerup\", endPointerPress, { passive: !(props.onTap || props[\"onPointerUp\"]) });\n const removePointerCancelListener = addPointerEvent(window, \"pointercancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo), { passive: !(props.onTapCancel || props[\"onPointerCancel\"]) });\n this.removeEndListeners = pipe(removePointerUpListener, removePointerCancelListener);\n this.startPress(startEvent, startInfo);\n };\n this.startAccessiblePress = () => {\n const handleKeydown = (keydownEvent) => {\n if (keydownEvent.key !== \"Enter\" || this.isPressing)\n return;\n const handleKeyup = (keyupEvent) => {\n if (keyupEvent.key !== \"Enter\" || !this.checkPressEnd())\n return;\n fireSyntheticPointerEvent(\"up\", (event, info) => {\n const { onTap } = this.node.getProps();\n if (onTap) {\n frame.update(() => onTap(event, info));\n }\n });\n };\n this.removeEndListeners();\n this.removeEndListeners = addDomEvent(this.node.current, \"keyup\", handleKeyup);\n fireSyntheticPointerEvent(\"down\", (event, info) => {\n this.startPress(event, info);\n });\n };\n const removeKeydownListener = addDomEvent(this.node.current, \"keydown\", handleKeydown);\n const handleBlur = () => {\n if (!this.isPressing)\n return;\n fireSyntheticPointerEvent(\"cancel\", (cancelEvent, cancelInfo) => this.cancelPress(cancelEvent, cancelInfo));\n };\n const removeBlurListener = addDomEvent(this.node.current, \"blur\", handleBlur);\n this.removeAccessibleListeners = pipe(removeKeydownListener, removeBlurListener);\n };\n }\n startPress(event, info) {\n this.isPressing = true;\n const { onTapStart, whileTap } = this.node.getProps();\n /**\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.update(() => onTapStart(event, info));\n }\n }\n checkPressEnd() {\n this.removeEndListeners();\n this.isPressing = false;\n const props = this.node.getProps();\n if (props.whileTap && this.node.animationState) {\n this.node.animationState.setActive(\"whileTap\", false);\n }\n return !isDragActive();\n }\n cancelPress(event, info) {\n if (!this.checkPressEnd())\n return;\n const { onTapCancel } = this.node.getProps();\n if (onTapCancel) {\n frame.update(() => onTapCancel(event, info));\n }\n }\n mount() {\n const props = this.node.getProps();\n const removePointerListener = addPointerEvent(this.node.current, \"pointerdown\", this.startPointerPress, { passive: !(props.onTapStart || props[\"onPointerStart\"]) });\n const removeFocusListener = addDomEvent(this.node.current, \"focus\", this.startAccessiblePress);\n this.removeStartListeners = pipe(removePointerListener, removeFocusListener);\n }\n unmount() {\n this.removeStartListeners();\n this.removeEndListeners();\n this.removeAccessibleListeners();\n }\n}\n\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 arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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\n/**\n * Creates an object containing the latest state of every MotionValue on a VisualElement\n */\nfunction getCurrent(visualElement) {\n const current = {};\n visualElement.values.forEach((value, key) => (current[key] = value.get()));\n return current;\n}\n/**\n * Creates an object containing the latest velocity of every MotionValue on a VisualElement\n */\nfunction getVelocity(visualElement) {\n const velocity = {};\n visualElement.values.forEach((value, key) => (velocity[key] = value.getVelocity()));\n return velocity;\n}\nfunction resolveVariant(visualElement, definition, custom) {\n const props = visualElement.getProps();\n return resolveVariantFromProps(props, definition, custom !== undefined ? custom : props.custom, getCurrent(visualElement), getVelocity(visualElement));\n}\n\nexport { resolveVariant };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\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 * 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","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\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\" && supportedWaapiEasing[easing]) ||\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 mapEasingToNativeEasing(easing) {\n if (!easing)\n return undefined;\n return isBezierDefinition(easing)\n ? cubicBezierAsString(easing)\n : Array.isArray(easing)\n ? easing.map(mapEasingToNativeEasing)\n : supportedWaapiEasing[easing];\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\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","const isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { isEasingArray };\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(circOut);\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","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","/*\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 mix = (from, to, progress) => -progress * from + progress * to + from;\n\nexport { mix };\n","// Adapted from https://gist.github.com/mjackson/5311256\nfunction hueToRgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n}\nfunction hslaToRgba({ hue, saturation, lightness, alpha }) {\n hue /= 360;\n saturation /= 100;\n lightness /= 100;\n let red = 0;\n let green = 0;\n let blue = 0;\n if (!saturation) {\n red = green = blue = lightness;\n }\n else {\n const q = lightness < 0.5\n ? lightness * (1 + saturation)\n : lightness + saturation - lightness * saturation;\n const p = 2 * lightness - q;\n red = hueToRgb(p, q, hue + 1 / 3);\n green = hueToRgb(p, q, hue);\n blue = hueToRgb(p, q, hue - 1 / 3);\n }\n return {\n red: Math.round(red * 255),\n green: Math.round(green * 255),\n blue: Math.round(blue * 255),\n alpha,\n };\n}\n\nexport { hslaToRgba };\n","import { mix } from './mix.mjs';\nimport { invariant } from './errors.mjs';\nimport { hslaToRgba } from './hsla-to-rgba.mjs';\nimport { hex } from '../value/types/color/hex.mjs';\nimport { rgba } from '../value/types/color/rgba.mjs';\nimport { hsla } from '../value/types/color/hsla.mjs';\n\n// Linear color space blending\n// Explained https://www.youtube.com/watch?v=LKnqECcg6Gw\n// Demonstrated http://codepen.io/osublake/pen/xGVVaN\nconst mixLinearColor = (from, to, v) => {\n const fromExpo = from * from;\n return Math.sqrt(Math.max(0, v * (to * to - fromExpo) + fromExpo));\n};\nconst colorTypes = [hex, rgba, hsla];\nconst getColorType = (v) => colorTypes.find((type) => type.test(v));\nfunction asRGBA(color) {\n const type = getColorType(color);\n invariant(Boolean(type), `'${color}' is not an animatable color. Use the equivalent color code instead.`);\n let model = type.parse(color);\n if (type === hsla) {\n // TODO Remove this cast - needed since Framer Motion's stricter typing\n model = hslaToRgba(model);\n }\n return model;\n}\nconst mixColor = (from, to) => {\n const fromRGBA = asRGBA(from);\n const toRGBA = asRGBA(to);\n const blended = { ...fromRGBA };\n return (v) => {\n blended.red = mixLinearColor(fromRGBA.red, toRGBA.red, v);\n blended.green = mixLinearColor(fromRGBA.green, toRGBA.green, v);\n blended.blue = mixLinearColor(fromRGBA.blue, toRGBA.blue, v);\n blended.alpha = mix(fromRGBA.alpha, toRGBA.alpha, v);\n return rgba.transform(blended);\n };\n};\n\nexport { mixColor, mixLinearColor };\n","import { cssVariableRegex } from '../../../render/dom/utils/is-css-variable.mjs';\nimport { noop } from '../../../utils/noop.mjs';\nimport { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { colorRegex, floatRegex, isString, 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 cssVarTokeniser = {\n regex: cssVariableRegex,\n countKey: \"Vars\",\n token: \"${v}\",\n parse: noop,\n};\nconst colorTokeniser = {\n regex: colorRegex,\n countKey: \"Colors\",\n token: \"${c}\",\n parse: color.parse,\n};\nconst numberTokeniser = {\n regex: floatRegex,\n countKey: \"Numbers\",\n token: \"${n}\",\n parse: number.parse,\n};\nfunction tokenise(info, { regex, countKey, token, parse }) {\n const matches = info.tokenised.match(regex);\n if (!matches)\n return;\n info[\"num\" + countKey] = matches.length;\n info.tokenised = info.tokenised.replace(regex, token);\n info.values.push(...matches.map(parse));\n}\nfunction analyseComplexValue(value) {\n const originalValue = value.toString();\n const info = {\n value: originalValue,\n tokenised: originalValue,\n values: [],\n numVars: 0,\n numColors: 0,\n numNumbers: 0,\n };\n if (info.value.includes(\"var(--\"))\n tokenise(info, cssVarTokeniser);\n tokenise(info, colorTokeniser);\n tokenise(info, numberTokeniser);\n return info;\n}\nfunction parseComplexValue(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { values, numColors, numVars, tokenised } = analyseComplexValue(source);\n const numValues = values.length;\n return (v) => {\n let output = tokenised;\n for (let i = 0; i < numValues; i++) {\n if (i < numVars) {\n output = output.replace(cssVarTokeniser.token, v[i]);\n }\n else if (i < numVars + numColors) {\n output = output.replace(colorTokeniser.token, color.transform(v[i]));\n }\n else {\n output = output.replace(numberTokeniser.token, sanitize(v[i]));\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 { mix } from './mix.mjs';\nimport { mixColor } from './mix-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';\n\nconst mixImmediate = (origin, target) => (p) => `${p > 0 ? target : origin}`;\nfunction getMixer(origin, target) {\n if (typeof origin === \"number\") {\n return (v) => mix(origin, target, v);\n }\n else if (color.test(origin)) {\n return mixColor(origin, target);\n }\n else {\n return origin.startsWith(\"var(\")\n ? mixImmediate(origin, target)\n : mixComplex(origin, target);\n }\n}\nconst mixArray = (from, to) => {\n const output = [...from];\n const numValues = output.length;\n const blendValue = from.map((fromThis, i) => getMixer(fromThis, to[i]));\n return (v) => {\n for (let i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nconst mixObject = (origin, target) => {\n const output = { ...origin, ...target };\n const blendValue = {};\n for (const key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return (v) => {\n for (const key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nconst mixComplex = (origin, target) => {\n const template = complex.createTransformer(target);\n const originStats = analyseComplexValue(origin);\n const targetStats = analyseComplexValue(target);\n const canInterpolate = originStats.numVars === targetStats.numVars &&\n originStats.numColors === targetStats.numColors &&\n originStats.numNumbers >= targetStats.numNumbers;\n if (canInterpolate) {\n return pipe(mixArray(originStats.values, 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 { mixArray, mixComplex, mixObject };\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","import { invariant } from './errors.mjs';\nimport { color } from '../value/types/color/index.mjs';\nimport { clamp } from './clamp.mjs';\nimport { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { mixComplex, mixArray, mixObject } from './mix-complex.mjs';\nimport { pipe } from './pipe.mjs';\nimport { progress } from './progress.mjs';\nimport { noop } from './noop.mjs';\n\nconst mixNumber = (from, to) => (p) => mix(from, to, p);\nfunction detectMixerFactory(v) {\n if (typeof v === \"number\") {\n return mixNumber;\n }\n else if (typeof v === \"string\") {\n return color.test(v) ? mixColor : mixComplex;\n }\n else if (Array.isArray(v)) {\n return mixArray;\n }\n else if (typeof v === \"object\") {\n return mixObject;\n }\n return mixNumber;\n}\nfunction createMixers(output, ease, customMixer) {\n const mixers = [];\n const mixerFactory = customMixer || detectMixerFactory(output[0]);\n const numMixers = output.length - 1;\n for (let i = 0; i < numMixers; i++) {\n let mixer = mixerFactory(output[i], output[i + 1]);\n if (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 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 { mix } from '../mix.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(mix(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","function convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\n\nexport { convertOffsetToTimes };\n","/*\n Convert velocity into velocity per second\n\n @param [number]: Unit per frame\n @param [number]: Frame duration in ms\n*/\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nexport { velocityPerSecond };\n","import { velocityPerSecond } from '../../../utils/velocity-per-second.mjs';\n\nconst velocitySampleDuration = 5; // ms\nfunction calcGeneratorVelocity(resolveValue, t, current) {\n const prevT = Math.max(t - velocitySampleDuration, 0);\n return velocityPerSecond(current - resolveValue(prevT), t - prevT);\n}\n\nexport { calcGeneratorVelocity };\n","import { warning } from '../../../utils/errors.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { secondsToMilliseconds, millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\n\nconst safeMin = 0.001;\nconst minDuration = 0.01;\nconst maxDuration = 10.0;\nconst minDamping = 0.05;\nconst maxDamping = 1;\nfunction findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1, }) {\n let envelope;\n let derivative;\n warning(duration <= secondsToMilliseconds(maxDuration), \"Spring duration must be 10 seconds or less\");\n let dampingRatio = 1 - bounce;\n /**\n * Restrict dampingRatio and duration to within acceptable ranges.\n */\n dampingRatio = clamp(minDamping, maxDamping, dampingRatio);\n duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));\n if (dampingRatio < 1) {\n /**\n * Underdamped spring\n */\n envelope = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const a = exponentialDecay - velocity;\n const b = calcAngularFreq(undampedFreq, dampingRatio);\n const c = Math.exp(-delta);\n return safeMin - (a / b) * c;\n };\n derivative = (undampedFreq) => {\n const exponentialDecay = undampedFreq * dampingRatio;\n const delta = exponentialDecay * duration;\n const d = delta * velocity + velocity;\n const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq, 2) * duration;\n const f = Math.exp(-delta);\n const g = calcAngularFreq(Math.pow(undampedFreq, 2), dampingRatio);\n const factor = -envelope(undampedFreq) + safeMin > 0 ? -1 : 1;\n return (factor * ((d - e) * f)) / g;\n };\n }\n else {\n /**\n * Critically-damped spring\n */\n envelope = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (undampedFreq - velocity) * duration + 1;\n return -safeMin + a * b;\n };\n derivative = (undampedFreq) => {\n const a = Math.exp(-undampedFreq * duration);\n const b = (velocity - undampedFreq) * (duration * duration);\n return a * b;\n };\n }\n const initialGuess = 5 / duration;\n const undampedFreq = approximateRoot(envelope, derivative, initialGuess);\n duration = secondsToMilliseconds(duration);\n if (isNaN(undampedFreq)) {\n return {\n stiffness: 100,\n damping: 10,\n duration,\n };\n }\n else {\n const stiffness = Math.pow(undampedFreq, 2) * mass;\n return {\n stiffness,\n damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),\n duration,\n };\n }\n}\nconst rootIterations = 12;\nfunction approximateRoot(envelope, derivative, initialGuess) {\n let result = initialGuess;\n for (let i = 1; i < rootIterations; i++) {\n result = result - envelope(result) / derivative(result);\n }\n return result;\n}\nfunction calcAngularFreq(undampedFreq, dampingRatio) {\n return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);\n}\n\nexport { calcAngularFreq, findSpring, maxDamping, maxDuration, minDamping, minDuration };\n","import { millisecondsToSeconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorVelocity } from '../utils/velocity.mjs';\nimport { findSpring, calcAngularFreq } from './find.mjs';\n\nconst durationKeys = [\"duration\", \"bounce\"];\nconst physicsKeys = [\"stiffness\", \"damping\", \"mass\"];\nfunction isSpringType(options, keys) {\n return keys.some((key) => options[key] !== undefined);\n}\nfunction getSpringOptions(options) {\n let springOptions = {\n velocity: 0.0,\n stiffness: 100,\n damping: 10,\n mass: 1.0,\n isResolvedFromDuration: false,\n ...options,\n };\n // stiffness/damping/mass overrides duration/bounce\n if (!isSpringType(options, physicsKeys) &&\n isSpringType(options, durationKeys)) {\n const derived = findSpring(options);\n springOptions = {\n ...springOptions,\n ...derived,\n velocity: 0.0,\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, velocity, duration, isResolvedFromDuration, } = getSpringOptions(options);\n const initialVelocity = velocity ? -millisecondsToSeconds(velocity) : 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n const initialDelta = target - origin;\n const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));\n /**\n * If we're working on a granular scale, use smaller defaults for determining\n * when the spring is finished.\n *\n * These defaults have been selected emprically based on what strikes a good\n * ratio between feeling good and finishing as soon as changes are imperceptible.\n */\n const isGranularScale = Math.abs(initialDelta) < 5;\n restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);\n restDelta || (restDelta = isGranularScale ? 0.005 : 0.5);\n let resolveSpring;\n if (dampingRatio < 1) {\n const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);\n // Underdamped spring\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n return (target -\n envelope *\n (((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) /\n angularFreq) *\n Math.sin(angularFreq * t) +\n initialDelta * Math.cos(angularFreq * t)));\n };\n }\n else if (dampingRatio === 1) {\n // Critically damped spring\n resolveSpring = (t) => target -\n Math.exp(-undampedAngularFreq * t) *\n (initialDelta +\n (initialVelocity + undampedAngularFreq * initialDelta) * t);\n }\n else {\n // Overdamped spring\n const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = (t) => {\n const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);\n // When performing sinh or cosh values can hit Infinity so we cap them here\n const freqForT = Math.min(dampedAngularFreq * t, 300);\n return (target -\n (envelope *\n ((initialVelocity +\n dampingRatio * undampedAngularFreq * initialDelta) *\n Math.sinh(freqForT) +\n dampedAngularFreq *\n initialDelta *\n Math.cosh(freqForT))) /\n dampedAngularFreq);\n };\n }\n return {\n calculatedDuration: isResolvedFromDuration ? duration || null : null,\n next: (t) => {\n const current = resolveSpring(t);\n if (!isResolvedFromDuration) {\n let currentVelocity = initialVelocity;\n if (t !== 0) {\n /**\n * We only need to calculate velocity for under-damped springs\n * as over- and critically-damped springs can't overshoot, so\n * checking only for displacement is enough.\n */\n if (dampingRatio < 1) {\n currentVelocity = calcGeneratorVelocity(resolveSpring, t, current);\n }\n else {\n currentVelocity = 0;\n }\n }\n const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;\n const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;\n state.done =\n isBelowVelocityThreshold && isBelowDisplacementThreshold;\n }\n else {\n state.done = t >= duration;\n }\n state.value = state.done ? target : current;\n return state;\n },\n };\n}\n\nexport { spring };\n","import { spring } from './spring/index.mjs';\nimport { calcGeneratorVelocity } from './utils/velocity.mjs';\n\nfunction inertia({ keyframes, velocity = 0.0, power = 0.8, timeConstant = 325, bounceDamping = 10, bounceStiffness = 500, modifyTarget, min, max, restDelta = 0.5, restSpeed, }) {\n const origin = keyframes[0];\n const state = {\n done: false,\n value: origin,\n };\n const isOutOfBounds = (v) => (min !== undefined && v < min) || (max !== undefined && v > max);\n const nearestBoundary = (v) => {\n if (min === undefined)\n return max;\n if (max === undefined)\n return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n };\n let amplitude = power * velocity;\n const ideal = origin + amplitude;\n const target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n /**\n * If the target has changed we need to re-calculate the amplitude, otherwise\n * the animation will start from the wrong position.\n */\n if (target !== ideal)\n amplitude = target - origin;\n const calcDelta = (t) => -amplitude * Math.exp(-t / timeConstant);\n const calcLatest = (t) => target + calcDelta(t);\n const applyFriction = (t) => {\n const delta = calcDelta(t);\n const latest = calcLatest(t);\n state.done = Math.abs(delta) <= restDelta;\n state.value = state.done ? target : latest;\n };\n /**\n * Ideally this would resolve for t in a stateless way, we could\n * do that by always precalculating the animation but as we know\n * this will be done anyway we can assume that spring will\n * be discovered during that.\n */\n let timeReachedBoundary;\n let spring$1;\n const checkCatchBoundary = (t) => {\n if (!isOutOfBounds(state.value))\n return;\n timeReachedBoundary = t;\n spring$1 = spring({\n keyframes: [state.value, nearestBoundary(state.value)],\n velocity: calcGeneratorVelocity(calcLatest, t, state.value),\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 { 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 : performance.now(),\n };\n};\n\nexport { frameloopDriver };\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","import { keyframes } from '../../generators/keyframes.mjs';\nimport { spring } from '../../generators/spring/index.mjs';\nimport { inertia } from '../../generators/inertia.mjs';\nimport { frameloopDriver } from './driver-frameloop.mjs';\nimport { interpolate } from '../../../utils/interpolate.mjs';\nimport { clamp } from '../../../utils/clamp.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { calcGeneratorDuration } from '../../generators/utils/calc-duration.mjs';\n\nconst types = {\n decay: inertia,\n inertia,\n tween: keyframes,\n keyframes: keyframes,\n spring,\n};\n/**\n * Animate a single value on the main thread.\n *\n * This function is written, where functionality overlaps,\n * to be largely spec-compliant with WAAPI to allow fungibility\n * between the two.\n */\nfunction animateValue({ autoplay = true, delay = 0, driver = frameloopDriver, keyframes: keyframes$1, type = \"keyframes\", repeat = 0, repeatDelay = 0, repeatType = \"loop\", onPlay, onStop, onComplete, onUpdate, ...options }) {\n let speed = 1;\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let animationDriver;\n const generatorFactory = types[type] || keyframes;\n /**\n * If this isn't the keyframes generator and we've been provided\n * strings as keyframes, we need to interpolate these.\n * TODO: Support velocity for units and complex value types/\n */\n let mapNumbersToKeyframes;\n if (generatorFactory !== keyframes &&\n typeof keyframes$1[0] !== \"number\") {\n mapNumbersToKeyframes = interpolate([0, 100], keyframes$1, {\n clamp: false,\n });\n keyframes$1 = [0, 100];\n }\n const generator = generatorFactory({ ...options, keyframes: keyframes$1 });\n let mirroredGenerator;\n if (repeatType === \"mirror\") {\n mirroredGenerator = generatorFactory({\n ...options,\n keyframes: [...keyframes$1].reverse(),\n velocity: -(options.velocity || 0),\n });\n }\n let playState = \"idle\";\n let holdTime = null;\n let startTime = null;\n let cancelTime = null;\n /**\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 && repeat) {\n generator.calculatedDuration = calcGeneratorDuration(generator);\n }\n const { calculatedDuration } = generator;\n let resolvedDuration = Infinity;\n let totalDuration = Infinity;\n if (calculatedDuration !== null) {\n resolvedDuration = calculatedDuration + repeatDelay;\n totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;\n }\n let currentTime = 0;\n const tick = (timestamp) => {\n if (startTime === null)\n return;\n /**\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 (speed > 0)\n startTime = Math.min(startTime, timestamp);\n if (speed < 0)\n startTime = Math.min(timestamp - totalDuration / speed, startTime);\n if (holdTime !== null) {\n currentTime = holdTime;\n }\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 currentTime = Math.round(timestamp - startTime) * speed;\n }\n // Rebase on delay\n const timeWithoutDelay = currentTime - delay * (speed >= 0 ? 1 : -1);\n const isInDelayPhase = speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;\n currentTime = Math.max(timeWithoutDelay, 0);\n /**\n * If this animation has finished, set the current time\n * to the total duration.\n */\n if (playState === \"finished\" && holdTime === null) {\n currentTime = totalDuration;\n }\n let elapsed = 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 = currentTime / 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 iterationIsOdd = Boolean(currentIteration % 2);\n if (iterationIsOdd) {\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 let p = clamp(0, 1, iterationProgress);\n if (currentTime > totalDuration) {\n p = repeatType === \"reverse\" && iterationIsOdd ? 1 : 0;\n }\n elapsed = p * 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$1[0] }\n : frameGenerator.next(elapsed);\n if (mapNumbersToKeyframes) {\n state.value = mapNumbersToKeyframes(state.value);\n }\n let { done } = state;\n if (!isInDelayPhase && calculatedDuration !== null) {\n done = speed >= 0 ? currentTime >= totalDuration : currentTime <= 0;\n }\n const isAnimationFinished = holdTime === null &&\n (playState === \"finished\" || (playState === \"running\" && done));\n if (onUpdate) {\n onUpdate(state.value);\n }\n if (isAnimationFinished) {\n finish();\n }\n return state;\n };\n const stopAnimationDriver = () => {\n animationDriver && animationDriver.stop();\n animationDriver = undefined;\n };\n const cancel = () => {\n playState = \"idle\";\n stopAnimationDriver();\n resolveFinishedPromise();\n updateFinishedPromise();\n startTime = cancelTime = null;\n };\n const finish = () => {\n playState = \"finished\";\n onComplete && onComplete();\n stopAnimationDriver();\n resolveFinishedPromise();\n };\n const play = () => {\n if (hasStopped)\n return;\n if (!animationDriver)\n animationDriver = driver(tick);\n const now = animationDriver.now();\n onPlay && onPlay();\n if (holdTime !== null) {\n startTime = now - holdTime;\n }\n else if (!startTime || playState === \"finished\") {\n startTime = now;\n }\n if (playState === \"finished\") {\n updateFinishedPromise();\n }\n cancelTime = startTime;\n holdTime = null;\n /**\n * Set playState to running only after we've used it in\n * the previous logic.\n */\n playState = \"running\";\n animationDriver.start();\n };\n if (autoplay) {\n play();\n }\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n get time() {\n return millisecondsToSeconds(currentTime);\n },\n set time(newTime) {\n newTime = secondsToMilliseconds(newTime);\n currentTime = newTime;\n if (holdTime !== null || !animationDriver || speed === 0) {\n holdTime = newTime;\n }\n else {\n startTime = animationDriver.now() - newTime / speed;\n }\n },\n get duration() {\n const duration = generator.calculatedDuration === null\n ? calcGeneratorDuration(generator)\n : generator.calculatedDuration;\n return millisecondsToSeconds(duration);\n },\n get speed() {\n return speed;\n },\n set speed(newSpeed) {\n if (newSpeed === speed || !animationDriver)\n return;\n speed = newSpeed;\n controls.time = millisecondsToSeconds(currentTime);\n },\n get state() {\n return playState;\n },\n play,\n pause: () => {\n playState = \"paused\";\n holdTime = currentTime;\n },\n stop: () => {\n hasStopped = true;\n if (playState === \"idle\")\n return;\n playState = \"idle\";\n onStop && onStop();\n cancel();\n },\n cancel: () => {\n if (cancelTime !== null)\n tick(cancelTime);\n cancel();\n },\n complete: () => {\n playState = \"finished\";\n },\n sample: (elapsed) => {\n startTime = 0;\n return tick(elapsed);\n },\n };\n return controls;\n}\n\nexport { animateValue };\n","import { animateStyle } from './index.mjs';\nimport { isWaapiSupportedEasing } from './easing.mjs';\nimport { getFinalKeyframe } from './utils/get-final-keyframe.mjs';\nimport { animateValue } from '../js/index.mjs';\nimport { millisecondsToSeconds, secondsToMilliseconds } from '../../../utils/time-conversion.mjs';\nimport { memo } from '../../../utils/memo.mjs';\nimport { noop } from '../../../utils/noop.mjs';\nimport { frameData, frame, cancelFrame } from '../../../frameloop/frame.mjs';\n\nconst supportsWaapi = memo(() => Object.hasOwnProperty.call(Element.prototype, \"animate\"));\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\n \"opacity\",\n \"clipPath\",\n \"filter\",\n \"transform\",\n \"backgroundColor\",\n]);\n/**\n * 10ms is chosen here as it strikes a balance between smooth\n * results (more than one keyframe per frame at 60fps) and\n * keyframe quantity.\n */\nconst sampleDelta = 10; //ms\n/**\n * Implement a practical max duration for keyframe generation\n * to prevent infinite loops\n */\nconst maxDuration = 20000;\nconst requiresPregeneratedKeyframes = (valueName, options) => options.type === \"spring\" ||\n valueName === \"backgroundColor\" ||\n !isWaapiSupportedEasing(options.ease);\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n const canAccelerateAnimation = supportsWaapi() &&\n acceleratedValues.has(valueName) &&\n !options.repeatDelay &&\n options.repeatType !== \"mirror\" &&\n options.damping !== 0 &&\n options.type !== \"inertia\";\n if (!canAccelerateAnimation)\n return false;\n /**\n * TODO: Unify with js/index\n */\n let hasStopped = false;\n let resolveFinishedPromise;\n let currentFinishedPromise;\n /**\n * Resolve the current Promise every time we enter the\n * finished state. This is WAAPI-compatible behaviour.\n */\n const updateFinishedPromise = () => {\n currentFinishedPromise = new Promise((resolve) => {\n resolveFinishedPromise = resolve;\n });\n };\n // Create the first finished promise\n updateFinishedPromise();\n let { keyframes, duration = 300, ease, times } = options;\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (requiresPregeneratedKeyframes(valueName, options)) {\n const sampleAnimation = animateValue({\n ...options,\n repeat: 0,\n delay: 0,\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 times = undefined;\n keyframes = pregeneratedKeyframes;\n duration = t - sampleDelta;\n ease = \"linear\";\n }\n const animation = animateStyle(value.owner.current, valueName, keyframes, {\n ...options,\n duration,\n /**\n * This function is currently not called if ease is provided\n * as a function so the cast is safe.\n *\n * However it would be possible for a future refinement to port\n * in easing pregeneration from Motion One for browsers that\n * support the upcoming `linear()` easing function.\n */\n ease: ease,\n times,\n });\n /**\n * WAAPI animations don't resolve startTime synchronously. But a blocked\n * thread could delay the startTime resolution by a noticeable amount.\n * For synching handoff animations with the new Motion animation we want\n * to ensure startTime is synchronously set.\n */\n if (options.syncStart) {\n animation.startTime = frameData.isProcessing\n ? frameData.timestamp\n : document.timeline\n ? document.timeline.currentTime\n : performance.now();\n }\n const cancelAnimation = () => animation.cancel();\n const safeCancel = () => {\n frame.update(cancelAnimation);\n resolveFinishedPromise();\n updateFinishedPromise();\n };\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 value.set(getFinalKeyframe(keyframes, options));\n onComplete && onComplete();\n safeCancel();\n };\n /**\n * Animation interrupt callback.\n */\n const controls = {\n then(resolve, reject) {\n return currentFinishedPromise.then(resolve, reject);\n },\n attachTimeline(timeline) {\n animation.timeline = timeline;\n animation.onfinish = null;\n return noop;\n },\n get time() {\n return millisecondsToSeconds(animation.currentTime || 0);\n },\n set time(newTime) {\n animation.currentTime = secondsToMilliseconds(newTime);\n },\n get speed() {\n return animation.playbackRate;\n },\n set speed(newSpeed) {\n animation.playbackRate = newSpeed;\n },\n get duration() {\n return millisecondsToSeconds(duration);\n },\n play: () => {\n if (hasStopped)\n return;\n animation.play();\n /**\n * Cancel any pending cancel tasks\n */\n cancelFrame(cancelAnimation);\n },\n pause: () => animation.pause(),\n stop: () => {\n hasStopped = true;\n if (animation.playState === \"idle\")\n return;\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 const { currentTime } = animation;\n if (currentTime) {\n const sampleAnimation = animateValue({\n ...options,\n autoplay: false,\n });\n value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n }\n safeCancel();\n },\n complete: () => animation.finish(),\n cancel: safeCancel,\n };\n return controls;\n}\n\nexport { createAcceleratedAnimation };\n","function memo(callback) {\n let result;\n return () => {\n if (result === undefined)\n result = callback();\n return result;\n };\n}\n\nexport { memo };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration, 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","function getFinalKeyframe(keyframes, { repeat, repeatType = \"loop\" }) {\n const index = repeat && repeatType !== \"loop\" && repeat % 2 === 1\n ? 0\n : keyframes.length - 1;\n return keyframes[index];\n}\n\nexport { getFinalKeyframe };\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","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 = (key, value) => {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"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 { 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 = /([a-z-]*)\\(.*?\\)/g;\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","/**\n * Check if the value is a zero value string like \"0px\" or \"0%\"\n */\nconst isZeroValueString = (v) => /^0[^.\\s]+$/.test(v);\n\nexport { isZeroValueString };\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}\n\nexport { isNone };\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] || transition[\"default\"] || transition;\n}\n\nexport { getValueTransition, isTransitionDefined };\n","import { warning } from '../../utils/errors.mjs';\nimport { secondsToMilliseconds } from '../../utils/time-conversion.mjs';\nimport { instantAnimationState } from '../../utils/use-instant-transition-state.mjs';\nimport { createAcceleratedAnimation } from '../animators/waapi/create-accelerated-animation.mjs';\nimport { createInstantAnimation } from '../animators/instant.mjs';\nimport { getDefaultTransition } from '../utils/default-transitions.mjs';\nimport { isAnimatable } from '../utils/is-animatable.mjs';\nimport { getKeyframes } from '../utils/keyframes.mjs';\nimport { getValueTransition, isTransitionDefined } from '../utils/transitions.mjs';\nimport { animateValue } from '../animators/js/index.mjs';\n\nconst animateMotionValue = (valueName, value, target, transition = {}) => {\n return (onComplete) => {\n const valueTransition = getValueTransition(transition, valueName) || {};\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 const keyframes = getKeyframes(value, valueName, target, valueTransition);\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 const targetKeyframe = keyframes[keyframes.length - 1];\n const isOriginAnimatable = isAnimatable(valueName, originKeyframe);\n const isTargetAnimatable = isAnimatable(valueName, targetKeyframe);\n warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${valueName} from \"${originKeyframe}\" to \"${targetKeyframe}\". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \\`style\\` property.`);\n let options = {\n keyframes,\n velocity: value.getVelocity(),\n ease: \"easeOut\",\n ...valueTransition,\n delay: -elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n };\n /**\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(valueName, 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 (!isOriginAnimatable ||\n !isTargetAnimatable ||\n instantAnimationState.current ||\n valueTransition.type === false) {\n /**\n * If we can't animate this value, or the global instant animation flag is set,\n * or this is simply defined as an instant transition, return an instant transition.\n */\n return createInstantAnimation(instantAnimationState.current\n ? { ...options, delay: 0 }\n : options);\n }\n /**\n * Animate via WAAPI if possible.\n */\n if (value.owner &&\n value.owner.current instanceof HTMLElement &&\n !value.owner.getProps().onUpdate) {\n const acceleratedAnimation = createAcceleratedAnimation(value, valueName, options);\n if (acceleratedAnimation)\n return acceleratedAnimation;\n }\n /**\n * If we didn't create an accelerated animation, create a JS animation\n */\n return animateValue(options);\n };\n};\n\nexport { animateMotionValue };\n","import { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { isNone } from './is-none.mjs';\n\nfunction getKeyframes(value, valueName, target, transition) {\n const isTargetAnimatable = isAnimatable(valueName, target);\n let keyframes;\n if (Array.isArray(target)) {\n keyframes = [...target];\n }\n else {\n keyframes = [null, target];\n }\n const defaultOrigin = transition.from !== undefined ? transition.from : value.get();\n let animatableTemplateValue = undefined;\n const noneKeyframeIndexes = [];\n for (let i = 0; i < keyframes.length; i++) {\n /**\n * Fill null/wildcard keyframes\n */\n if (keyframes[i] === null) {\n keyframes[i] = i === 0 ? defaultOrigin : keyframes[i - 1];\n }\n if (isNone(keyframes[i])) {\n noneKeyframeIndexes.push(i);\n }\n // TODO: Clean this conditional, it works for now\n if (typeof keyframes[i] === \"string\" &&\n keyframes[i] !== \"none\" &&\n keyframes[i] !== \"0\") {\n animatableTemplateValue = keyframes[i];\n }\n }\n if (isTargetAnimatable &&\n noneKeyframeIndexes.length &&\n animatableTemplateValue) {\n for (let i = 0; i < noneKeyframeIndexes.length; i++) {\n const index = noneKeyframeIndexes[i];\n keyframes[index] = getAnimatableNone(valueName, animatableTemplateValue);\n }\n }\n return keyframes;\n}\n\nexport { getKeyframes };\n","import { animateValue } from './js/index.mjs';\nimport { noop } from '../../utils/noop.mjs';\n\nfunction createInstantAnimation({ keyframes, delay, onUpdate, onComplete, }) {\n const setValue = () => {\n onUpdate && onUpdate(keyframes[keyframes.length - 1]);\n onComplete && onComplete();\n /**\n * TODO: As this API grows it could make sense to always return\n * animateValue. This will be a bigger project as animateValue\n * is frame-locked whereas this function resolves instantly.\n * This is a behavioural change and also has ramifications regarding\n * assumptions within tests.\n */\n return {\n time: 0,\n speed: 1,\n duration: 0,\n play: (noop),\n pause: (noop),\n stop: (noop),\n then: (resolve) => {\n resolve();\n return Promise.resolve();\n },\n cancel: (noop),\n complete: (noop),\n };\n };\n return delay\n ? animateValue({\n keyframes: [0, 1],\n duration: 0,\n delay,\n onComplete: setValue,\n })\n : setValue();\n}\n\nexport { createInstantAnimation };\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","/**\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+$/.test(v);\n\nexport { isNumericalString };\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 { 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 { frame, frameData } from '../frameloop/frame.mjs';\n\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 = \"10.16.4\";\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n this.updateAndNotify = (v, render = true) => {\n this.prev = this.current;\n this.current = v;\n // Update timestamp\n const { delta, timestamp } = frameData;\n if (this.lastUpdated !== timestamp) {\n this.timeDelta = delta;\n this.lastUpdated = timestamp;\n frame.postRender(this.scheduleVelocityCheck);\n }\n // Update update subscribers\n if (this.prev !== this.current && this.events.change) {\n this.events.change.notify(this.current);\n }\n // Update velocity subscribers\n if (this.events.velocityChange) {\n this.events.velocityChange.notify(this.getVelocity());\n }\n // Update render subscribers\n if (render && this.events.renderRequest) {\n this.events.renderRequest.notify(this.current);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = () => frame.postRender(this.velocityCheck);\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = ({ timestamp }) => {\n if (timestamp !== this.lastUpdated) {\n this.prev = this.current;\n if (this.events.velocityChange) {\n this.events.velocityChange.notify(this.getVelocity());\n }\n }\n };\n this.hasAnimated = false;\n this.prev = this.current = init;\n this.canTrackVelocity = isFloat(this.current);\n this.owner = options.owner;\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.on(\"change\", updateOpacity)\n * const unsubscribeY = y.on(\"change\", updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \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 = prev;\n this.timeDelta = delta;\n }\n /**\n * Set the state of the `MotionValue`, stopping any active animations,\n * effects, and resets velocity to `0`.\n */\n jump(v) {\n this.updateAndNotify(v);\n this.prev = v;\n this.stop();\n if (this.stopPassiveEffect)\n this.stopPassiveEffect();\n }\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n get() {\n if (collectMotionValues.current) {\n collectMotionValues.current.push(this);\n }\n return this.current;\n }\n /**\n * @public\n */\n getPrevious() {\n return this.prev;\n }\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n getVelocity() {\n // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n return this.canTrackVelocity\n ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prev), this.timeDelta)\n : 0;\n }\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n start(startAnimation) {\n this.stop();\n return new Promise((resolve) => {\n this.hasAnimated = true;\n this.animation = startAnimation(resolve);\n if (this.events.animationStart) {\n this.events.animationStart.notify();\n }\n }).then(() => {\n if (this.events.animationComplete) {\n this.events.animationComplete.notify();\n }\n this.clearAnimation();\n });\n }\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n stop() {\n if (this.animation) {\n this.animation.stop();\n if (this.events.animationCancel) {\n this.events.animationCancel.notify();\n }\n }\n this.clearAnimation();\n }\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n isAnimating() {\n return !!this.animation;\n }\n clearAnimation() {\n delete this.animation;\n }\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n destroy() {\n this.clearListeners();\n this.stop();\n if (this.stopPassiveEffect) {\n this.stopPassiveEffect();\n }\n }\n}\nfunction motionValue(init, options) {\n return new MotionValue(init, options);\n}\n\nexport { MotionValue, collectMotionValues, motionValue };\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 { 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 { isNumericalString } from '../../utils/is-numerical-string.mjs';\nimport { isZeroValueString } from '../../utils/is-zero-value-string.mjs';\nimport { resolveFinalValueInKeyframes } from '../../utils/resolve-value.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\nimport { getAnimatableNone } from '../dom/value-types/animatable-none.mjs';\nimport { findValueType } from '../dom/value-types/find.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 ? visualElement.makeTargetAnimatable(resolved, false) : {};\n target = { ...target, ...transitionEnd };\n for (const key in target) {\n const value = resolveFinalValueInKeyframes(target[key]);\n setMotionValue(visualElement, key, value);\n }\n}\nfunction setVariants(visualElement, variantLabels) {\n const reversedLabels = [...variantLabels].reverse();\n reversedLabels.forEach((key) => {\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n if (visualElement.variantChildren) {\n visualElement.variantChildren.forEach((child) => {\n setVariants(child, variantLabels);\n });\n }\n });\n}\nfunction setValues(visualElement, definition) {\n if (Array.isArray(definition)) {\n return setVariants(visualElement, definition);\n }\n else if (typeof definition === \"string\") {\n return setVariants(visualElement, [definition]);\n }\n else {\n setTarget(visualElement, definition);\n }\n}\nfunction checkTargetForNewValues(visualElement, target, origin) {\n var _a, _b;\n const newValueKeys = Object.keys(target).filter((key) => !visualElement.hasValue(key));\n const numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (let i = 0; i < numNewValues; i++) {\n const key = newValueKeys[i];\n const targetValue = target[key];\n let value = null;\n /**\n * If the target is a series of keyframes, we can use the first value\n * in the array. If this first value is null, we'll still need to read from the DOM.\n */\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n /**\n * If the target isn't keyframes, or the first keyframe was null, we need to\n * first check if an origin value was explicitly defined in the transition as \"from\",\n * if not read the value from the DOM. As an absolute fallback, take the defined target value.\n */\n if (value === null) {\n value = (_b = (_a = origin[key]) !== null && _a !== void 0 ? _a : visualElement.readValue(key)) !== null && _b !== void 0 ? _b : target[key];\n }\n /**\n * If value is still undefined or null, ignore it. Preferably this would throw,\n * but this was causing issues in Framer.\n */\n if (value === undefined || value === null)\n continue;\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(targetValue)) {\n value = getAnimatableNone(key, targetValue);\n }\n visualElement.addValue(key, motionValue(value, { owner: visualElement }));\n if (origin[key] === undefined) {\n origin[key] = value;\n }\n if (value !== null)\n visualElement.setBaseTarget(key, value);\n }\n}\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n const valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n const origin = {};\n for (const key in target) {\n const transitionOrigin = getOriginFromTransition(key, transition);\n if (transitionOrigin !== undefined) {\n origin[key] = transitionOrigin;\n }\n else {\n const value = visualElement.getValue(key);\n if (value) {\n origin[key] = value.get();\n }\n }\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","import { transformProps } from '../../render/html/utils/transform.mjs';\nimport { optimizedAppearDataAttribute } from '../optimized-appear/data-id.mjs';\nimport { animateMotionValue } from './motion-value.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { setTarget } from '../../render/utils/setters.mjs';\nimport { 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, definition, { delay = 0, transitionOverride, type } = {}) {\n let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = visualElement.makeTargetAnimatable(definition);\n const willChange = visualElement.getValue(\"willChange\");\n if (transitionOverride)\n transition = transitionOverride;\n const 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);\n const valueTarget = target[key];\n if (!value ||\n valueTarget === undefined ||\n (animationTypeState &&\n shouldBlockAnimation(animationTypeState, key))) {\n continue;\n }\n const valueTransition = {\n delay,\n elapsed: 0,\n ...transition,\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 if (window.HandoffAppearAnimations && !value.hasAnimated) {\n const appearId = visualElement.getProps()[optimizedAppearDataAttribute];\n if (appearId) {\n valueTransition.elapsed = window.HandoffAppearAnimations(appearId, key, value, frame);\n valueTransition.syncStart = true;\n }\n }\n value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition));\n const animation = value.animation;\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n if (transitionEnd) {\n Promise.all(animations).then(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\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 const resolved = resolveVariant(visualElement, variant, options.custom);\n let { transition = visualElement.getDefaultTransition() || {} } = resolved || {};\n if (options.transitionOverride) {\n transition = options.transitionOverride;\n }\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getAnimation = resolved\n ? () => Promise.all(animateTarget(visualElement, resolved, options))\n : () => Promise.resolve();\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n const getChildAnimations = visualElement.variantChildren && visualElement.variantChildren.size\n ? (forwardDelay = 0) => {\n const { delayChildren = 0, staggerChildren, staggerDirection, } = transition;\n return animateChildren(visualElement, variant, delayChildren + forwardDelay, staggerChildren, staggerDirection, options);\n }\n : () => Promise.resolve();\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n const { when } = transition;\n if (when) {\n const [first, last] = when === \"beforeChildren\"\n ? [getAnimation, getChildAnimations]\n : [getChildAnimations, getAnimation];\n return first().then(() => last());\n }\n else {\n return Promise.all([getAnimation(), getChildAnimations(options.delay)]);\n }\n}\nfunction animateChildren(visualElement, variant, delayChildren = 0, staggerChildren = 0, staggerDirection = 1, options) {\n const animations = [];\n const maxStaggerDuration = (visualElement.variantChildren.size - 1) * staggerChildren;\n const generateStaggerDuration = staggerDirection === 1\n ? (i = 0) => i * staggerChildren\n : (i = 0) => maxStaggerDuration - i * staggerChildren;\n Array.from(visualElement.variantChildren)\n .sort(sortByTreeOrder)\n .forEach((child, i) => {\n child.notify(\"AnimationStart\", variant);\n animations.push(animateVariant(child, variant, {\n ...options,\n delay: delayChildren + generateStaggerDuration(i),\n }).then(() => child.notify(\"AnimationComplete\", variant)));\n });\n return Promise.all(animations);\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\n}\n\nexport { animateVariant, sortByTreeOrder };\n","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isKeyframesTarget } from '../../animation/utils/is-keyframes-target.mjs';\nimport { shallowCompare } from '../../utils/shallow-compare.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { variantPriorityOrder } from './variant-props.mjs';\nimport { animateVisualElement } from '../../animation/interfaces/visual-element.mjs';\n\nconst reversePriorityOrder = [...variantPriorityOrder].reverse();\nconst numAnimationTypes = variantPriorityOrder.length;\nfunction animateList(visualElement) {\n return (animations) => Promise.all(animations.map(({ animation, options }) => animateVisualElement(visualElement, animation, options)));\n}\nfunction createAnimationState(visualElement) {\n let animate = animateList(visualElement);\n const state = createState();\n let isInitialRender = true;\n /**\n * This function will be used to reduce the animation definitions for\n * each active animation type into an object of resolved values for it.\n */\n const buildResolvedTypeValues = (acc, definition) => {\n const resolved = resolveVariant(visualElement, definition);\n if (resolved) {\n const { transition, transitionEnd, ...target } = resolved;\n acc = { ...acc, ...target, ...transitionEnd };\n }\n return acc;\n };\n /**\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(options, 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 ? props[type] : 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] && prop !== props[type] && 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 /**\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, {});\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 removedKeys.delete(key);\n typeState.needsAnimating[key] = true;\n };\n for (const key in allKeys) {\n const next = resolvedValues[key];\n const prev = prevResolvedValues[key];\n // If 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 if (next !== prev) {\n /**\n * If both values are keyframes, we need to shallow compare them to\n * detect whether any value has changed. If it has, we animate it.\n */\n if (isKeyframesTarget(next) && isKeyframesTarget(prev)) {\n if (!shallowCompare(next, prev) || variantDidChange) {\n markToAnimate(key);\n }\n else {\n /**\n * If it hasn't changed, we want to ensure it doesn't animate by\n * adding it to the list of protected keys.\n */\n typeState.protectedKeys[key] = true;\n }\n }\n else if (next !== undefined) {\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 * TODO: Test as this should probably still handle animations triggered\n * by removed values?\n */\n if (shouldAnimateType && !isInherited) {\n animations.push(...definitionList.map((animation) => ({\n animation: animation,\n options: { type, ...options },\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 if (fallbackTarget !== undefined) {\n fallbackAnimation[key] = fallbackTarget;\n }\n });\n animations.push({ animation: fallbackAnimation });\n }\n let shouldAnimate = Boolean(animations.length);\n if (isInitialRender &&\n props.initial === false &&\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, options) {\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(options, type);\n for (const key in state) {\n state[key].protectedKeys = {};\n }\n return animations;\n }\n return {\n animateChanges,\n setActive,\n setAnimateFunction,\n getState: () => state,\n };\n}\nfunction checkVariantsDidChange(prev, next) {\n if (typeof next === \"string\") {\n return next !== prev;\n }\n else if (Array.isArray(next)) {\n return !shallowCompare(next, prev);\n }\n return false;\n}\nfunction createTypeState(isActive = false) {\n return {\n isActive,\n protectedKeys: {},\n needsAnimating: {},\n prevResolvedValues: {},\n };\n}\nfunction createState() {\n return {\n animate: createTypeState(true),\n whileInView: createTypeState(),\n whileHover: createTypeState(),\n whileTap: createTypeState(),\n whileDrag: createTypeState(),\n whileFocus: createTypeState(),\n exit: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState };\n","import { resolveVariant } from '../../render/utils/resolve-dynamic-variants.mjs';\nimport { animateTarget } from './visual-element-target.mjs';\nimport { animateVariant } from './visual-element-variant.mjs';\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(() => visualElement.notify(\"AnimationComplete\", definition));\n}\n\nexport { animateVisualElement };\n","import { isAnimationControls } from '../../../animation/utils/is-animation-controls.mjs';\nimport { createAnimationState } from '../../../render/utils/animation-state.mjs';\nimport { Feature } from '../Feature.mjs';\n\nclass AnimationFeature extends Feature {\n /**\n * We dynamically generate the AnimationState manager as it contains a reference\n * to the underlying animation library. We only want to load that if we load this,\n * so people can optionally code split it out using the `m` component.\n */\n constructor(node) {\n super(node);\n node.animationState || (node.animationState = createAnimationState(node));\n }\n updateAnimationControlsSubscription() {\n const { animate } = this.node.getProps();\n this.unmount();\n if (isAnimationControls(animate)) {\n this.unmount = animate.subscribe(this.node);\n }\n }\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n mount() {\n this.updateAnimationControlsSubscription();\n }\n update() {\n const { animate } = this.node.getProps();\n const { animate: prevAnimate } = this.node.prevProps || {};\n if (animate !== prevAnimate) {\n this.updateAnimationControlsSubscription();\n }\n }\n unmount() { }\n}\n\nexport { AnimationFeature };\n","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, custom } = 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, { custom: custom !== null && custom !== void 0 ? custom : this.node.getProps().custom });\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","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 } = {}) {\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 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 if (!(this.lastMoveEvent && this.lastMoveEventInfo))\n return;\n const { onEnd, onSessionEnd } = this.handlers;\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.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\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(window, \"pointermove\", this.handlePointerMove), addPointerEvent(window, \"pointerup\", this.handlePointerUp), addPointerEvent(window, \"pointercancel\", this.handlePointerUp));\n }\n updateHandlers(handlers) {\n this.handlers = handlers;\n }\n end() {\n this.removeListeners && this.removeListeners();\n cancelFrame(this.updatePoint);\n }\n}\nfunction transformPoint(info, transformPagePoint) {\n return transformPagePoint ? { point: transformPagePoint(info.point) } : info;\n}\nfunction subtractPoint(a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n}\nfunction getPanInfo({ point }, 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 { mix } from '../../utils/mix.mjs';\n\nfunction calcLength(axis) {\n return axis.max - axis.min;\n}\nfunction isNear(value, target = 0, maxDistance = 0.01) {\n return Math.abs(value - target) <= maxDistance;\n}\nfunction calcAxisDelta(delta, source, target, origin = 0.5) {\n delta.origin = origin;\n delta.originPoint = mix(source.min, source.max, delta.origin);\n delta.scale = calcLength(target) / calcLength(source);\n if (isNear(delta.scale, 1, 0.0001) || isNaN(delta.scale))\n delta.scale = 1;\n delta.translate =\n mix(target.min, target.max, delta.origin) - delta.originPoint;\n if (isNear(delta.translate) || isNaN(delta.translate))\n delta.translate = 0;\n}\nfunction calcBoxDelta(delta, source, target, origin) {\n calcAxisDelta(delta.x, source.x, target.x, origin ? origin.originX : 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 { mix } from '../../../utils/mix.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 ? mix(min, point, elastic.min) : 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 ? mix(max, point, elastic.max) : 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}\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 { mix } from '../../utils/mix.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}\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 instance = node.instance;\n if (instance &&\n instance.style &&\n instance.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 treeScale.x = snapToDefault(treeScale.x);\n treeScale.y = snapToDefault(treeScale.y);\n}\nfunction snapToDefault(scale) {\n if (Number.isInteger(scale))\n return scale;\n return scale > 1.0000000000001 || scale < 0.999999999999 ? scale : 1;\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, transforms, [key, scaleKey, originKey]) {\n const axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n const originPoint = mix(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(axis, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\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 * Apply a transform to a box from the latest resolved motion values.\n */\nfunction transformBox(box, transform) {\n transformAxis(box.x, transform, xKeys);\n transformAxis(box.y, transform, yKeys);\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","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, calcViewportConstraints, defaultElastic, rebaseAxisConstraints, calcOrigin } 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 { mix } from '../../utils/mix.mjs';\nimport { percent } from '../../value/types/numbers/units.mjs';\nimport { animateMotionValue } from '../../animation/interfaces/motion-value.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 // Stop any animations on both axis values immediately. This allows the user to throw and catch\n // the component.\n this.stopAnimation();\n if (snapToCursor) {\n this.snapToCursor(extractEventInfo(event, \"page\").point);\n }\n };\n const onStart = (event, info) => {\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.update(() => onDragStart(event, info), false, true);\n }\n const { animationState } = this.visualElement;\n animationState && animationState.setActive(\"whileDrag\", true);\n };\n const onMove = (event, info) => {\n // 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 this.panSession = new PanSession(originEvent, {\n onSessionStart,\n onStart,\n onMove,\n onSessionEnd,\n }, { transformPagePoint: this.visualElement.getTransformPagePoint() });\n }\n stop(event, info) {\n const isDragging = this.isDragging;\n this.cancel();\n if (!isDragging)\n return;\n const { velocity } = info;\n this.startAnimation(velocity);\n const { onDragEnd } = this.getProps();\n if (onDragEnd) {\n frame.update(() => onDragEnd(event, info));\n }\n }\n cancel() {\n this.isDragging = false;\n const { projection, animationState } = this.visualElement;\n if (projection) {\n projection.isAnimationBlocked = false;\n }\n this.panSession && this.panSession.end();\n this.panSession = 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 const { dragConstraints, dragElastic } = this.getProps();\n const { layout } = this.visualElement.projection || {};\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.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));\n }\n stopAnimation() {\n eachAxis((axis) => this.getAxisMotionValue(axis).stop());\n }\n /**\n * Drag works differently depending on which props are provided.\n *\n * - If _dragX and _dragY are provided, we output the gesture delta directly to those motion values.\n * - Otherwise, we apply the delta to the x/y motion values.\n */\n getAxisMotionValue(axis) {\n const dragKey = \"_drag\" + axis.toUpperCase();\n const props = this.visualElement.getProps();\n const externalMotionValue = props[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, (props.initial ? props.initial[axis] : 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] - mix(min, max, 0.5));\n }\n });\n }\n /**\n * When the viewport resizes we want to check if the measured constraints\n * have changed and, if so, reposition the element within those new constraints\n * relative to where it was before the resize.\n */\n scalePositionWithinConstraints() {\n if (!this.visualElement.current)\n return;\n const { drag, 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) {\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(mix(min, max, boxProgress[axis]));\n });\n }\n addListeners() {\n if (!this.visualElement.current)\n return;\n elementDragControls.set(this.visualElement, this);\n const element = this.visualElement.current;\n /**\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)) {\n this.constraints = this.resolveRefConstraints();\n }\n };\n const { projection } = this.visualElement;\n const stopMeasureLayoutListener = projection.addEventListener(\"measure\", measureDragConstraints);\n if (projection && !projection.layout) {\n projection.root && projection.root.updateScroll();\n projection.updateLayout();\n }\n measureDragConstraints();\n /**\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 { 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","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 { frame } from '../../frameloop/frame.mjs';\n\nconst asyncHandler = (handler) => (event, info) => {\n if (handler) {\n frame.update(() => 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(), { transformPagePoint: this.node.getTransformPagePoint() });\n }\n createPanHandlers() {\n const { onPanSessionStart, onPanStart, onPan, onPanEnd } = this.node.getProps();\n return {\n onSessionStart: asyncHandler(onPanSessionStart),\n onStart: asyncHandler(onPanStart),\n onMove: onPan,\n onEnd: (event, info) => {\n delete this.session;\n if (onPanEnd) {\n frame.update(() => onPanEnd(event, info));\n }\n },\n };\n }\n mount() {\n this.removePointerDownListener = addPointerEvent(this.node.current, \"pointerdown\", (event) => this.onPointerDown(event));\n }\n update() {\n this.session && this.session.updateHandlers(this.createPanHandlers());\n }\n unmount() {\n this.removePointerDownListener();\n this.session && this.session.end();\n }\n}\n\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 { mix } from '../../utils/mix.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 = mix(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 React__default, { useContext } 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 { frame } from '../../../frameloop/frame.mjs';\n\nclass MeasureLayoutWithContext extends React__default.Component {\n /**\n * This only mounts projection nodes for components that\n * need measuring, we might want to do it for all components\n * in order to incorporate transforms\n */\n componentDidMount() {\n const { visualElement, layoutGroup, switchLayoutGroup, layoutId } = this.props;\n const { projection } = visualElement;\n addScaleCorrector(defaultScaleCorrectors);\n if (projection) {\n if (layoutGroup.group)\n layoutGroup.group.add(projection);\n if (switchLayoutGroup && switchLayoutGroup.register && layoutId) {\n switchLayoutGroup.register(projection);\n }\n projection.root.didUpdate();\n projection.addEventListener(\"animationComplete\", () => {\n this.safeToRemove();\n });\n projection.setOptions({\n ...projection.options,\n onExitComplete: () => this.safeToRemove(),\n });\n }\n globalProjectionState.hasEverUpdated = true;\n }\n getSnapshotBeforeUpdate(prevProps) {\n const { layoutDependency, visualElement, drag, 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 queueMicrotask(() => {\n if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\n }\n });\n }\n }\n componentWillUnmount() {\n const { visualElement, layoutGroup, switchLayoutGroup: promoteContext, } = this.props;\n const { projection } = visualElement;\n if (projection) {\n projection.scheduleCheckAfterUnmount();\n if (layoutGroup && layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext && promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove && safeToRemove();\n }\n render() {\n return null;\n }\n}\nfunction MeasureLayout(props) {\n const [isPresent, safeToRemove] = usePresence();\n const layoutGroup = useContext(LayoutGroupContext);\n return (React__default.createElement(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 { useContext, useId, useEffect } 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 = () => onExitComplete && onExitComplete(id);\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 { circOut } from '../../easing/circ.mjs';\nimport { progress } from '../../utils/progress.mjs';\nimport { mix } from '../../utils/mix.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 = mix(0, \n // TODO Reinstate this if only child\n lead.opacity !== undefined ? lead.opacity : 1, easeCrossfadeIn(progress));\n target.opacityExit = mix(follow.opacity !== undefined ? follow.opacity : 1, 0, easeCrossfadeOut(progress));\n }\n else if (isOnlyMember) {\n target.opacity = mix(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(mix(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 = mix(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\nexport { copyAxisInto, copyBoxInto };\n","import { mix } from '../../utils/mix.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 = mix(sourceAxis.min, sourceAxis.max, translate / 100);\n translate = relativeProgress - sourceAxis.min;\n }\n if (typeof translate !== \"number\")\n return;\n let originPoint = mix(originAxis.min, originAxis.max, origin);\n if (axis === originAxis)\n originPoint -= translate;\n axis.min = removePointDelta(axis.min, translate, 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 boxEquals(a, b) {\n return (a.x.min === b.x.min &&\n a.x.max === b.x.max &&\n a.y.min === b.y.min &&\n a.y.max === b.y.max);\n}\nfunction boxEqualsRounded(a, b) {\n return (Math.round(a.x.min) === Math.round(b.x.min) &&\n Math.round(a.x.max) === Math.round(b.x.max) &&\n Math.round(a.y.min) === Math.round(b.y.min) &&\n Math.round(a.y.max) === Math.round(b.y.max));\n}\nfunction aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\n\nexport { aspectRatio, 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","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 if (xTranslate || yTranslate) {\n transform = `translate3d(${xTranslate}px, ${yTranslate}px, 0) `;\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 { rotate, rotateX, rotateY } = latestTransform;\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 }\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","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 } 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 { createBox, createDelta } from '../geometry/models.mjs';\nimport { getValueTransition } from '../../animation/utils/transitions.mjs';\nimport { boxEqualsRounded, isDeltaZero, 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 { mix } from '../../utils/mix.mjs';\nimport { record } from '../../debug/record.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';\n\nconst transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\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;\n/**\n * Use a mutable data object for debug data so as to not create a new\n * object every frame.\n */\nconst projectionFrameData = {\n type: \"projectionFrame\",\n totalNodes: 0,\n resolvedTargetDeltas: 0,\n recalculatedProjection: 0,\n};\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(latestValues = {}, parent = defaultParent === null || defaultParent === void 0 ? void 0 : defaultParent()) {\n /**\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 * 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.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 /**\n * Reset debug counts. Manually resetting rather than creating a new\n * object each frame.\n */\n projectionFrameData.totalNodes =\n projectionFrameData.resolvedTargetDeltas =\n projectionFrameData.recalculatedProjection =\n 0;\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\n this.nodes.forEach(cleanDirtyNodes);\n record(projectionFrameData);\n };\n this.hasProjected = false;\n this.isVisible = true;\n this.animationProgress = 0;\n /**\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(resetRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n const { visualElement } = this.options;\n return visualElement && visualElement.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n this.root.hasTreeAnimated = true;\n if (this.root.isUpdateBlocked()) {\n this.options.onExitComplete && this.options.onExitComplete();\n return;\n }\n !this.root.isUpdating && this.root.startUpdate();\n if (this.isLayoutDirty)\n return;\n this.isLayoutDirty = true;\n for (let i = 0; i < this.path.length; i++) {\n const node = this.path[i];\n node.shouldResetTransform = true;\n node.updateScroll(\"snapshot\");\n if (node.options.layoutRoot) {\n node.willUpdate(false);\n }\n }\n const { layoutId, layout } = 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 = performance.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 queueMicrotask(() => this.update());\n }\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n frame.preRender(this.updateProjection, false, true);\n }\n scheduleCheckAfterUnmount() {\n /**\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 this.scroll = {\n animationId: this.root.animationId,\n phase,\n isRoot: checkIsScrollRoot(this.instance),\n offset: measureScroll(this.instance),\n };\n }\n }\n resetTransform() {\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplate = this.getTransformTemplate();\n const transformTemplateValue = transformTemplate\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 const { visualElement } = this.options;\n if (!visualElement)\n return createBox();\n const box = visualElement.measureViewportBox();\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 return box;\n }\n removeElementScroll(box) {\n const boxWithoutScroll = createBox();\n copyBoxInto(boxWithoutScroll, box);\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.isRoot) {\n copyBoxInto(boxWithoutScroll, box);\n const { scroll: rootScroll } = this.root;\n /**\n * Undo the application of page scroll that was originally added\n * to the measured bounding box.\n */\n if (rootScroll) {\n translateAxis(boxWithoutScroll.x, -rootScroll.offset.x);\n translateAxis(boxWithoutScroll.y, -rootScroll.offset.y);\n }\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 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 // TODO If this is unsuccessful this currently happens every frame\n if (!this.targetDelta && !this.relativeTarget) {\n // TODO: This is a semi-repetition of further down this function, make DRY\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 projectionFrameData.resolvedTargetDeltas++;\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 }\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.projectionTransform) {\n this.projectionDelta = createDelta();\n this.projectionTransform = \"none\";\n this.scheduleRender();\n }\n return;\n }\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const prevProjectionTransform = this.projectionTransform;\n /**\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 this.projectionTransform = buildProjectionTransform(this.projectionDelta, this.treeScale);\n if (this.projectionTransform !== prevProjectionTransform ||\n this.treeScale.x !== prevTreeScaleX ||\n this.treeScale.y !== prevTreeScaleY) {\n this.hasProjected = true;\n this.scheduleRender();\n this.notifyListeners(\"projectionUpdate\", target);\n }\n /**\n * Increase debug counter for recalculated projections\n */\n projectionFrameData.recalculatedProjection++;\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 this.options.scheduleRender && this.options.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 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 resetRotation() {\n const { visualElement } = this.options;\n if (!visualElement)\n return;\n // If there's no detected rotation values, we can early return without a forced render.\n let hasRotate = 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.rotate ||\n latestValues.rotateX ||\n latestValues.rotateY ||\n latestValues.rotateZ) {\n hasRotate = true;\n }\n // If there's no rotation values, we don't need to do any more.\n if (!hasRotate)\n return;\n const resetValues = {};\n // Check the rotate value of all axes and reset to 0\n for (let i = 0; i < transformAxes.length; i++) {\n const key = \"rotate\" + transformAxes[i];\n // Record the rotation and then temporarily set it to 0\n if (latestValues[key]) {\n resetValues[key] = latestValues[key];\n visualElement.setStaticValue(key, 0);\n }\n }\n // Force a render of this element to apply the transform with all 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 }\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 // TODO: Return lifecycle-persistent object\n const styles = {};\n if (!this.instance || this.isSVG)\n return styles;\n if (!this.isVisible) {\n return { visibility: \"hidden\" };\n }\n else {\n styles.visibility = \"\";\n }\n const transformTemplate = this.getTransformTemplate();\n if (this.needsReset) {\n this.needsReset = false;\n styles.opacity = \"\";\n styles.pointerEvents =\n resolveMotionValue(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.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.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 projectionFrameData.totalNodes++;\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 resetRotation(node) {\n node.resetRotation();\n}\nfunction removeLeadSnapshots(stack) {\n stack.removeLeadSnapshot();\n}\nfunction mixAxisDelta(output, delta, p) {\n output.translate = mix(delta.translate, 0, p);\n output.scale = mix(delta.scale, 1, p);\n output.origin = delta.origin;\n output.originPoint = delta.originPoint;\n}\nfunction mixAxis(output, from, to, p) {\n output.min = mix(from.min, to.min, p);\n output.max = mix(from.max, to.max, p);\n}\nfunction mixBox(output, from, to, p) {\n mixAxis(output.x, from.x, to.x, p);\n mixAxis(output.y, from.y, to.y, p);\n}\nfunction hasOpacityCrossfade(node) {\n return (node.animationValues && node.animationValues.opacityExit !== 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.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}\n\nexport { cleanDirtyNodes, createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","function record(data) {\n if (window.MotionDebug) {\n window.MotionDebug.record(data);\n }\n}\n\nexport { record };\n","function isSVGElement(element) {\n return element instanceof SVGElement && element.tagName !== \"svg\";\n}\n\nexport { isSVGElement };\n","import { frame, cancelFrame } from '../frameloop/frame.mjs';\n\n/**\n * Timeout defined in ms\n */\nfunction delay(callback, timeout) {\n const start = performance.now();\n const checkElapsed = ({ timestamp }) => {\n const elapsed = timestamp - start;\n if (elapsed >= timeout) {\n cancelFrame(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n frame.read(checkElapsed, true);\n return () => cancelFrame(checkElapsed);\n}\n\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","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 { 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 = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n const match = splitCSSVariableRegex.exec(current);\n if (!match)\n return [,];\n const [, token, fallback] = match;\n return [token, fallback];\n}\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 else if (isCSSVariableToken(fallback)) {\n // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n return getVariableValue(fallback, element, depth + 1);\n }\n else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, { ...target }, transitionEnd) {\n const element = visualElement.current;\n if (!(element instanceof Element))\n return { target, transitionEnd };\n // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n // only if they change but I think this reads clearer and this isn't a performance-critical path.\n if (transitionEnd) {\n transitionEnd = { ...transitionEnd };\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.values.forEach((value) => {\n const current = value.get();\n if (!isCSSVariableToken(current))\n return;\n const resolved = getVariableValue(current, element);\n if (resolved)\n value.set(resolved);\n });\n // Cycle through every target property and resolve CSS variables. Currently\n // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n for (const key in target) {\n const current = target[key];\n if (!isCSSVariableToken(current))\n continue;\n const resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\n if (!transitionEnd)\n transitionEnd = {};\n // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n // CSS variable. This will ensure that after the animation the component will reflect\n // changes in the value of the CSS variable.\n if (transitionEnd[key] === undefined) {\n transitionEnd[key] = current;\n }\n }\n return { target, transitionEnd };\n}\n\nexport { parseCSSVariable, resolveCSSVariables };\n","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}","import { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from '../../../utils/errors.mjs';\nimport { transformPropOrder } from '../../html/utils/transform.mjs';\nimport { findDimensionValueType } from '../value-types/dimensions.mjs';\nimport { isBrowser } from '../../../utils/is-browser.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 isPositionalKey = (key) => positionalKeys.has(key);\nconst hasPositionalKey = (target) => {\n return Object.keys(target).some(isPositionalKey);\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\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n const matrix = transform.match(/^matrix\\((.+)\\)$/);\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 // Apply changes to element before measurement\n if (removedTransforms.length)\n visualElement.render();\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;\nconst convertChangedValueTypes = (target, visualElement, changedKeys) => {\n const originBbox = visualElement.measureViewportBox();\n const element = visualElement.current;\n const elementComputedStyle = getComputedStyle(element);\n const { display } = elementComputedStyle;\n const origin = {};\n // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n if (display === \"none\") {\n visualElement.setStaticValue(\"display\", target.display || \"block\");\n }\n /**\n * Record origins before we render and update styles\n */\n changedKeys.forEach((key) => {\n origin[key] = positionalValues[key](originBbox, elementComputedStyle);\n });\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.render();\n const targetBbox = visualElement.measureViewportBox();\n changedKeys.forEach((key) => {\n // Restore styles to their **calculated computed style**, not their actual\n // originally set style. This allows us to animate between equivalent pixel units.\n const value = visualElement.getValue(key);\n value && value.jump(origin[key]);\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nconst checkAndConvertChangedValueTypes = (visualElement, target, origin = {}, transitionEnd = {}) => {\n target = { ...target };\n transitionEnd = { ...transitionEnd };\n const targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n // We want to remove any transform values that could affect the element's bounding box before\n // it's measured. We'll reapply these later.\n let removedTransformValues = [];\n let hasAttemptedToRemoveTransformValues = false;\n const changedValueTypeKeys = [];\n targetPositionalKeys.forEach((key) => {\n const value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n let from = origin[key];\n let fromType = findDimensionValueType(from);\n const to = target[key];\n let toType;\n // TODO: The current implementation of this basically throws an error\n // if you try and do value conversion via keyframes. There's probably\n // a way of doing this but the performance implications would need greater scrutiny,\n // as it'd be doing multiple resize-remeasure operations.\n if (isKeyframesTarget(to)) {\n const numKeyframes = to.length;\n const fromIndex = to[0] === null ? 1 : 0;\n from = to[fromIndex];\n fromType = findDimensionValueType(from);\n for (let i = fromIndex; i < numKeyframes; i++) {\n /**\n * Don't allow wildcard keyframes to be used to detect\n * a difference in value types.\n */\n if (to[i] === null)\n break;\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType ||\n (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n }\n else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n }\n else {\n toType = findDimensionValueType(to);\n }\n if (fromType !== toType) {\n // If they're both just number or px, convert them both to numbers rather than\n // relying on resize/remeasure to convert (which is wasteful in this situation)\n if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n const current = value.get();\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n }\n else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n }\n else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) &&\n (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n (from === 0 || to === 0)) {\n // If one or the other value is 0, it's safe to coerce it to the\n // type of the other without measurement\n if (from === 0) {\n value.set(toType.transform(from));\n }\n else {\n target[key] = fromType.transform(to);\n }\n }\n else {\n // If we're going to do value conversion via DOM measurements, we first\n // need to remove non-positional transform values that could affect the bbox measurements.\n if (!hasAttemptedToRemoveTransformValues) {\n removedTransformValues =\n removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n value.jump(to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n const scrollY = changedValueTypeKeys.indexOf(\"height\") >= 0\n ? window.pageYOffset\n : null;\n const convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(([key, value]) => {\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.render();\n // Restore scroll position\n if (isBrowser && scrollY !== null) {\n window.scrollTo({ top: scrollY });\n }\n return { target: convertedTarget, transitionEnd };\n }\n else {\n return { target, transitionEnd };\n }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target)\n ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n : { target, transitionEnd };\n}\n\nexport { positionalValues, unitConversion };\n","import { resolveCSSVariables } from './css-variables-conversion.mjs';\nimport { unitConversion } from './unit-conversion.mjs';\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nconst parseDomVariant = (visualElement, target, origin, transitionEnd) => {\n const resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\nexport { parseDomVariant };\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 { warning, invariant } from '../utils/errors.mjs';\nimport { createBox } from '../projection/geometry/models.mjs';\nimport { isRefObject } from '../utils/is-ref-object.mjs';\nimport { initPrefersReducedMotion } from '../utils/reduced-motion/index.mjs';\nimport { hasReducedMotionListener, prefersReducedMotion } from '../utils/reduced-motion/state.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isWillChangeMotionValue } from '../value/use-will-change/is.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\nimport { transformProps } from './html/utils/transform.mjs';\nimport { isControllingVariants, isVariantNode } from './utils/is-controlling-variants.mjs';\nimport { isVariantLabel } from './utils/is-variant-label.mjs';\nimport { updateMotionValuesFromProps } from './utils/motion-values.mjs';\nimport { resolveVariantFromProps } from './utils/resolve-variants.mjs';\nimport { warnOnce } from '../utils/warn-once.mjs';\nimport { featureDefinitions } from '../motion/features/definitions.mjs';\nimport { variantProps } from './utils/variant-props.mjs';\nimport { visualElementStore } from './store.mjs';\nimport { frame, cancelFrame } from '../frameloop/frame.mjs';\n\nconst featureNames = Object.keys(featureDefinitions);\nconst numFeatures = featureNames.length;\nconst propEventHandlers = [\n \"AnimationStart\",\n \"AnimationComplete\",\n \"Update\",\n \"BeforeLayoutMeasure\",\n \"LayoutMeasure\",\n \"LayoutAnimationStart\",\n \"LayoutAnimationComplete\",\n];\nconst numVariantProps = variantProps.length;\n/**\n * A VisualElement is an imperative abstraction around UI elements such as\n * HTMLElement, SVGElement, Three.Object3D etc.\n */\nclass VisualElement {\n constructor({ parent, props, presenceContext, reducedMotionConfig, visualState, }, options = {}) {\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 /**\n * Cleanup functions for active features (hover/tap/exit etc)\n */\n this.features = {};\n /**\n * A map of every subscription that binds the provided or generated\n * motion values onChange listeners to this visual element.\n */\n this.valueSubscriptions = new Map();\n /**\n * A reference to the previously-provided motion values as returned\n * from scrapeMotionValuesFromProps. We use the keys in here to determine\n * if any motion values need to be removed after props are updated.\n */\n this.prevMotionValues = {};\n /**\n * An object containing a SubscriptionManager for each active event.\n */\n this.events = {};\n /**\n * An object containing an unsubscribe function for each prop event subscription.\n * For example, every \"Update\" event can have multiple subscribers via\n * VisualElement.on(), but only one of those can be defined via the onUpdate prop.\n */\n this.propEventSubscriptions = {};\n this.notifyUpdate = () => this.notify(\"Update\", this.latestValues);\n this.render = () => {\n if (!this.current)\n return;\n this.triggerBuild();\n this.renderInstance(this.current, this.renderState, this.props.style, this.projection);\n };\n this.scheduleRender = () => frame.render(this.render, false, true);\n const { latestValues, renderState } = visualState;\n this.latestValues = latestValues;\n this.baseTarget = { ...latestValues };\n this.initialValues = props.initial ? { ...latestValues } : {};\n this.renderState = renderState;\n this.parent = parent;\n this.props = props;\n this.presenceContext = presenceContext;\n this.depth = parent ? parent.depth + 1 : 0;\n this.reducedMotionConfig = reducedMotionConfig;\n this.options = options;\n this.isControllingVariants = isControllingVariants(props);\n this.isVariantNode = isVariantNode(props);\n if (this.isVariantNode) {\n this.variantChildren = new Set();\n }\n this.manuallyAnimateOnMount = Boolean(parent && parent.current);\n /**\n * Any motion values that are provided to the element when created\n * aren't yet bound to the element, as this would technically be impure.\n * However, we iterate through the motion values and set them to the\n * initial values for this component.\n *\n * TODO: This is impure and we should look at changing this to run on mount.\n * Doing so will break some tests but this isn't neccessarily a breaking change,\n * more a reflection of the test.\n */\n const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {});\n for (const key in initialMotionValues) {\n const value = initialMotionValues[key];\n if (latestValues[key] !== undefined && isMotionValue(value)) {\n value.set(latestValues[key], false);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n }\n }\n }\n /**\n * This method takes React props and returns found MotionValues. For example, HTML\n * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.\n *\n * This isn't an abstract method as it needs calling in the constructor, but it is\n * intended to be one.\n */\n scrapeMotionValuesFromProps(_props, _prevProps) {\n return {};\n }\n mount(instance) {\n this.current = instance;\n visualElementStore.set(instance, this);\n if (this.projection && !this.projection.instance) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = this.parent.addVariantChild(this);\n }\n this.values.forEach((value, key) => this.bindToMotionValue(key, value));\n if (!hasReducedMotionListener.current) {\n initPrefersReducedMotion();\n }\n this.shouldReduceMotion =\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 this.features[key].unmount();\n }\n this.current = null;\n }\n bindToMotionValue(key, value) {\n const valueIsTransform = transformProps.has(key);\n const removeOnChange = value.on(\"change\", (latestValue) => {\n this.latestValues[key] = latestValue;\n this.props.onUpdate &&\n frame.update(this.notifyUpdate, false, true);\n if (valueIsTransform && this.projection) {\n this.projection.isTransformDirty = true;\n }\n });\n const removeOnRenderRequest = value.on(\"renderRequest\", this.scheduleRender);\n this.valueSubscriptions.set(key, () => {\n removeOnChange();\n removeOnRenderRequest();\n });\n }\n sortNodePosition(other) {\n /**\n * If these nodes aren't even of the same type we can't compare their depth.\n */\n if (!this.current ||\n !this.sortInstanceNodePosition ||\n this.type !== other.type) {\n return 0;\n }\n return this.sortInstanceNodePosition(this.current, other.current);\n }\n loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, initialLayoutGroupConfig) {\n let ProjectionNodeConstructor;\n let MeasureLayout;\n /**\n * If we're in development mode, check to make sure we're not rendering a motion component\n * as a child of LazyMotion, as this will break the file-size benefits of using it.\n */\n if (process.env.NODE_ENV !== \"production\" &&\n preloadedFeatures &&\n isStrict) {\n const strictMessage = \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\";\n renderedProps.ignoreStrict\n ? warning(false, strictMessage)\n : invariant(false, strictMessage);\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Feature: FeatureConstructor, ProjectionNode, MeasureLayout: MeasureLayoutComponent, } = featureDefinitions[name];\n if (ProjectionNode)\n ProjectionNodeConstructor = ProjectionNode;\n if (isEnabled(renderedProps)) {\n if (!this.features[name] && FeatureConstructor) {\n this.features[name] = new FeatureConstructor(this);\n }\n if (MeasureLayoutComponent) {\n MeasureLayout = MeasureLayoutComponent;\n }\n }\n }\n if (!this.projection && ProjectionNodeConstructor) {\n this.projection = new ProjectionNodeConstructor(this.latestValues, this.parent && this.parent.projection);\n const { layoutId, layout, drag, dragConstraints, layoutScroll, layoutRoot, } = renderedProps;\n this.projection.setOptions({\n layoutId,\n layout,\n alwaysMeasureLayout: Boolean(drag) ||\n (dragConstraints && isRefObject(dragConstraints)),\n visualElement: this,\n scheduleRender: () => this.scheduleRender(),\n /**\n * TODO: Update options in an effect. This could be tricky as it'll be too late\n * to update by the time layout animations run.\n * We also need to fix this safeToRemove by linking it up to the one returned by usePresence,\n * ensuring it gets called if there's no potential layout animations.\n *\n */\n animationType: typeof layout === \"string\" ? layout : \"both\",\n initialPromotionConfig: initialLayoutGroupConfig,\n layoutScroll,\n layoutRoot,\n });\n }\n return MeasureLayout;\n }\n updateFeatures() {\n for (const key in this.features) {\n const feature = this.features[key];\n if (feature.isMounted) {\n feature.update();\n }\n else {\n feature.mount();\n feature.isMounted = true;\n }\n }\n }\n triggerBuild() {\n this.build(this.renderState, this.latestValues, this.options, this.props);\n }\n /**\n * Measure the current viewport box with or without transforms.\n * Only measures axis-aligned boxes, rotate and skew must be manually\n * removed with a re-render to work.\n */\n measureViewportBox() {\n return this.current\n ? this.measureInstanceViewportBox(this.current, this.props)\n : createBox();\n }\n getStaticValue(key) {\n return this.latestValues[key];\n }\n setStaticValue(key, value) {\n this.latestValues[key] = value;\n }\n /**\n * Make a target animatable by Popmotion. For instance, if we're\n * trying to animate width from 100px to 100vw we need to measure 100vw\n * in pixels to determine what we really need to animate to. This is also\n * pluggable to support Framer's custom value types like Color,\n * and CSS variables.\n */\n makeTargetAnimatable(target, canMutate = true) {\n return this.makeTargetAnimatableFromInstance(target, this.props, canMutate);\n }\n /**\n * Update the provided props. Ensure any newly-added motion values are\n * added to our map, old ones removed, and listeners updated.\n */\n update(props, presenceContext) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n this.prevProps = this.props;\n this.props = props;\n this.prevPresenceContext = this.presenceContext;\n this.presenceContext = presenceContext;\n /**\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 listener = props[\"on\" + key];\n if (listener) {\n this.propEventSubscriptions[key] = this.on(key, listener);\n }\n }\n this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps), this.prevMotionValues);\n if (this.handleChildMotionValue) {\n this.handleChildMotionValue();\n }\n }\n getProps() {\n return this.props;\n }\n /**\n * Returns the variant definition with a given name.\n */\n getVariant(name) {\n return this.props.variants ? this.props.variants[name] : 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 if (value !== this.values.get(key)) {\n this.removeValue(key);\n this.bindToMotionValue(key, value);\n }\n this.values.set(key, value);\n this.latestValues[key] = value.get();\n }\n /**\n * Remove a motion value and unbind any active subscriptions.\n */\n removeValue(key) {\n this.values.delete(key);\n const unsubscribe = this.valueSubscriptions.get(key);\n if (unsubscribe) {\n unsubscribe();\n this.valueSubscriptions.delete(key);\n }\n delete this.latestValues[key];\n this.removeValueFromRenderState(key, this.renderState);\n }\n /**\n * Check whether we have a motion value for this key\n */\n hasValue(key) {\n return this.values.has(key);\n }\n getValue(key, defaultValue) {\n if (this.props.values && this.props.values[key]) {\n return this.props.values[key];\n }\n let value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = motionValue(defaultValue, { owner: this });\n this.addValue(key, value);\n }\n return value;\n }\n /**\n * If we're trying to animate to a previously unencountered value,\n * we need to check for it in our state and as a last resort read it\n * directly from the instance (which might have performance implications).\n */\n readValue(key) {\n var _a;\n return this.latestValues[key] !== 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 }\n /**\n * Set the base target to later animate back to. This is currently\n * only hydrated on creation and when we first read a value.\n */\n setBaseTarget(key, value) {\n this.baseTarget[key] = value;\n }\n /**\n * Find the base target for a value thats been removed from all animation\n * props.\n */\n getBaseTarget(key) {\n var _a;\n const { initial } = this.props;\n const valueFromInitial = typeof initial === \"string\" || typeof initial === \"object\"\n ? (_a = resolveVariantFromProps(this.props, initial)) === null || _a === void 0 ? void 0 : _a[key]\n : undefined;\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 { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { warnOnce } from '../../utils/warn-once.mjs';\nimport { motionValue } from '../../value/index.mjs';\nimport { isMotionValue } from '../../value/utils/is-motion-value.mjs';\n\nfunction updateMotionValuesFromProps(element, next, prev) {\n const { willChange } = next;\n for (const key in next) {\n const nextValue = next[key];\n const prevValue = prev[key];\n if (isMotionValue(nextValue)) {\n /**\n * If this is a motion value found in props or style, we want to add it\n * to our visual element's motion value map.\n */\n element.addValue(key, nextValue);\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n }\n /**\n * Check the version of the incoming motion value with this version\n * and warn against mismatches.\n */\n if (process.env.NODE_ENV === \"development\") {\n warnOnce(nextValue.version === \"10.16.4\", `Attempting to mix Framer Motion versions ${nextValue.version} with 10.16.4 may not work as expected.`);\n }\n }\n else if (isMotionValue(prevValue)) {\n /**\n * If we're swapping from a motion value to a static value,\n * create a new motion value from that\n */\n element.addValue(key, motionValue(nextValue, { owner: element }));\n if (isWillChangeMotionValue(willChange)) {\n willChange.remove(key);\n }\n }\n else if (prevValue !== nextValue) {\n /**\n * If this is a flat value that has changed, update the motion value\n * or create one if it doesn't exist. We only want to do this if we're\n * not handling the value with our animation state.\n */\n if (element.hasValue(key)) {\n const existingValue = element.getValue(key);\n // TODO: Only update values that aren't being animated or even looked at\n !existingValue.hasAnimated && existingValue.set(nextValue);\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 { getOrigin, checkTargetForNewValues } from '../utils/setters.mjs';\nimport { parseDomVariant } from './utils/parse-dom-variant.mjs';\nimport { VisualElement } from '../VisualElement.mjs';\n\nclass DOMVisualElement extends VisualElement {\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 ? props.style[key] : undefined;\n }\n removeValueFromRenderState(key, { vars, style }) {\n delete vars[key];\n delete style[key];\n }\n makeTargetAnimatableFromInstance({ transition, transitionEnd, ...target }, { transformValues }, isMounted) {\n let origin = getOrigin(target, transition || {}, this);\n /**\n * If Framer has provided a function to convert `Color` etc value types, convert them\n */\n if (transformValues) {\n if (transitionEnd)\n transitionEnd = transformValues(transitionEnd);\n if (target)\n target = transformValues(target);\n if (origin)\n origin = transformValues(origin);\n }\n if (isMounted) {\n checkTargetForNewValues(this, target, origin);\n const parsed = parseDomVariant(this, target, origin, transitionEnd);\n transitionEnd = parsed.transitionEnd;\n target = parsed.target;\n }\n return {\n transition,\n transitionEnd,\n ...target,\n };\n }\n}\n\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 readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n else {\n const computedStyle = getComputedStyle(instance);\n const value = (isCSSVariableName(key)\n ? computedStyle.getPropertyValue(key)\n : computedStyle[key]) || 0;\n return typeof value === \"string\" ? value.trim() : value;\n }\n }\n measureInstanceViewportBox(instance, { transformPagePoint }) {\n return measureViewportBox(instance, transformPagePoint);\n }\n build(renderState, latestValues, options, props) {\n buildHTMLStyles(renderState, latestValues, options, props.transformTemplate);\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n handleChildMotionValue() {\n if (this.childSubscription) {\n this.childSubscription();\n delete this.childSubscription;\n }\n const { children } = this.props;\n if (isMotionValue(children)) {\n this.childSubscription = children.on(\"change\", (latest) => {\n if (this.current)\n this.current.textContent = `${latest}`;\n });\n }\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderHTML(instance, renderState, styleProp, projection);\n }\n}\n\nexport { HTMLVisualElement, getComputedStyle };\n","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\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.isSVGTag = false;\n }\n getBaseTargetFromProps(props, key) {\n return props[key];\n }\n readValueFromInstance(instance, key) {\n if (transformProps.has(key)) {\n const defaultType = getDefaultValueType(key);\n return defaultType ? defaultType.default || 0 : 0;\n }\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return instance.getAttribute(key);\n }\n measureInstanceViewportBox() {\n return createBox();\n }\n scrapeMotionValuesFromProps(props, prevProps) {\n return scrapeMotionValuesFromProps(props, prevProps);\n }\n build(renderState, latestValues, options, props) {\n buildSVGAttrs(renderState, latestValues, options, this.isSVGTag, props.transformTemplate);\n }\n renderInstance(instance, renderState, styleProp, projection) {\n renderSVG(instance, renderState, styleProp, projection);\n }\n mount(instance) {\n this.isSVGTag = isSVGTag(instance.tagName);\n super.mount(instance);\n }\n}\n\nexport { SVGVisualElement };\n","import { HTMLVisualElement } from '../html/HTMLVisualElement.mjs';\nimport { SVGVisualElement } from '../svg/SVGVisualElement.mjs';\nimport { isSVGComponent } from './utils/is-svg-component.mjs';\n\nconst createDomVisualElement = (Component, options) => {\n return isSVGComponent(Component)\n ? new SVGVisualElement(options, { enableHardwareAcceleration: false })\n : new HTMLVisualElement(options, { enableHardwareAcceleration: true });\n};\n\nexport { createDomVisualElement };\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 { 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 { 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 { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import * as React from 'react';\nimport { useId, useRef, useInsertionEffect } from 'react';\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 /**\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 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 (React.createElement(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size }, React.cloneElement(children, { ref })));\n}\n\nexport { PopChild };\n","import * 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 ? undefined : [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 = React.createElement(PopChild, { isPresent: isPresent }, children);\n }\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exitingChildren = useRef(new Map()).current;\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exitingChildren.clear();\n });\n if (isInitialRender.current) {\n return (React.createElement(React.Fragment, null, childrenToRender.map((child) => (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child)))));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n exitingChildren.set(key, undefined);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exitingChildren.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exitingChildren.forEach((component, key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n let exitingComponent = component;\n if (!exitingComponent) {\n const onExit = () => {\n allChildren.delete(key);\n exitingChildren.delete(key);\n // Remove this child from the present children\n const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);\n presentChildren.current.splice(removeIndex, 1);\n // Defer re-rendering until all exiting children have indeed left\n if (!exitingChildren.size) {\n presentChildren.current = filteredChildren;\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n exitingComponent = (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n exitingChildren.set(key, exitingComponent);\n }\n childrenToRender.splice(insertionIndex, 0, exitingComponent);\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exitingChildren.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (React.createElement(React.Fragment, null, exitingChildren.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child))));\n};\n\nexport { AnimatePresence };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import React from \"react\";\n\nexport const FormInput = ({\n type,\n placeholder,\n name,\n value,\n onChange,\n isMandatory,\n isSubmitAttempted,\n}) => {\n const styles = {\n backgroundColor:\n isMandatory && !value && isSubmitAttempted ? \"#ce9191\" : \"white\",\n border: \"none\",\n };\n\n return (\n \n );\n};\n\nexport const FormTextarea = ({\n placeholder,\n name,\n value,\n onChange,\n isMandatory,\n isSubmitAttempted,\n}) => {\n const styles = {\n backgroundColor:\n isMandatory && !value && isSubmitAttempted ? \"#ce9191\" : \"white\",\n border: \"none\",\n };\n\n return (\n \n );\n};\n","import React, { useState } from \"react\";\nimport \"./EmailPopupForm.css\";\nimport \"./App.css\";\nimport { FormInput, FormTextarea } from \"./FormInput\";\n\nexport function EmailPopupForm({ onClose }) {\n const [isSubmitAttempted, setIsSubmitAttempted] = useState(false);\n const [formData, setFormData] = useState({\n first_name: \"\",\n last_name: \"\",\n email: \"\",\n message: \"\",\n });\n\n const isMandatory = true;\n\n const handleChange = (e) => {\n setFormData({\n ...formData,\n [e.target.name]: e.target.value,\n });\n };\n\n const handleButtonClick = (e) => {\n // Check if all mandatory fields are filled\n if (\n isMandatory &&\n (!formData.first_name ||\n !formData.last_name ||\n !formData.email ||\n !formData.message)\n ) {\n e.preventDefault();\n setIsSubmitAttempted(true);\n return;\n }\n\n handleSubmit(e);\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n setIsSubmitAttempted(true);\n\n // Check if all mandatory fields are filled\n if (\n isMandatory &&\n (!formData.first_name ||\n !formData.last_name ||\n !formData.email ||\n !formData.message)\n ) {\n return;\n }\n\n try {\n const apiEndpoint = process.env.REACT_APP_WEBCONTACT_URL;\n\n const response = await fetch(apiEndpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(formData),\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n\n setFormData({\n first_name: \"\",\n last_name: \"\",\n email: \"\",\n message: \"\",\n });\n\n onClose();\n } catch (error) {\n console.error(\"There was a problem with the fetch operation:\", error);\n }\n };\n\n return (\n
\n
\n

CONTACT US

\n
\n
\n
\n \n \n
\n \n \n \n Submit\n \n \n
\n );\n}\n","import React, { useState } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport \"./Footer.css\";\nimport { EmailPopupForm } from \"./EmailPopupForm\";\nimport { FormInput } from \"./FormInput\";\n\nexport function Footer() {\n return (\n
\n \n
\n \n
\n
\n Copyright © AWAKE 2023 | Website version 1.1.3\n
\n \n
\n );\n}\n\nfunction Subscribe() {\n const [formData, setFormData] = useState({\n first_name: \"\",\n last_name: \"\",\n email: \"\",\n });\n const [isSubmitAttempted, setIsSubmitAttempted] = useState(false);\n const [isSubmittedSuccessfully, setIsSubmittedSuccessfully] = useState(false);\n\n const isMandatory = true;\n\n const handleChange = (e) => {\n setFormData({\n ...formData,\n [e.target.name]: e.target.value,\n });\n };\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n\n setIsSubmitAttempted(true);\n\n if (\n isMandatory &&\n (!formData.first_name || !formData.last_name || !formData.email)\n ) {\n return;\n }\n\n const subscriberData = {\n first_name: formData.first_name,\n last_name: formData.last_name,\n email: formData.email,\n mailing_list: true,\n };\n\n try {\n const endpoint = process.env.REACT_APP_BASE_URL + \"/api/v1/user\";\n\n const response = await fetch(endpoint, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(subscriberData),\n });\n\n if (!response.ok) {\n throw new Error(\"Network response was not ok\");\n }\n await response.json();\n\n console.log(\"Email subsciption was successful\");\n\n setFormData({\n first_name: \"\",\n last_name: \"\",\n email: \"\",\n });\n setIsSubmitAttempted(false);\n setIsSubmittedSuccessfully(true);\n } catch (error) {\n console.error(\"There was a problem with the fetch operation:\", error);\n }\n };\n\n return (\n
\n

Stay updated with our latest news!

\n
\n
\n \n \n
\n \n \n {isSubmittedSuccessfully ? (\n \"Success\"\n ) : (\n \"Subscribe\"\n )}\n \n
\n
\n );\n}\n\nfunction SocialMediaLinks() {\n return (\n
\n
Follow AWAKE
\n
\n \n \"Facebook\"\n \n \n \"Instagram\"\n \n
\n
\n );\n}\n\nfunction ContactUs() {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleOpen = () => {\n setIsOpen(true);\n };\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n return (\n
\n \n\n \n {isOpen && (\n \n \n \n \n \n \n \n \n )}\n \n
\n );\n}\n","import React, { useState } from \"react\";\nimport { bubble as Menu } from \"react-burger-menu\";\n\nexport function BubbleMenu() {\n const currentPage = \"home\";\n const [menuOpen, setMenuOpen] = useState(false);\n\n const toggleMenu = () => setMenuOpen(!menuOpen);\n\n const handleStateChange = (state) => {\n setMenuOpen(state.isOpen);\n };\n\n return (\n \n \n Home\n \n \n Venue\n \n \n Rottnest Overnight Party\n \n \n Workshop Schedule\n \n \n AWAKE Code of Conduct\n \n \n Contact Us\n \n \n Book Now\n \n \n );\n}\n\nfunction BurgerMenuItem({ href, page, children, toggleMenu }) {\n const isCurrentPage = page === children.toLowerCase();\n\n const handleClick = (e) => {\n toggleMenu();\n // any other click logic you have can go here...\n };\n\n return (\n \n {children}\n \n );\n}\n","import React from \"react\";\nimport \"./Modal.css\";\n\nconst Modal = ({ show, closeModal, children }) => {\n if (!show) {\n return null;\n }\n\n return (\n
\n
e.stopPropagation()}>\n \n ×\n \n {children}\n
\n
\n );\n};\n\nexport default Modal;\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\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// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\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 // $FlowFixMe\n return document.styleSheets[i];\n }\n }\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 ? process.env.NODE_ENV === 'production' : 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 (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\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 if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\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, COMMENT, 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};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\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 createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\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 // 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 document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\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 var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\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 var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : 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 insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\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 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","var isBrowser = \"object\" !== 'undefined';\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","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 ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\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\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\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 if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.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 = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\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 } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\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 if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\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 if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\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;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function 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 if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[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 if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\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 += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\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 isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__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\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\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});\nvar ThemeProvider = function ThemeProvider(props) {\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(Component) {\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 }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\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(function (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 if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\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\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\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, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import * as ReactJSXRuntime from 'react/jsx-runtime';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps } from '../../dist/emotion-element-c39617d8.browser.esm.js';\nimport 'react';\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';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar Fragment = ReactJSXRuntime.Fragment;\nfunction jsx(type, props, key) {\n if (!hasOwnProperty.call(props, 'css')) {\n return ReactJSXRuntime.jsx(type, props, key);\n }\n\n return ReactJSXRuntime.jsx(Emotion, createEmotionProps(type, props), key);\n}\nfunction jsxs(type, props, key) {\n if (!hasOwnProperty.call(props, 'css')) {\n return ReactJSXRuntime.jsxs(type, props, key);\n }\n\n return ReactJSXRuntime.jsxs(Emotion, createEmotionProps(type, props), key);\n}\n\nexport { Fragment, jsx, jsxs };\n","import { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.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-c39617d8.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 pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.1\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.2\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.0\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\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 } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\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 = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\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; // $FlowFixMe\n\n var node = 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\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\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\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\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\nvar classnames = function classnames(args) {\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 if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\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, css, className) {\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\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\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 && process.env.NODE_ENV !== 'production') {\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\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import type { ObserverInstanceCallback } from './index';\n\nconst observerMap = new Map<\n string,\n {\n id: string;\n observer: IntersectionObserver;\n elements: Map>;\n }\n>();\n\nconst RootIds: WeakMap = new WeakMap();\nlet rootId = 0;\n\nlet unsupportedValue: boolean | undefined = undefined;\n\n/**\n * What should be the default behavior if the IntersectionObserver is unsupported?\n * Ideally the polyfill has been loaded, you can have the following happen:\n * - `undefined`: Throw an error\n * - `true` or `false`: Set the `inView` value to this regardless of intersection state\n * **/\nexport function defaultFallbackInView(inView: boolean | undefined) {\n unsupportedValue = inView;\n}\n\n/**\n * Generate a unique ID for the root element\n * @param root\n */\nfunction getRootId(root: IntersectionObserverInit['root']) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n\n/**\n * Convert the options to a string Id, based on the values.\n * Ensures we can reuse the same observer when observing elements with the same options.\n * @param options\n */\nexport function optionsToId(options: IntersectionObserverInit) {\n return Object.keys(options)\n .sort()\n .filter(\n (key) => options[key as keyof IntersectionObserverInit] !== undefined,\n )\n .map((key) => {\n return `${key}_${\n key === 'root'\n ? getRootId(options.root)\n : options[key as keyof IntersectionObserverInit]\n }`;\n })\n .toString();\n}\n\nfunction createObserver(options: IntersectionObserverInit) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n let id = optionsToId(options);\n let instance = observerMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n const elements = new Map>();\n let thresholds: number[] | readonly number[];\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const inView =\n entry.isIntersecting &&\n thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n\n // @ts-ignore support IntersectionObserver v2\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n elements.get(entry.target)?.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n\n // Ensure we have a valid thresholds array. If not, use the threshold from the options\n thresholds =\n observer.thresholds ||\n (Array.isArray(options.threshold)\n ? options.threshold\n : [options.threshold || 0]);\n\n instance = {\n id,\n observer,\n elements,\n };\n\n observerMap.set(id, instance);\n }\n\n return instance;\n}\n\n/**\n * @param element - DOM Element to observe\n * @param callback - Callback function to trigger when intersection status changes\n * @param options - Intersection Observer options\n * @param fallbackInView - Fallback inView value.\n * @return Function - Cleanup function that should be triggered to unregister the observer\n */\nexport function observe(\n element: Element,\n callback: ObserverInstanceCallback,\n options: IntersectionObserverInit = {},\n fallbackInView = unsupportedValue,\n) {\n if (\n typeof window.IntersectionObserver === 'undefined' &&\n fallbackInView !== undefined\n ) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio:\n typeof options.threshold === 'number' ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds,\n });\n return () => {\n // Nothing to cleanup\n };\n }\n // An observer with the same options can be reused, so lets use this fact\n const { id, observer, elements } = createObserver(options);\n\n // Register the callback listener for this element\n let callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements.delete(element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n","import * as React from 'react';\nimport type { IntersectionObserverProps, PlainChildrenProps } from './index';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\nfunction isPlainChildren(\n props: IntersectionObserverProps | PlainChildrenProps,\n): props is PlainChildrenProps {\n return typeof props.children !== 'function';\n}\n\n/**\n ## Render props\n\n To use the `` component, you pass it a function. It will be called\n whenever the state changes, with the new value of `inView`. In addition to the\n `inView` prop, children also receive a `ref` that should be set on the\n containing DOM element. This is the element that the IntersectionObserver will\n monitor.\n\n If you need it, you can also access the\n [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)\n on `entry`, giving you access to all the details about the current intersection\n state.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n \n {({ inView, ref, entry }) => (\n
\n

{`Header inside viewport ${inView}.`}

\n
\n )}\n
\n );\n\n export default Component;\n ```\n\n ## Plain children\n\n You can pass any element to the ``, and it will handle creating the\n wrapping DOM element. Add a handler to the `onChange` method, and control the\n state in your own component. Any extra props you add to `` will be\n passed to the HTML element, allowing you set the `className`, `style`, etc.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n console.log('Inview:', inView)}>\n

Plain children are always rendered. Use onChange to monitor state.

\n
\n );\n\n export default Component;\n ```\n */\nexport class InView extends React.Component<\n IntersectionObserverProps | PlainChildrenProps,\n State\n> {\n constructor(props: IntersectionObserverProps | PlainChildrenProps) {\n super(props);\n this.state = {\n inView: !!props.initialInView,\n entry: undefined,\n };\n }\n\n componentDidUpdate(prevProps: IntersectionObserverProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (\n prevProps.rootMargin !== this.props.rootMargin ||\n prevProps.root !== this.props.root ||\n prevProps.threshold !== this.props.threshold ||\n prevProps.skip !== this.props.skip ||\n prevProps.trackVisibility !== this.props.trackVisibility ||\n prevProps.delay !== this.props.delay\n ) {\n this.unobserve();\n this.observeNode();\n }\n }\n\n componentWillUnmount() {\n this.unobserve();\n this.node = null;\n }\n\n node: Element | null = null;\n _unobserveCb: (() => void) | null = null;\n\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView,\n } = this.props;\n\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n }\n\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n\n handleNode = (node?: Element | null) => {\n if (this.node) {\n // Clear the old observer, before we start observing a new element\n this.unobserve();\n\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n this.setState({ inView: !!this.props.initialInView, entry: undefined });\n }\n }\n\n this.node = node ? node : null;\n this.observeNode();\n };\n\n handleChange = (inView: boolean, entry: IntersectionObserverEntry) => {\n if (inView && this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n this.props.onChange(inView, entry);\n }\n };\n\n render() {\n const { children } = this.props;\n if (typeof children === 'function') {\n const { inView, entry } = this.state;\n return children({ inView, entry, ref: this.handleNode });\n }\n\n const {\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props as PlainChildrenProps;\n\n return React.createElement(\n as || 'div',\n { ref: this.handleNode, ...props },\n children,\n );\n }\n}\n","import * as React from 'react';\nimport type { InViewHookResponse, IntersectionOptions } from './index';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\n/**\n * React Hooks make it easy to monitor the `inView` state of your components. Call\n * the `useInView` hook with the (optional) [options](#options) you need. It will\n * return an array containing a `ref`, the `inView` status and the current\n * [`entry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry).\n * Assign the `ref` to the DOM element you want to monitor, and the hook will\n * report the status.\n *\n * @example\n * ```jsx\n * import React from 'react';\n * import { useInView } from 'react-intersection-observer';\n *\n * const Component = () => {\n * const { ref, inView, entry } = useInView({\n * threshold: 0,\n * });\n *\n * return (\n *
\n *

{`Header inside viewport ${inView}.`}

\n *
\n * );\n * };\n * ```\n */\nexport function useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange,\n}: IntersectionOptions = {}): InViewHookResponse {\n const [ref, setRef] = React.useState(null);\n const callback = React.useRef();\n const [state, setState] = React.useState({\n inView: !!initialInView,\n entry: undefined,\n });\n\n // Store the onChange callback in a `ref`, so we can access the latest instance\n // inside the `useEffect`, but without triggering a rerender.\n callback.current = onChange;\n\n React.useEffect(\n () => {\n // Ensure we have node ref, and that we shouldn't skip observing\n if (skip || !ref) return;\n\n let unobserve: (() => void) | undefined;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry,\n });\n if (callback.current) callback.current(inView, entry);\n\n if (entry.isIntersecting && triggerOnce && unobserve) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve();\n unobserve = undefined;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay,\n ],\n );\n\n const entryTarget = state.entry?.target;\n const previousEntryTarget = React.useRef();\n if (\n !ref &&\n entryTarget &&\n !triggerOnce &&\n !skip &&\n previousEntryTarget.current !== entryTarget\n ) {\n // If we don't have a node ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: undefined,\n });\n }\n\n const result = [setRef, state.inView, state.entry] as InViewHookResponse;\n\n // Support object destructuring, by adding the specific values.\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n\n return result;\n}\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeIn.css}\n */\nexport const fadeIn = keyframes`\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/bounce.css}\n */\nexport const bounce = keyframes`\n from,\n 20%,\n 53%,\n to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n transform: translate3d(0, 0, 0);\n }\n\n 40%,\n 43% {\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n transform: translate3d(0, -30px, 0) scaleY(1.1);\n }\n\n 70% {\n animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n transform: translate3d(0, -15px, 0) scaleY(1.05);\n }\n\n 80% {\n transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n transform: translate3d(0, 0, 0) scaleY(0.95);\n }\n\n 90% {\n transform: translate3d(0, -4px, 0) scaleY(1.02);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/flash.css}\n */\nexport const flash = keyframes`\n from,\n 50%,\n to {\n opacity: 1;\n }\n\n 25%,\n 75% {\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/headShake.css}\n */\nexport const headShake = keyframes`\n 0% {\n transform: translateX(0);\n }\n\n 6.5% {\n transform: translateX(-6px) rotateY(-9deg);\n }\n\n 18.5% {\n transform: translateX(5px) rotateY(7deg);\n }\n\n 31.5% {\n transform: translateX(-3px) rotateY(-5deg);\n }\n\n 43.5% {\n transform: translateX(2px) rotateY(3deg);\n }\n\n 50% {\n transform: translateX(0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/heartBeat.css}\n */\nexport const heartBeat = keyframes`\n 0% {\n transform: scale(1);\n }\n\n 14% {\n transform: scale(1.3);\n }\n\n 28% {\n transform: scale(1);\n }\n\n 42% {\n transform: scale(1.3);\n }\n\n 70% {\n transform: scale(1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/jello.css}\n */\nexport const jello = keyframes`\n from,\n 11.1%,\n to {\n transform: translate3d(0, 0, 0);\n }\n\n 22.2% {\n transform: skewX(-12.5deg) skewY(-12.5deg);\n }\n\n 33.3% {\n transform: skewX(6.25deg) skewY(6.25deg);\n }\n\n 44.4% {\n transform: skewX(-3.125deg) skewY(-3.125deg);\n }\n\n 55.5% {\n transform: skewX(1.5625deg) skewY(1.5625deg);\n }\n\n 66.6% {\n transform: skewX(-0.78125deg) skewY(-0.78125deg);\n }\n\n 77.7% {\n transform: skewX(0.390625deg) skewY(0.390625deg);\n }\n\n 88.8% {\n transform: skewX(-0.1953125deg) skewY(-0.1953125deg);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/pulse.css}\n */\nexport const pulse = keyframes`\n from {\n transform: scale3d(1, 1, 1);\n }\n\n 50% {\n transform: scale3d(1.05, 1.05, 1.05);\n }\n\n to {\n transform: scale3d(1, 1, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/rubberBand.css}\n */\nexport const rubberBand = keyframes`\n from {\n transform: scale3d(1, 1, 1);\n }\n\n 30% {\n transform: scale3d(1.25, 0.75, 1);\n }\n\n 40% {\n transform: scale3d(0.75, 1.25, 1);\n }\n\n 50% {\n transform: scale3d(1.15, 0.85, 1);\n }\n\n 65% {\n transform: scale3d(0.95, 1.05, 1);\n }\n\n 75% {\n transform: scale3d(1.05, 0.95, 1);\n }\n\n to {\n transform: scale3d(1, 1, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/shake.css}\n */\nexport const shake = keyframes`\n from,\n to {\n transform: translate3d(0, 0, 0);\n }\n\n 10%,\n 30%,\n 50%,\n 70%,\n 90% {\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%,\n 40%,\n 60%,\n 80% {\n transform: translate3d(10px, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/shakeX.css}\n */\nexport const shakeX = keyframes`\n from,\n to {\n transform: translate3d(0, 0, 0);\n }\n\n 10%,\n 30%,\n 50%,\n 70%,\n 90% {\n transform: translate3d(-10px, 0, 0);\n }\n\n 20%,\n 40%,\n 60%,\n 80% {\n transform: translate3d(10px, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/shakeY.css}\n */\nexport const shakeY = keyframes`\n from,\n to {\n transform: translate3d(0, 0, 0);\n }\n\n 10%,\n 30%,\n 50%,\n 70%,\n 90% {\n transform: translate3d(0, -10px, 0);\n }\n\n 20%,\n 40%,\n 60%,\n 80% {\n transform: translate3d(0, 10px, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/swing.css}\n */\nexport const swing = keyframes`\n 20% {\n transform: rotate3d(0, 0, 1, 15deg);\n }\n\n 40% {\n transform: rotate3d(0, 0, 1, -10deg);\n }\n\n 60% {\n transform: rotate3d(0, 0, 1, 5deg);\n }\n\n 80% {\n transform: rotate3d(0, 0, 1, -5deg);\n }\n\n to {\n transform: rotate3d(0, 0, 1, 0deg);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/tada.css}\n */\nexport const tada = keyframes`\n from {\n transform: scale3d(1, 1, 1);\n }\n\n 10%,\n 20% {\n transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);\n }\n\n 30%,\n 50%,\n 70%,\n 90% {\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);\n }\n\n 40%,\n 60%,\n 80% {\n transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);\n }\n\n to {\n transform: scale3d(1, 1, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/attention_seekers/wobble.css}\n */\nexport const wobble = keyframes`\n from {\n transform: translate3d(0, 0, 0);\n }\n\n 15% {\n transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);\n }\n\n 30% {\n transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);\n }\n\n 45% {\n transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);\n }\n\n 60% {\n transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);\n }\n\n 75% {\n transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInBottomLeft.css}\n */\nexport const fadeInBottomLeft = keyframes`\n from {\n opacity: 0;\n transform: translate3d(-100%, 100%, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInBottomRight.css}\n */\nexport const fadeInBottomRight = keyframes`\n from {\n opacity: 0;\n transform: translate3d(100%, 100%, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInDown.css}\n */\nexport const fadeInDown = keyframes`\n from {\n opacity: 0;\n transform: translate3d(0, -100%, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInDownBig.css}\n */\nexport const fadeInDownBig = keyframes`\n from {\n opacity: 0;\n transform: translate3d(0, -2000px, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInLeft.css}\n */\nexport const fadeInLeft = keyframes`\n from {\n opacity: 0;\n transform: translate3d(-100%, 0, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInLeftBig.css}\n */\nexport const fadeInLeftBig = keyframes`\n from {\n opacity: 0;\n transform: translate3d(-2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInRight.css}\n */\nexport const fadeInRight = keyframes`\n from {\n opacity: 0;\n transform: translate3d(100%, 0, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInRightBig.css}\n */\nexport const fadeInRightBig = keyframes`\n from {\n opacity: 0;\n transform: translate3d(2000px, 0, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInTopLeft.css}\n */\nexport const fadeInTopLeft = keyframes`\n from {\n opacity: 0;\n transform: translate3d(-100%, -100%, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInTopRight.css}\n */\nexport const fadeInTopRight = keyframes`\n from {\n opacity: 0;\n transform: translate3d(100%, -100%, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInUp.css}\n */\nexport const fadeInUp = keyframes`\n from {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_entrances/fadeInUpBig.css}\n */\nexport const fadeInUpBig = keyframes`\n from {\n opacity: 0;\n transform: translate3d(0, 2000px, 0);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","export function matchIf(onTrue: () => T, onFalse: () => F) {\n return (condition: boolean) => (condition ? onTrue() : onFalse());\n}\n\nexport function matchIfOrNull(onTrue: () => T) {\n return matchIf(onTrue, () => null);\n}\n","import { ClassNames } from \"@emotion/react\";\nimport type { Keyframes, SerializedStyles } from \"@emotion/serialize\";\nimport { Children, type CSSProperties, isValidElement, useMemo } from \"react\";\nimport { InView, useInView } from \"react-intersection-observer\";\nimport { isFragment } from \"react-is\";\n\nimport { fadeInLeft } from \"./animations/fading_entrances\";\nimport { getAnimationCss } from \"./utils/animations\";\nimport { isNullable, isStringLike } from \"./utils/guards\";\nimport { matchIf, matchIfOrNull } from \"./utils/patterns\";\n\nfunction hideWhen(condition: boolean) {\n return matchIfOrNull(() => ({ opacity: 0 }))(condition);\n}\n\nexport interface RevealProps {\n /**\n * Stagger its children animations.\n * @default false\n */\n cascade?: boolean;\n /**\n * Factor that affects the delay that each animated element in a cascade animation will be assigned.\n * @default 0.5\n */\n damping?: number;\n /**\n * Initial delay, in milliseconds.\n * @default 0\n */\n delay?: number;\n /**\n * Animation duration, in milliseconds.\n * @default 1000\n */\n duration?: number;\n /**\n * Float number between 0 and 1 indicating how much the element should be in viewport before the animation is triggered.\n * @default 0\n */\n fraction?: number;\n /**\n * Custom Emotion animation keyframes.\n */\n keyframes?: Keyframes;\n /**\n * Specifies if the animation should run only once or everytime the element enters/exits/re-enters the viewport.\n * @default false\n */\n triggerOnce?: boolean;\n /**\n * Class names to add to the container element.\n */\n className?: string;\n /**\n * Inline styles to add to the container element.\n */\n style?: React.CSSProperties;\n /**\n * Class names to add to the child element.\n */\n childClassName?: string;\n /**\n * Inline styles to add to the child element.\n */\n childStyle?: React.CSSProperties;\n /**\n * From React 18, children must be explicitly typed.\n * @see https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html#updates-to-typescript-definitions\n */\n children?: React.ReactNode;\n /**\n * Callback executed when the element enters or leaves the viewport.\n * If more than one element is being animated, this function is called\n * on each element.\n *\n * @param inView The current visibility flag.\n * @param entry The current IntersectionObserverEntry.\n */\n onVisibilityChange?(inView: boolean, entry: IntersectionObserverEntry): void;\n}\n\nexport const Reveal: React.FC = (props) => {\n const {\n cascade = false,\n damping = 0.5,\n delay = 0,\n duration = 1000,\n fraction = 0,\n keyframes = fadeInLeft,\n triggerOnce = false,\n className,\n style,\n childClassName,\n childStyle,\n children,\n onVisibilityChange,\n } = props;\n\n const animationStyles = useMemo(\n () =>\n getAnimationCss({\n keyframes,\n duration,\n }),\n [duration, keyframes]\n );\n\n if (isNullable(children)) return null;\n\n if (isStringLike(children))\n return (\n \n {String(children)}\n \n );\n\n if (isFragment(children))\n return ;\n\n return (\n <>\n {Children.map(children, (node, index) => {\n if (!isValidElement(node)) return null;\n\n const nodeDelay = delay + (cascade ? index * duration * damping : 0);\n\n switch (node.type) {\n case \"ol\":\n case \"ul\":\n return (\n \n {({ cx }) => (\n \n {node.props.children}\n \n )}\n \n );\n case \"li\":\n return (\n \n {({ inView, ref }) => (\n \n {({ cx }) => (\n animationStyles)(inView)}\n style={Object.assign(\n {},\n childStyle,\n node.props.style,\n hideWhen(!inView),\n {\n animationDelay: nodeDelay + \"ms\",\n }\n )}\n />\n )}\n \n )}\n
\n );\n default:\n return (\n \n {({ inView, ref }) => (\n animationStyles)(inView)}\n style={Object.assign({}, style, hideWhen(!inView), {\n animationDelay: nodeDelay + \"ms\",\n })}\n >\n \n {({ cx }) => (\n \n )}\n \n
\n )}\n \n );\n }\n })}\n \n );\n};\n\nconst textBaseStyles: CSSProperties = {\n display: \"inline-block\",\n whiteSpace: \"pre\",\n};\n\nconst TextReveal: React.FC<\n RevealProps & { animationStyles: SerializedStyles; children: string }\n> = (props) => {\n const {\n animationStyles,\n cascade = false,\n damping = 0.5,\n delay = 0,\n duration = 1000,\n fraction = 0,\n triggerOnce = false,\n className,\n style,\n children,\n onVisibilityChange,\n } = props;\n\n const { ref, inView } = useInView({\n triggerOnce,\n threshold: fraction,\n onChange: onVisibilityChange,\n });\n\n return matchIf(\n () => (\n \n {children.split(\"\").map((char, index) => (\n animationStyles)(inView)}\n style={{\n animationDelay: delay + index * duration * damping + \"ms\",\n }}\n >\n {char}\n \n ))}\n
\n ),\n () => {children}\n )(cascade);\n};\n\nconst FragmentReveal: React.FC<\n RevealProps & { animationStyles: SerializedStyles }\n> = (props) => {\n const {\n animationStyles,\n fraction = 0,\n triggerOnce = false,\n className,\n style,\n children,\n onVisibilityChange,\n } = props;\n\n const { ref, inView } = useInView({\n triggerOnce,\n threshold: fraction,\n onChange: onVisibilityChange,\n });\n\n return (\n animationStyles)(inView)}\n style={Object.assign({}, style, hideWhen(!inView))}\n >\n {children}\n
\n );\n};\n","export function isNullable(a: unknown): a is null | undefined {\n return a == undefined;\n}\n\nexport function isStringLike(\n value: unknown\n): value is string | number | boolean {\n return (\n typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\"\n );\n}\n","import { css } from \"@emotion/react\";\n\nimport { fadeInLeft } from \"../animations/fading_entrances\";\n\nexport function getAnimationCss({\n duration = 1000,\n delay = 0,\n timingFunction = \"ease\",\n keyframes = fadeInLeft,\n iterationCount = 1,\n}) {\n return css`\n animation-duration: ${duration}ms;\n animation-timing-function: ${timingFunction};\n animation-delay: ${delay}ms;\n animation-name: ${keyframes};\n animation-direction: normal;\n animation-fill-mode: both;\n animation-iteration-count: ${iterationCount};\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n `;\n}\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_entrances/bounceIn.css}\n */\nexport const bounceIn = keyframes`\n from,\n 20%,\n 40%,\n 60%,\n 80%,\n to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 20% {\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n 40% {\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 60% {\n opacity: 1;\n transform: scale3d(1.03, 1.03, 1.03);\n }\n\n 80% {\n transform: scale3d(0.97, 0.97, 0.97);\n }\n\n to {\n opacity: 1;\n transform: scale3d(1, 1, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_entrances/bounceInDown.css}\n */\nexport const bounceInDown = keyframes`\n from,\n 60%,\n 75%,\n 90%,\n to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n transform: translate3d(0, -3000px, 0) scaleY(3);\n }\n\n 60% {\n opacity: 1;\n transform: translate3d(0, 25px, 0) scaleY(0.9);\n }\n\n 75% {\n transform: translate3d(0, -10px, 0) scaleY(0.95);\n }\n\n 90% {\n transform: translate3d(0, 5px, 0) scaleY(0.985);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_entrances/bounceInLeft.css}\n */\nexport const bounceInLeft = keyframes`\n from,\n 60%,\n 75%,\n 90%,\n to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n 0% {\n opacity: 0;\n transform: translate3d(-3000px, 0, 0) scaleX(3);\n }\n\n 60% {\n opacity: 1;\n transform: translate3d(25px, 0, 0) scaleX(1);\n }\n\n 75% {\n transform: translate3d(-10px, 0, 0) scaleX(0.98);\n }\n\n 90% {\n transform: translate3d(5px, 0, 0) scaleX(0.995);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_entrances/bounceInRight.css}\n */\nexport const bounceInRight = keyframes`\n from,\n 60%,\n 75%,\n 90%,\n to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n transform: translate3d(3000px, 0, 0) scaleX(3);\n }\n\n 60% {\n opacity: 1;\n transform: translate3d(-25px, 0, 0) scaleX(1);\n }\n\n 75% {\n transform: translate3d(10px, 0, 0) scaleX(0.98);\n }\n\n 90% {\n transform: translate3d(-5px, 0, 0) scaleX(0.995);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_entrances/bounceInUp.css}\n */\nexport const bounceInUp = keyframes`\n from,\n 60%,\n 75%,\n 90%,\n to {\n animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n }\n\n from {\n opacity: 0;\n transform: translate3d(0, 3000px, 0) scaleY(5);\n }\n\n 60% {\n opacity: 1;\n transform: translate3d(0, -20px, 0) scaleY(0.9);\n }\n\n 75% {\n transform: translate3d(0, 10px, 0) scaleY(0.95);\n }\n\n 90% {\n transform: translate3d(0, -5px, 0) scaleY(0.985);\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_exits/bounceOut.css}\n */\nexport const bounceOut = keyframes`\n 20% {\n transform: scale3d(0.9, 0.9, 0.9);\n }\n\n 50%,\n 55% {\n opacity: 1;\n transform: scale3d(1.1, 1.1, 1.1);\n }\n\n to {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_exits/bounceOutDown.css}\n */\nexport const bounceOutDown = keyframes`\n 20% {\n transform: translate3d(0, 10px, 0) scaleY(0.985);\n }\n\n 40%,\n 45% {\n opacity: 1;\n transform: translate3d(0, -20px, 0) scaleY(0.9);\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, 2000px, 0) scaleY(3);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_exits/bounceOutLeft.css}\n */\nexport const bounceOutLeft = keyframes`\n 20% {\n opacity: 1;\n transform: translate3d(20px, 0, 0) scaleX(0.9);\n }\n\n to {\n opacity: 0;\n transform: translate3d(-2000px, 0, 0) scaleX(2);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_exits/bounceOutRight.css}\n */\nexport const bounceOutRight = keyframes`\n 20% {\n opacity: 1;\n transform: translate3d(-20px, 0, 0) scaleX(0.9);\n }\n\n to {\n opacity: 0;\n transform: translate3d(2000px, 0, 0) scaleX(2);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/bouncing_exits/bounceOutUp.css}\n */\nexport const bounceOutUp = keyframes`\n 20% {\n transform: translate3d(0, -10px, 0) scaleY(0.985);\n }\n\n 40%,\n 45% {\n opacity: 1;\n transform: translate3d(0, 20px, 0) scaleY(0.9);\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, -2000px, 0) scaleY(3);\n }\n`;\n","import { useMemo } from \"react\";\n\nimport {\n bounceIn,\n bounceInDown,\n bounceInLeft,\n bounceInRight,\n bounceInUp,\n} from \"../animations/bouncing_entrances\";\nimport {\n bounceOut,\n bounceOutDown,\n bounceOutLeft,\n bounceOutRight,\n bounceOutUp,\n} from \"../animations/bouncing_exits\";\nimport { Reveal, type RevealProps } from \"../Reveal\";\n\ntype BounceDirection = \"down\" | \"left\" | \"right\" | \"up\";\n\nexport interface BounceProps extends Omit {\n /**\n * Origin of the animation.\n * @default undefined\n */\n direction?: BounceDirection;\n /**\n * Specifies if the animation should make element(s) disappear.\n * @default false\n */\n reverse?: boolean;\n}\n\nfunction getStyles(reverse: boolean, direction?: BounceDirection) {\n switch (direction) {\n case \"down\":\n return reverse ? bounceOutDown : bounceInDown;\n case \"left\":\n return reverse ? bounceOutLeft : bounceInLeft;\n case \"right\":\n return reverse ? bounceOutRight : bounceInRight;\n case \"up\":\n return reverse ? bounceOutUp : bounceInUp;\n default:\n return reverse ? bounceOut : bounceIn;\n }\n}\n\nexport const Bounce: React.FC = (props) => {\n const { direction, reverse = false, ...rest } = props;\n\n const keyframes = useMemo(\n () => getStyles(reverse, direction),\n [direction, reverse]\n );\n\n return ;\n};\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOut.css}\n */\nexport const fadeOut = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutBottomLeft.css}\n */\nexport const fadeOutBottomLeft = keyframes`\n from {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n\n to {\n opacity: 0;\n transform: translate3d(-100%, 100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutBottomRight.css}\n */\nexport const fadeOutBottomRight = keyframes`\n from {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n\n to {\n opacity: 0;\n transform: translate3d(100%, 100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutDown.css}\n */\nexport const fadeOutDown = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, 100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutDownBig.css}\n */\nexport const fadeOutDownBig = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, 2000px, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutLeft.css}\n */\nexport const fadeOutLeft = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(-100%, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutLeftBig.css}\n */\nexport const fadeOutLeftBig = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(-2000px, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutRight.css}\n */\nexport const fadeOutRight = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(100%, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutRightBig.css}\n */\nexport const fadeOutRightBig = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(2000px, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutTopLeft.css}\n */\nexport const fadeOutTopLeft = keyframes`\n from {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n\n to {\n opacity: 0;\n transform: translate3d(-100%, -100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutTopRight.css}\n */\nexport const fadeOutTopRight = keyframes`\n from {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n\n to {\n opacity: 0;\n transform: translate3d(100%, -100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutUp.css}\n */\nexport const fadeOutUp = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, -100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/fading_exits/fadeOutUpBig.css}\n */\nexport const fadeOutUpBig = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(0, -2000px, 0);\n }\n`;\n","import { useMemo } from \"react\";\n\nimport {\n fadeIn,\n fadeInBottomLeft,\n fadeInBottomRight,\n fadeInDown,\n fadeInDownBig,\n fadeInLeft,\n fadeInLeftBig,\n fadeInRight,\n fadeInRightBig,\n fadeInTopLeft,\n fadeInTopRight,\n fadeInUp,\n fadeInUpBig,\n} from \"../animations/fading_entrances\";\nimport {\n fadeOut,\n fadeOutBottomLeft,\n fadeOutBottomRight,\n fadeOutDown,\n fadeOutDownBig,\n fadeOutLeft,\n fadeOutLeftBig,\n fadeOutRight,\n fadeOutRightBig,\n fadeOutTopLeft,\n fadeOutTopRight,\n fadeOutUp,\n fadeOutUpBig,\n} from \"../animations/fading_exits\";\nimport { Reveal, type RevealProps } from \"../Reveal\";\n\ntype FadeDirection =\n | \"bottom-left\"\n | \"bottom-right\"\n | \"down\"\n | \"left\"\n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"up\";\n\nexport interface FadeProps extends Omit {\n /**\n * Causes the animation to start farther. Only works with \"down\", \"left\", \"right\" and \"up\" directions.\n * @default false\n */\n big?: boolean;\n /**\n * Origin of the animation.\n * @default undefined\n */\n direction?: FadeDirection;\n /**\n * Specifies if the animation should make element(s) disappear.\n * @default false\n */\n reverse?: boolean;\n}\n\nfunction getStyles(big: boolean, reverse: boolean, direction?: FadeDirection) {\n switch (direction) {\n case \"bottom-left\":\n return reverse ? fadeOutBottomLeft : fadeInBottomLeft;\n case \"bottom-right\":\n return reverse ? fadeOutBottomRight : fadeInBottomRight;\n case \"down\":\n return big\n ? reverse\n ? fadeOutDownBig\n : fadeInDownBig\n : reverse\n ? fadeOutDown\n : fadeInDown;\n case \"left\":\n return big\n ? reverse\n ? fadeOutLeftBig\n : fadeInLeftBig\n : reverse\n ? fadeOutLeft\n : fadeInLeft;\n case \"right\":\n return big\n ? reverse\n ? fadeOutRightBig\n : fadeInRightBig\n : reverse\n ? fadeOutRight\n : fadeInRight;\n case \"top-left\":\n return reverse ? fadeOutTopLeft : fadeInTopLeft;\n case \"top-right\":\n return reverse ? fadeOutTopRight : fadeInTopRight;\n case \"up\":\n return big\n ? reverse\n ? fadeOutUpBig\n : fadeInUpBig\n : reverse\n ? fadeOutUp\n : fadeInUp;\n default:\n return reverse ? fadeOut : fadeIn;\n }\n}\n\nexport const Fade: React.FC = (props) => {\n const { big = false, direction, reverse = false, ...rest } = props;\n\n const keyframes = useMemo(\n () => getStyles(big, reverse, direction),\n [big, direction, reverse]\n );\n\n return ;\n};\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/flippers/flip.css}\n */\nexport const flip = keyframes`\n from {\n transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg);\n animation-timing-function: ease-out;\n }\n\n 40% {\n transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)\n rotate3d(0, 1, 0, -190deg);\n animation-timing-function: ease-out;\n }\n\n 50% {\n transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)\n rotate3d(0, 1, 0, -170deg);\n animation-timing-function: ease-in;\n }\n\n 80% {\n transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)\n rotate3d(0, 1, 0, 0deg);\n animation-timing-function: ease-in;\n }\n\n to {\n transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg);\n animation-timing-function: ease-in;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/flippers/flipInX.css}\n */\nexport const flipInX = keyframes`\n from {\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n animation-timing-function: ease-in;\n }\n\n 60% {\n transform: perspective(400px) rotate3d(1, 0, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n transform: perspective(400px) rotate3d(1, 0, 0, -5deg);\n }\n\n to {\n transform: perspective(400px);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/flippers/flipInY.css}\n */\nexport const flipInY = keyframes`\n from {\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n animation-timing-function: ease-in;\n opacity: 0;\n }\n\n 40% {\n transform: perspective(400px) rotate3d(0, 1, 0, -20deg);\n animation-timing-function: ease-in;\n }\n\n 60% {\n transform: perspective(400px) rotate3d(0, 1, 0, 10deg);\n opacity: 1;\n }\n\n 80% {\n transform: perspective(400px) rotate3d(0, 1, 0, -5deg);\n }\n\n to {\n transform: perspective(400px);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/flippers/flipOutX.css}\n */\nexport const flipOutX = keyframes`\n from {\n transform: perspective(400px);\n }\n\n 30% {\n transform: perspective(400px) rotate3d(1, 0, 0, -20deg);\n opacity: 1;\n }\n\n to {\n transform: perspective(400px) rotate3d(1, 0, 0, 90deg);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/flippers/flipOutY.css}\n */\nexport const flipOutY = keyframes`\n from {\n transform: perspective(400px);\n }\n\n 30% {\n transform: perspective(400px) rotate3d(0, 1, 0, -15deg);\n opacity: 1;\n }\n\n to {\n transform: perspective(400px) rotate3d(0, 1, 0, 90deg);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/specials/hinge.css}\n */\nexport const hinge = keyframes`\n 0% {\n animation-timing-function: ease-in-out;\n }\n\n 20%,\n 60% {\n transform: rotate3d(0, 0, 1, 80deg);\n animation-timing-function: ease-in-out;\n }\n\n 40%,\n 80% {\n transform: rotate3d(0, 0, 1, 60deg);\n animation-timing-function: ease-in-out;\n opacity: 1;\n }\n\n to {\n transform: translate3d(0, 700px, 0);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/specials/jackInTheBox.css}\n */\nexport const jackInTheBox = keyframes`\n from {\n opacity: 0;\n transform: scale(0.1) rotate(30deg);\n transform-origin: center bottom;\n }\n\n 50% {\n transform: rotate(-10deg);\n }\n\n 70% {\n transform: rotate(3deg);\n }\n\n to {\n opacity: 1;\n transform: scale(1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/specials/rollIn.css}\n */\nexport const rollIn = keyframes`\n from {\n opacity: 0;\n transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);\n }\n\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/specials/rollOut.css}\n */\nexport const rollOut = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n opacity: 0;\n transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_entrances/rotateIn.css}\n */\nexport const rotateIn = keyframes`\n from {\n transform: rotate3d(0, 0, 1, -200deg);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_entrances/rotateInDownLeft.css}\n */\nexport const rotateInDownLeft = keyframes`\n from {\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_entrances/rotateInDownRight.css}\n */\nexport const rotateInDownRight = keyframes`\n from {\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_entrances/rotateInUpLeft.css}\n */\nexport const rotateInUpLeft = keyframes`\n from {\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_entrances/rotateInUpRight.css}\n */\nexport const rotateInUpRight = keyframes`\n from {\n transform: rotate3d(0, 0, 1, -90deg);\n opacity: 0;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_exits/rotateOut.css}\n */\nexport const rotateOut = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n transform: rotate3d(0, 0, 1, 200deg);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_exits/rotateOutDownLeft.css}\n */\nexport const rotateOutDownLeft = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n transform: rotate3d(0, 0, 1, 45deg);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_exits/rotateOutDownRight.css}\n */\nexport const rotateOutDownRight = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_exits/rotateOutUpLeft.css}\n */\nexport const rotateOutUpLeft = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n transform: rotate3d(0, 0, 1, -45deg);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/rotating_exits/rotateOutUpRight.css}\n */\nexport const rotateOutUpRight = keyframes`\n from {\n opacity: 1;\n }\n\n to {\n transform: rotate3d(0, 0, 1, 90deg);\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_entrances/slideInDown.css}\n */\nexport const slideInDown = keyframes`\n from {\n transform: translate3d(0, -100%, 0);\n visibility: visible;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_entrances/slideInLeft.css}\n */\nexport const slideInLeft = keyframes`\n from {\n transform: translate3d(-100%, 0, 0);\n visibility: visible;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_entrances/slideInRight.css}\n */\nexport const slideInRight = keyframes`\n from {\n transform: translate3d(100%, 0, 0);\n visibility: visible;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_entrances/slideInUp.css}\n */\nexport const slideInUp = keyframes`\n from {\n transform: translate3d(0, 100%, 0);\n visibility: visible;\n }\n\n to {\n transform: translate3d(0, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_exits/slideOutDown.css}\n */\nexport const slideOutDown = keyframes`\n from {\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n transform: translate3d(0, 100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_exits/slideOutLeft.css}\n */\nexport const slideOutLeft = keyframes`\n from {\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n transform: translate3d(-100%, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_exits/slideOutRight.css}\n */\nexport const slideOutRight = keyframes`\n from {\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n transform: translate3d(100%, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/sliding_exits/slideOutUp.css}\n */\nexport const slideOutUp = keyframes`\n from {\n transform: translate3d(0, 0, 0);\n }\n\n to {\n visibility: hidden;\n transform: translate3d(0, -100%, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_entrances/zoomIn.css}\n */\nexport const zoomIn = keyframes`\n from {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n 50% {\n opacity: 1;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_entrances/zoomInDown.css}\n */\nexport const zoomInDown = keyframes`\n from {\n opacity: 0;\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_entrances/zoomInLeft.css}\n */\nexport const zoomInLeft = keyframes`\n from {\n opacity: 0;\n transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_entrances/zoomInRight.css}\n */\nexport const zoomInRight = keyframes`\n from {\n opacity: 0;\n transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_entrances/zoomInUp.css}\n */\nexport const zoomInUp = keyframes`\n from {\n opacity: 0;\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n 60% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_exits/zoomOut.css}\n */\nexport const zoomOut = keyframes`\n from {\n opacity: 1;\n }\n\n 50% {\n opacity: 0;\n transform: scale3d(0.3, 0.3, 0.3);\n }\n\n to {\n opacity: 0;\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_exits/zoomOutDown.css}\n */\nexport const zoomOutDown = keyframes`\n 40% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_exits/zoomOutLeft.css}\n */\nexport const zoomOutLeft = keyframes`\n 40% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);\n }\n\n to {\n opacity: 0;\n transform: scale(0.1) translate3d(-2000px, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_exits/zoomOutRight.css}\n */\nexport const zoomOutRight = keyframes`\n 40% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);\n }\n\n to {\n opacity: 0;\n transform: scale(0.1) translate3d(2000px, 0, 0);\n }\n`;\n","import { keyframes } from \"@emotion/react\";\n\n/**\n * @see {@link https://github.com/animate-css/animate.css/blob/master/source/zooming_exits/zoomOutUp.css}\n */\nexport const zoomOutUp = keyframes`\n 40% {\n opacity: 1;\n transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);\n animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n }\n\n to {\n opacity: 0;\n transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);\n animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);\n }\n`;\n","import { useMemo } from \"react\";\n\nimport {\n zoomIn,\n zoomInDown,\n zoomInLeft,\n zoomInRight,\n zoomInUp,\n} from \"../animations/zooming_entrances\";\nimport {\n zoomOut,\n zoomOutDown,\n zoomOutLeft,\n zoomOutRight,\n zoomOutUp,\n} from \"../animations/zooming_exits\";\nimport { Reveal, type RevealProps } from \"../Reveal\";\n\ntype ZoomDirection = \"down\" | \"left\" | \"right\" | \"up\";\n\nexport interface ZoomProps extends Omit {\n /**\n * Origin of the animation.\n * @default undefined\n */\n direction?: ZoomDirection;\n /**\n * Specifies if the animation should make element(s) disappear.\n * @default false\n */\n reverse?: boolean;\n}\n\nfunction getStyles(reverse: boolean, direction?: ZoomDirection) {\n switch (direction) {\n case \"down\":\n return reverse ? zoomOutDown : zoomInDown;\n case \"left\":\n return reverse ? zoomOutLeft : zoomInLeft;\n case \"right\":\n return reverse ? zoomOutRight : zoomInRight;\n case \"up\":\n return reverse ? zoomOutUp : zoomInUp;\n default:\n return reverse ? zoomOut : zoomIn;\n }\n}\n\nexport const Zoom: React.FC = (props) => {\n const { direction, reverse = false, ...rest } = props;\n\n const keyframes = useMemo(\n () => getStyles(reverse, direction),\n [direction, reverse]\n );\n\n return ;\n};\n","import React, { useEffect, useState } from \"react\";\nimport Modal from \"./Modal\";\nimport { Fade } from \"react-awesome-reveal\";\nimport \"./App.css\";\nimport \"./Rottnest.css\";\n\nconst imagesLo = [\n \"/rottnestlo01.jpg\",\n \"/rottnestlo02.jpg\",\n \"/rottnestlo03.jpg\",\n \"/rottnestlo04.jpg\",\n];\nconst imagesHi = [\n \"/rottnesthi01.jpg\",\n \"/rottnesthi02.jpg\",\n \"/rottnesthi03.jpg\",\n \"/rottnesthi04.jpg\",\n \"/rottnesthi05.jpg\",\n];\n\nexport function Rottnest() {\n const [currentImageIndex, setCurrentImageIndex] = useState(0);\n const [images, setImages] = useState(imagesLo);\n const [showModal, setShowModal] = useState(false);\n\n const updateImages = () => {\n if (window.innerWidth >= 800) {\n setImages(imagesHi);\n } else {\n setImages(imagesLo);\n }\n };\n\n const toggleModal = () => {\n setShowModal(!showModal);\n };\n\n useEffect(() => {\n updateImages();\n window.addEventListener(\"resize\", updateImages);\n return () => window.removeEventListener(\"resize\", updateImages);\n }, []);\n\n useEffect(() => {\n const interval = setInterval(() => {\n setCurrentImageIndex((prevIndex) => (prevIndex + 1) % images.length);\n }, 3000); // Change image every 3 seconds\n\n return () => clearInterval(interval);\n }, [images]);\n\n // Add a side effect to add or remove the \"modal-open\" class from the body to prevent scrolling when the modal is open\n useEffect(() => {\n if (showModal) {\n document.body.classList.add(\"modal-open\");\n } else {\n document.body.classList.remove(\"modal-open\");\n }\n }, [showModal]);\n\n return (\n
\n
Rottnest Overnight Party - Monday
\n \n \n \n
\n \n
\n Join us as we close off a chapter in style! We will party\n
\n
\n hard until it's time to watch the sun set over the Indian Ocean.\n
\n
\n Fully licensed bar & open kitchen. Tickets are strictly limited.\n
\n \n More Details\n \n
\n * Priority for overnight tents will be for AWAKE Full Pass holders.\n Please contact us on how to book.\n
\n
\n
\n\n \n
\n
\n Rottnest Details\n
\n
Monday, 17th March 2025
\n
\n Full Day & Overnight options available.\n
\n \n

\n Departing from the B Shed Ferry Terminal in Fremantle, the SeaLink\n ferry will whisk us all off to Rottnest Island.\n

\n
\n

\n A short 30 minutes from Fremantle, you will be on the island in no\n time enjoying the sun, sand and selfies the local favorite, the\n Quokka!\n

\n
\n \n
\n

\n From there we will be making our way over to Pinky's, one of the\n most famous beaches on Rottnest. Here at Pinky’s is where we will be\n spending our time, though you do have the option to explore the\n island at your leisure.\n

\n \n

\n Our DJ’s will be kicking off at 12pm on the decks in front of the\n restaurant. For those looking to head home on the day, you will be\n able to enjoy the live music up until your departure just before\n sunset.\n

\n
\n \n
\n

\n There is a fully licensed bar and restaurant on site to enjoy. And\n for those looking to stay over with us, the music will kick on\n until the island curfew of 10pm.\n

\n
\n

\n If you are looking to stay over we do have a special rate and there\n are a number of options to choose from, including twin bed tents.\n

\n
\n \n \n
\n

\n All overnight accommodation needs to be booked through us directly,\n and priority will be given to Full Pass holders. Contact us for\n discount code and booking details.\n

\n \n Contact Us\n \n
\n \n
\n );\n}\n","import React, { useEffect, useCallback, useState } from \"react\";\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport Autoplay from \"embla-carousel-autoplay\";\nimport { flushSync } from \"react-dom\";\nimport \"./EmblaCarousel.css\";\n\nconst TWEEN_FACTOR = 2.5;\n\nexport default function EmblaCarousel({ slides, options }) {\n const [emblaRef, emblaApi] = useEmblaCarousel(options, [Autoplay()]);\n const [tweenValues, setTweenValues] = useState([]);\n const [previewImage, setPreviewImage] = useState(null);\n\n const onScroll = useCallback(() => {\n if (!emblaApi) return;\n const engine = emblaApi.internalEngine();\n const scrollProgress = emblaApi.scrollProgress();\n\n const styles = emblaApi.scrollSnapList().map((scrollSnap, index) => {\n let diffToTarget = scrollSnap - scrollProgress;\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target();\n if (index === loopItem.index && target !== 0) {\n const sign = Math.sign(target);\n if (sign === -1) diffToTarget = scrollSnap - (1 + scrollProgress);\n if (sign === 1) diffToTarget = scrollSnap + (1 - scrollProgress);\n }\n });\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * TWEEN_FACTOR);\n return Math.min(Math.max(tweenValue, 0), 1);\n });\n\n setTweenValues(styles);\n }, [emblaApi]);\n\n useEffect(() => {\n if (!emblaApi) return;\n onScroll();\n emblaApi.on(\"scroll\", () => flushSync(onScroll));\n emblaApi.on(\"reInit\", onScroll);\n }, [emblaApi, onScroll]);\n\n return (\n <>\n
\n
\n
\n {slides.map((slide, index) => (\n \n \"Slide\"\n setPreviewImage(slide)}\n style={{ cursor: \"pointer\" }}\n />\n
\n ))}\n
\n
\n
\n {previewImage && (\n
setPreviewImage(null)}>\n \"Preview\"\n
\n )}\n \n );\n}\n","import React, { useState } from \"react\";\nimport Modal from \"./Modal\";\nimport { Fade } from \"react-awesome-reveal\";\nimport EmblaCarousel from \"./EmblaCarousel\";\nimport \"./App.css\";\n\nconst OPTIONS = { loop: true, auto: true };\n\nexport function Hotel() {\n const slides = [\n \"/ibis01.jpg\",\n \"/ibis02.jpg\",\n \"/ibis03.jpg\",\n \"/ibis05.jpg\",\n \"/ibis04.jpg\",\n ];\n const [showModal, setShowModal] = useState(false);\n\n const toggleModal = () => {\n setShowModal(!showModal);\n };\n\n return (\n
\n
Venue: Ibis Perth
\n \n
\n \n
\n Welcome to the official AWAKE Festival 2025 hotel! The Ibis\n
\n
\n Perth is located in the heart of Perth, close to all the action!\n
\n
\n With two rooms and 3am finish, you can party all night and\n
\n
\n sleep all day at the same location. Book your room now!\n
\n \n More Details\n \n
\n
\n\n \n
\n
\n Ibis Hotel Details\n
\n
Two Rooms | 3am Finish
\n \n

\n The Ibis Perth is located in the heart of Perth, close to\n restaurants, shops and public transport.\n

\n
\n

\n Walking distance to the underground train station, with easy\n accesss to Perth Airport and Fremantle for the ferry to Rottnest\n Island.\n

\n
\n \n
\n

\n Our room for both the workshops and the evening parties is the main\n ballroom which is undergoing reventions in 2024. There is a fully\n licenced bar & restaurant on site to enjoy.\n

\n \n

\n We are excited to have all our parties going until 3am.\n

\n
\n \n
\n

\n Attached to the hotel is the Rubix bar and Restaurant. There is\n also a Coles nearby and plenty of other options for dining.\n

\n
\n

\n With plenty of options, including twin rooms for those looking to\n share with a friend, and starting at $190 a night the Ibis Perth is\n the perfect place to stay for AWAKE Festival 2025.\n

\n
\n \n \n
\n

\n To book and further information, click the button below.\n

\n \n Book\n \n
\n \n
\n );\n}\n","import React, { useState } from \"react\";\nimport Modal from \"./Modal\";\n\nexport function OurLineup() {\n return (\n
\n

OUR LINEUP

\n \n Coming back to AWAKE 2025 is Said Mameche! But this time he is bringing\n his amazing partner Oksana to party with us in Perth!\n \n \n This powerhouse couple straight from Angola will bring you ALL THE\n KIZOMBA AND SEMBA goodness!\n \n \n For the first time to Australian shores we are happy to have Sanjay, the\n Indian Magic, at AWAKE 2025.\n \n \n We are excited to welcome Fanio to AWAKE for the first time. Another\n rising star in the world of Semba & Kizomba!\n \n \n He kept us dancing till the early hours last year and he will be doing\n it again at AWAKE Festival 2025.\n \n \n Music is what makes us tick! And that's why we are bringing back DJ\n extraodinaire- DJ Guelas!\n \n
\n );\n };\n \n function ArtistProfile({\n profilePic,\n artistName,\n artistDetails,\n children,\n youtubeUrl,\n }) {\n const [showModal, setShowModal] = useState(false);\n \n const toggleModal = () => {\n setShowModal(!showModal);\n };\n \n return (\n
\n {profilePic}\n
\n
{artistName}
\n

{children}

\n \n
\n \n \n
\n
{artistName}
\n {/* Embed YouTube video */}\n
\n \n
\n
\n

{artistDetails}

\n
\n
\n
\n
\n );\n }","/* eslint-disable no-var, prefer-template */\nvar uppercasePattern = /[A-Z]/g\nvar msPattern = /^ms-/\nvar cache = {}\n\nfunction toHyphenLower(match) {\n return '-' + match.toLowerCase()\n}\n\nfunction hyphenateStyleName(name) {\n if (cache.hasOwnProperty(name)) {\n return cache[name]\n }\n\n var hName = name.replace(uppercasePattern, toHyphenLower)\n return (cache[name] = msPattern.test(hName) ? '-' + hName : hName)\n}\n\nexport default hyphenateStyleName\n","export type validObjectValue = Record | null | undefined;\n\nexport default function shallowEqualObjects(\n objA: validObjectValue,\n objB: validObjectValue\n): boolean {\n if (objA === objB) {\n return true;\n }\n\n if (!objA || !objB) {\n return false;\n }\n\n const aKeys = Object.keys(objA);\n const bKeys = Object.keys(objB);\n const len = aKeys.length;\n\n if (bKeys.length !== len) {\n return false;\n }\n\n for (let i = 0; i < len; i++) {\n const key = aKeys[i];\n\n if (\n objA[key] !== objB[key] ||\n !Object.prototype.hasOwnProperty.call(objB, key)\n ) {\n return false;\n }\n }\n\n return true;\n}\n","import PropTypes from 'prop-types'\n\nconst stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n\n// media types\nconst types = {\n all: PropTypes.bool,\n grid: PropTypes.bool,\n aural: PropTypes.bool,\n braille: PropTypes.bool,\n handheld: PropTypes.bool,\n print: PropTypes.bool,\n projection: PropTypes.bool,\n screen: PropTypes.bool,\n tty: PropTypes.bool,\n tv: PropTypes.bool,\n embossed: PropTypes.bool\n}\n\n// properties that match media queries\nconst matchers = {\n orientation: PropTypes.oneOf(['portrait', 'landscape']),\n\n scan: PropTypes.oneOf(['progressive', 'interlace']),\n\n aspectRatio: PropTypes.string,\n deviceAspectRatio: PropTypes.string,\n\n height: stringOrNumber,\n deviceHeight: stringOrNumber,\n\n width: stringOrNumber,\n deviceWidth: stringOrNumber,\n\n color: PropTypes.bool,\n\n colorIndex: PropTypes.bool,\n\n monochrome: PropTypes.bool,\n resolution: stringOrNumber,\n type: Object.keys(types)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst { type, ...featureMatchers } = matchers\n\n// media features\nconst features = {\n minAspectRatio: PropTypes.string,\n maxAspectRatio: PropTypes.string,\n minDeviceAspectRatio: PropTypes.string,\n maxDeviceAspectRatio: PropTypes.string,\n\n minHeight: stringOrNumber,\n maxHeight: stringOrNumber,\n minDeviceHeight: stringOrNumber,\n maxDeviceHeight: stringOrNumber,\n\n minWidth: stringOrNumber,\n maxWidth: stringOrNumber,\n minDeviceWidth: stringOrNumber,\n maxDeviceWidth: stringOrNumber,\n\n minColor: PropTypes.number,\n maxColor: PropTypes.number,\n\n minColorIndex: PropTypes.number,\n maxColorIndex: PropTypes.number,\n\n minMonochrome: PropTypes.number,\n maxMonochrome: PropTypes.number,\n\n minResolution: stringOrNumber,\n maxResolution: stringOrNumber,\n\n ...featureMatchers\n}\n\nconst all = { ...types, ...features }\n\nexport default {\n all: all,\n types: types,\n matchers: matchers,\n features: features\n}\n","import hyphenate from 'hyphenate-style-name'\nimport mq from './mediaQuery'\nimport { MediaQueryAllQueryable } from './types'\n\nconst negate = (cond: string) => `not ${cond}`\n\nconst keyVal = (k: string, v: unknown): string => {\n const realKey = hyphenate(k)\n\n // px shorthand\n if (typeof v === 'number') {\n v = `${v}px`\n }\n if (v === true) {\n return realKey\n }\n if (v === false) {\n return negate(realKey)\n }\n return `(${realKey}: ${v})`\n}\n\nconst join = (conds: string[]): string => conds.join(' and ')\n\nconst toQuery = (obj: Partial): string => {\n const rules: string[] = []\n Object.keys(mq.all).forEach((k) => {\n const v = obj[k as keyof MediaQueryAllQueryable]\n if (v != null) {\n rules.push(keyVal(k, v))\n }\n })\n return join(rules)\n}\n\nexport default toQuery\n","import { createContext } from 'react'\nimport { MediaQueryAllQueryable } from './types'\n\nconst Context = createContext | undefined>(\n undefined\n)\n\nexport default Context\n","import { useRef, useEffect, useContext, useState } from 'react'\nimport matchMedia from 'matchmediaquery'\nimport hyphenate from 'hyphenate-style-name'\nimport { shallowEqualObjects } from 'shallow-equal'\nimport toQuery from './toQuery'\nimport Context from './Context'\nimport { MediaQueryAllQueryable, MediaQueryMatchers } from './types'\n\ntype MediaQuerySettings = Partial\ntype HyphenateKeyTypes = MediaQueryMatchers | MediaQueryAllQueryable\n\nconst makeQuery = (settings: MediaQuerySettings) =>\n settings.query || toQuery(settings)\n\nconst hyphenateKeys = (obj?: HyphenateKeyTypes) => {\n type K = keyof HyphenateKeyTypes\n\n if (!obj) return undefined\n const keys = Object.keys(obj) as K[]\n\n return keys.reduce(\n (result, key) => {\n result[hyphenate(key)] = obj[key]\n return result\n },\n {} as Record\n )\n}\n\nconst useIsUpdate = () => {\n const ref = useRef(false)\n\n useEffect(() => {\n ref.current = true\n }, [])\n\n return ref.current\n}\n\nconst useDevice = (\n deviceFromProps?: MediaQueryMatchers\n): Partial | undefined => {\n const deviceFromContext = useContext(Context)\n const getDevice = () =>\n hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext)\n const [device, setDevice] = useState(getDevice)\n\n useEffect(() => {\n const newDevice = getDevice()\n if (!shallowEqualObjects(device, newDevice)) {\n setDevice(newDevice)\n }\n }, [deviceFromProps, deviceFromContext])\n\n return device\n}\n\nconst useQuery = (settings: MediaQuerySettings) => {\n const getQuery = () => makeQuery(settings)\n const [query, setQuery] = useState(getQuery)\n\n useEffect(() => {\n const newQuery = getQuery()\n if (query !== newQuery) {\n setQuery(newQuery)\n }\n }, [settings])\n\n return query\n}\n\nconst useMatchMedia = (query: string, device?: MediaQueryMatchers) => {\n const getMatchMedia = () => matchMedia(query, device || {}, !!device)\n const [mq, setMq] = useState(getMatchMedia)\n const isUpdate = useIsUpdate()\n\n useEffect(() => {\n if (isUpdate) {\n // skip on mounting, it has already been set\n const newMq = getMatchMedia()\n setMq(newMq)\n\n return () => {\n if (newMq) {\n newMq.dispose()\n }\n }\n }\n }, [query, device])\n\n return mq\n}\n\nconst useMatches = (mediaQuery: MediaQueryList): boolean => {\n const [matches, setMatches] = useState(mediaQuery.matches)\n\n useEffect(() => {\n const updateMatches = (ev: MediaQueryListEvent) => {\n setMatches(ev.matches)\n }\n mediaQuery.addListener(updateMatches)\n setMatches(mediaQuery.matches)\n\n return () => {\n mediaQuery.removeListener(updateMatches)\n }\n }, [mediaQuery])\n\n return matches\n}\n\nconst useMediaQuery = (\n settings: MediaQuerySettings,\n device?: MediaQueryMatchers,\n onChange?: (_: boolean) => void\n) => {\n const deviceSettings = useDevice(device)\n const query = useQuery(settings)\n if (!query) throw new Error('Invalid or missing MediaQuery!')\n const mq = useMatchMedia(query, deviceSettings)\n const matches = useMatches(mq as unknown as MediaQueryList)\n const isUpdate = useIsUpdate()\n\n useEffect(() => {\n if (isUpdate && onChange) {\n onChange(matches)\n }\n }, [matches])\n\n useEffect(\n () => () => {\n if (mq) {\n mq.dispose()\n }\n },\n []\n )\n\n return matches\n}\n\nexport default useMediaQuery\n","import { Rottnest } from \"./Rottnest\";\nimport { Hotel } from \"./HotelInformation\";\nimport { OurLineup } from \"./Lineup\";\nimport EmblaCarousel from \"./EmblaCarousel\";\nimport { useMediaQuery } from \"react-responsive\";\nimport \"./Lineup.css\";\n\nexport function MainPageBody() {\n return (\n
\n \n \n \n \n \n \n
\n );\n}\n\nfunction BookNowButton() {\n return (\n \n );\n}\n\nfunction Schedule() {\n const isMobile = useMediaQuery({ maxWidth: 768 });\n\n return (\n
\n
AWAKE Workshop Schedule
\n {isMobile ? (\n // Show carousel on mobile\n
\n \n
\n ) : (\n // Show the full schedule image on larger screens\n \n )}\n
\n );\n}\n\nfunction CodeOfConduct() {\n return (\n
\n
AWAKE Code of Conduct
\n
\n At AWAKE, we are committed to providing a safe and inclusive environment\n for all our guests. To ensure this, we expect all artists and attendees\n to adhere to the AWAKE Code of Conduct, which can be found below.\n
\n \n \n \n
\n );\n}\n","import React from \"react\";\nimport \"./MainHeader.css\";\n\nexport function MainHeader() {\n return (\n
\n
\n \n \n \n
\n \"Logo\"\n \"Artists\"\n

MARCH 14-18 2025

\n
\n );\n}\n","import React from \"react\";\nimport \"./App.css\";\nimport { Footer } from \"./Footer\";\nimport { BubbleMenu } from \"./BubbleMenu\";\nimport { MainPageBody } from \"./MainPageBody\";\nimport { MainHeader } from \"./MainHeader\";\n\nfunction App() {\n return (\n
\n \n \n \n
\n
\n );\n}\n\nexport default App;\n","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport App from \"./App\";\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\nroot.render(\n \n \n \n);\n"],"names":["exports","mediaQuery","values","parseQuery","some","query","inverse","typeMatch","type","expressionsMatch","expressions","every","expression","feature","modifier","expValue","value","toLowerCase","toPx","toDpi","toDecimal","parseInt","RE_MEDIA_QUERY","RE_MQ_EXPRESSION","RE_MQ_FEATURE","RE_LENGTH_UNIT","RE_RESOLUTION_UNIT","split","map","captures","trim","match","parsed","ratio","numbers","decimal","Number","resolution","parseFloat","String","length","glob","current_event","stop","version","has","separator","comaseparator","numsort","a","b","events","n","firstDefined","i","ii","this","lastDefined","objtos","Object","prototype","toString","Str","isArray","Array","ar","call","eve","name","scope","l","oldstop","args","slice","arguments","listeners","z","indexed","queue","out","ce","push","zIndex","sort","apply","_events","item","items","k","j","jj","nes","names","e","es","concat","f","sep","replace","RegExp","on","exist","hasOwnProperty","event","attrs","nt","subname","cur","join","test","nts","off","unbind","key","splice","inodes","unshift","funcs","prune","once","f2","module","window","reactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","defineProperty","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","Symbol","for","c","d","g","h","m","p","q","r","t","v","w","x","y","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","staticMatch","dynamicMatch","matchMedia","Mql","forceStatic","mql","self","update","evt","matches","media","addListener","listener","removeListener","dispose","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","slide","stack","elastic","bubble","pushRotate","scaleDown","scaleRotate","fallDown","reveal","_extends","assign","target","source","_createClass","defineProperties","enumerable","configurable","writable","Constructor","protoProps","staticProps","_interopRequireDefault","obj","__esModule","_react","_react2","_propTypes2","BurgerIcon","_Component","instance","TypeError","_classCallCheck","_x","_x2","_x3","_again","property","receiver","Function","desc","undefined","getter","get","parent","_get","state","hover","subClass","superClass","create","constructor","setPrototypeOf","__proto__","_inherits","index","position","height","left","right","top","opacity","styles","bmBurgerBarsHover","_this","icon","customIcon","extraProps","className","style","width","bmIcon","cloneElement","createElement","bar","barClassName","getLineStyle","bmBurgerBars","bmBurgerButton","id","onClick","onMouseOver","setState","onIconHoverChange","isMouseIn","onMouseOut","margin","padding","border","fontSize","background","cursor","Component","CrossIcon","transform","bmCross","crossClassName","getCrossStyle","bmCrossButton","isOpen","tabIndex","overlay","MozTransform","MsTransform","OTransform","WebkitTransform","transition","menuWrap","menu","boxSizing","overflow","itemList","display","focusOnFirstMenuItem","firstItem","from","document","getElementsByClassName","shift","focus","focusOnLastMenuItem","lastItem","pop","focusOnCrossButton","crossButton","getElementById","focusOnMenuItem","siblingType","activeElement","includes","sibling","focusOnMenuButton","menuButton","focusOnNextMenuItem","focusOnPreviousMenuItem","Snap","pxToNum","val","_slicedToArray","arr","iterator","_arr","_n","_d","_e","_s","_i","next","done","sliceIterator","_helpersBaseStyles2","_helpersDom","_componentsBurgerIcon2","_componentsCrossIcon2","ARROW_DOWN","ARROW_UP","Menu","_React$useState","useState","_React$useState2","setIsOpen","timeoutId","useRef","toggleOptions","prevIsOpenProp","ref","useEffect","current","usePrevious","toggleMenu","options","applyWrapperStyles","setTimeout","open","close","onClose","getStyle","getStyles","el","inline","charAt","toUpperCase","output","noTransition","handleExternalWrapper","wrapperStyles","set","wrapper","builtStyles","prop","applyOverflow","htmlClassName","querySelector","bodyClassName","console","error","applyClass","classList","pageWrap","pageWrapId","outerContainer","outerContainerId","removeAttribute","setAttribute","clearCurrentTimeout","clearTimeout","onKeyDownOpen","disableCloseOnEsc","onKeyDownClosed","focusOnLastItem","noStateChange","svg","morphShape","path","lib","select","animate","attr","pathInitial","_toggleOptions$current","onStateChange","disableAutoFocus","blur","body","defaultOnKeyDown","onKeyDown","customOnKeyDown","addEventListener","removeEventListener","noOverlay","overlayClassName","disableOverlayClick","customBurgerIcon","onOpen","burgerButtonClassName","burgerBarClassName","onIconStateChange","morphShapeClassName","viewBox","preserveAspectRatio","menuClassName","itemListElement","itemListClassName","Children","children","itemClassName","filter","customCrossIcon","crossButtonClassName","_helpersSnapsvgImporter2","_menuFactory2","_helpersUtils","pathOpen","pos","steps","stepsTotal","mina","nextStep","easein","finalWidth","nthChild","closeButton","easeinout","whiteSpace","_menuFactory","perspective","perspectiveOrigin","transformOrigin","transformStyle","visibility","burgerIcon","aa","ca","encodeURIComponent","da","Set","ea","fa","ha","add","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","forEach","ra","sa","ta","pa","isNaN","qa","oa","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Reflect","construct","Pa","tag","Qa","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","order","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","indexOf","setProperty","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","fromCharCode","code","repeat","locale","which","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","password","range","search","tel","text","time","url","week","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","D","of","pf","qf","rf","random","sf","bind","capture","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","callback","dh","K","eh","fh","gh","hh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","L","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","M","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Q","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","S","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","size","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","W","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","ceil","nk","ok","pk","Y","Z","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","pl","ql","sl","rl","unmount","unstable_scheduleHydration","querySelectorAll","JSON","stringify","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsx","jsxs","forceUpdate","escape","_status","_result","default","count","toArray","only","PureComponent","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","requestID","animations","requestAnimFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","getTime","idgen","idprefix","timer","sta","s","ds","dur","speed","spd","duration","stopit","pause","pdif","resume","frame","res","easing","len","anim","linear","status","getById","easeout","pow","sqrt","abs","backin","backout","sin","PI","bounce","root","wrap","doc","Paper","_","win","toFloat","toInt","math","mmax","max","mmin","objectToString","round","colourRegExp","commaSpaces","hsrg","hs","pathCommand","tCommand","pathValues","ID","xlink","xmlns","hub","$","createComment","getAttributeNS","getAttribute","o","isFinite","cacher","postprocessor","newf","arg","repush","rad","deg","format","tokenRegex","objNotationRegex","str","all","quote","quotedName","isFunc","replacer","clone","angle","tan","cos","asin","num","acos","atan","atan2","x1","y1","x2","y2","x3","y3","len2","closestPoint","distance2","dx","dy","best","bestLength","scan","scanDistance","pathNode","pathLength","getTotalLength","precision","pathSegList","numberOfItems","bestDistance","scanLength","getPointAtLength","before","after","beforeLength","afterLength","beforeDistance","afterDistance","distance","snapTo","tolerance","rem","getRGB","colour","hex","rgbtoString","toHex","red","green","blue","rgb","hsb2rgb","hsl2rgb","hsb","hsl","toFixed","getElementsByTagName","getComputedStyle","getPropertyValue","hsbtoString","hsltoString","prepareRGB","clr","packageRGB","rgb2hsl","rgb2hsb","parsePathString","pathString","pth","paramCounts","params","parseTransformString","TString","svgTransform2string","tstr","rgTransform","transform2matrix","bbox","tdata","Matrix","tlen","command","absolute","inver","invert","translate","rotate","scale","_unit2px","getSomeSVG","mgr","fill","getW","getBBox","getH","nam","ownerSVGElement","add2group","list","childNodes","snap","paper","anims","mask","pattern","method","frag","make","defs","proto","dom","contentDocument","jsonFiller","getSomeDefs","pdefs","selectAll","nodelist","setInterval","attributes","json","att","parse","createDocumentFragment","full","div","fragment","toJSON","css","lastIndexOf","letter","cssAttr","ajax","postData","req","XMLHttpRequest","setRequestHeader","onreadystatechange","readyState","send","load","responseText","getElementByPoint","canvas","elementFromPoint","opera","so","elem","box","getBoundingClientRect","docElem","clientTop","clientLeft","pageYOffset","pageXOffset","getOffset","sr","createSVGRect","hits","getIntersectionList","plugin","elproto","unit2px","isWithoutTransform","getClientRects","removed","localMatrix","original","pathfinder","deflt","bboxwt","realPath","matrix","propString","extractTransform","doReturn","papa","global","getCTM","local","ms","localString","toTransformString","globalMatrix","totalMatrix","diffMatrix","total","gradientTransform","patternTransform","append","it","appendTo","prepend","first","prependTo","insertAfter","remove","asPX","use","cloneNode","els","ids","uses","urltest","linktest","oldid","old","fs","fixids","toDefs","toPattern","patternUnits","marker","refX","refY","cx","cy","markerWidth","markerHeight","orient","eldata","chld","removeData","outerSVG","innerSVG","toDataURL","btoa","contents","unescape","matrixproto","norm","normalize","mag","aNew","bNew","multLeft","cNew","eNew","skewX","skew","skewY","determinant","row","scalex","shear","scaley","isSimple","isSuperSimple","noRotation","shorter","clipIt","reURLValue","URL","fillStroke","grad","gradient","deurl","clip","gradrg","setFontSize","textExtract","chi","getFontSize","tokens","stops","seed","step","toAbsolute","txt","baseVal","rx","ry","tp","textPath","tuned","tuner","chunk","setter","internal","rgNotSpace","addClass","clazz","finalValue","classes","curClasses","removeClass","hasClass","toggleClass","flag","operators","reUnit","reAddon","getNumber","getUnit","unit","plus","evnt","atr","aUnit","op","bplus","to","rect","circle","preload","onerror","cssText","onload","image","offsetWidth","offsetHeight","ellipse","group","vbx","vby","vbw","vbh","ptrn","vx","vy","vw","line","polyline","points","polygon","Gstops","GaddStop","inserted","GgetBBox","GsetStops","addStop","gradientLinear","setStops","gradientRadial","fx","fy","gradientUnits","clear","p2s","paths","ps","sleep","r1","r2","r0","rectPath","pathClone","pathArray","getPointAtSegmentLength","p1x","p1y","c1x","c1y","c2x","c2y","p2x","p2y","bezlen","findDotsAtSegment","x4","y4","t2","getTotLen","getLengthFactory","istotal","subpath","onlystart","point","sp","subpaths","path2curve","getSubpathsAtLength","t1","t13","t12","t3","mx","my","nx","ny","alpha","bezierBBox","curveDim","isPointInsideBBox","isBBoxIntersect","bbox1","bbox2","base3","p1","p2","p3","p4","z2","Tvalues","Cvalues","sum","ct","xbase","ybase","comb","intersect","denominator","px","py","px2","py2","interHelper","bez1","bez2","justCount","n1","n2","dots1","dots2","xy","di1","dj1","interPathHelper","path1","path2","x1m","y1m","x2m","y2m","intr","segment1","segment2","pathBBox","dim","xmin","ymin","ellipsePath","getPath","pathToAbsolute","pa0","crz","dots","catmullRom2bezier","l2c","q2c","ax","ay","_13","_23","a2c","large_arc_flag","sweep_flag","recursive","_120","f1","rx2","ry2","f2old","x2old","y2old","c1","s1","c2","s2","hx","hy","m1","m2","m3","m4","newres","x0","y0","b2ac","sqrtb2ac","tvalues","bounds","mt","jlen","curve","bx","by","qx","qy","attrs2","processPath","pcom","fixArc","pp","pcoms1","pcoms2","fixM","a1","a2","pfirst","seg","seg2","seglen","seg2len","crp","iLen","getSubpath","closest","inside","found","intersection","intersectionNumber","isPointInside","toRelative","lowerCase","rel","toCubic","pathi","bindings","setproto","thisArg","Animation","each","begin","handler","callbacker","aname","unbound","insertion","todel","arglen","exclude","getEmpty","getViewBox","getColour","path2array","isNumeric","stroke","equal","tt1","tt2","maxlength","equaliseTransform","arr1","arr2","bUnit","supportsTouch","touchMap","mousedown","mousemove","mouseup","getScroll","preventTouch","originalEvent","stopTouch","addEvent","fn","realName","scrollY","scrollX","olde","drag","dragMove","dragi","touch","identifier","_drag","move_scope","dragUp","unmousemove","unmouseup","end_scope","start_scope","eventName","f_in","f_out","scope_in","scope_out","mouseover","mouseout","unhover","unmouseover","unmouseout","draggable","onmove","onstart","onend","origTransform","init","undrag","unmousedown","pproto","rgurl","filstr","filterUnits","def","shadow","grayscale","amount","sepia","saturate","hueRotate","amount2","brightness","contrast","firstLetter","getAlign","way","align","inAnim","_attrs","_callback","curStatus","eq","fkeys","tkeys","saveColor","colors","A100","A200","A400","A700","mui","flat","pink","purple","deeppurple","indigo","lightblue","cyan","teal","lightgreen","lime","yellow","amber","orange","deeporange","brown","grey","bluegrey","turquoise","greensea","sunflower","emerland","nephritis","carrot","pumpkin","peterriver","belizehole","alizarin","pomegranate","amethyst","wisteria","clouds","silver","wetasphalt","midnightblue","concrete","asbestos","importMUIColors","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","leafPrototypes","getProto","ns","definition","toStringTag","_typeof","_regeneratorRuntime","asyncIterator","define","Generator","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","mark","awrap","async","reverse","prev","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","info","_asyncToGenerator","_toPropertyKey","hint","prim","toPrimitive","_defineProperty","ownKeys","_objectSpread2","getOwnPropertyDescriptors","_arrayLikeToArray","_unsupportedIterableToArray","minLen","MotionConfigContext","transformPagePoint","isStatic","reducedMotion","MotionContext","PresenceContext","isBrowser","useIsomorphicLayoutEffect","LazyContext","strict","isRefObject","isVariantLabel","isAnimationControls","variantPriorityOrder","variantProps","isControllingVariants","isVariantNode","Boolean","variants","useCreateMotionContext","_getCurrentTreeVarian","initial","inherit","getCurrentTreeVariants","variantLabelsAsDependency","featureProps","exit","tap","pan","inView","layout","featureDefinitions","_loop","isEnabled","LayoutGroupContext","SwitchLayoutGroupContext","motionComponentSymbol","createMotionComponent","_ref","preloadedFeatures","createVisualElement","useRender","useVisualState","features","_objectSpread","loadFeatures","ForwardRefComponent","externalRef","MeasureLayout","configAndProps","layoutId","useLayoutId","visualState","visualElement","lazyContext","presenceContext","reducedMotionConfig","visualElementRef","renderer","blockInitialAnimation","canHandoff","HandoffAppearAnimations","animationState","animateChanges","updateFeatures","useVisualElement","initialLayoutGroupConfig","isStrict","React","mount","useMotionRef","_ref2","layoutGroupId","createMotionProxy","createConfig","custom","Proxy","componentCache","_target","lowercaseSVGElements","isSVGComponent","scaleCorrectors","transformPropOrder","transformProps","isForcedMotionValue","startsWith","isMotionValue","getVelocity","translateAlias","transformPerspective","numTransforms","checkStringStartsWith","token","isCSSVariableName","isCSSVariableToken","getValueAsType","clamp","sanitize","floatRegex","colorRegex","singleColorRegex","isString","createUnitType","endsWith","degrees","percent","progressPercentage","int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxWidth","maxHeight","bottom","paddingTop","paddingRight","paddingBottom","paddingLeft","marginTop","marginRight","marginBottom","marginLeft","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","translateX","translateY","translateZ","originX","originY","originZ","numOctaves","buildHTMLStyles","latestValues","transformTemplate","vars","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","transformIsDefault","_ref$enableHardwareAc","enableHardwareAcceleration","_ref$allowTransformNo","allowTransformNone","transformString","transformName","buildTransform","_transformOrigin$orig","_transformOrigin$orig2","_transformOrigin$orig3","createHtmlRenderState","copyRawValuesOnly","useStyle","useInitialMotionValues","transformValues","useHTMLProps","htmlProps","dragListener","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","onTap","onTapStart","whileTap","validMotionProps","isValidMotionProp","isValidProp","shouldForward","_a","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","calcOrigin","origin","dashKeys","camelKeys","buildSVGAttrs","isSVGTag","attrX","attrY","attrScale","_ref$pathSpacing","pathSpacing","_ref$pathOffset","pathOffset","_objectWithoutProperties","_excluded","dimensions","pxOriginX","pxOriginY","calcSVGTransformOrigin","spacing","useDashCase","buildSVGPath","createSvgRenderState","useSVGProps","_isStatic","visualProps","rawStyles","createUseRender","forwardMotionProps","filteredProps","isDom","filterProps","elementProps","renderedChildren","camelToDash","renderHTML","styleProp","projection","getProjectionStyles","camelCaseAttributes","renderSVG","renderState","_styleProp","scrapeMotionValuesFromProps","prevProps","newValues","scrapeMotionValuesFromProps$1","resolveVariantFromProps","currentValues","currentVelocity","useConstant","isKeyframesTarget","isCustomValue","mix","toValue","resolveFinalValueInKeyframes","resolveMotionValue","unwrappedValue","makeUseVisualState","config","createRenderState","onMount","makeLatestValues","makeState","scrapeMotionValues","motionValues","isControllingVariants$1","isVariantNode$1","isInitialAnimationBlocked","variantToSet","resolved","transitionEnd","valueTarget","noop","_defineProperties","Queue","scheduled","process","stepsOrder","_createRenderBatcher","scheduleNextBatch","allowKeepAlive","runNextFrame","useDefaultElapsed","delta","timestamp","isProcessing","reduce","acc","thisFrame","nextFrame","numToRun","flushNextFrame","toKeepAlive","schedule","addToCurrentFrame","cancel","frameData","createRenderStep","processStep","stepId","processBatch","keepAlive","immediate","createRenderBatcher","cancelFrame","svgMotionConfig","read","htmlMotionConfig","_setPrototypeOf","_getPrototypeOf","_assertThisInitialized","ReferenceError","_createSuper","Derived","hasNativeReflectConstruct","sham","result","Super","NewTarget","addDomEvent","isPrimaryPointer","extractEventInfo","pointType","addPointerInfo","addPointerEvent","combineFunctions","pipe","_len","transformers","_key","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","Feature","addHoverEvent","isActive","callbackName","getProps","whileHover","setActive","HoverGesture","_Feature","_super","FocusGesture","isFocusVisible","_this2","onFocus","onBlur","isNodeOrChild","parentElement","fireSyntheticPointerEvent","syntheticPointerEvent","PointerEvent","PressGesture","removeStartListeners","removeEndListeners","removeAccessibleListeners","startPointerPress","startEvent","startInfo","isPressing","removePointerUpListener","endEvent","endInfo","checkPressEnd","_this$node$getProps","onTapCancel","removePointerCancelListener","cancelEvent","cancelInfo","cancelPress","startPress","startAccessiblePress","removeKeydownListener","keydownEvent","keyupEvent","removeBlurListener","_this$node$getProps3","removePointerListener","removeFocusListener","observerCallbacks","observers","fireObserverCallback","entry","fireAllObserverCallbacks","entries","observeIntersection","rootInteresectionObserver","lookupRoot","rootObservers","IntersectionObserver","initIntersectionObserver","observe","unobserve","thresholdNames","InViewFeature","hasEnteredView","isInView","_this$node$getProps$v","viewport","rootMargin","_viewport$amount","threshold","isIntersecting","_this2$node$getProps","onViewportEnter","onViewportLeave","startObserver","_this$node","hasOptionsChanged","_ref$viewport","_ref2$viewport","prevViewport","hasViewportOptionChanged","gestureAnimations","iter","shallowCompare","prevLength","resolveVariant","getCurrent","velocity","optimizedAppearDataAttribute","warning","invariant","secondsToMilliseconds","seconds","millisecondsToSeconds","milliseconds","instantAnimationState","isBezierDefinition","isWaapiSupportedEasing","supportedWaapiEasing","cubicBezierAsString","ease","easeIn","easeOut","easeInOut","circIn","circOut","backIn","backOut","mapEasingToNativeEasing","calcBezier","subdivisionPrecision","subdivisionMaxIterations","cubicBezier","mX1","mY1","mX2","mY2","getTForX","aX","lowerBound","upperBound","currentX","currentT","binarySubdivide","isEasingArray","mirrorEasing","reverseEasing","circInOut","backInOut","easingLookup","anticipate","easingDefinitionToFunction","_definition","isColorString","testProp","splitColor","aName","bName","cName","_v$match2","rgbUnit","clampRgbUnit","rgba","_ref$alpha","alpha$1","hsla","hue","saturation","lightness","progress","hueToRgb","mixLinearColor","fromExpo","colorTypes","asRGBA","find","model","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","cssVarTokeniser","regex","countKey","colorTokeniser","numberTokeniser","tokenise","_info$values","tokenised","_toConsumableArray","analyseComplexValue","originalValue","numVars","numColors","numNumbers","parseComplexValue","createTransformer","_analyseComplexValue","numValues","convertNumbersToZero","complex","_b","getAnimatableNone","transformer","mixImmediate","getMixer","mixComplex","mixArray","blendValue","fromThis","mixObject","template","originStats","targetStats","toFromDifference","mixNumber","createMixers","customMixer","mixers","mixerFactory","numMixers","mixer","easingFunction","interpolate","_ref$clamp","isClamp","inputLength","interpolator","progressInRange","defaultOffset","remaining","offsetProgress","fillOffset","keyframes","_ref$duration","keyframeValues","times","_ref$ease","easingFunctions","absoluteTimes","convertOffsetToTimes","mapTimeToKeyframe","calculatedDuration","velocityPerSecond","frameDuration","velocitySampleDuration","calcGeneratorVelocity","resolveValue","prevT","safeMin","minDuration","maxDuration","minDamping","maxDamping","findSpring","envelope","derivative","_ref$bounce","_ref$velocity","_ref$mass","mass","dampingRatio","undampedFreq","exponentialDecay","calcAngularFreq","exp","initialGuess","rootIterations","approximateRoot","stiffness","damping","durationKeys","physicsKeys","isSpringType","spring","resolveSpring","restDelta","restSpeed","_getSpringOptions","springOptions","isResolvedFromDuration","derived","getSpringOptions","initialVelocity","initialDelta","undampedAngularFreq","isGranularScale","angularFreq","dampedAngularFreq","freqForT","sinh","cosh","isBelowVelocityThreshold","isBelowDisplacementThreshold","inertia","_ref$power","power","_ref$timeConstant","timeConstant","_ref$bounceDamping","bounceDamping","_ref$bounceStiffness","bounceStiffness","modifyTarget","_ref$restDelta","nearestBoundary","amplitude","ideal","timeReachedBoundary","spring$1","calcDelta","calcLatest","applyFriction","latest","checkCatchBoundary","hasUpdatedFrame","frameloopDriver","passTimestamp","maxGeneratorDuration","calcGeneratorDuration","generator","types","decay","tween","animateValue","resolveFinishedPromise","currentFinishedPromise","animationDriver","_ref$autoplay","autoplay","_ref$delay","_ref$driver","driver","keyframes$1","_ref$type","_ref$repeat","_ref$repeatDelay","repeatDelay","_ref$repeatType","repeatType","onPlay","onStop","onComplete","onUpdate","hasStopped","updateFinishedPromise","mapNumbersToKeyframes","generatorFactory","mirroredGenerator","playState","holdTime","cancelTime","resolvedDuration","totalDuration","currentTime","tick","timeWithoutDelay","isInDelayPhase","elapsed","frameGenerator","currentIteration","iterationProgress","iterationIsOdd","isAnimationFinished","stopAnimationDriver","play","controls","newTime","newSpeed","sample","supportsWaapi","acceleratedValues","createAcceleratedAnimation","valueName","_options$duration","requiresPregeneratedKeyframes","sampleAnimation","pregeneratedKeyframes","keyframeOptions","iterations","direction","animateStyle","owner","syncStart","timeline","cancelAnimation","safeCancel","onfinish","getFinalKeyframe","attachTimeline","playbackRate","setWithVelocity","underDampedSpring","keyframesTransition","getDefaultTransition","valueKey","isAnimatable","maxDefaults","applyDefaultFilter","_v$slice$split2","functionRegex","functions","defaultValueTypes","backgroundColor","outlineColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","defaultValueType","isZeroValueString","isNone","getValueTransition","animateMotionValue","valueTransition","_transition$elapsed","isTargetAnimatable","defaultOrigin","animatableTemplateValue","noneKeyframeIndexes","getKeyframes","originKeyframe","targetKeyframe","isOriginAnimatable","when","delayChildren","staggerChildren","staggerDirection","isTransitionDefined","createInstantAnimation","HTMLElement","acceleratedAnimation","isWillChangeMotionValue","isNumericalString","addUniqueItem","removeItem","SubscriptionManager","subscriptions","numSubscriptions","collectMotionValues","MotionValue","timeDelta","lastUpdated","canTrackVelocity","updateAndNotify","postRender","scheduleVelocityCheck","change","notify","velocityChange","renderRequest","velocityCheck","hasAnimated","subscription","unsubscribe","getSize","eventManagers","passiveEffect","stopPassiveEffect","startAnimation","_this3","animationStart","animationComplete","clearAnimation","animationCancel","clearListeners","motionValue","testValueType","dimensionValueTypes","findDimensionValueType","valueTypes","setMotionValue","hasValue","addValue","setTarget","makeTargetAnimatable","_ref$transitionEnd","getOriginFromTransition","animateTarget","_ref2$delay","transitionOverride","_visualElement$makeTa","_visualElement$makeTa2","willChange","animationTypeState","getState","protectedKeys","needsAnimating","shouldBlock","shouldBlockAnimation","appearId","shouldReduceMotion","animateVariant","variant","_ref$transition","getAnimation","getChildAnimations","variantChildren","forwardDelay","_transition","_transition$delayChil","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","animateChildren","_ref3","sortNodePosition","reversePriorityOrder","numAnimationTypes","animateList","resolvedDefinition","animateVisualElement","createAnimationState","createTypeState","whileInView","whileDrag","whileFocus","isInitialRender","buildResolvedTypeValues","changedActiveType","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","variantDidChange","checkVariantsDidChange","shouldAnimateType","definitionList","resolvedValues","_typeState$prevResolv","prevResolvedValues","allKeys","markToAnimate","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","setAnimateFunction","makeAnimator","AnimationFeature","subscribe","updateAnimationControlsSubscription","ExitAnimationFeature","_this$node$presenceCo","isPresent","onExitComplete","prevIsPresent","prevPresenceContext","exitAnimation","register","PanSession","handlers","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","xDelta","yDelta","distance2D","_this$handlers","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","_this$handlers2","onEnd","onSessionEnd","panInfo","initialInfo","onSessionStart","removeListeners","subtractPoint","lastDevicePoint","startDevicePoint","timestampedPoint","lastPoint","calcLength","axis","isNear","maxDistance","calcAxisDelta","originPoint","calcBoxDelta","calcRelativeAxis","relative","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","defaultElastic","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","createDelta","createBox","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","has2DTranslate","is2DTranslate","scalePoint","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","snapToDefault","isInteger","translateAxis","transformAxis","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","transformBox","measureViewportBox","topLeft","bottomRight","transformBoxPoints","elementDragControls","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","originEvent","_ref$snapToCursor","snapToCursor","panSession","stopAnimation","_this$getProps","dragPropagation","onDragStart","resolveConstraints","isAnimationBlocked","getAxisMotionValue","measuredAxis","layoutBox","_this$getProps2","dragDirectionLock","onDirectionLock","onDrag","lockThreshold","getCurrentDirection","updateAxis","getTransformPagePoint","onDragEnd","_this$visualElement","_point","shouldDrag","axisValue","applyConstraints","_this$getProps6","dragConstraints","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","relativeConstraints","rebaseAxisConstraints","_this$getProps7","onMeasureDragConstraints","constraintsElement","constraintsBox","rootProjectionNode","viewportBox","scroll","measurePageBox","measuredConstraints","calcViewportConstraints","userConstraints","convertBoxToBoundingBox","_this$getProps8","dragMomentum","dragTransition","dragSnapToOrigin","onDragTransitionEnd","momentumAnimations","startAxisValueAnimation","_this4","dragKey","externalMotionValue","_this5","_projection$layout$la","_this6","_this$getProps9","boxProgress","sourceLength","targetLength","updateScroll","updateLayout","_this6$constraints$ax","_this7","stopPointerListener","_this7$getProps","_this7$getProps$dragL","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","scalePositionWithinConstraints","stopLayoutUpdateListener","hasLayoutChanged","_props$drag","_props$dragDirectionL","_props$dragPropagatio","_props$dragConstraint","_props$dragElastic","_props$dragMomentum","DragGesture","removeGroupControls","dragControls","addListeners","asyncHandler","PanGesture","removePointerDownListener","pointerDownEvent","session","createPanHandlers","onPanSessionStart","onPanStart","onPan","onPanEnd","onPointerDown","updateHandlers","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","pixelsToPercent","pixels","correctBorderRadius","correct","correctBoxShadow","treeScale","projectionDelta","xScale","yScale","averageScale","MeasureLayoutWithContext","_React__default$Compo","correctors","_this$props","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","didUpdate","safeToRemove","setOptions","_this$props2","layoutDependency","willUpdate","promote","relegate","getStack","members","currentAnimation","isLead","_this$props3","promoteContext","scheduleCheckAfterUnmount","deregister","React__default","_usePresence","usePresence","_usePresence2","applyTo","boxShadow","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","removeAxisTransforms","sourceAxis","removeAxisDelta","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEqualsRounded","NodeStack","scheduleRender","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","resumingFrom","buildProjectionTransform","latestTransform","xTranslate","yTranslate","elementScaleX","elementScaleY","compareByDepth","depth","FlatTree","isDirty","transformAxes","projectionFrameData","totalNodes","resolvedTargetDeltas","recalculatedProjection","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","ProjectionNode","animationId","isTreeAnimating","isProjectionDirty","isSharedProjectionDirty","isTransformDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","eventHandlers","hasTreeAnimated","updateScheduled","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","cleanDirtyNodes","MotionDebug","record","hasProjected","isVisible","animationProgress","sharedNodes","subscriptionManager","SVGElement","_this$options","cancelDelay","resizeUnblockUpdate","timeout","checkElapsed","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","_visualElement$getPro","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","layoutRoot","setAnimationOrigin","animationOptions","isUpdateBlocked","resetRotation","shouldNotifyListeners","startUpdate","_this$options2","getTransformTemplate","prevTransformTemplateValue","updateSnapshot","notifyListeners","unblockUpdate","clearMeasurements","clearIsLayoutDirty","resetTransformStyle","notifyLayoutUpdate","preRender","clearSnapshot","removeLeadSnapshots","measure","alwaysMeasureLayout","prevLayout","layoutCorrected","phase","needsMeasurement","layoutScroll","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","boxWithoutScroll","rootScroll","transformOnly","withTransforms","boxWithoutTransform","targetDelta","scheduleUpdateProjection","relativeParent","resolvedRelativeTargetAt","forceRecalculation","getLead","isShared","attemptToResolveRelativeTarget","_this$options3","getClosestProjectingParent","forceRelativeParentToResolveTarget","relativeTargetOrigin","targetWithTransforms","applyTransform","isProjecting","canSkip","_this$options4","pendingAnimation","prevTreeScaleX","prevTreeScaleY","treePath","isSharedTransition","treeLength","applyTreeDeltas","projectionDeltaWithTransform","prevProjectionTransform","projectionTransform","notifyAll","snapshotLatestValues","mixedValues","prevRelativeTarget","relativeLayout","isSharedLayoutAnimation","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","setTargetDelta","mixAxis","mixBox","follow","opacityExit","borderLabel","followRadius","leadRadius","mixValues","motionValue$1","animateSingleValue","completeAnimation","exitAnimationComplete","shouldAnimatePositionOnly","animationType","xLength","yLength","initialPromotionConfig","shouldPreserveFollowOpacity","hasRotate","resetValues","setStaticValue","pointerEvents","emptyStyles","valuesToRender","applyTransformsToTarget","_this$projectionDelta","_scaleCorrectors$key","corrected","hasListeners","_node$layout","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","removeLeadSnapshot","userAgentContains","userAgent","roundPoint","DocumentProjectionNode","HTMLProjectionNode","documentNode","splitCSSVariableRegex","maxDepth","getVariableValue","_parseCSSVariable","exec","_match","parseCSSVariable","_parseCSSVariable2","trimmed","resolveCSSVariables","_objectDestructuringEmpty","positionalKeys","isPositionalKey","isNumOrPxType","getPosFromMatrix","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","transformKeys","nonTranslationalTransformKeys","positionalValues","_ref3$paddingLeft","_ref3$paddingRight","_ref4","_ref5","_ref5$paddingTop","_ref5$paddingBottom","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","fromType","numKeyframes","fromIndex","removedTransforms","removeNonTranslationalTransform","jump","convertedTarget","changedKeys","originBbox","elementComputedStyle","targetBbox","convertChangedValueTypes","_ref12","_ref13","scrollTo","unitConversion","hasPositionalKey","prefersReducedMotion","hasReducedMotionListener","visualElementStore","featureNames","numFeatures","propEventHandlers","numVariantProps","VisualElement","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","baseTarget","initialValues","_this$scrapeMotionVal","initialMotionValues","_props","_prevProps","removeFromVariantTree","addVariantChild","bindToMotionValue","motionMediaQuery","setReducedMotionPreferences","initPrefersReducedMotion","valueIsTransform","removeOnChange","latestValue","removeOnRenderRequest","other","sortInstanceNodePosition","ProjectionNodeConstructor","renderedProps","_excluded2","_featureDefinitions$n","FeatureConstructor","MeasureLayoutComponent","build","measureInstanceViewportBox","canMutate","makeTargetAnimatableFromInstance","nextValue","prevValue","existingValue","getStaticValue","removeValue","updateMotionValuesFromProps","handleChildMotionValue","getClosestVariantNode","closestVariantNode","removeValueFromRenderState","getBaseTargetFromProps","readValueFromInstance","valueFromInitial","_this$events$eventNam","_key2","DOMVisualElement","_VisualElement","transitionOrigin","getOrigin","newValueKeys","numNewValues","targetValue","readValue","setBaseTarget","checkTargetForNewValues","parseDomVariant","HTMLVisualElement","_DOMVisualElement","defaultType","computedStyle","childSubscription","SVGVisualElement","createDomVisualElement","motion","_ref$forwardMotionPro","createDomMotionConfig","useIsMounted","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","PopChildMeasure","_React$Component","childRef","sizeRef","offsetTop","offsetLeft","PopChild","_size$current","motionPopId","head","sheet","insertRule","PresenceChild","presenceAffectsLayout","presenceChildren","newChildrenMap","childId","_step","_iterator","getChildKey","AnimatePresence","_ref$initial","exitBeforeEnter","_ref$presenceAffectsL","_ref$mode","forceRender","_useState2","forcedRenderCount","setForcedRenderCount","useForceUpdate","filteredChildren","filtered","onlyElements","childrenToRender","exitingChildren","presentChildren","allChildren","updateChildLookup","presentKeys","targetKeys","numPresent","insertionIndex","exitingComponent","removeIndex","presentChild","FormInput","placeholder","onChange","isMandatory","isSubmitAttempted","_jsx","FormTextarea","EmailPopupForm","setIsSubmitAttempted","_useState4","first_name","last_name","formData","setFormData","handleChange","handleSubmit","_callee","fetch","headers","t0","_jsxs","onSubmit","Footer","Subscribe","SocialMediaLinks","ContactUs","_useState6","isSubmittedSuccessfully","setIsSubmittedSuccessfully","subscriberData","response","mailing_list","alt","_useState8","handleClose","BubbleMenu","currentPage","menuOpen","setMenuOpen","BurgerMenuItem","page","isCurrentPage","closeModal","_taggedTemplateLiteral","strings","raw","freeze","StyleSheet","_insertTag","tags","insertionPoint","container","isSpeedy","speedy","ctr","nonce","_proto","insert","rule","createStyleElement","styleSheets","ownerNode","sheetForTag","cssRules","flush","replacement","indexof","charat","charCodeAt","substr","strlen","sizeof","column","character","characters","copy","peek","caret","alloc","dealloc","delimit","delimiter","whitespace","escaping","commenter","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","KEYFRAMES","serialize","compile","rules","rulesets","pseudo","declarations","atrule","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","identifierWithPointTracking","getRules","toRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","prefix","hash","defaultStylisPlugins","combine","createCache","ssrStyles","stylisPlugins","_insert","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","collection","middleware","selector","serialized","shouldCache","registered","getRegisteredStyles","registeredStyles","classNames","rawClassName","registerStyles","isStringTag","insertStyles","unitlessKeys","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","memoize","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","unitless","handleInterpolation","mergedProps","interpolation","__emotion_styles","interpolated","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","lastIndex","identifierName","hashString","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","withEmotionCache","ThemeContext","typePropName","Insertion","Emotion","cssProp","WrappedComponent","newProps","Emotion$1","ReactJSXRuntime","createEmotionProps","insertable","classnames","cls","toAdd","serializedArr","ClassNames","content","_len2","merge","theme","ele","observerMap","RootIds","rootId","unsupportedValue","optionsToId","getRootId","fallbackInView","intersectionRatio","boundingClientRect","intersectionRect","rootBounds","_createObserver","thresholds","elements","observer","trackVisibility","createObserver","callbacks","disconnect","InView","__publicField","triggerOnce","skip","initialInView","observeNode","isPlainChildren","_unobserveCb","_this$state","handleNode","as","useInView","_React2$useState2","React2","setRef","_React2$useState4","entryTarget","previousEntryTarget","fadeIn","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_templateObject9","_templateObject10","_templateObject11","_templateObject12","_templateObject13","_templateObject14","fadeInBottomLeft","_templateObject15","fadeInBottomRight","_templateObject16","fadeInDown","_templateObject17","fadeInDownBig","_templateObject18","fadeInLeft","_templateObject19","fadeInLeftBig","_templateObject20","fadeInRight","_templateObject21","fadeInRightBig","_templateObject22","fadeInTopLeft","_templateObject23","fadeInTopRight","_templateObject24","fadeInUp","_templateObject25","fadeInUpBig","_templateObject26","matchIf","onTrue","onFalse","condition","matchIfOrNull","hideWhen","Reveal","_props$cascade","cascade","_props$damping","_props$delay","_props$duration","_props$fraction","fraction","_props$keyframes","_props$triggerOnce","childClassName","childStyle","onVisibilityChange","animationStyles","_ref$timingFunction","timingFunction","_ref$keyframes","_ref$iterationCount","iterationCount","_templateObject27","getAnimationCss","TextReveal","FragmentReveal","nodeDelay","animationDelay","textBaseStyles","_props$cascade2","_props$damping2","_props$delay2","_props$duration2","_props$fraction2","_props$triggerOnce2","_useInView","_props$fraction3","_props$triggerOnce3","_useInView2","_templateObject28","_templateObject29","_templateObject30","_templateObject31","_templateObject32","_templateObject33","_templateObject34","_templateObject35","_templateObject36","_templateObject37","fadeOut","_templateObject38","fadeOutBottomLeft","_templateObject39","fadeOutBottomRight","_templateObject40","fadeOutDown","_templateObject41","fadeOutDownBig","_templateObject42","fadeOutLeft","_templateObject43","fadeOutLeftBig","_templateObject44","fadeOutRight","_templateObject45","fadeOutRightBig","_templateObject46","fadeOutTopLeft","_templateObject47","fadeOutTopRight","_templateObject48","fadeOutUp","_templateObject49","fadeOutUpBig","_templateObject50","Fade","_props$big","big","_props$reverse2","rest","_excluded3","getStyles$5","_templateObject51","_templateObject52","_templateObject53","_templateObject54","_templateObject55","_templateObject56","_templateObject57","_templateObject58","_templateObject59","_templateObject60","_templateObject61","_templateObject62","_templateObject63","_templateObject64","_templateObject65","_templateObject66","_templateObject67","_templateObject68","_templateObject69","_templateObject70","_templateObject71","_templateObject72","_templateObject73","_templateObject74","_templateObject75","_templateObject76","_templateObject77","_templateObject78","_templateObject79","_templateObject80","_templateObject81","_templateObject82","_templateObject83","_templateObject84","_templateObject85","_templateObject86","_templateObject87","imagesLo","imagesHi","Rottnest","currentImageIndex","setCurrentImageIndex","images","setImages","showModal","setShowModal","updateImages","innerWidth","toggleModal","interval","prevIndex","clearInterval","Modal","TWEEN_FACTOR","EmblaCarousel","slides","_useEmblaCarousel2","useEmblaCarousel","Autoplay","emblaRef","emblaApi","tweenValues","setTweenValues","previewImage","setPreviewImage","onScroll","engine","internalEngine","scrollProgress","scrollSnapList","scrollSnap","diffToTarget","loop","slideLooper","loopPoints","loopItem","sign","tweenValue","_Fragment","OPTIONS","auto","Hotel","OurLineup","ArtistProfile","profilePic","artistName","artistDetails","youtubeUrl","title","frameBorder","allow","allowFullScreen","uppercasePattern","msPattern","toHyphenLower","hName","shallowEqualObjects","objA","objB","aKeys","bKeys","stringOrNumber","grid","aural","braille","handheld","print","screen","tty","tv","embossed","matchers","orientation","deviceAspectRatio","deviceHeight","deviceWidth","colorIndex","monochrome","featureMatchers","minAspectRatio","maxAspectRatio","minDeviceAspectRatio","maxDeviceAspectRatio","minHeight","minDeviceHeight","maxDeviceHeight","minWidth","minDeviceWidth","maxDeviceWidth","minColor","maxColor","minColorIndex","maxColorIndex","minMonochrome","maxMonochrome","minResolution","maxResolution","mq","toQuery","realKey","hyphenate","keyVal","hyphenateKeys","useIsUpdate","useQuery","settings","getQuery","makeQuery","setQuery","newQuery","useMediaQuery","device","deviceSettings","deviceFromProps","deviceFromContext","getDevice","setDevice","newDevice","useDevice","getMatchMedia","setMq","isUpdate","newMq","useMatchMedia","setMatches","updateMatches","ev","useMatches","MainPageBody","BookNowButton","Schedule","CodeOfConduct","isMobile","download","MainHeader","ReactDOM","App"],"sourceRoot":""}