{"version":3,"file":"static/chunks/107-299bf13dd6c6b584.js","mappings":"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","sources":["webpack://_N_E/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://_N_E/./node_modules/swiper/swiper.min.css","webpack://_N_E/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://_N_E/./node_modules/prop-types/index.js","webpack://_N_E/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionConfigContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/PresenceContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-browser.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LazyContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-ref-object.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/MotionContext/create.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/definitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/load-features.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-constant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/id.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/LayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/VisualElementHandler.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/symbol.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion-proxy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/lowercase-elements.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/clamp.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/numbers/units.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/valid-prop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/filter-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/path.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/use-props.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/use-render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/render.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/resolve-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/use-visual-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/config-motion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/create-config.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/types.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/use-dom-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-focus-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/utils/is-primary-pointer.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/event-info.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/events/use-pointer-event.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/lock.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-hover-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/pipe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-tap-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/observers.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/viewport/use-viewport.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/utils/make-renderless-component.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/gestures.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/shallow-compare.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/data.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/on-next-frame.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/create-render-step.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/frameloop/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/array.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/subscription-manager.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/hsla.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/color/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/types/complex/filter.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/setters.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/value/use-will-change/is.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs","webpack://_N_E/./node_modules/hey-listen/dist/hey-listen.es.js","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/time-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/use-instant-transition-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/ease.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix-color.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/mix-complex.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/progress.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/interpolate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/noop.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/circ.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/back.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/easing/anticipate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/easing.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/legacy-popmotion/keyframes.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/legacy-popmotion/find-spring.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/legacy-popmotion/spring.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/legacy-popmotion/decay.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/legacy-popmotion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/waapi/easing.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/waapi/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/waapi/supports.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/waapi/utils/get-final-keyframe.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/waapi/create-accelerated-animation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/delay.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/create-instant-animation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/legacy-popmotion/inertia.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/transitions.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/utils/keyframes.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/animation.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/animation-state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/animations.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/distance.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/PanSession.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/models.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/utils/measure.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/drag/use-drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/gestures/use-pan-gesture.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/drag.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/utils/parse-dom-variant.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/motion-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/VisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/create-visual-element.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/motion/features/layout/index.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/animation/animate.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/copy.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/geometry/utils.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/shared/stack.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/styles/transform.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs","webpack://_N_E/./node_modules/framer-motion/dist/es/render/dom/motion.mjs","webpack://_N_E/./node_modules/swiper/components-shared/utils.js","webpack://_N_E/./node_modules/swiper/components-shared/params-list.js","webpack://_N_E/./node_modules/swiper/components-shared/get-params.js","webpack://_N_E/./node_modules/swiper/components-shared/mount-swiper.js","webpack://_N_E/./node_modules/swiper/shared/calc-looped-slides.js","webpack://_N_E/./node_modules/swiper/react/loop.js","webpack://_N_E/./node_modules/swiper/components-shared/get-changed-params.js","webpack://_N_E/./node_modules/swiper/react/get-children.js","webpack://_N_E/./node_modules/swiper/components-shared/update-swiper.js","webpack://_N_E/./node_modules/swiper/react/virtual.js","webpack://_N_E/./node_modules/swiper/components-shared/update-on-virtual-data.js","webpack://_N_E/./node_modules/swiper/react/use-isomorphic-layout-effect.js","webpack://_N_E/./node_modules/swiper/react/context.js","webpack://_N_E/./node_modules/swiper/react/swiper.js","webpack://_N_E/./node_modules/swiper/react/swiper-slide.js","webpack://_N_E/./node_modules/swiper/react/swiper-react.js","webpack://_N_E/./node_modules/ssr-window/ssr-window.esm.js","webpack://_N_E/./node_modules/dom7/dom7.esm.js","webpack://_N_E/./node_modules/swiper/shared/dom.js","webpack://_N_E/./node_modules/swiper/shared/utils.js","webpack://_N_E/./node_modules/swiper/shared/get-support.js","webpack://_N_E/./node_modules/swiper/shared/get-device.js","webpack://_N_E/./node_modules/swiper/shared/get-browser.js","webpack://_N_E/./node_modules/swiper/core/modules/resize/resize.js","webpack://_N_E/./node_modules/swiper/core/modules/observer/observer.js","webpack://_N_E/./node_modules/swiper/core/events-emitter.js","webpack://_N_E/./node_modules/swiper/core/update/updateSize.js","webpack://_N_E/./node_modules/swiper/core/update/updateSlides.js","webpack://_N_E/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://_N_E/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://_N_E/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://_N_E/./node_modules/swiper/core/update/updateProgress.js","webpack://_N_E/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://_N_E/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://_N_E/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://_N_E/./node_modules/swiper/core/update/index.js","webpack://_N_E/./node_modules/swiper/core/translate/getTranslate.js","webpack://_N_E/./node_modules/swiper/core/translate/setTranslate.js","webpack://_N_E/./node_modules/swiper/core/translate/minTranslate.js","webpack://_N_E/./node_modules/swiper/core/translate/maxTranslate.js","webpack://_N_E/./node_modules/swiper/core/translate/translateTo.js","webpack://_N_E/./node_modules/swiper/core/translate/index.js","webpack://_N_E/./node_modules/swiper/core/transition/setTransition.js","webpack://_N_E/./node_modules/swiper/core/transition/transitionEmit.js","webpack://_N_E/./node_modules/swiper/core/transition/transitionStart.js","webpack://_N_E/./node_modules/swiper/core/transition/transitionEnd.js","webpack://_N_E/./node_modules/swiper/core/transition/index.js","webpack://_N_E/./node_modules/swiper/core/slide/slideTo.js","webpack://_N_E/./node_modules/swiper/core/slide/slideToLoop.js","webpack://_N_E/./node_modules/swiper/core/slide/slideNext.js","webpack://_N_E/./node_modules/swiper/core/slide/slidePrev.js","webpack://_N_E/./node_modules/swiper/core/slide/slideReset.js","webpack://_N_E/./node_modules/swiper/core/slide/slideToClosest.js","webpack://_N_E/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://_N_E/./node_modules/swiper/core/slide/index.js","webpack://_N_E/./node_modules/swiper/core/loop/loopCreate.js","webpack://_N_E/./node_modules/swiper/core/loop/loopFix.js","webpack://_N_E/./node_modules/swiper/core/loop/loopDestroy.js","webpack://_N_E/./node_modules/swiper/core/loop/index.js","webpack://_N_E/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://_N_E/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://_N_E/./node_modules/swiper/core/grab-cursor/index.js","webpack://_N_E/./node_modules/swiper/core/events/onTouchStart.js","webpack://_N_E/./node_modules/swiper/core/events/onTouchMove.js","webpack://_N_E/./node_modules/swiper/core/events/onTouchEnd.js","webpack://_N_E/./node_modules/swiper/core/events/onResize.js","webpack://_N_E/./node_modules/swiper/core/events/onClick.js","webpack://_N_E/./node_modules/swiper/core/events/onScroll.js","webpack://_N_E/./node_modules/swiper/core/events/index.js","webpack://_N_E/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://_N_E/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://_N_E/./node_modules/swiper/core/breakpoints/index.js","webpack://_N_E/./node_modules/swiper/core/classes/addClasses.js","webpack://_N_E/./node_modules/swiper/core/classes/removeClasses.js","webpack://_N_E/./node_modules/swiper/core/classes/index.js","webpack://_N_E/./node_modules/swiper/core/images/loadImage.js","webpack://_N_E/./node_modules/swiper/core/images/preloadImages.js","webpack://_N_E/./node_modules/swiper/core/images/index.js","webpack://_N_E/./node_modules/swiper/core/check-overflow/index.js","webpack://_N_E/./node_modules/swiper/core/defaults.js","webpack://_N_E/./node_modules/swiper/core/moduleExtendParams.js","webpack://_N_E/./node_modules/swiper/core/core.js","webpack://_N_E/./node_modules/swiper/modules/virtual/virtual.js","webpack://_N_E/./node_modules/swiper/modules/keyboard/keyboard.js","webpack://_N_E/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://_N_E/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://_N_E/./node_modules/swiper/modules/navigation/navigation.js","webpack://_N_E/./node_modules/swiper/shared/classes-to-selector.js","webpack://_N_E/./node_modules/swiper/modules/pagination/pagination.js","webpack://_N_E/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://_N_E/./node_modules/swiper/modules/parallax/parallax.js","webpack://_N_E/./node_modules/swiper/modules/zoom/zoom.js","webpack://_N_E/./node_modules/swiper/modules/lazy/lazy.js","webpack://_N_E/./node_modules/swiper/modules/controller/controller.js","webpack://_N_E/./node_modules/swiper/modules/a11y/a11y.js","webpack://_N_E/./node_modules/swiper/modules/history/history.js","webpack://_N_E/./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack://_N_E/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://_N_E/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://_N_E/./node_modules/swiper/modules/free-mode/free-mode.js","webpack://_N_E/./node_modules/swiper/shared/effect-init.js","webpack://_N_E/./node_modules/swiper/shared/effect-target.js","webpack://_N_E/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://_N_E/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://_N_E/./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack://_N_E/./node_modules/swiper/shared/create-shadow.js","webpack://_N_E/./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack://_N_E/./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack://_N_E/./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack://_N_E/./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack://_N_E/./node_modules/swiper/swiper.esm.js","webpack://_N_E/"],"sourcesContent":["import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _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}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var beat = props.beat,\n fade = props.fade,\n beatFade = props.beatFade,\n bounce = props.bounce,\n shake = props.shake,\n flash = props.flash,\n spin = props.spin,\n spinPulse = props.spinPulse,\n spinReverse = props.spinReverse,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-beat': beat,\n 'fa-fade': fade,\n 'fa-beat-fade': beatFade,\n 'fa-bounce': bounce,\n 'fa-shake': shake,\n 'fa-flash': flash,\n 'fa-spin': spin,\n 'fa-spin-reverse': spinReverse,\n 'fa-spin-pulse': spinPulse,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip': flip === true,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null && rotation !== 0), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nvar _excluded = [\"style\"];\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n /* eslint-disable dot-notation */\n\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, _excluded);\n\n mixins.attrs['style'] = _objectSpread2(_objectSpread2({}, mixins.attrs['style']), existingStyle);\n /* eslint-enable */\n\n return createElement.apply(void 0, [element.tag, _objectSpread2(_objectSpread2({}, mixins.attrs), remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\nfunction normalizeIconArgs(icon) {\n // this has everything that it needs to be rendered which means it was probably imported\n // directly from an icon svg package\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName && icon.icon) {\n return icon;\n }\n\n if (parse.icon) {\n return parse.icon(icon);\n } // if the icon is null, there's nothing to do\n\n\n if (icon === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (icon && _typeof(icon) === 'object' && icon.prefix && icon.iconName) {\n return icon;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon) && icon.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon[0],\n iconName: icon[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon === 'string') {\n return {\n prefix: 'fas',\n iconName: icon\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nvar FontAwesomeIcon = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title,\n titleId = props.titleId,\n maskId = props.maskId;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, classes), transform), mask), {}, {\n symbol: symbol,\n title: title,\n titleId: titleId,\n maskId: maskId\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {\n ref: ref\n };\n Object.keys(props).forEach(function (key) {\n // eslint-disable-next-line no-prototype-builtins\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n});\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n beat: PropTypes.bool,\n border: PropTypes.bool,\n beatFade: PropTypes.bool,\n bounce: PropTypes.bool,\n className: PropTypes.string,\n fade: PropTypes.bool,\n flash: PropTypes.bool,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n maskId: PropTypes.string,\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf([true, false, 'horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([0, 90, 180, 270]),\n shake: PropTypes.bool,\n size: PropTypes.oneOf(['2xs', 'xs', 'sm', 'lg', 'xl', '2xl', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n spinPulse: PropTypes.bool,\n spinReverse: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n titleId: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n maskId: null,\n fixedWidth: false,\n inverse: false,\n flip: false,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n spinPulse: false,\n spinReverse: false,\n beat: false,\n fade: false,\n beatFade: false,\n bounce: false,\n shake: false,\n symbol: false,\n title: '',\n titleId: null,\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","// extracted by mini-css-extract-plugin","/**\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","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, useContext } from 'react';\n\nconst MotionContext = createContext({});\nfunction useVisualElementContext() {\n return useContext(MotionContext).visualElement;\n}\n\nexport { MotionContext, useVisualElementContext };\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","import { useContext, useRef, useEffect } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useVisualElementContext } 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 parent = useVisualElementContext();\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 presenceId: presenceContext ? presenceContext.id : undefined,\n blockInitialAnimation: presenceContext\n ? presenceContext.initial === false\n : false,\n reducedMotionConfig,\n });\n }\n const visualElement = visualElementRef.current;\n useIsomorphicLayoutEffect(() => {\n visualElement && visualElement.render();\n });\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 const useAnimateChangesEffect = window.HandoffAppearAnimations\n ? useIsomorphicLayoutEffect\n : useEffect;\n useAnimateChangesEffect(() => {\n if (visualElement && visualElement.animationState) {\n visualElement.animationState.animateChanges();\n }\n });\n return visualElement;\n}\n\nexport { useVisualElement };\n","function isRefObject(ref) {\n return (typeof ref === \"object\" &&\n Object.prototype.hasOwnProperty.call(ref, \"current\"));\n}\n\nexport { isRefObject };\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","/**\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","import { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\n\nconst variantProps = [\n \"initial\",\n \"animate\",\n \"exit\",\n \"whileHover\",\n \"whileDrag\",\n \"whileTap\",\n \"whileFocus\",\n \"whileInView\",\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 { isVariantLabel } from '../../render/utils/is-variant-label.mjs';\nimport { isControllingVariants } from '../../render/utils/is-controlling-variants.mjs';\n\nfunction getCurrentTreeVariants(props, context) {\n if (isControllingVariants(props)) {\n const { initial, animate } = props;\n return {\n initial: initial === false || isVariantLabel(initial)\n ? initial\n : undefined,\n animate: isVariantLabel(animate) ? animate : undefined,\n };\n }\n return props.inherit !== false ? context : {};\n}\n\nexport { getCurrentTreeVariants };\n","import { 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","const createDefinition = (propNames) => ({\n isEnabled: (props) => propNames.some((name) => !!props[name]),\n});\nconst featureDefinitions = {\n measureLayout: createDefinition([\"layout\", \"layoutId\", \"drag\"]),\n animation: createDefinition([\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n ]),\n exit: createDefinition([\"exit\"]),\n drag: createDefinition([\"drag\", \"dragControls\"]),\n focus: createDefinition([\"whileFocus\"]),\n hover: createDefinition([\"whileHover\", \"onHoverStart\", \"onHoverEnd\"]),\n tap: createDefinition([\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"]),\n pan: createDefinition([\n \"onPan\",\n \"onPanStart\",\n \"onPanSessionStart\",\n \"onPanEnd\",\n ]),\n inView: createDefinition([\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n ]),\n};\n\nexport { featureDefinitions };\n","import { featureDefinitions } from './definitions.mjs';\n\nfunction loadFeatures(features) {\n for (const key in features) {\n if (key === \"projectionNodeConstructor\") {\n featureDefinitions.projectionNodeConstructor = features[key];\n }\n else {\n featureDefinitions[key].Component = features[key];\n }\n }\n}\n\nexport { loadFeatures };\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","/**\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 { useConstant } from '../../utils/use-constant.mjs';\nimport { globalProjectionState } from './state.mjs';\n\nlet id = 1;\nfunction useProjectionId() {\n return useConstant(() => {\n if (globalProjectionState.hasEverUpdated) {\n return id++;\n }\n });\n}\n\nexport { useProjectionId };\n","import { createContext } from 'react';\n\nconst LayoutGroupContext = createContext({});\n\nexport { LayoutGroupContext };\n","import React__default from 'react';\n\nclass VisualElementHandler extends React__default.Component {\n /**\n * Update visual element props as soon as we know this update is going to be commited.\n */\n getSnapshotBeforeUpdate() {\n const { visualElement, props } = this.props;\n if (visualElement)\n visualElement.setProps(props);\n return null;\n }\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\n\nexport { VisualElementHandler };\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 { featureDefinitions } from './features/definitions.mjs';\nimport { loadFeatures } from './features/load-features.mjs';\nimport { isBrowser } from '../utils/is-browser.mjs';\nimport { useProjectionId } from '../projection/node/id.mjs';\nimport { LayoutGroupContext } from '../context/LayoutGroupContext.mjs';\nimport { VisualElementHandler } from './utils/VisualElementHandler.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, projectionNodeConstructor, useRender, useVisualState, Component, }) {\n preloadedFeatures && loadFeatures(preloadedFeatures);\n function MotionComponent(props, externalRef) {\n const configAndProps = {\n ...useContext(MotionConfigContext),\n ...props,\n layoutId: useLayoutId(props),\n };\n const { isStatic } = configAndProps;\n let features = null;\n const context = useCreateMotionContext(props);\n /**\n * Create a unique projection ID for this component. If a new component is added\n * during a layout animation we'll use this to query the DOM and hydrate its ref early, allowing\n * us to measure it as soon as any layout effect flushes pending layout animations.\n *\n * Performance note: It'd be better not to have to search the DOM for these elements.\n * For newly-entering components it could be enough to only correct treeScale, in which\n * case we could mount in a scale-correction mode. This wouldn't be enough for\n * shared element transitions however. Perhaps for those we could revert to a root node\n * that gets forceRendered and layout animations are triggered on its layout effect.\n */\n const projectionId = isStatic ? undefined : useProjectionId();\n /**\n *\n */\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 lazyStrictMode = useContext(LazyContext).strict;\n const initialLayoutGroupConfig = useContext(SwitchLayoutGroupContext);\n if (context.visualElement) {\n features = context.visualElement.loadFeatures(\n // Note: Pass the full new combined props to correctly re-render dynamic feature components.\n configAndProps, lazyStrictMode, preloadedFeatures, projectionId, projectionNodeConstructor ||\n featureDefinitions.projectionNodeConstructor, 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(VisualElementHandler, { visualElement: context.visualElement, props: configAndProps },\n features,\n React.createElement(MotionContext.Provider, { value: context }, useRender(Component, props, projectionId, 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 { 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) => !!(value === null || value === void 0 ? void 0 : 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};\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nconst sortTransformProps = (a, b) => transformPropOrder.indexOf(a) - transformPropOrder.indexOf(b);\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, transformKeys, }, { enableHardwareAcceleration = true, allowTransformNone = true, }, transformIsDefault, transformTemplate) {\n // The transform string we're going to build into.\n let transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Loop over each transform and build them into transformString\n for (const key of transformKeys) {\n transformString += `${translateAlias[key] || key}(${transform[key]}) `;\n }\n if (enableHardwareAcceleration && !transform.z) {\n transformString += \"translateZ(0)\";\n }\n transformString = transformString.trim();\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n\nexport { buildTransform };\n","/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nexport { isCSSVariable };\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 { isCSSVariable } 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, transformKeys, transformOrigin } = state;\n transformKeys.length = 0;\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 (isCSSVariable(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 transformKeys.push(key);\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, 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 transformKeys: [],\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 htmlProps.style = style;\n return htmlProps;\n}\n\nexport { copyRawValuesOnly, useHTMLProps };\n","const animationProps = [\n \"animate\",\n \"exit\",\n \"variants\",\n \"whileHover\",\n \"whileTap\",\n \"whileFocus\",\n \"whileDrag\",\n \"whileInView\",\n];\nconst tapProps = [\"whileTap\", \"onTap\", \"onTapStart\", \"onTapCancel\"];\nconst panProps = [\"onPan\", \"onPanStart\", \"onPanSessionStart\", \"onPanEnd\"];\nconst inViewProps = [\n \"whileInView\",\n \"onViewportEnter\",\n \"onViewportLeave\",\n \"viewport\",\n];\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 \"initial\",\n \"style\",\n \"values\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"layout\",\n \"layoutId\",\n \"layoutDependency\",\n \"layoutScroll\",\n \"layoutRoot\",\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 \"drag\",\n \"dragControls\",\n \"dragListener\",\n \"dragConstraints\",\n \"dragDirectionLock\",\n \"dragSnapToOrigin\",\n \"_dragX\",\n \"_dragY\",\n \"dragElastic\",\n \"dragMomentum\",\n \"dragPropagation\",\n \"dragTransition\",\n \"onHoverStart\",\n \"onHoverEnd\",\n ...inViewProps,\n ...tapProps,\n ...animationProps,\n ...panProps,\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 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 { 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, 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 // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\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, projectionId, 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 if (projectionId) {\n elementProps[\"data-projection-id\"] = projectionId;\n }\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';\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 = key === \"x\" || key === \"y\" ? \"attr\" + key.toUpperCase() : 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","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","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';\n\nconst svgMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps: scrapeMotionValuesFromProps,\n createRenderState: createSvgRenderState,\n onMount: (props, instance, { renderState, latestValues }) => {\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 buildSVGAttrs(renderState, latestValues, { enableHardwareAcceleration: false }, isSVGTag(instance.tagName), props.transformTemplate);\n renderSVG(instance, renderState);\n },\n }),\n};\n\nexport { svgMotionConfig };\n","import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';\nimport { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';\nimport { createHtmlRenderState } from './utils/create-render-state.mjs';\n\nconst htmlMotionConfig = {\n useVisualState: makeUseVisualState({\n scrapeMotionValuesFromProps,\n createRenderState: createHtmlRenderState,\n }),\n};\n\nexport { htmlMotionConfig };\n","import { 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, projectionNodeConstructor) {\n const baseConfig = isSVGComponent(Component)\n ? svgMotionConfig\n : htmlMotionConfig;\n return {\n ...baseConfig,\n preloadedFeatures,\n useRender: createUseRender(forwardMotionProps),\n createVisualElement,\n projectionNodeConstructor,\n Component,\n };\n}\n\nexport { createDomMotionConfig };\n","var AnimationType;\n(function (AnimationType) {\n AnimationType[\"Animate\"] = \"animate\";\n AnimationType[\"Hover\"] = \"whileHover\";\n AnimationType[\"Tap\"] = \"whileTap\";\n AnimationType[\"Drag\"] = \"whileDrag\";\n AnimationType[\"Focus\"] = \"whileFocus\";\n AnimationType[\"InView\"] = \"whileInView\";\n AnimationType[\"Exit\"] = \"exit\";\n})(AnimationType || (AnimationType = {}));\n\nexport { AnimationType };\n","import { useEffect } from 'react';\n\nfunction addDomEvent(target, eventName, handler, options = { passive: true }) {\n target.addEventListener(eventName, handler, options);\n return () => target.removeEventListener(eventName, handler);\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return
\n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(() => {\n const element = ref.current;\n if (handler && element) {\n return addDomEvent(element, eventName, handler, options);\n }\n }, [ref, eventName, handler, options]);\n}\n\nexport { addDomEvent, useDomEvent };\n","import { AnimationType } from '../render/utils/types.mjs';\nimport { useDomEvent } from '../events/use-dom-event.mjs';\nimport { useCallback } from 'react';\n\n/**\n *\n * @param props\n * @param ref\n * @internal\n */\nfunction useFocusGesture({ whileFocus, visualElement, }) {\n const { animationState } = visualElement;\n const onFocus = useCallback(() => {\n animationState && animationState.setActive(AnimationType.Focus, true);\n }, [animationState]);\n const onBlur = useCallback(() => {\n animationState && animationState.setActive(AnimationType.Focus, false);\n }, [animationState]);\n useDomEvent(visualElement, \"focus\", whileFocus ? onFocus : undefined);\n useDomEvent(visualElement, \"blur\", whileFocus ? onBlur : undefined);\n}\n\nexport { useFocusGesture };\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, useDomEvent } from './use-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}\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, eventName, handler && addPointerInfo(handler), options);\n}\n\nexport { addPointerEvent, usePointerEvent };\n","function createLock(name) {\n let lock = null;\n return () => {\n const openLock = () => {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nconst globalHorizontalLock = createLock(\"dragHorizontal\");\nconst globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n let lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n const openHorizontal = globalHorizontalLock();\n const openVertical = globalVerticalLock();\n if (openHorizontal && openVertical) {\n lock = () => {\n openHorizontal();\n openVertical();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal)\n openHorizontal();\n if (openVertical)\n openVertical();\n }\n }\n return lock;\n}\nfunction isDragActive() {\n // Check the gesture lock - if we get it, it means no drag gesture is active\n // and we can safely fire the tap gesture.\n const openGestureLock = getGlobalLock(true);\n if (!openGestureLock)\n return true;\n openGestureLock();\n return false;\n}\n\nexport { createLock, getGlobalLock, isDragActive };\n","import { AnimationType } from '../render/utils/types.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { useMemo } from 'react';\n\nfunction createHoverEvent(visualElement, isActive, applyVariants, callback) {\n return (event, info) => {\n if (event.type === \"touch\" || isDragActive())\n return;\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (applyVariants && visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Hover, isActive);\n }\n callback && callback(event, info);\n };\n}\nfunction useHoverGesture({ onHoverStart, onHoverEnd, whileHover, visualElement, }) {\n usePointerEvent(visualElement, \"pointerenter\", useMemo(() => {\n return onHoverStart || whileHover\n ? createHoverEvent(visualElement, true, Boolean(whileHover), onHoverStart)\n : undefined;\n }, [onHoverStart, Boolean(whileHover), visualElement]), { passive: !onHoverStart });\n usePointerEvent(visualElement, \"pointerleave\", useMemo(() => {\n return onHoverEnd || whileHover\n ? createHoverEvent(visualElement, false, Boolean(whileHover), onHoverEnd)\n : undefined;\n }, [onHoverStart, Boolean(whileHover), visualElement]), { passive: !onHoverEnd });\n}\n\nexport { useHoverGesture };\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 { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\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","import { useRef, useCallback } from 'react';\nimport { isNodeOrChild } from './utils/is-node-or-child.mjs';\nimport { addPointerEvent, usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { AnimationType } from '../render/utils/types.mjs';\nimport { isDragActive } from './drag/utils/lock.mjs';\nimport { pipe } from '../utils/pipe.mjs';\n\n/**\n * @param handlers -\n * @internal\n */\nfunction useTapGesture({ onTap, onTapStart, onTapCancel, whileTap, visualElement, ...props }) {\n const hasPressListeners = onTap || onTapStart || onTapCancel || whileTap;\n const isPressing = useRef(false);\n const cancelPointerEndListeners = useRef(null);\n /**\n * Only set listener to passive if there are no external listeners.\n */\n const eventOptions = {\n passive: !(onTapStart ||\n onTap ||\n onTapCancel ||\n props[\"onPointerDown\"]),\n };\n function removePointerEndListener() {\n cancelPointerEndListeners.current && cancelPointerEndListeners.current();\n cancelPointerEndListeners.current = null;\n }\n function checkPointerEnd() {\n removePointerEndListener();\n isPressing.current = false;\n const latestProps = visualElement.getProps();\n if (latestProps.whileTap && visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Tap, false);\n }\n return !isDragActive();\n }\n function onPointerUp(event, info) {\n var _a, _b, _c, _d;\n if (!checkPointerEnd())\n return;\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(visualElement.current, event.target)\n ? (_b = (_a = visualElement.getProps()).onTapCancel) === null || _b === void 0 ? void 0 : _b.call(_a, event, info)\n : (_d = (_c = visualElement.getProps()).onTap) === null || _d === void 0 ? void 0 : _d.call(_c, event, info);\n }\n function onPointerCancel(event, info) {\n var _a, _b;\n if (!checkPointerEnd())\n return;\n (_b = (_a = visualElement.getProps()).onTapCancel) === null || _b === void 0 ? void 0 : _b.call(_a, event, info);\n }\n const startPress = useCallback((event, info) => {\n var _a;\n removePointerEndListener();\n if (isPressing.current)\n return;\n isPressing.current = true;\n cancelPointerEndListeners.current = pipe(addPointerEvent(window, \"pointerup\", onPointerUp, eventOptions), addPointerEvent(window, \"pointercancel\", onPointerCancel, eventOptions));\n const latestProps = visualElement.getProps();\n /**\n * Ensure we trigger animations before firing event callback\n */\n if (latestProps.whileTap && visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.Tap, true);\n }\n (_a = latestProps.onTapStart) === null || _a === void 0 ? void 0 : _a.call(latestProps, event, info);\n }, [Boolean(onTapStart), visualElement]);\n usePointerEvent(visualElement, \"pointerdown\", hasPressListeners ? startPress : undefined, eventOptions);\n useUnmountEffect(removePointerEndListener);\n}\n\nexport { useTapGesture };\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 { useRef, useEffect } from 'react';\nimport { AnimationType } from '../../../render/utils/types.mjs';\nimport { warnOnce } from '../../../utils/warn-once.mjs';\nimport { observeIntersection } from './observers.mjs';\n\nfunction useViewport({ visualElement, whileInView, onViewportEnter, onViewportLeave, viewport = {}, }) {\n const state = useRef({\n hasEnteredView: false,\n isInView: false,\n });\n let shouldObserve = Boolean(whileInView || onViewportEnter || onViewportLeave);\n if (viewport.once && state.current.hasEnteredView)\n shouldObserve = false;\n const useObserver = typeof IntersectionObserver === \"undefined\"\n ? useMissingIntersectionObserver\n : useIntersectionObserver;\n useObserver(shouldObserve, state.current, visualElement, viewport);\n}\nconst thresholdNames = {\n some: 0,\n all: 1,\n};\nfunction useIntersectionObserver(shouldObserve, state, visualElement, { root, margin: rootMargin, amount = \"some\", once }) {\n useEffect(() => {\n if (!shouldObserve || !visualElement.current)\n return;\n const options = {\n root: root === null || root === void 0 ? void 0 : root.current,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholdNames[amount],\n };\n const intersectionCallback = (entry) => {\n const { isIntersecting } = entry;\n /**\n * If there's been no change in the viewport state, early return.\n */\n if (state.isInView === isIntersecting)\n return;\n state.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 && state.hasEnteredView) {\n return;\n }\n else if (isIntersecting) {\n state.hasEnteredView = true;\n }\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, isIntersecting);\n }\n /**\n * Use the latest committed props rather than the ones in scope\n * when this observer is created\n */\n const props = visualElement.getProps();\n const callback = isIntersecting\n ? props.onViewportEnter\n : props.onViewportLeave;\n callback && callback(entry);\n };\n return observeIntersection(visualElement.current, options, intersectionCallback);\n }, [shouldObserve, root, rootMargin, amount]);\n}\n/**\n * If IntersectionObserver is missing, we activate inView and fire onViewportEnter\n * on mount. This way, the page will be in the state the author expects users\n * to see it in for everyone.\n */\nfunction useMissingIntersectionObserver(shouldObserve, state, visualElement, { fallback = true }) {\n useEffect(() => {\n if (!shouldObserve || !fallback)\n return;\n if (process.env.NODE_ENV !== \"production\") {\n warnOnce(false, \"IntersectionObserver not available on this device. whileInView animations will trigger on mount.\");\n }\n /**\n * Fire this in an rAF because, at this point, the animation state\n * won't have flushed for the first time and there's certain logic in\n * there that behaves differently on the initial animation.\n *\n * This hook should be quite rarely called so setting this in an rAF\n * is preferred to changing the behaviour of the animation state.\n */\n requestAnimationFrame(() => {\n state.hasEnteredView = true;\n const { onViewportEnter } = visualElement.getProps();\n onViewportEnter && onViewportEnter(null);\n if (visualElement.animationState) {\n visualElement.animationState.setActive(AnimationType.InView, true);\n }\n });\n }, [shouldObserve]);\n}\n\nexport { useViewport };\n","const makeRenderlessComponent = (hook) => (props) => {\n hook(props);\n return null;\n};\n\nexport { makeRenderlessComponent };\n","import { useFocusGesture } from '../../gestures/use-focus-gesture.mjs';\nimport { useHoverGesture } from '../../gestures/use-hover-gesture.mjs';\nimport { useTapGesture } from '../../gestures/use-tap-gesture.mjs';\nimport { useViewport } from './viewport/use-viewport.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst gestureAnimations = {\n inView: makeRenderlessComponent(useViewport),\n tap: makeRenderlessComponent(useTapGesture),\n focus: makeRenderlessComponent(useFocusGesture),\n hover: makeRenderlessComponent(useHoverGesture),\n};\n\nexport { gestureAnimations };\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 // Replace with useId when released in React\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","function shallowCompare(next, prev) {\n if (!Array.isArray(prev))\n return false;\n const prevLength = prev.length;\n if (prevLength !== next.length)\n return false;\n for (let i = 0; i < prevLength; i++) {\n if (prev[i] !== next[i])\n return false;\n }\n return true;\n}\n\nexport { shallowCompare };\n","/**\n * 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","/**\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","const frameData = {\n delta: 0,\n timestamp: 0,\n};\n\nexport { frameData };\n","/*\n Detect and load appropriate clock setting for the execution environment\n */\nconst defaultTimestep = (1 / 60) * 1000;\nconst getCurrentTime = typeof performance !== \"undefined\"\n ? () => performance.now()\n : () => Date.now();\nconst onNextFrame = typeof window !== \"undefined\"\n ? (callback) => window.requestAnimationFrame(callback)\n : (callback) => setTimeout(() => callback(getCurrentTime()), defaultTimestep);\n\nexport { defaultTimestep, onNextFrame };\n","function createRenderStep(runNextFrame) {\n /**\n * We create and reuse two arrays, 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 toRun = [];\n let toRunNextFrame = [];\n /**\n *\n */\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 buffer = addToCurrentFrame ? toRun : toRunNextFrame;\n if (keepAlive)\n toKeepAlive.add(callback);\n // If the buffer doesn't already contain this callback, add it\n if (buffer.indexOf(callback) === -1) {\n buffer.push(callback);\n // If we're adding it to the currently running buffer, update its measured size\n if (addToCurrentFrame && isProcessing)\n numToRun = toRun.length;\n }\n return callback;\n },\n /**\n * Cancel the provided callback from running on the next frame.\n */\n cancel: (callback) => {\n const index = toRunNextFrame.indexOf(callback);\n if (index !== -1)\n toRunNextFrame.splice(index, 1);\n toKeepAlive.delete(callback);\n },\n /**\n * Execute all schedule callbacks.\n */\n process: (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 [toRun, toRunNextFrame] = [toRunNextFrame, toRun];\n // Clear the next frame list\n toRunNextFrame.length = 0;\n // Execute this frame\n numToRun = toRun.length;\n if (numToRun) {\n for (let i = 0; i < numToRun; i++) {\n const callback = toRun[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 { onNextFrame, defaultTimestep } from './on-next-frame.mjs';\nimport { createRenderStep } from './create-render-step.mjs';\nimport { frameData } from './data.mjs';\n\nconst maxElapsed = 40;\nlet useDefaultElapsed = true;\nlet runNextFrame = false;\nlet isProcessing = false;\nconst stepsOrder = [\n \"read\",\n \"update\",\n \"preRender\",\n \"render\",\n \"postRender\",\n];\nconst steps = stepsOrder.reduce((acc, key) => {\n acc[key] = createRenderStep(() => (runNextFrame = true));\n return acc;\n}, {});\nconst sync = stepsOrder.reduce((acc, key) => {\n const step = steps[key];\n acc[key] = (process, keepAlive = false, immediate = false) => {\n if (!runNextFrame)\n startLoop();\n return step.schedule(process, keepAlive, immediate);\n };\n return acc;\n}, {});\nconst cancelSync = stepsOrder.reduce((acc, key) => {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nconst flushSync = stepsOrder.reduce((acc, key) => {\n acc[key] = () => steps[key].process(frameData);\n return acc;\n}, {});\nconst processStep = (stepId) => steps[stepId].process(frameData);\nconst processFrame = (timestamp) => {\n runNextFrame = false;\n frameData.delta = useDefaultElapsed\n ? defaultTimestep\n : Math.max(Math.min(timestamp - frameData.timestamp, maxElapsed), 1);\n frameData.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (runNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nconst startLoop = () => {\n runNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing)\n onNextFrame(processFrame);\n};\n\nexport { cancelSync, flushSync, sync };\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","/*\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 { frameData } from '../frameloop/data.mjs';\nimport { sync } from '../frameloop/index.mjs';\nimport { SubscriptionManager } from '../utils/subscription-manager.mjs';\nimport { velocityPerSecond } from '../utils/velocity-per-second.mjs';\n\nconst isFloat = (value) => {\n return !isNaN(parseFloat(value));\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 = \"8.5.2\";\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 sync.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 = () => sync.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 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 sync.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 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) || null;\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 this.animation = null;\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, motionValue };\n","import { isString, singleColorRegex, floatRegex } from '../utils.mjs';\n\n/**\n * Returns true if the provided string is a color, ie rgba(0,0,0,0) or #000,\n * but false if a number or multiple colors\n */\nconst isColorString = (type, testProp) => (v) => {\n return Boolean((isString(v) && singleColorRegex.test(v) && v.startsWith(type)) ||\n (testProp && Object.prototype.hasOwnProperty.call(v, testProp)));\n};\nconst splitColor = (aName, bName, cName) => (v) => {\n if (!isString(v))\n return v;\n const [a, b, c, alpha] = v.match(floatRegex);\n return {\n [aName]: parseFloat(a),\n [bName]: parseFloat(b),\n [cName]: parseFloat(c),\n alpha: alpha !== undefined ? parseFloat(alpha) : 1,\n };\n};\n\nexport { isColorString, splitColor };\n","import { clamp } from '../../../utils/clamp.mjs';\nimport { number, alpha } from '../numbers/index.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst clampRgbUnit = (v) => clamp(0, 255, v);\nconst rgbUnit = {\n ...number,\n transform: (v) => Math.round(clampRgbUnit(v)),\n};\nconst rgba = {\n test: isColorString(\"rgb\", \"red\"),\n parse: splitColor(\"red\", \"green\", \"blue\"),\n transform: ({ red, green, blue, alpha: alpha$1 = 1 }) => \"rgba(\" +\n rgbUnit.transform(red) +\n \", \" +\n rgbUnit.transform(green) +\n \", \" +\n rgbUnit.transform(blue) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\",\n};\n\nexport { rgbUnit, rgba };\n","import { rgba } from './rgba.mjs';\nimport { isColorString } from './utils.mjs';\n\nfunction parseHex(v) {\n let r = \"\";\n let g = \"\";\n let b = \"\";\n let a = \"\";\n // If we have 6 characters, ie #FF0000\n if (v.length > 5) {\n r = v.substring(1, 3);\n g = v.substring(3, 5);\n b = v.substring(5, 7);\n a = v.substring(7, 9);\n // Or we have 3 characters, ie #F00\n }\n else {\n r = v.substring(1, 2);\n g = v.substring(2, 3);\n b = v.substring(3, 4);\n a = v.substring(4, 5);\n r += r;\n g += g;\n b += b;\n a += a;\n }\n return {\n red: parseInt(r, 16),\n green: parseInt(g, 16),\n blue: parseInt(b, 16),\n alpha: a ? parseInt(a, 16) / 255 : 1,\n };\n}\nconst hex = {\n test: isColorString(\"#\"),\n parse: parseHex,\n transform: rgba.transform,\n};\n\nexport { hex };\n","import { alpha } from '../numbers/index.mjs';\nimport { percent } from '../numbers/units.mjs';\nimport { sanitize } from '../utils.mjs';\nimport { isColorString, splitColor } from './utils.mjs';\n\nconst hsla = {\n test: isColorString(\"hsl\", \"hue\"),\n parse: splitColor(\"hue\", \"saturation\", \"lightness\"),\n transform: ({ hue, saturation, lightness, alpha: alpha$1 = 1 }) => {\n return (\"hsla(\" +\n Math.round(hue) +\n \", \" +\n percent.transform(sanitize(saturation)) +\n \", \" +\n percent.transform(sanitize(lightness)) +\n \", \" +\n sanitize(alpha.transform(alpha$1)) +\n \")\");\n },\n};\n\nexport { hsla };\n","import { isString } from '../utils.mjs';\nimport { hex } from './hex.mjs';\nimport { hsla } from './hsla.mjs';\nimport { rgba } from './rgba.mjs';\n\nconst color = {\n test: (v) => rgba.test(v) || hex.test(v) || hsla.test(v),\n parse: (v) => {\n if (rgba.test(v)) {\n return rgba.parse(v);\n }\n else if (hsla.test(v)) {\n return hsla.parse(v);\n }\n else {\n return hex.parse(v);\n }\n },\n transform: (v) => {\n return isString(v)\n ? v\n : v.hasOwnProperty(\"red\")\n ? rgba.transform(v)\n : hsla.transform(v);\n },\n};\n\nexport { color };\n","import { color } from '../color/index.mjs';\nimport { number } from '../numbers/index.mjs';\nimport { isString, floatRegex, colorRegex, sanitize } from '../utils.mjs';\n\nconst colorToken = \"${c}\";\nconst numberToken = \"${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}\nfunction analyseComplexValue(v) {\n if (typeof v === \"number\")\n v = `${v}`;\n const values = [];\n let numColors = 0;\n let numNumbers = 0;\n const colors = v.match(colorRegex);\n if (colors) {\n numColors = colors.length;\n // Strip colors from input so they're not picked up by number regex.\n // There's a better way to combine these regex searches, but its beyond my regex skills\n v = v.replace(colorRegex, colorToken);\n values.push(...colors.map(color.parse));\n }\n const numbers = v.match(floatRegex);\n if (numbers) {\n numNumbers = numbers.length;\n v = v.replace(floatRegex, numberToken);\n values.push(...numbers.map(number.parse));\n }\n return { values, numColors, numNumbers, tokenised: v };\n}\nfunction parse(v) {\n return analyseComplexValue(v).values;\n}\nfunction createTransformer(source) {\n const { values, numColors, tokenised } = analyseComplexValue(source);\n const numValues = values.length;\n return (v) => {\n let output = tokenised;\n for (let i = 0; i < numValues; i++) {\n output = output.replace(i < numColors ? colorToken : numberToken, i < numColors\n ? color.transform(v[i])\n : sanitize(v[i]));\n }\n return output;\n };\n}\nconst convertNumbersToZero = (v) => typeof v === \"number\" ? 0 : v;\nfunction getAnimatableNone(v) {\n const parsed = parse(v);\n const transformer = createTransformer(v);\n return transformer(parsed.map(convertNumbersToZero));\n}\nconst complex = { test, parse, createTransformer, getAnimatableNone };\n\nexport { analyseComplexValue, complex };\n","import { complex } from './index.mjs';\nimport { floatRegex } from '../utils.mjs';\n\n/**\n * Properties that should default to 1 or 100%\n */\nconst maxDefaults = new Set([\"brightness\", \"contrast\", \"saturate\", \"opacity\"]);\nfunction applyDefaultFilter(v) {\n const [name, value] = v.slice(0, -1).split(\"(\");\n if (name === \"drop-shadow\")\n return v;\n const [number] = value.match(floatRegex) || [];\n if (!number)\n return v;\n const unit = value.replace(number, \"\");\n let defaultValue = maxDefaults.has(name) ? 1 : 0;\n if (number !== value)\n defaultValue *= 100;\n return name + \"(\" + defaultValue + unit + \")\";\n}\nconst functionRegex = /([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 var _a;\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 (_a = defaultValueType.getAnimatableNone) === null || _a === void 0 ? void 0 : _a.call(defaultValueType, value);\n}\n\nexport { getAnimatableNone };\n","/**\n * Tests a provided value against a ValueType\n */\nconst testValueType = (v) => (type) => type.test(v);\n\nexport { testValueType };\n","/**\n * ValueType for \"auto\"\n */\nconst auto = {\n test: (v) => v === \"auto\",\n parse: (v) => v,\n};\n\nexport { auto };\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","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 { 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 { 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 var _a;\n const variant = visualElement.getVariant(key);\n variant && setTarget(visualElement, variant);\n (_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.forEach((child) => {\n setVariants(child, variantLabels);\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 var _a;\n const origin = {};\n for (const key in target) {\n const transitionOrigin = getOriginFromTransition(key, transition);\n origin[key] =\n transitionOrigin !== undefined\n ? transitionOrigin\n : (_a = visualElement.getValue(key)) === null || _a === void 0 ? void 0 : _a.get();\n }\n return origin;\n}\n\nexport { checkTargetForNewValues, getOrigin, getOriginFromTransition, setTarget, setValues };\n","import { isMotionValue } from '../utils/is-motion-value.mjs';\n\nfunction isWillChangeMotionValue(value) {\n return Boolean(isMotionValue(value) && value.add);\n}\n\nexport { isWillChangeMotionValue };\n","import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';\n\nconst optimizedAppearDataId = \"framerAppearId\";\nconst optimizedAppearDataAttribute = \"data-\" + camelToDash(optimizedAppearDataId);\n\nexport { optimizedAppearDataAttribute, optimizedAppearDataId };\n","var warning = function () { };\r\nvar invariant = function () { };\r\nif (process.env.NODE_ENV !== 'production') {\r\n warning = function (check, message) {\r\n if (!check && typeof console !== 'undefined') {\r\n console.warn(message);\r\n }\r\n };\r\n invariant = function (check, message) {\r\n if (!check) {\r\n throw new Error(message);\r\n }\r\n };\r\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;\n\nexport { secondsToMilliseconds };\n","const instantAnimationState = {\n current: false,\n};\n\nexport { instantAnimationState };\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 easeIn = (p) => p * p;\nconst easeOut = reverseEasing(easeIn);\nconst easeInOut = mirrorEasing(easeIn);\n\nexport { easeIn, easeInOut, easeOut };\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 'hey-listen';\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 { mix } from './mix.mjs';\nimport { mixColor } from './mix-color.mjs';\nimport { pipe } from './pipe.mjs';\nimport { warning } from 'hey-listen';\nimport { color } from '../value/types/color/index.mjs';\nimport { complex, analyseComplexValue } from '../value/types/complex/index.mjs';\n\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 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.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 (p) => `${p > 0 ? target : origin}`;\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 'hey-listen';\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';\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 if (color.test(v)) {\n return mixColor;\n }\n else {\n return mixComplex;\n }\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] : 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 invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, \"Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.\");\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","const noop = (any) => any;\n\nexport { noop };\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 { 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 { 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 { invariant } from 'hey-listen';\nimport { cubicBezier } from '../../easing/cubic-bezier.mjs';\nimport { noop } from '../../utils/noop.mjs';\nimport { easeIn, easeInOut, easeOut } from '../../easing/ease.mjs';\nimport { circIn, circInOut, circOut } from '../../easing/circ.mjs';\nimport { backIn, backInOut, backOut } from '../../easing/back.mjs';\nimport { anticipate } from '../../easing/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};\nconst isEasingArray = (ease) => {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\nexport { easingDefinitionToFunction, isEasingArray };\n","import { easeInOut } from '../../easing/ease.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\nimport { isEasingArray, easingDefinitionToFunction } from '../utils/easing.mjs';\n\nfunction defaultEasing(values, easing) {\n return values.map(() => easing || easeInOut).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n const numValues = values.length;\n return values.map((_value, i) => i !== 0 ? i / (numValues - 1) : 0);\n}\nfunction convertOffsetToTimes(offset, duration) {\n return offset.map((o) => o * duration);\n}\nfunction keyframes({ keyframes: keyframeValues, ease = easeInOut, times, duration = 300, }) {\n keyframeValues = [...keyframeValues];\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 function createInterpolator() {\n return interpolate(absoluteTimes, keyframeValues, {\n ease: Array.isArray(easingFunctions)\n ? easingFunctions\n : defaultEasing(keyframeValues, easingFunctions),\n });\n }\n let interpolator = createInterpolator();\n return {\n next: (t) => {\n state.value = interpolator(t);\n state.done = t >= duration;\n return state;\n },\n flipTarget: () => {\n keyframeValues.reverse();\n interpolator = createInterpolator();\n },\n };\n}\n\nexport { convertOffsetToTimes, defaultEasing, defaultOffset, keyframes };\n","import { warning } from 'hey-listen';\nimport { clamp } from '../../utils/clamp.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 <= maxDuration * 1000, \"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, duration / 1000);\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 = duration * 1000;\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 { findSpring, calcAngularFreq } from './find-spring.mjs';\nimport { velocityPerSecond } from '../../utils/velocity-per-second.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}\nconst velocitySampleDuration = 5;\n/**\n * This is based on the spring implementation of Wobble https://github.com/skevy/wobble\n */\nfunction spring({ keyframes, restDelta, restSpeed, ...options }) {\n let origin = keyframes[0];\n let 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 let resolveSpring = zero;\n let initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n function createSpring() {\n const initialDelta = target - origin;\n const undampedAngularFreq = Math.sqrt(stiffness / mass) / 1000;\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 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) *\n 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 }\n createSpring();\n return {\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 const prevT = Math.max(0, t - velocitySampleDuration);\n currentVelocity = velocityPerSecond(current - resolveSpring(prevT), t - prevT);\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 flipTarget: () => {\n initialVelocity = -initialVelocity;\n [origin, target] = [target, origin];\n createSpring();\n },\n };\n}\nspring.needsInterpolation = (a, b) => typeof a === \"string\" || typeof b === \"string\";\nconst zero = (_t) => 0;\n\nexport { spring };\n","function decay({ \n/**\n * The decay animation dynamically calculates an end of the animation\n * based on the initial keyframe, so we only need to define a single keyframe\n * as default.\n */\nkeyframes = [0], velocity = 0, power = 0.8, timeConstant = 350, restDelta = 0.5, modifyTarget, }) {\n const origin = keyframes[0];\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 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 return {\n next: (t) => {\n const delta = -amplitude * Math.exp(-t / timeConstant);\n state.done = !(delta > restDelta || delta < -restDelta);\n state.value = state.done ? target : target + delta;\n return state;\n },\n flipTarget: () => { },\n };\n}\n\nexport { decay };\n","import { keyframes } from './keyframes.mjs';\nimport { spring } from './spring.mjs';\nimport { decay } from './decay.mjs';\nimport { sync, cancelSync } from '../../frameloop/index.mjs';\nimport { interpolate } from '../../utils/interpolate.mjs';\n\nconst types = {\n decay,\n keyframes: keyframes,\n tween: keyframes,\n spring,\n};\nfunction loopElapsed(elapsed, duration, delay = 0) {\n return elapsed - duration - delay;\n}\nfunction reverseElapsed(elapsed, duration = 0, delay = 0, isForwardPlayback = true) {\n return isForwardPlayback\n ? loopElapsed(duration + -elapsed, duration, delay)\n : duration - (elapsed - duration) + delay;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {\n return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;\n}\nconst framesync = (update) => {\n const passTimestamp = ({ delta }) => update(delta);\n return {\n start: () => sync.update(passTimestamp, true),\n stop: () => cancelSync.update(passTimestamp),\n };\n};\nfunction animate({ duration, driver = framesync, elapsed = 0, repeat: repeatMax = 0, repeatType = \"loop\", repeatDelay = 0, keyframes: keyframes$1, autoplay = true, onPlay, onStop, onComplete, onRepeat, onUpdate, type = \"keyframes\", ...options }) {\n var _a, _b;\n const initialElapsed = elapsed;\n let driverControls;\n let repeatCount = 0;\n let computedDuration = duration;\n let isComplete = false;\n let isForwardPlayback = true;\n let interpolateFromNumber;\n const animator = types[keyframes$1.length > 2 ? \"keyframes\" : type] || keyframes;\n const origin = keyframes$1[0];\n const target = keyframes$1[keyframes$1.length - 1];\n let state = { done: false, value: origin };\n if ((_b = (_a = animator).needsInterpolation) === null || _b === void 0 ? void 0 : _b.call(_a, origin, target)) {\n interpolateFromNumber = interpolate([0, 100], [origin, target], {\n clamp: false,\n });\n keyframes$1 = [0, 100];\n }\n const animation = animator({\n ...options,\n duration,\n keyframes: keyframes$1,\n });\n function repeat() {\n repeatCount++;\n if (repeatType === \"reverse\") {\n isForwardPlayback = repeatCount % 2 === 0;\n elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n }\n else {\n elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n if (repeatType === \"mirror\")\n animation.flipTarget();\n }\n isComplete = false;\n onRepeat && onRepeat();\n }\n function complete() {\n driverControls && driverControls.stop();\n onComplete && onComplete();\n }\n function update(delta) {\n if (!isForwardPlayback)\n delta = -delta;\n elapsed += delta;\n if (!isComplete) {\n state = animation.next(Math.max(0, elapsed));\n if (interpolateFromNumber)\n state.value = interpolateFromNumber(state.value);\n isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n }\n onUpdate && onUpdate(state.value);\n if (isComplete) {\n if (repeatCount === 0) {\n computedDuration =\n computedDuration !== undefined ? computedDuration : elapsed;\n }\n if (repeatCount < repeatMax) {\n hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n }\n else {\n complete();\n }\n }\n }\n function play() {\n onPlay && onPlay();\n driverControls = driver(update);\n driverControls.start();\n }\n autoplay && play();\n return {\n stop: () => {\n onStop && onStop();\n driverControls && driverControls.stop();\n },\n /**\n * Set the current time of the animation. This is purposefully\n * mirroring the WAAPI animation API to make them interchanagable.\n * Going forward this file should be ported more towards\n * https://github.com/motiondivision/motionone/blob/main/packages/animation/src/Animation.ts\n * Which behaviourally adheres to WAAPI as far as possible.\n *\n * WARNING: This is not safe to use for most animations. We currently\n * only use it for handoff from WAAPI within Framer.\n *\n * This animation function consumes time every frame rather than being sampled for time.\n * So the sample() method performs some headless frames to ensure\n * repeats are handled correctly. Ideally in the future we will replace\n * that method with this, once repeat calculations are pure.\n */\n set currentTime(t) {\n elapsed = initialElapsed;\n update(t);\n },\n /**\n * animate() can't yet be sampled for time, instead it\n * consumes time. So to sample it we have to run a low\n * temporal-resolution version.\n */\n sample: (t) => {\n elapsed = initialElapsed;\n const sampleResolution = duration && typeof duration === \"number\"\n ? Math.max(duration * 0.5, 50)\n : 50;\n let sampleElapsed = 0;\n update(0);\n while (sampleElapsed <= t) {\n const remaining = t - sampleElapsed;\n update(Math.min(remaining, sampleResolution));\n sampleElapsed += sampleResolution;\n }\n return state;\n },\n };\n}\n\nexport { animate, hasRepeatDelayElapsed, loopElapsed, reverseElapsed };\n","function isWaapiSupportedEasing(easing) {\n return (!easing || // Default easing\n Array.isArray(easing) || // Bezier curve\n (typeof easing === \"string\" && supportedWaapiEasing[easing]));\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 Array.isArray(easing)\n ? cubicBezierAsString(easing)\n : supportedWaapiEasing[easing];\n}\n\nexport { cubicBezierAsString, isWaapiSupportedEasing, mapEasingToNativeEasing, supportedWaapiEasing };\n","import { mapEasingToNativeEasing } from './easing.mjs';\n\nfunction animateStyle(element, valueName, keyframes, { delay = 0, duration, repeat = 0, repeatType = \"loop\", ease, times, } = {}) {\n return element.animate({ [valueName]: keyframes, offset: times }, {\n delay,\n duration,\n easing: mapEasingToNativeEasing(ease),\n fill: \"both\",\n iterations: repeat + 1,\n direction: repeatType === \"reverse\" ? \"alternate\" : \"normal\",\n });\n}\n\nexport { animateStyle };\n","const featureTests = {\n waapi: () => Object.hasOwnProperty.call(Element.prototype, \"animate\"),\n};\nconst results = {};\nconst supports = {};\n/**\n * Generate features tests that cache their results.\n */\nfor (const key in featureTests) {\n supports[key] = () => {\n if (results[key] === undefined)\n results[key] = featureTests[key]();\n return results[key];\n };\n}\n\nexport { supports };\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 { sync } from '../../frameloop/index.mjs';\nimport { animate } from '../legacy-popmotion/index.mjs';\nimport { animateStyle } from './index.mjs';\nimport { isWaapiSupportedEasing } from './easing.mjs';\nimport { supports } from './supports.mjs';\nimport { getFinalKeyframe } from './utils/get-final-keyframe.mjs';\n\n/**\n * A list of values that can be hardware-accelerated.\n */\nconst acceleratedValues = new Set([\"opacity\"]);\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\nfunction createAcceleratedAnimation(value, valueName, { onUpdate, onComplete, ...options }) {\n const canAccelerateAnimation = supports.waapi() &&\n acceleratedValues.has(valueName) &&\n !options.repeatDelay &&\n options.repeatType !== \"mirror\" &&\n options.damping !== 0;\n if (!canAccelerateAnimation)\n return false;\n let { keyframes, duration = 300, elapsed = 0, ease } = options;\n /**\n * If this animation needs pre-generated keyframes then generate.\n */\n if (options.type === \"spring\" || !isWaapiSupportedEasing(options.ease)) {\n /**\n * If we need to pre-generate keyframes and repeat is infinite then\n * early return as this will lock the thread.\n */\n if (options.repeat === Infinity)\n return;\n const sampleAnimation = animate({ ...options, elapsed: 0 });\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 < 20000) {\n state = sampleAnimation.sample(t);\n pregeneratedKeyframes.push(state.value);\n t += sampleDelta;\n }\n keyframes = pregeneratedKeyframes;\n duration = t - sampleDelta;\n ease = \"linear\";\n }\n const animation = animateStyle(value.owner.current, valueName, keyframes, {\n ...options,\n delay: -elapsed,\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 });\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 };\n /**\n * Animation interrupt callback.\n */\n return {\n get currentTime() {\n return animation.currentTime || 0;\n },\n set currentTime(t) {\n animation.currentTime = t;\n },\n stop: () => {\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 = animate({ ...options, autoplay: false });\n value.setWithVelocity(sampleAnimation.sample(currentTime - sampleDelta).value, sampleAnimation.sample(currentTime).value, sampleDelta);\n }\n sync.update(() => animation.cancel());\n },\n };\n}\n\nexport { createAcceleratedAnimation };\n","import { sync, cancelSync } from '../frameloop/index.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 cancelSync.read(checkElapsed);\n callback(elapsed - timeout);\n }\n };\n sync.read(checkElapsed, true);\n return () => cancelSync.read(checkElapsed);\n}\n\nexport { delay };\n","import { delay } from '../utils/delay.mjs';\n\nfunction createInstantAnimation({ keyframes, elapsed, onUpdate, onComplete, }) {\n const setValue = () => {\n onUpdate && onUpdate(keyframes[keyframes.length - 1]);\n onComplete && onComplete();\n };\n return elapsed ? { stop: delay(setValue, -elapsed) } : setValue();\n}\n\nexport { createInstantAnimation };\n","import { animate } from './index.mjs';\nimport { velocityPerSecond } from '../../utils/velocity-per-second.mjs';\nimport { frameData } from '../../frameloop/data.mjs';\n\nfunction inertia({ keyframes, velocity = 0, min, max, power = 0.8, timeConstant = 750, bounceStiffness = 500, bounceDamping = 10, restDelta = 1, modifyTarget, driver, onUpdate, onComplete, onStop, }) {\n const origin = keyframes[0];\n let currentAnimation;\n function isOutOfBounds(v) {\n return (min !== undefined && v < min) || (max !== undefined && v > max);\n }\n function findNearestBoundary(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 function startAnimation(options) {\n currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n currentAnimation = animate({\n keyframes: [0, 1],\n velocity: 0,\n ...options,\n driver,\n onUpdate: (v) => {\n var _a;\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n },\n onComplete,\n onStop,\n });\n }\n function startSpring(options) {\n startAnimation({\n type: \"spring\",\n stiffness: bounceStiffness,\n damping: bounceDamping,\n restDelta,\n ...options,\n });\n }\n if (isOutOfBounds(origin)) {\n // Start the animation with spring if outside the defined boundaries\n startSpring({\n velocity,\n keyframes: [origin, findNearestBoundary(origin)],\n });\n }\n else {\n /**\n * Or if the value is out of bounds, simulate the inertia movement\n * with the decay animation.\n *\n * Pre-calculate the target so we can detect if it's out-of-bounds.\n * If it is, we want to check per frame when to switch to a spring\n * animation\n */\n let target = power * velocity + origin;\n if (typeof modifyTarget !== \"undefined\")\n target = modifyTarget(target);\n const boundary = findNearestBoundary(target);\n const heading = boundary === min ? -1 : 1;\n let prev;\n let current;\n const checkBoundary = (v) => {\n prev = current;\n current = v;\n velocity = velocityPerSecond(v - prev, frameData.delta);\n if ((heading === 1 && v > boundary) ||\n (heading === -1 && v < boundary)) {\n startSpring({ keyframes: [v, boundary], velocity });\n }\n };\n startAnimation({\n type: \"decay\",\n keyframes: [origin, 0],\n velocity,\n timeConstant,\n power,\n restDelta,\n modifyTarget,\n onUpdate: isOutOfBounds(target) ? checkBoundary : undefined,\n });\n }\n return {\n stop: () => currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop(),\n };\n}\n\nexport { inertia };\n","const 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 linearTween = () => ({\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3,\n});\nconst keyframesTransition = {\n type: \"keyframes\",\n duration: 0.8,\n};\nconst defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: criticallyDampedSpring,\n scaleY: criticallyDampedSpring,\n scale: criticallyDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: criticallyDampedSpring,\n};\nconst getDefaultTransition = (valueKey, { keyframes }) => {\n if (keyframes.length > 2) {\n return keyframesTransition;\n }\n else {\n const factory = defaultTransitions[valueKey] || defaultTransitions.default;\n return factory(keyframes[1]);\n }\n};\n\nexport { criticallyDampedSpring, getDefaultTransition, linearTween, underDampedSpring };\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) && // 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 { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\n\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 isZero(value) {\n return (value === 0 ||\n (typeof value === \"string\" &&\n parseFloat(value) === 0 &&\n value.indexOf(\" \") === -1));\n}\nfunction getZeroUnit(potentialUnitType) {\n return typeof potentialUnitType === \"number\"\n ? 0\n : getAnimatableNone(\"\", potentialUnitType);\n}\nfunction getValueTransition(transition, key) {\n return transition[key] || transition[\"default\"] || transition;\n}\n\nexport { getValueTransition, getZeroUnit, isTransitionDefined, isZero };\n","import { getAnimatableNone } from '../../render/dom/value-types/animatable-none.mjs';\nimport { isAnimatable } from './is-animatable.mjs';\nimport { isZero, getZeroUnit } from './transitions.mjs';\n\nfunction getKeyframes(value, valueName, target, transition) {\n const isTargetAnimatable = isAnimatable(valueName, target);\n let origin = transition.from !== undefined ? transition.from : value.get();\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n origin = getAnimatableNone(valueName, target);\n }\n else if (isZero(origin) && typeof target === \"string\") {\n origin = getZeroUnit(target);\n }\n else if (!Array.isArray(target) &&\n isZero(target) &&\n typeof origin === \"string\") {\n target = getZeroUnit(origin);\n }\n /**\n * If the target has been defined as a series of keyframes\n */\n if (Array.isArray(target)) {\n /**\n * Ensure an initial wildcard keyframe is hydrated by the origin.\n * TODO: Support extra wildcard keyframes i.e [1, null, 0]\n */\n if (target[0] === null) {\n target[0] = origin;\n }\n return target;\n }\n else {\n return [origin, target];\n }\n}\n\nexport { getKeyframes };\n","import { warning } from 'hey-listen';\nimport { secondsToMilliseconds } from '../utils/time-conversion.mjs';\nimport { instantAnimationState } from '../utils/use-instant-transition-state.mjs';\nimport { createAcceleratedAnimation } from './waapi/create-accelerated-animation.mjs';\nimport { createInstantAnimation } from './create-instant-animation.mjs';\nimport { animate } from './legacy-popmotion/index.mjs';\nimport { inertia } from './legacy-popmotion/inertia.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';\n\nconst createMotionValueAnimation = (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 ...valueTransition,\n elapsed,\n onUpdate: (v) => {\n value.set(v);\n valueTransition.onUpdate && valueTransition.onUpdate(v);\n },\n onComplete: () => {\n onComplete();\n valueTransition.onComplete && valueTransition.onComplete();\n },\n };\n if (!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(options);\n }\n else if (valueTransition.type === \"inertia\") {\n /**\n * If this is an inertia animation, we currently don't support pre-generating\n * keyframes for this as such it must always run on the main thread.\n */\n return inertia(options);\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 const visualElement = value.owner;\n const element = visualElement && visualElement.current;\n /**\n * Animate via WAAPI if possible.\n */\n if (visualElement &&\n element instanceof HTMLElement &&\n !(visualElement === null || visualElement === void 0 ? void 0 : visualElement.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 animate(options);\n };\n};\n\nexport { createMotionValueAnimation };\n","import { setTarget } from './setters.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\nimport { transformProps } from '../html/utils/transform.mjs';\nimport { isWillChangeMotionValue } from '../../value/use-will-change/is.mjs';\nimport { optimizedAppearDataAttribute } from '../../animation/optimized-appear/data-id.mjs';\nimport { createMotionValueAnimation } from '../../animation/index.mjs';\nimport { sync } from '../../frameloop/index.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 = animateTarget(visualElement, resolvedDefinition, options);\n }\n return animation.then(() => visualElement.notify(\"AnimationComplete\", definition));\n}\nfunction animateVariant(visualElement, variant, options = {}) {\n var _a;\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 ? () => 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 = ((_a = visualElement.variantChildren) === null || _a === void 0 ? void 0 : _a.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}\n/**\n * @internal\n */\nfunction animateTarget(visualElement, definition, { delay = 0, transitionOverride, type } = {}) {\n var _a;\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 && ((_a = visualElement.animationState) === null || _a === void 0 ? void 0 : _a.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 = { delay, elapsed: 0, ...transition };\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, sync);\n }\n }\n let animation = value.start(createMotionValueAnimation(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key)\n ? { type: false }\n : valueTransition));\n if (isWillChangeMotionValue(willChange)) {\n willChange.add(key);\n animation = animation.then(() => willChange.remove(key));\n }\n animations.push(animation);\n }\n return Promise.all(animations).then(() => {\n transitionEnd && setTarget(visualElement, transitionEnd);\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 stopAnimation(visualElement) {\n visualElement.values.forEach((value) => value.stop());\n}\nfunction sortByTreeOrder(a, b) {\n return a.sortNodePosition(b);\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}\n\nexport { animateVisualElement, sortByTreeOrder, stopAnimation };\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 { animateVisualElement } from './animation.mjs';\nimport { isVariantLabel } from './is-variant-label.mjs';\nimport { AnimationType } from './types.mjs';\nimport { resolveVariant } from './resolve-dynamic-variants.mjs';\n\nconst variantPriorityOrder = [\n AnimationType.Animate,\n AnimationType.InView,\n AnimationType.Focus,\n AnimationType.Hover,\n AnimationType.Tap,\n AnimationType.Drag,\n AnimationType.Exit,\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 [AnimationType.Animate]: createTypeState(true),\n [AnimationType.InView]: createTypeState(),\n [AnimationType.Hover]: createTypeState(),\n [AnimationType.Tap]: createTypeState(),\n [AnimationType.Drag]: createTypeState(),\n [AnimationType.Focus]: createTypeState(),\n [AnimationType.Exit]: createTypeState(),\n };\n}\n\nexport { checkVariantsDidChange, createAnimationState, variantPriorityOrder };\n","import { useEffect, useContext } from 'react';\nimport { isAnimationControls } from '../../animation/utils/is-animation-controls.mjs';\nimport { usePresence } from '../../components/AnimatePresence/use-presence.mjs';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { createAnimationState } from '../../render/utils/animation-state.mjs';\nimport { AnimationType } from '../../render/utils/types.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst animations = {\n animation: makeRenderlessComponent(({ visualElement, animate }) => {\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 visualElement.animationState || (visualElement.animationState = createAnimationState(visualElement));\n /**\n * Subscribe any provided AnimationControls to the component's VisualElement\n */\n if (isAnimationControls(animate)) {\n useEffect(() => animate.subscribe(visualElement), [animate]);\n }\n }),\n exit: makeRenderlessComponent((props) => {\n const { custom, visualElement } = props;\n const [isPresent, safeToRemove] = usePresence();\n const presenceContext = useContext(PresenceContext);\n useEffect(() => {\n visualElement.isPresent = isPresent;\n const animation = visualElement.animationState &&\n visualElement.animationState.setActive(AnimationType.Exit, !isPresent, {\n custom: (presenceContext && presenceContext.custom) ||\n custom,\n });\n if (animation && !isPresent) {\n animation.then(safeToRemove);\n }\n }, [isPresent]);\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 { sync, cancelSync } from '../frameloop/index.mjs';\nimport { secondsToMilliseconds } from '../utils/time-conversion.mjs';\nimport { addPointerEvent } from '../events/use-pointer-event.mjs';\nimport { pipe } from '../utils/pipe.mjs';\nimport { distance2D } from '../utils/distance.mjs';\nimport { frameData } from '../frameloop/data.mjs';\nimport { isPrimaryPointer } from '../events/utils/is-primary-pointer.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 sync.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 cancelSync.update(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 = (lastPoint.timestamp - timestampedPoint.timestamp) / 1000;\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 === null || origin === void 0 ? void 0 : origin.originX);\n calcAxisDelta(delta.y, source.y, target.y, origin === null || origin === void 0 ? void 0 : origin.originY);\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 var _a, _b;\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 if (((_b = (_a = node.instance) === null || _a === void 0 ? void 0 : _a.style) === null || _b === void 0 ? void 0 : _b.display) === \"contents\")\n continue;\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 'hey-listen';\nimport { PanSession } from '../PanSession.mjs';\nimport { getGlobalLock } from './utils/lock.mjs';\nimport { isRefObject } from '../../utils/is-ref-object.mjs';\nimport { addPointerEvent } from '../../events/use-pointer-event.mjs';\nimport { applyConstraints, calcRelativeConstraints, resolveDragElastic, rebaseAxisConstraints, calcViewportConstraints, calcOrigin, defaultElastic } from './utils/constraints.mjs';\nimport { AnimationType } from '../../render/utils/types.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/use-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 { createMotionValueAnimation } from '../../animation/index.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 if (this.visualElement.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 var _a;\n // Attempt to grab the global drag gesture lock - maybe make this part of PanSession\n const { drag, dragPropagation, onDragStart } = this.getProps();\n if (drag && !dragPropagation) {\n if (this.openGlobalLock)\n this.openGlobalLock();\n this.openGlobalLock = getGlobalLock(drag);\n // If we don 't have the lock, don't start dragging\n if (!this.openGlobalLock)\n return;\n }\n this.isDragging = true;\n this.currentDirection = null;\n this.resolveConstraints();\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = true;\n this.visualElement.projection.target = undefined;\n }\n /**\n * Record gesture origin\n */\n eachAxis((axis) => {\n var _a, _b;\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 measuredAxis = (_b = (_a = this.visualElement.projection) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.layoutBox[axis];\n if (measuredAxis) {\n const length = calcLength(measuredAxis);\n current = length * (parseFloat(current) / 100);\n }\n }\n this.originPoint[axis] = current;\n });\n // Fire onDragStart event\n onDragStart === null || onDragStart === void 0 ? void 0 : onDragStart(event, info);\n (_a = this.visualElement.animationState) === null || _a === void 0 ? void 0 : _a.setActive(AnimationType.Drag, 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 === null || onDirectionLock === void 0 ? void 0 : 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 === null || onDrag === void 0 ? void 0 : 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 onDragEnd === null || onDragEnd === void 0 ? void 0 : onDragEnd(event, info);\n }\n cancel() {\n var _a, _b;\n this.isDragging = false;\n if (this.visualElement.projection) {\n this.visualElement.projection.isAnimationBlocked = false;\n }\n (_a = this.panSession) === null || _a === void 0 ? void 0 : _a.end();\n this.panSession = undefined;\n const { dragPropagation } = this.getProps();\n if (!dragPropagation && this.openGlobalLock) {\n this.openGlobalLock();\n this.openGlobalLock = null;\n }\n (_b = this.visualElement.animationState) === null || _b === void 0 ? void 0 : _b.setActive(AnimationType.Drag, 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 === null || constraints === void 0 ? void 0 : 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(createMotionValueAnimation(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 var _a;\n const dragKey = \"_drag\" + axis.toUpperCase();\n const externalMotionValue = this.visualElement.getProps()[dragKey];\n return externalMotionValue\n ? externalMotionValue\n : this.visualElement.getValue(axis, ((_a = this.visualElement.getProps().initial) === null || _a === void 0 ? void 0 : _a[axis]) || 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 var _a;\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 (_a = projection.root) === null || _a === void 0 ? void 0 : _a.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 var _a;\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 (_a = projection.root) === null || _a === void 0 ? void 0 : _a.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 === null || stopLayoutUpdateListener === void 0 ? void 0 : 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 { useEffect } from 'react';\nimport { VisualElementDragControls } from './VisualElementDragControls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\n\n/**\n * A hook that allows an element to be dragged.\n *\n * @internal\n */\nfunction useDrag(props) {\n const { dragControls: groupDragControls, visualElement } = props;\n const dragControls = useConstant(() => new VisualElementDragControls(visualElement));\n // If we've been provided a DragControls for manual control over the drag gesture,\n // subscribe this component to it on mount.\n useEffect(() => groupDragControls && groupDragControls.subscribe(dragControls), [dragControls, groupDragControls]);\n // Apply the event listeners to the element\n useEffect(() => dragControls.addListeners(), [dragControls]);\n}\n\nexport { useDrag };\n","import { useRef, useContext, useEffect } from 'react';\nimport { MotionConfigContext } from '../context/MotionConfigContext.mjs';\nimport { useUnmountEffect } from '../utils/use-unmount-effect.mjs';\nimport { usePointerEvent } from '../events/use-pointer-event.mjs';\nimport { PanSession } from './PanSession.mjs';\n\n/**\n *\n * @param handlers -\n * @param ref -\n *\n * @privateRemarks\n * Currently this sets new pan gesture functions every render. The memo route has been explored\n * in the past but ultimately we're still creating new functions every render. An optimisation\n * to explore is creating the pan gestures and loading them into a `ref`.\n *\n * @internal\n */\nfunction usePanGesture({ onPan, onPanStart, onPanEnd, onPanSessionStart, visualElement, }) {\n const hasPanEvents = onPan || onPanStart || onPanEnd || onPanSessionStart;\n const panSession = useRef(null);\n const { transformPagePoint } = useContext(MotionConfigContext);\n const handlers = {\n onSessionStart: onPanSessionStart,\n onStart: onPanStart,\n onMove: onPan,\n onEnd: (event, info) => {\n panSession.current = null;\n onPanEnd && onPanEnd(event, info);\n },\n };\n useEffect(() => {\n if (panSession.current !== null) {\n panSession.current.updateHandlers(handlers);\n }\n });\n function onPointerDown(event) {\n panSession.current = new PanSession(event, handlers, {\n transformPagePoint,\n });\n }\n usePointerEvent(visualElement, \"pointerdown\", hasPanEvents && onPointerDown);\n useUnmountEffect(() => panSession.current && panSession.current.end());\n}\n\nexport { usePanGesture };\n","import { useDrag } from '../../gestures/drag/use-drag.mjs';\nimport { usePanGesture } from '../../gestures/use-pan-gesture.mjs';\nimport { makeRenderlessComponent } from '../utils/make-renderless-component.mjs';\n\nconst drag = {\n pan: makeRenderlessComponent(usePanGesture),\n drag: makeRenderlessComponent(useDrag),\n};\n\nexport { drag };\n","import { invariant } from 'hey-listen';\n\nfunction isCSSVariable(value) {\n return typeof value === \"string\" && value.startsWith(\"var(--\");\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 cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n const match = cssVariableRegex.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 return resolved.trim();\n }\n else if (isCSSVariable(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 (!isCSSVariable(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 (!isCSSVariable(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 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 && transitionEnd[key] === undefined) {\n transitionEnd[key] = current;\n }\n }\n return { target, transitionEnd };\n}\n\nexport { cssVariableRegex, parseCSSVariable, resolveCSSVariables };\n","import { isKeyframesTarget } from '../../../animation/utils/is-keyframes-target.mjs';\nimport { invariant } from 'hey-listen';\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]);\nconst isPositionalKey = (key) => positionalKeys.has(key);\nconst hasPositionalKey = (target) => {\n return Object.keys(target).some(isPositionalKey);\n};\nconst isNumOrPxType = (v) => v === number || v === px;\nvar BoundingBoxDimension;\n(function (BoundingBoxDimension) {\n BoundingBoxDimension[\"width\"] = \"width\";\n BoundingBoxDimension[\"height\"] = \"height\";\n BoundingBoxDimension[\"left\"] = \"left\";\n BoundingBoxDimension[\"right\"] = \"right\";\n BoundingBoxDimension[\"top\"] = \"top\";\n BoundingBoxDimension[\"bottom\"] = \"bottom\";\n})(BoundingBoxDimension || (BoundingBoxDimension = {}));\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};\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 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 { BoundingBoxDimension, 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","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 === \"8.5.2\", `Attempting to mix Framer Motion versions ${nextValue.version} with 8.5.2 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 { sync, cancelSync } from '../frameloop/index.mjs';\nimport { invariant } from 'hey-listen';\nimport { createElement } from 'react';\nimport { featureDefinitions } from '../motion/features/definitions.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 { variantPriorityOrder } from './utils/animation-state.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';\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];\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, 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 * Tracks whether this VisualElement's React component is currently present\n * within the defined React tree.\n */\n this.isPresent = true;\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 = () => sync.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.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 var _a;\n this.current = instance;\n if (this.projection) {\n this.projection.mount(instance);\n }\n if (this.parent && this.isVariantNode && !this.isControllingVariants) {\n this.removeFromVariantTree = (_a = this.parent) === null || _a === void 0 ? void 0 : _a.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.setProps(this.props);\n }\n unmount() {\n var _a, _b, _c;\n (_a = this.projection) === null || _a === void 0 ? void 0 : _a.unmount();\n cancelSync.update(this.notifyUpdate);\n cancelSync.render(this.render);\n this.valueSubscriptions.forEach((remove) => remove());\n (_b = this.removeFromVariantTree) === null || _b === void 0 ? void 0 : _b.call(this);\n (_c = this.parent) === null || _c === void 0 ? void 0 : _c.children.delete(this);\n for (const key in this.events) {\n this.events[key].clear();\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 sync.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 return this.sortInstanceNodePosition(this.current, other.current);\n }\n loadFeatures({ children, ...renderedProps }, isStrict, preloadedFeatures, projectionId, ProjectionNodeConstructor, initialLayoutGroupConfig) {\n const features = [];\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 invariant(false, \"You have rendered a `motion` component within a `LazyMotion` component. This will break tree shaking. Import and render a `m` component instead.\");\n }\n for (let i = 0; i < numFeatures; i++) {\n const name = featureNames[i];\n const { isEnabled, Component } = featureDefinitions[name];\n /**\n * It might be possible in the future to use this moment to\n * dynamically request functionality. In initial tests this\n * was producing a lot of duplication amongst bundles.\n */\n if (isEnabled(renderedProps) && Component) {\n features.push(createElement(Component, {\n key: name,\n ...renderedProps,\n visualElement: this,\n }));\n }\n }\n if (!this.projection && ProjectionNodeConstructor) {\n this.projection = new ProjectionNodeConstructor(projectionId, 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 features;\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 setProps(props) {\n if (props.transformTemplate || this.props.transformTemplate) {\n this.scheduleRender();\n }\n const prevProps = this.props;\n this.props = props;\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, 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 var _a;\n return (_a = this.props.variants) === null || _a === void 0 ? void 0 : _a[name];\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 var _a;\n return this.isVariantNode ? this : (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getClosestVariantNode();\n }\n getVariantContext(startAtParent = false) {\n var _a, _b;\n if (startAtParent)\n return (_a = this.parent) === null || _a === void 0 ? void 0 : _a.getVariantContext();\n if (!this.isControllingVariants) {\n const context = ((_b = this.parent) === null || _b === void 0 ? void 0 : _b.getVariantContext()) || {};\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 var _a;\n const closestVariantNode = this.getClosestVariantNode();\n if (closestVariantNode) {\n (_a = closestVariantNode.variantChildren) === null || _a === void 0 ? void 0 : _a.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 var _a;\n this.values.delete(key);\n (_a = this.valueSubscriptions.get(key)) === null || _a === void 0 ? void 0 : _a();\n this.valueSubscriptions.delete(key);\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 return this.latestValues[key] !== undefined || !this.current\n ? this.latestValues[key]\n : 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 var _a;\n (_a = this.events[eventName]) === null || _a === void 0 ? void 0 : _a.notify(...args);\n }\n}\nconst variantProps = [\"initial\", ...variantPriorityOrder];\nconst numVariantProps = variantProps.length;\n\nexport { VisualElement };\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 var _a;\n return (_a = props.style) === null || _a === void 0 ? void 0 : _a[key];\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 { isCSSVariable } 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 = (isCSSVariable(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 { 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 var _a;\n if (transformProps.has(key)) {\n return ((_a = getDefaultValueType(key)) === null || _a === void 0 ? void 0 : _a.default) || 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 { 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 { cssVariableRegex } from '../../render/dom/utils/css-variables-conversion.mjs';\nimport { mix } from '../../utils/mix.mjs';\nimport { complex } from '../../value/types/complex/index.mjs';\n\nconst varToken = \"_$css\";\nconst correctBoxShadow = {\n correct: (latest, { treeScale, projectionDelta }) => {\n const original = latest;\n /**\n * We need to first strip and store CSS variables from the string.\n */\n const containsCSSVariables = latest.includes(\"var(\");\n const cssVariables = [];\n if (containsCSSVariables) {\n latest = latest.replace(cssVariableRegex, (match) => {\n cssVariables.push(match);\n return varToken;\n });\n }\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 let output = template(shadow);\n if (containsCSSVariables) {\n let i = 0;\n output = output.replace(varToken, () => {\n const cssVariable = cssVariables[i];\n i++;\n return cssVariable;\n });\n }\n return output;\n },\n};\n\nexport { correctBoxShadow };\n","import { sync } from '../../../frameloop/index.mjs';\nimport 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';\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 sync.postRender(() => {\n var _a;\n if (!((_a = projection.getStack()) === null || _a === void 0 ? void 0 : _a.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 if (!projection.currentAnimation && projection.isLead()) {\n this.safeToRemove();\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 === null || layoutGroup === void 0 ? void 0 : layoutGroup.group)\n layoutGroup.group.remove(projection);\n if (promoteContext === null || promoteContext === void 0 ? void 0 : promoteContext.deregister)\n promoteContext.deregister(projection);\n }\n }\n safeToRemove() {\n const { safeToRemove } = this.props;\n safeToRemove === null || safeToRemove === void 0 ? void 0 : 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 { MeasureLayout } from './MeasureLayout.mjs';\n\nconst layoutFeatures = {\n measureLayout: MeasureLayout,\n};\n\nexport { layoutFeatures };\n","import { createMotionValueAnimation } from './index.mjs';\nimport { motionValue } from '../value/index.mjs';\nimport { isMotionValue } from '../value/utils/is-motion-value.mjs';\n\n/**\n * Animate a single value or a `MotionValue`.\n *\n * The first argument is either a `MotionValue` to animate, or an initial animation value.\n *\n * The second is either a value to animate to, or an array of keyframes to animate through.\n *\n * The third argument can be either tween or spring options, and optional lifecycle methods: `onUpdate`, `onPlay`, `onComplete`, `onRepeat` and `onStop`.\n *\n * Returns `AnimationPlaybackControls`, currently just a `stop` method.\n *\n * ```javascript\n * const x = useMotionValue(0)\n *\n * useEffect(() => {\n * const controls = animate(x, 100, {\n * type: \"spring\",\n * stiffness: 2000,\n * onComplete: v => {}\n * })\n *\n * return controls.stop\n * })\n * ```\n *\n * @public\n */\nfunction animate(from, to, transition = {}) {\n const value = isMotionValue(from) ? from : motionValue(from);\n value.start(createMotionValueAnimation(\"\", value, to, transition));\n return {\n stop: () => value.stop(),\n isAnimating: () => value.isAnimating(),\n };\n}\n\nexport { animate };\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 === null || originBox === void 0 ? void 0 : originBox.x, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.x);\n removeAxisTransforms(box.y, transforms, yKeys, originBox === null || originBox === void 0 ? void 0 : originBox.y, sourceBox === null || sourceBox === void 0 ? void 0 : sourceBox.y);\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 aspectRatio(box) {\n return calcLength(box.x) / calcLength(box.y);\n}\n\nexport { aspectRatio, boxEquals, 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 var _a;\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 ((_a = node.root) === null || _a === void 0 ? void 0 : _a.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 var _a, _b, _c, _d, _e;\n (_b = (_a = node.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\n (_e = (_c = node.resumingFrom) === null || _c === void 0 ? void 0 : (_d = _c.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d);\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 { cancelSync, flushSync, sync } from '../../frameloop/index.mjs';\nimport { animate } from '../../animation/animate.mjs';\nimport { 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 { boxEquals, isDeltaZero, aspectRatio } 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';\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;\nfunction createProjectionNode({ attachResizeListener, defaultParent, measureScroll, checkIsScrollRoot, resetTransform, }) {\n return class ProjectionNode {\n constructor(elementId, 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 this.isTransformDirty = false;\n /**\n * Flag to true if we think the projection calculations for this or any\n * child might need recalculating as a result of an updated transform or layout animation.\n */\n this.isProjectionDirty = 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 // Note: Currently only running on root node\n this.potentialNodes = new Map();\n this.checkUpdateFailed = () => {\n if (this.isUpdating) {\n this.isUpdating = false;\n this.clearAllSnapshots();\n }\n };\n /**\n * This is a multi-step process as shared nodes might be of different depths. Nodes\n * are sorted by depth order, so we need to resolve the entire tree before moving to\n * the next step.\n */\n this.updateProjection = () => {\n this.nodes.forEach(propagateDirtyNodes);\n this.nodes.forEach(resolveTargetDelta);\n this.nodes.forEach(calcProjection);\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.elementId = elementId;\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 elementId && this.root.registerPotentialNode(elementId, this);\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 === null || subscriptionManager === void 0 ? void 0 : subscriptionManager.notify(...args);\n }\n hasListeners(name) {\n return this.eventHandlers.has(name);\n }\n registerPotentialNode(elementId, node) {\n this.potentialNodes.set(elementId, node);\n }\n /**\n * Lifecycles\n */\n mount(instance, isLayoutDirty = false) {\n var _a;\n if (this.instance)\n return;\n this.isSVG =\n instance instanceof SVGElement && instance.tagName !== \"svg\";\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 (_a = this.parent) === null || _a === void 0 ? void 0 : _a.children.add(this);\n this.elementId && this.root.potentialNodes.delete(this.elementId);\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 var _a, _b, _c, _d, _e;\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 = (_b = (_a = this.options.transition) !== null && _a !== void 0 ? _a : visualElement.getDefaultTransition()) !== null && _b !== void 0 ? _b : 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 !boxEquals(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 ((_c = this.resumeFrom) === null || _c === void 0 ? void 0 : _c.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 this.animationProgress === 0) {\n finishAnimation(this);\n }\n this.isLead() && ((_e = (_d = this.options).onExitComplete) === null || _e === void 0 ? void 0 : _e.call(_d));\n }\n this.targetLayout = newLayout;\n });\n }\n }\n unmount() {\n var _a, _b;\n this.options.layoutId && this.willUpdate();\n this.root.nodes.remove(this);\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.remove(this);\n (_b = this.parent) === null || _b === void 0 ? void 0 : _b.children.delete(this);\n this.instance = undefined;\n cancelSync.preRender(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 var _a;\n return (this.isAnimationBlocked ||\n ((_a = this.parent) === null || _a === void 0 ? void 0 : _a.isTreeAnimationBlocked()) ||\n false);\n }\n // Note: currently only running on root node\n startUpdate() {\n var _a;\n if (this.isUpdateBlocked())\n return;\n this.isUpdating = true;\n (_a = this.nodes) === null || _a === void 0 ? void 0 : _a.forEach(resetRotation);\n this.animationId++;\n }\n getTransformTemplate() {\n var _a;\n return (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.getProps().transformTemplate;\n }\n willUpdate(shouldNotifyListeners = true) {\n var _a, _b, _c;\n if (this.root.isUpdateBlocked()) {\n (_b = (_a = this.options).onExitComplete) === null || _b === void 0 ? void 0 : _b.call(_a);\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 this.prevTransformTemplateValue = (_c = this.getTransformTemplate()) === null || _c === void 0 ? void 0 : _c(this.latestValues, \"\");\n this.updateSnapshot();\n shouldNotifyListeners && this.notifyListeners(\"willUpdate\");\n }\n // Note: Currently only running on root node\n didUpdate() {\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 return;\n this.isUpdating = false;\n /**\n * Search for and mount newly-added projection elements.\n *\n * TODO: Every time a new component is rendered we could search up the tree for\n * the closest mounted node and query from there rather than document.\n */\n if (this.potentialNodes.size) {\n this.potentialNodes.forEach(mountNodeEarly);\n this.potentialNodes.clear();\n }\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 // Flush any scheduled updates\n flushSync.update();\n flushSync.preRender();\n flushSync.render();\n }\n clearAllSnapshots() {\n this.nodes.forEach(clearSnapshot);\n this.sharedNodes.forEach(removeLeadSnapshots);\n }\n scheduleUpdateProjection() {\n sync.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 sync.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 var _a;\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 (_a = this.options.visualElement) === null || _a === void 0 ? void 0 : _a.notify(\"LayoutMeasure\", this.layout.layoutBox, prevLayout === null || prevLayout === void 0 ? void 0 : prevLayout.layoutBox);\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 var _a;\n if (!resetTransform)\n return;\n const isResetRequested = this.isLayoutDirty || this.shouldResetTransform;\n const hasProjection = this.projectionDelta && !isDeltaZero(this.projectionDelta);\n const transformTemplateValue = (_a = this.getTransformTemplate()) === null || _a === void 0 ? void 0 : _a(this.latestValues, \"\");\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 var _a;\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, (_a = node.snapshot) === null || _a === void 0 ? void 0 : _a.layoutBox, sourceBox);\n }\n if (hasTransform(this.latestValues)) {\n removeBoxTransforms(boxWithoutTransform, this.latestValues);\n }\n return boxWithoutTransform;\n }\n /**\n *\n */\n setTargetDelta(delta) {\n this.targetDelta = delta;\n this.isProjectionDirty = true;\n this.root.scheduleUpdateProjection();\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 /**\n * Frame calculations\n */\n resolveTargetDelta() {\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 /**\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 if (!this.isProjectionDirty && !this.attemptToResolveRelativeTarget)\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 /**\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 && relativeParent.layout) {\n this.relativeParent = relativeParent;\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 ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.target)) {\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.relativeParent = relativeParent;\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 getClosestProjectingParent() {\n if (!this.parent ||\n hasScale(this.parent.latestValues) ||\n has2DTranslate(this.parent.latestValues)) {\n return undefined;\n }\n if ((this.parent.relativeTarget ||\n this.parent.targetDelta ||\n this.parent.options.layoutRoot) &&\n this.parent.layout) {\n return this.parent;\n }\n else {\n return this.parent.getClosestProjectingParent();\n }\n }\n calcProjection() {\n var _a;\n const { isProjectionDirty, isTransformDirty } = this;\n this.isProjectionDirty = this.isTransformDirty = false;\n const lead = this.getLead();\n const isShared = Boolean(this.resumingFrom) || this !== lead;\n let canSkip = true;\n if (isProjectionDirty)\n canSkip = false;\n if (isShared && isTransformDirty)\n canSkip = false;\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(((_a = this.parent) === null || _a === void 0 ? void 0 : _a.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 * 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 const { target } = lead;\n if (!target)\n return;\n if (!this.projectionDelta) {\n this.projectionDelta = createDelta();\n this.projectionDeltaWithTransform = createDelta();\n }\n const prevTreeScaleX = this.treeScale.x;\n const prevTreeScaleY = this.treeScale.y;\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 hide() {\n this.isVisible = false;\n // TODO: Schedule render\n }\n show() {\n this.isVisible = true;\n // TODO: Schedule render\n }\n scheduleRender(notifyAll = true) {\n var _a, _b, _c;\n (_b = (_a = this.options).scheduleRender) === null || _b === void 0 ? void 0 : _b.call(_a);\n notifyAll && ((_c = this.getStack()) === null || _c === void 0 ? void 0 : _c.scheduleRender());\n if (this.resumingFrom && !this.resumingFrom.instance) {\n this.resumingFrom = undefined;\n }\n }\n setAnimationOrigin(delta, hasOnlyRelativeTargetChanged = false) {\n var _a, _b;\n const snapshot = this.snapshot;\n const snapshotLatestValues = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.latestValues) || {};\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 isSharedLayoutAnimation = (snapshot === null || snapshot === void 0 ? void 0 : snapshot.source) !== ((_a = this.layout) === null || _a === void 0 ? void 0 : _a.source);\n const isOnlyMember = (((_b = this.getStack()) === null || _b === void 0 ? void 0 : _b.members.length) || 0) <= 1;\n const shouldCrossfadeOpacity = Boolean(isSharedLayoutAnimation &&\n !isOnlyMember &&\n this.options.crossfade === true &&\n !this.path.some(hasOpacityCrossfade));\n this.animationProgress = 0;\n this.mixTargetDelta = (latest) => {\n var _a;\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 ((_a = this.relativeParent) === null || _a === void 0 ? void 0 : _a.layout)) {\n calcRelativePosition(relativeLayout, this.layout.layoutBox, this.relativeParent.layout.layoutBox);\n mixBox(this.relativeTarget, this.relativeTargetOrigin, relativeLayout, progress);\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 var _a, _b;\n this.notifyListeners(\"animationStart\");\n (_a = this.currentAnimation) === null || _a === void 0 ? void 0 : _a.stop();\n if (this.resumingFrom) {\n (_b = this.resumingFrom.currentAnimation) === null || _b === void 0 ? void 0 : _b.stop();\n }\n if (this.pendingAnimation) {\n cancelSync.update(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 = sync.update(() => {\n globalProjectionState.hasAnimatedSinceResize = true;\n this.currentAnimation = animate(0, animationTarget, {\n ...options,\n onUpdate: (latest) => {\n var _a;\n this.mixTargetDelta(latest);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, latest);\n },\n onComplete: () => {\n var _a;\n (_a = options.onComplete) === null || _a === void 0 ? void 0 : _a.call(options);\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 var _a;\n if (this.resumingFrom) {\n this.resumingFrom.currentAnimation = undefined;\n this.resumingFrom.preserveOpacity = undefined;\n }\n (_a = this.getStack()) === null || _a === void 0 ? void 0 : _a.exitAnimationComplete();\n this.resumingFrom =\n this.currentAnimation =\n this.animationValues =\n undefined;\n this.notifyListeners(\"animationComplete\");\n }\n finishAnimation() {\n var _a;\n if (this.currentAnimation) {\n (_a = this.mixTargetDelta) === null || _a === void 0 ? void 0 : _a.call(this, 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 var _a, _b, _c;\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 node.promote({\n transition: (_a = node.options.initialPromotionConfig) === null || _a === void 0 ? void 0 : _a.transition,\n preserveFollowOpacity: (_c = (_b = node.options.initialPromotionConfig) === null || _b === void 0 ? void 0 : _b.shouldPreserveFollowOpacity) === null || _c === void 0 ? void 0 : _c.call(_b, node),\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 === null || visualElement === void 0 ? void 0 : 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, _b, _c;\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 }\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 (!boxEquals(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 (_c = (_b = node.options).onExitComplete) === null || _c === void 0 ? void 0 : _c.call(_b);\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 * Propagate isProjectionDirty. Nodes are ordered by depth, so if the parent here\n * is dirty we can simply pass this forward.\n */\n node.isProjectionDirty || (node.isProjectionDirty = Boolean(node.parent && node.parent.isProjectionDirty));\n /**\n * Propagate isTransformDirty.\n */\n node.isTransformDirty || (node.isTransformDirty = Boolean(node.parent && node.parent.isTransformDirty));\n}\nfunction clearSnapshot(node) {\n node.clearSnapshot();\n}\nfunction clearMeasurements(node) {\n node.clearMeasurements();\n}\nfunction resetTransformStyle(node) {\n const { visualElement } = node.options;\n if (visualElement === null || visualElement === void 0 ? void 0 : 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}\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};\nfunction mountNodeEarly(node, elementId) {\n /**\n * Rather than searching the DOM from document we can search the\n * path for the deepest mounted ancestor and search from there\n */\n let searchNode = node.root;\n for (let i = node.path.length - 1; i >= 0; i--) {\n if (Boolean(node.path[i].instance)) {\n searchNode = node.path[i];\n break;\n }\n }\n const searchElement = searchNode && searchNode !== node.root ? searchNode.instance : document;\n const element = searchElement.querySelector(`[data-projection-id=\"${elementId}\"]`);\n if (element)\n node.mount(element, true);\n}\nfunction roundAxis(axis) {\n axis.min = Math.round(axis.min);\n axis.max = Math.round(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 { createProjectionNode, mixAxis, mixAxisDelta, mixBox, propagateDirtyNodes };\n","import { createProjectionNode } from './create-projection-node.mjs';\nimport { addDomEvent } from '../../events/use-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(0, {});\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 { 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 { layoutFeatures } from '../../motion/features/layout/index.mjs';\nimport { HTMLProjectionNode } from '../../projection/node/HTMLProjectionNode.mjs';\n\nconst featureBundle = {\n ...animations,\n ...gestureAnimations,\n ...drag,\n ...layoutFeatures,\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, featureBundle, createDomVisualElement, HTMLProjectionNode));\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 }, featureBundle, createDomVisualElement, HTMLProjectionNode));\n}\n\nexport { createDomMotionComponent, motion };\n","function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nfunction needsNavigation(params = {}) {\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\n\nfunction needsPagination(params = {}) {\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\n\nfunction needsScrollbar(params = {}) {\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\n\nfunction uniqueClasses(classNames = '') {\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\n\nexport { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };","/* underscore in name -> watch for changes */\nconst paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopedSlidesLimit', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom'];\nexport { paramsList };","import Swiper from 'swiper';\nimport { isObject, extend } from './utils.js';\nimport { paramsList } from './params-list.js';\n\nfunction getParams(obj = {}, splitEvents = true) {\n const params = {\n on: {}\n };\n const events = {};\n const passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n const plainObj = Object.assign({}, obj);\n Object.keys(plainObj).forEach(key => {\n if (typeof obj[key] === 'undefined') return;\n\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n if (splitEvents) {\n events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n }\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest,\n events\n };\n}\n\nexport { getParams };","import { needsNavigation, needsPagination, needsScrollbar } from './utils.js';\n\nfunction mountSwiper({\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n}, swiperParams) {\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n\n swiper.init(el);\n}\n\nexport { mountSwiper };","import Swiper from 'swiper';\nexport const calcLoopedSlides = (slides, swiperParams) => {\n let slidesPerViewParams = swiperParams.slidesPerView;\n\n if (swiperParams.breakpoints) {\n const breakpoint = Swiper.prototype.getBreakpoint(swiperParams.breakpoints);\n const breakpointOnlyParams = breakpoint in swiperParams.breakpoints ? swiperParams.breakpoints[breakpoint] : undefined;\n\n if (breakpointOnlyParams && breakpointOnlyParams.slidesPerView) {\n slidesPerViewParams = breakpointOnlyParams.slidesPerView;\n }\n }\n\n let loopedSlides = Math.ceil(parseFloat(swiperParams.loopedSlides || slidesPerViewParams, 10));\n loopedSlides += swiperParams.loopAdditionalSlides;\n\n if (loopedSlides > slides.length && swiperParams.loopedSlidesLimit) {\n loopedSlides = slides.length;\n }\n\n return loopedSlides;\n};","import React from 'react';\nimport { calcLoopedSlides } from '../shared/calc-looped-slides.js';\n\nfunction renderLoop(swiper, slides, swiperParams) {\n const modifiedSlides = slides.map((child, index) => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n 'data-swiper-slide-index': index\n });\n });\n\n function duplicateSlide(child, index, position) {\n return /*#__PURE__*/React.cloneElement(child, {\n key: `${child.key}-duplicate-${index}-${position}`,\n className: `${child.props.className || ''} ${swiperParams.slideDuplicateClass}`\n });\n }\n\n if (swiperParams.loopFillGroupWithBlank) {\n const blankSlidesNum = swiperParams.slidesPerGroup - modifiedSlides.length % swiperParams.slidesPerGroup;\n\n if (blankSlidesNum !== swiperParams.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankSlide = /*#__PURE__*/React.createElement(\"div\", {\n className: `${swiperParams.slideClass} ${swiperParams.slideBlankClass}`\n });\n modifiedSlides.push(blankSlide);\n }\n }\n }\n\n if (swiperParams.slidesPerView === 'auto' && !swiperParams.loopedSlides) {\n swiperParams.loopedSlides = modifiedSlides.length;\n }\n\n const loopedSlides = calcLoopedSlides(modifiedSlides, swiperParams);\n const prependSlides = [];\n const appendSlides = [];\n\n for (let i = 0; i < loopedSlides; i += 1) {\n const index = i - Math.floor(i / modifiedSlides.length) * modifiedSlides.length;\n appendSlides.push(duplicateSlide(modifiedSlides[index], i, 'append'));\n prependSlides.unshift(duplicateSlide(modifiedSlides[modifiedSlides.length - index - 1], i, 'prepend'));\n }\n\n if (swiper) {\n swiper.loopedSlides = loopedSlides;\n }\n\n return [...prependSlides, ...modifiedSlides, ...appendSlides];\n}\n\nexport { calcLoopedSlides, renderLoop };","import { paramsList } from './params-list.js';\nimport { isObject } from './utils.js';\n\nfunction getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {\n const keys = [];\n if (!oldParams) return keys;\n\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n\n if (children && oldChildren) {\n const oldChildrenKeys = oldChildren.map(getKey);\n const childrenKeys = children.map(getKey);\n if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');\n if (oldChildren.length !== children.length) addKey('children');\n }\n\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nexport { getChangedParams };","import React from 'react';\n\nfunction isChildSwiperSlide(child) {\n return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide');\n}\n\nfunction processChildren(c) {\n const slides = [];\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.children) {\n processChildren(child.props.children).forEach(slide => slides.push(slide));\n }\n });\n return slides;\n}\n\nfunction getChildren(c) {\n const slides = [];\n const slots = {\n 'container-start': [],\n 'container-end': [],\n 'wrapper-start': [],\n 'wrapper-end': []\n };\n React.Children.toArray(c).forEach(child => {\n if (isChildSwiperSlide(child)) {\n slides.push(child);\n } else if (child.props && child.props.slot && slots[child.props.slot]) {\n slots[child.props.slot].push(child);\n } else if (child.props && child.props.children) {\n const foundSlides = processChildren(child.props.children);\n\n if (foundSlides.length > 0) {\n foundSlides.forEach(slide => slides.push(slide));\n } else {\n slots['container-end'].push(child);\n }\n } else {\n slots['container-end'].push(child);\n }\n });\n return {\n slides,\n slots\n };\n}\n\nexport { getChildren };","import { isObject, extend } from './utils.js';\n\nfunction updateSwiper({\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n}) {\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n\n if (mod === 'navigation') {\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n } else {\n const newValue = passedParams[key];\n\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n } else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (needPaginationInit) {\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n\n if (needScrollbarInit) {\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n\n if (needNavigationInit) {\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n\n swiper.update();\n}\n\nexport { updateSwiper };","import React from 'react';\n\nfunction renderVirtual(swiper, slides, virtualData) {\n if (!virtualData) return null;\n const style = swiper.isHorizontal() ? {\n [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px`\n } : {\n top: `${virtualData.offset}px`\n };\n return slides.filter((child, index) => index >= virtualData.from && index <= virtualData.to).map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper,\n style\n });\n });\n}\n\nexport { renderVirtual };","export const updateOnVirtualData = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {\n swiper.parallax.setTranslate();\n }\n};","import { useEffect, useLayoutEffect } from 'react';\n\nfunction useIsomorphicLayoutEffect(callback, deps) {\n // eslint-disable-next-line\n if (typeof window === 'undefined') return useEffect(callback, deps);\n return useLayoutEffect(callback, deps);\n}\n\nexport { useIsomorphicLayoutEffect };","import { createContext, useContext } from 'react';\nexport const SwiperSlideContext = /*#__PURE__*/createContext(null);\nexport const useSwiperSlide = () => {\n return useContext(SwiperSlideContext);\n};\nexport const SwiperContext = /*#__PURE__*/createContext(null);\nexport const useSwiper = () => {\n return useContext(SwiperContext);\n};","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }\n\nimport React, { useRef, useState, useEffect, forwardRef } from 'react';\nimport SwiperCore from 'swiper';\nimport { getParams } from '../components-shared/get-params.js';\nimport { mountSwiper } from '../components-shared/mount-swiper.js';\nimport { needsScrollbar, needsNavigation, needsPagination, uniqueClasses, extend } from '../components-shared/utils.js';\nimport { renderLoop, calcLoopedSlides } from './loop.js';\nimport { getChangedParams } from '../components-shared/get-changed-params.js';\nimport { getChildren } from './get-children.js';\nimport { updateSwiper } from '../components-shared/update-swiper.js';\nimport { renderVirtual } from './virtual.js';\nimport { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperContext } from './context.js';\nconst Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) {\n let {\n className,\n tag: Tag = 'div',\n wrapperTag: WrapperTag = 'div',\n children,\n onSwiper,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n let eventsAssigned = false;\n const [containerClasses, setContainerClasses] = useState('swiper');\n const [virtualData, setVirtualData] = useState(null);\n const [breakpointChanged, setBreakpointChanged] = useState(false);\n const initializedRef = useRef(false);\n const swiperElRef = useRef(null);\n const swiperRef = useRef(null);\n const oldPassedParamsRef = useRef(null);\n const oldSlides = useRef(null);\n const nextElRef = useRef(null);\n const prevElRef = useRef(null);\n const paginationElRef = useRef(null);\n const scrollbarElRef = useRef(null);\n const {\n params: swiperParams,\n passedParams,\n rest: restProps,\n events\n } = getParams(rest);\n const {\n slides,\n slots\n } = getChildren(children);\n\n const onBeforeBreakpoint = () => {\n setBreakpointChanged(!breakpointChanged);\n };\n\n Object.assign(swiperParams.on, {\n _containerClasses(swiper, classes) {\n setContainerClasses(classes);\n }\n\n });\n\n const initSwiper = () => {\n // init swiper\n Object.assign(swiperParams.on, events);\n eventsAssigned = true;\n swiperRef.current = new SwiperCore(swiperParams);\n\n swiperRef.current.loopCreate = () => {};\n\n swiperRef.current.loopDestroy = () => {};\n\n if (swiperParams.loop) {\n swiperRef.current.loopedSlides = calcLoopedSlides(slides, swiperParams);\n }\n\n if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) {\n swiperRef.current.virtual.slides = slides;\n const extendWith = {\n cache: false,\n slides,\n renderExternal: setVirtualData,\n renderExternalUpdate: false\n };\n extend(swiperRef.current.params.virtual, extendWith);\n extend(swiperRef.current.originalParams.virtual, extendWith);\n }\n };\n\n if (!swiperElRef.current) {\n initSwiper();\n } // Listen for breakpoints change\n\n\n if (swiperRef.current) {\n swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint);\n }\n\n const attachEvents = () => {\n if (eventsAssigned || !events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.on(eventName, events[eventName]);\n });\n };\n\n const detachEvents = () => {\n if (!events || !swiperRef.current) return;\n Object.keys(events).forEach(eventName => {\n swiperRef.current.off(eventName, events[eventName]);\n });\n };\n\n useEffect(() => {\n return () => {\n if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint);\n };\n }); // set initialized flag\n\n useEffect(() => {\n if (!initializedRef.current && swiperRef.current) {\n swiperRef.current.emitSlidesClasses();\n initializedRef.current = true;\n }\n }); // mount swiper\n\n useIsomorphicLayoutEffect(() => {\n if (externalElRef) {\n externalElRef.current = swiperElRef.current;\n }\n\n if (!swiperElRef.current) return;\n\n if (swiperRef.current.destroyed) {\n initSwiper();\n }\n\n mountSwiper({\n el: swiperElRef.current,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n paginationEl: paginationElRef.current,\n scrollbarEl: scrollbarElRef.current,\n swiper: swiperRef.current\n }, swiperParams);\n if (onSwiper) onSwiper(swiperRef.current); // eslint-disable-next-line\n\n return () => {\n if (swiperRef.current && !swiperRef.current.destroyed) {\n swiperRef.current.destroy(true, false);\n }\n };\n }, []); // watch for params change\n\n useIsomorphicLayoutEffect(() => {\n attachEvents();\n const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key);\n oldPassedParamsRef.current = passedParams;\n oldSlides.current = slides;\n\n if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) {\n updateSwiper({\n swiper: swiperRef.current,\n slides,\n passedParams,\n changedParams,\n nextEl: nextElRef.current,\n prevEl: prevElRef.current,\n scrollbarEl: scrollbarElRef.current,\n paginationEl: paginationElRef.current\n });\n }\n\n return () => {\n detachEvents();\n };\n }); // update on virtual update\n\n useIsomorphicLayoutEffect(() => {\n updateOnVirtualData(swiperRef.current);\n }, [virtualData]); // bypass swiper instance to slides\n\n function renderSlides() {\n if (swiperParams.virtual) {\n return renderVirtual(swiperRef.current, slides, virtualData);\n }\n\n if (!swiperParams.loop || swiperRef.current && swiperRef.current.destroyed) {\n return slides.map(child => {\n return /*#__PURE__*/React.cloneElement(child, {\n swiper: swiperRef.current\n });\n });\n }\n\n return renderLoop(swiperRef.current, slides, swiperParams);\n }\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: swiperElRef,\n className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`)\n }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, {\n value: swiperRef.current\n }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, {\n className: \"swiper-wrapper\"\n }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n ref: prevElRef,\n className: \"swiper-button-prev\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n ref: nextElRef,\n className: \"swiper-button-next\"\n })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: scrollbarElRef,\n className: \"swiper-scrollbar\"\n }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement(\"div\", {\n ref: paginationElRef,\n className: \"swiper-pagination\"\n }), slots['container-end']));\n});\nSwiper.displayName = 'Swiper';\nexport { Swiper };","function _extends() { _extends = Object.assign ? Object.assign.bind() : 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; }; return _extends.apply(this, arguments); }\n\nimport React, { useRef, useState, forwardRef } from 'react';\nimport { uniqueClasses } from '../components-shared/utils.js';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';\nimport { SwiperSlideContext } from './context.js';\nconst SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) {\n let {\n tag: Tag = 'div',\n children,\n className = '',\n swiper,\n zoom,\n virtualIndex,\n ...rest\n } = _temp === void 0 ? {} : _temp;\n const slideElRef = useRef(null);\n const [slideClasses, setSlideClasses] = useState('swiper-slide');\n\n function updateClasses(_s, el, classNames) {\n if (el === slideElRef.current) {\n setSlideClasses(classNames);\n }\n }\n\n useIsomorphicLayoutEffect(() => {\n if (externalRef) {\n externalRef.current = slideElRef.current;\n }\n\n if (!slideElRef.current || !swiper) {\n return;\n }\n\n if (swiper.destroyed) {\n if (slideClasses !== 'swiper-slide') {\n setSlideClasses('swiper-slide');\n }\n\n return;\n }\n\n swiper.on('_slideClass', updateClasses); // eslint-disable-next-line\n\n return () => {\n if (!swiper) return;\n swiper.off('_slideClass', updateClasses);\n };\n });\n useIsomorphicLayoutEffect(() => {\n if (swiper && slideElRef.current && !swiper.destroyed) {\n setSlideClasses(swiper.getSlideClasses(slideElRef.current));\n }\n }, [swiper]);\n const slideData = {\n isActive: slideClasses.indexOf('swiper-slide-active') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-active') >= 0,\n isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0,\n isDuplicate: slideClasses.indexOf('swiper-slide-duplicate') >= 0,\n isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-prev') >= 0,\n isNext: slideClasses.indexOf('swiper-slide-next') >= 0 || slideClasses.indexOf('swiper-slide-duplicate-next') >= 0\n };\n\n const renderChildren = () => {\n return typeof children === 'function' ? children(slideData) : children;\n };\n\n return /*#__PURE__*/React.createElement(Tag, _extends({\n ref: slideElRef,\n className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`),\n \"data-swiper-slide-index\": virtualIndex\n }, rest), /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, {\n value: slideData\n }, zoom ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"swiper-zoom-container\",\n \"data-swiper-zoom\": typeof zoom === 'number' ? zoom : undefined\n }, renderChildren()) : renderChildren()));\n});\nSwiperSlide.displayName = 'SwiperSlide';\nexport { SwiperSlide };","/**\n * Swiper React 8.4.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 17, 2023\n */\n\nimport { Swiper } from './swiper.js';\nimport { SwiperSlide } from './swiper-slide.js';\nexport { useSwiperSlide, useSwiper } from './context.js';\nexport { Swiper, SwiperSlide };","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return (obj !== null &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\n\nconst ssrDocument = {\n body: {},\n addEventListener() { },\n removeEventListener() { },\n activeElement: {\n blur() { },\n nodeName: '',\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() { },\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() { },\n getElementsByTagName() {\n return [];\n },\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\n\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: '',\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: '',\n },\n history: {\n replaceState() { },\n pushState() { },\n go() { },\n back() { },\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() { },\n removeEventListener() { },\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n },\n };\n },\n Image() { },\n Date() { },\n screen: {},\n setTimeout() { },\n clearTimeout() { },\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n },\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay = 0) {\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\n\nfunction animateCSSModeScroll({\n swiper,\n targetPosition,\n side\n}) {\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\nfunction calcDevice({\n userAgent\n} = {}) {\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides = {}) {\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}","import { getWindow } from 'ssr-window';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n\n const attach = (target, options = {}) => {\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","/* eslint-disable no-underscore-dangle */\nexport default {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n\n function onceHandler(...args) {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\n\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\n\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n\n emit(...args) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = $wrapperEl.children(`.${swiper.params.slideClass}`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\n\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n } // Find new height from highest slide in view\n\n\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\n\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\n\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex]; // Normalize slideIndex\n\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n } // Update progress\n\n\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.$wrapperEl[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\n const swiper = this;\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length && swiper.params.loopedSlidesLimit) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < swiper.loopedSlides; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlides.push(slides.eq(index)[0]);\n prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\n }\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base = this) {\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; // eslint-disable-next-line\n\n const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n $targetEl = $(eventPath[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\n\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\n\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n\n return;\n }\n\n if (data.isTouchEvent && params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n};\n\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n } // Toggle navigation, pagination, scrollbar\n\n\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n\n return breakpoint || 'max';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","function prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n $el.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 0,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopedSlidesLimit: true,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\n\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n }); // eslint-disable-next-line no-constructor-return\n\n return swipers;\n } // Swiper Instance\n\n\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: $(),\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n // eslint-disable-next-line no-constructor-return\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\n\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n\n slidesPerViewDynamic(view = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate = true) {\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n if (swiper.rtl) {\n swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n\n swiper.update();\n }\n\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\n\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\n}\n\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\nexport default Swiper;","import $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n\n const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`
${slide}
`);\n if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n if (params.cache) swiper.virtual.cache[index] = $slideEl;\n return $slideEl;\n }\n\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = slidesPerGroup + addSlidesBefore;\n }\n\n const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid\n });\n\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\n if (swiper.lazy && swiper.params.lazy.enabled) {\n swiper.lazy.load();\n }\n\n emit('virtualUpdate');\n }\n\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.css(offsetProp, `${offset}px`);\n }\n\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n\n return slidesToRender;\n }()\n });\n\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n\n return;\n }\n\n const prependIndexes = [];\n const appendIndexes = [];\n\n if (force) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n if (i >= from && i <= to) {\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(i);\n } else {\n if (i > previousTo) appendIndexes.push(i);\n if (i < previousFrom) prependIndexes.push(i);\n }\n }\n }\n\n appendIndexes.forEach(index => {\n swiper.$wrapperEl.append(renderSlide(slides[index], index));\n });\n prependIndexes.sort((a, b) => b - a).forEach(index => {\n swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n });\n swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n onRendered();\n }\n\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n\n update(true);\n }\n\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const $cachedEl = cache[cachedIndex];\n const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n if (cachedElIndex) {\n $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n\n function removeAllSlides() {\n swiper.virtual.slides = [];\n\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n\n update(true);\n swiper.slideTo(0, 0);\n }\n\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n swiper.virtual.slides = swiper.params.virtual.slides;\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n const window = getWindow();\n swiper.keyboard = {\n enabled: false\n };\n extendParams({\n keyboard: {\n enabled: false,\n onlyInViewport: true,\n pageUpDown: true\n }\n });\n\n function handle(event) {\n if (!swiper.enabled) return;\n const {\n rtlTranslate: rtl\n } = swiper;\n let e = event;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n const kc = e.keyCode || e.charCode;\n const pageUpDown = swiper.params.keyboard.pageUpDown;\n const isPageUp = pageUpDown && kc === 33;\n const isPageDown = pageUpDown && kc === 34;\n const isArrowLeft = kc === 37;\n const isArrowRight = kc === 39;\n const isArrowUp = kc === 38;\n const isArrowDown = kc === 40; // Directions locks\n\n if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n return false;\n }\n\n if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n return undefined;\n }\n\n if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n return undefined;\n }\n\n if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n let inView = false; // Check that swiper should be inside of visible area of window\n\n if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n return undefined;\n }\n\n const $el = swiper.$el;\n const swiperWidth = $el[0].clientWidth;\n const swiperHeight = $el[0].clientHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const swiperOffset = swiper.$el.offset();\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n if (!inView) return undefined;\n }\n\n if (swiper.isHorizontal()) {\n if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n } else {\n if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n }\n\n if (isPageDown || isArrowDown) swiper.slideNext();\n if (isPageUp || isArrowUp) swiper.slidePrev();\n }\n\n emit('keyPress', kc);\n return undefined;\n }\n\n function enable() {\n if (swiper.keyboard.enabled) return;\n $(document).on('keydown', handle);\n swiper.keyboard.enabled = true;\n }\n\n function disable() {\n if (!swiper.keyboard.enabled) return;\n $(document).off('keydown', handle);\n swiper.keyboard.enabled = false;\n }\n\n on('init', () => {\n if (swiper.params.keyboard.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n if (swiper.keyboard.enabled) {\n disable();\n }\n });\n Object.assign(swiper.keyboard, {\n enable,\n disable\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n // Legacy\n\n if ('detail' in e) {\n sY = e.detail;\n }\n\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n } // side scrolling on FF with DOMMouseScroll\n\n\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n } // Fall-back if spin cannot be determined\n\n\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n } // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n\n\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n } // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n\n\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n } // If you got here is because an animation has been triggered so store the current time\n\n\n lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n return false;\n }\n\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n\n return false;\n }\n\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n\n if (delta === 0) return true;\n if (params.invert) delta = -delta; // Get the scroll positions\n\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n }; // Keep the most recent events\n\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n } // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n\n\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n\n if (swiper.params.loop) {\n swiper.loopFix();\n }\n\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n } // Emit event\n\n\n if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n\n function events(method) {\n let target = swiper.$el;\n\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n target = $(swiper.params.mousewheel.eventsTarget);\n }\n\n target[method]('mouseenter', handleMouseEnter);\n target[method]('mouseleave', handleMouseLeave);\n target[method]('wheel', handle);\n }\n\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n\n if (swiper.mousewheel.enabled) return false;\n events('on');\n swiper.mousewheel.enabled = true;\n return true;\n }\n\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n\n if (!swiper.mousewheel.enabled) return false;\n events('off');\n swiper.mousewheel.enabled = false;\n return true;\n }\n\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n init();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n destroy();\n };\n\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\n }\n\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\n }\n\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\n }\n\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\n }\n\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let $el = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.pagination.lockClass);\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el && $el.length > 0 && !$(targetEl).hasClass(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = $el.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n init();\n render();\n update();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n if (swiper.pagination.$el) {\n swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null,\n $el: null,\n $dragEl: null\n };\n\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl,\n progress\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n\n if (rtl) {\n newPos = -newPos;\n\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n\n if (swiper.isHorizontal()) {\n $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n $dragEl[0].style.width = `${newSize}px`;\n } else {\n $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n $dragEl[0].style.height = `${newSize}px`;\n }\n\n if (params.hide) {\n clearTimeout(timeout);\n $el[0].style.opacity = 1;\n timeout = setTimeout(() => {\n $el[0].style.opacity = 0;\n $el.transition(400);\n }, 1000);\n }\n }\n\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.$dragEl.transition(duration);\n }\n\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n $dragEl,\n $el\n } = scrollbar;\n $dragEl[0].style.width = '';\n $dragEl[0].style.height = '';\n trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n\n if (swiper.isHorizontal()) {\n $dragEl[0].style.width = `${dragSize}px`;\n } else {\n $dragEl[0].style.height = `${dragSize}px`;\n }\n\n if (divider >= 1) {\n $el[0].style.display = 'none';\n } else {\n $el[0].style.display = '';\n }\n\n if (swiper.params.scrollbar.hide) {\n $el[0].style.opacity = 0;\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function getPointerPosition(e) {\n if (swiper.isHorizontal()) {\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n }\n\n return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n }\n\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n $el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n $wrapperEl.transition(100);\n $dragEl.transition(100);\n setDragPosition(e);\n clearTimeout(dragTimeout);\n $el.transition(0);\n\n if (params.hide) {\n $el.css('opacity', 1);\n }\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', 'none');\n }\n\n emit('scrollbarDragStart', e);\n }\n\n function onDragMove(e) {\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el,\n $dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n $wrapperEl.transition(0);\n $el.transition(0);\n $dragEl.transition(0);\n emit('scrollbarDragMove', e);\n }\n\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n $wrapperEl\n } = swiper;\n const {\n $el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n\n if (swiper.params.cssMode) {\n swiper.$wrapperEl.css('scroll-snap-type', '');\n $wrapperEl.transition('');\n }\n\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n $el.css('opacity', 0);\n $el.transition(400);\n }, 1000);\n }\n\n emit('scrollbarDragEnd', e);\n\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n\n function events(method) {\n const {\n scrollbar,\n touchEventsTouch,\n touchEventsDesktop,\n params,\n support\n } = swiper;\n const $el = scrollbar.$el;\n if (!$el) return;\n const target = $el[0];\n const activeListener = support.passiveListener && params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n if (!support.touch) {\n target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n } else {\n target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n }\n }\n\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n\n function init() {\n const {\n scrollbar,\n $el: $swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let $el = $(params.el);\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n $el = $swiperEl.find(params.el);\n }\n\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n if ($dragEl.length === 0) {\n $dragEl = $(`
`);\n $el.append($dragEl);\n }\n\n Object.assign(scrollbar, {\n $el,\n el: $el[0],\n $dragEl,\n dragEl: $dragEl[0]\n });\n\n if (params.draggable) {\n enableDraggable();\n }\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.scrollbar;\n const $el = swiper.scrollbar.$el;\n\n if ($el) {\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n\n disableDraggable();\n }\n\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.scrollbar;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n\n const enable = () => {\n swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n init();\n updateSize();\n setTranslate();\n };\n\n const disable = () => {\n swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n if (swiper.scrollbar.$el) {\n swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n\n destroy();\n };\n\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import $ from '../../shared/dom.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const $el = $(el);\n const rtlFactor = rtl ? -1 : 1;\n const p = $el.attr('data-swiper-parallax') || '0';\n let x = $el.attr('data-swiper-parallax-x');\n let y = $el.attr('data-swiper-parallax-y');\n const scale = $el.attr('data-swiper-parallax-scale');\n const opacity = $el.attr('data-swiper-parallax-opacity');\n\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n $el[0].style.opacity = currentOpacity;\n }\n\n if (typeof scale === 'undefined' || scale === null) {\n $el.transform(`translate3d(${x}, ${y}, 0px)`);\n } else {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n }\n };\n\n const setTranslate = () => {\n const {\n $el,\n slides,\n progress,\n snapGrid\n } = swiper;\n $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, progress);\n });\n slides.each((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n setTransform(el, slideProgress);\n });\n });\n };\n\n const setTransition = (duration = swiper.params.speed) => {\n const {\n $el\n } = swiper;\n $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n const $parallaxEl = $(parallaxEl);\n let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n $parallaxEl.transition(parallaxDuration);\n });\n };\n\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let gesturesEnabled;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const gesture = {\n $slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n $imageEl: undefined,\n $imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n emit('zoomChange', value, imageEl, slideEl);\n }\n\n scale = value;\n }\n\n });\n\n function getDistanceBetweenTouches(e) {\n if (e.targetTouches.length < 2) return 1;\n const x1 = e.targetTouches[0].pageX;\n const y1 = e.targetTouches[0].pageY;\n const x2 = e.targetTouches[1].pageX;\n const y2 = e.targetTouches[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n } // Events\n\n\n function onGestureStart(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n\n if (!support.gestures) {\n if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$slideEl || !gesture.$slideEl.length) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (gesture.$imageWrapEl.length === 0) {\n gesture.$imageEl = undefined;\n return;\n }\n }\n\n if (gesture.$imageEl) {\n gesture.$imageEl.transition(0);\n }\n\n isScaling = true;\n }\n\n function onGestureChange(e) {\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n return;\n }\n\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches(e);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n if (e.type === 'gesturechange') onGestureStart(e);\n return;\n }\n\n if (support.gestures) {\n zoom.scale = e.scale * currentScale;\n } else {\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n }\n\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n\n gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function onGestureEnd(e) {\n const device = swiper.device;\n const support = swiper.support;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n\n if (!support.gestures) {\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n\n if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n return;\n }\n\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.$slideEl = undefined;\n }\n\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n }\n\n function onTouchMove(e) {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.$slideEl) return;\n\n if (!image.isMoved) {\n image.width = gesture.$imageEl[0].offsetWidth;\n image.height = gesture.$imageEl[0].offsetHeight;\n image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n gesture.$imageWrapEl.transition(0);\n } // Define if we need image drag\n\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n\n if (e.cancelable) {\n e.preventDefault();\n }\n\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n } // Velocity\n\n\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY; // Define if we need image drag\n\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n }\n\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n\n if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.$imageEl) {\n gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n }\n\n if (gesture.$imageWrapEl) {\n gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$slideEl = undefined;\n gesture.$imageEl = undefined;\n gesture.$imageWrapEl = undefined;\n }\n }\n\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (e && e.target) {\n gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n }\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n\n gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n\n zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n if (e) {\n slideWidth = gesture.$slideEl[0].offsetWidth;\n slideHeight = gesture.$slideEl[0].offsetHeight;\n offsetX = gesture.$slideEl.offset().left + window.scrollX;\n offsetY = gesture.$slideEl.offset().top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.$imageEl[0].offsetWidth;\n imageHeight = gesture.$imageEl[0].offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n\n gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n }\n\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n\n if (!gesture.$slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n } else {\n gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n }\n\n gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n }\n\n if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n\n zoom.scale = 1;\n currentScale = 1;\n gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n gesture.$slideEl = undefined;\n } // Toggle Zoom\n\n\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n\n function getListeners() {\n const support = swiper.support;\n const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = support.passiveListener ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n function getSlideSelector() {\n return `.${swiper.params.slideClass}`;\n }\n\n function toggleGestures(method) {\n const {\n passiveListener\n } = getListeners();\n const slideSelector = getSlideSelector();\n swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n }\n\n function enableGestures() {\n if (gesturesEnabled) return;\n gesturesEnabled = true;\n toggleGestures('on');\n }\n\n function disableGestures() {\n if (!gesturesEnabled) return;\n gesturesEnabled = false;\n toggleGestures('off');\n } // Attach/Detach Events\n\n\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const support = swiper.support;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n const support = swiper.support;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n const slideSelector = getSlideSelector(); // Scale image\n\n if (support.gestures) {\n swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n } else if (swiper.touchEvents.start === 'touchstart') {\n swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n if (swiper.touchEvents.cancel) {\n swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n }\n } // Move image\n\n\n swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n }\n\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n lazy: {\n checkInView: false,\n enabled: false,\n loadPrevNext: false,\n loadPrevNextAmount: 1,\n loadOnTransitionStart: false,\n scrollingElement: '',\n elementClass: 'swiper-lazy',\n loadingClass: 'swiper-lazy-loading',\n loadedClass: 'swiper-lazy-loaded',\n preloaderClass: 'swiper-lazy-preloader'\n }\n });\n swiper.lazy = {};\n let scrollHandlerAttached = false;\n let initialImageLoaded = false;\n\n function loadInSlide(index, loadInDuplicate = true) {\n const params = swiper.params.lazy;\n if (typeof index === 'undefined') return;\n if (swiper.slides.length === 0) return;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n $images.push($slideEl[0]);\n }\n\n if ($images.length === 0) return;\n $images.each(imageEl => {\n const $imageEl = $(imageEl);\n $imageEl.addClass(params.loadingClass);\n const background = $imageEl.attr('data-background');\n const src = $imageEl.attr('data-src');\n const srcset = $imageEl.attr('data-srcset');\n const sizes = $imageEl.attr('data-sizes');\n const $pictureEl = $imageEl.parent('picture');\n swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n if (background) {\n $imageEl.css('background-image', `url(\"${background}\")`);\n $imageEl.removeAttr('data-background');\n } else {\n if (srcset) {\n $imageEl.attr('srcset', srcset);\n $imageEl.removeAttr('data-srcset');\n }\n\n if (sizes) {\n $imageEl.attr('sizes', sizes);\n $imageEl.removeAttr('data-sizes');\n }\n\n if ($pictureEl.length) {\n $pictureEl.children('source').each(sourceEl => {\n const $source = $(sourceEl);\n\n if ($source.attr('data-srcset')) {\n $source.attr('srcset', $source.attr('data-srcset'));\n $source.removeAttr('data-srcset');\n }\n });\n }\n\n if (src) {\n $imageEl.attr('src', src);\n $imageEl.removeAttr('data-src');\n }\n }\n\n $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n $slideEl.find(`.${params.preloaderClass}`).remove();\n\n if (swiper.params.loop && loadInDuplicate) {\n const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n loadInSlide(originalSlide.index(), false);\n } else {\n const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n loadInSlide(duplicatedSlide.index(), false);\n }\n }\n\n emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n });\n emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n });\n }\n\n function load() {\n const {\n $wrapperEl,\n params: swiperParams,\n slides,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n const params = swiperParams.lazy;\n let slidesPerView = swiperParams.slidesPerView;\n\n if (slidesPerView === 'auto') {\n slidesPerView = 0;\n }\n\n function slideExist(index) {\n if (isVirtual) {\n if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n return true;\n }\n } else if (slides[index]) return true;\n\n return false;\n }\n\n function slideIndex(slideEl) {\n if (isVirtual) {\n return $(slideEl).attr('data-swiper-slide-index');\n }\n\n return $(slideEl).index();\n }\n\n if (!initialImageLoaded) initialImageLoaded = true;\n\n if (swiper.params.watchSlidesProgress) {\n $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n loadInSlide(index);\n });\n } else if (slidesPerView > 1) {\n for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n loadInSlide(activeIndex);\n }\n\n if (params.loadPrevNext) {\n if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n const amount = params.loadPrevNextAmount;\n const spv = Math.ceil(slidesPerView);\n const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n } // Prev Slides\n\n\n for (let i = minIndex; i < activeIndex; i += 1) {\n if (slideExist(i)) loadInSlide(i);\n }\n } else {\n const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n }\n }\n }\n\n function checkInViewOnLoad() {\n const window = getWindow();\n if (!swiper || swiper.destroyed) return;\n const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n const isWindow = $scrollElement[0] === window;\n const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n const swiperOffset = swiper.$el.offset();\n const {\n rtlTranslate: rtl\n } = swiper;\n let inView = false;\n if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n for (let i = 0; i < swiperCoord.length; i += 1) {\n const point = swiperCoord[i];\n\n if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n inView = true;\n }\n }\n\n const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n\n if (inView) {\n load();\n $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n } else if (!scrollHandlerAttached) {\n scrollHandlerAttached = true;\n $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n }\n }\n\n on('beforeInit', () => {\n if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n swiper.params.preloadImages = false;\n }\n });\n on('init', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('scroll', () => {\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n load();\n }\n });\n on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('transitionStart', () => {\n if (swiper.params.lazy.enabled) {\n if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n }\n });\n on('transitionEnd', () => {\n if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n if (swiper.params.lazy.checkInView) {\n checkInViewOnLoad();\n } else {\n load();\n }\n }\n });\n on('slideChange', () => {\n const {\n lazy,\n cssMode,\n watchSlidesProgress,\n touchReleaseOnEdges,\n resistanceRatio\n } = swiper.params;\n\n if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n load();\n }\n });\n on('destroy', () => {\n if (!swiper.$el) return;\n swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n });\n Object.assign(swiper.lazy, {\n load,\n loadInSlide\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n\n }\n });\n swiper.controller = {\n control: undefined\n };\n\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n\n return maxIndex;\n };\n }();\n\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n\n let i1;\n let i3;\n\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n\n return this;\n } // xxx: for now i will just save one spline function to to\n\n\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n\n if (duration !== 0) {\n c.transitionStart();\n\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n\n c.$wrapperEl.transitionEnd(() => {\n if (!controlled) return;\n\n if (c.params.loop && swiper.params.controller.by === 'slide') {\n c.loopFix();\n }\n\n c.transitionEnd();\n });\n }\n }\n\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n\n function removeSpline() {\n if (!swiper.controller.control) return;\n\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n\n on('beforeInit', () => {\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.html('');\n notification.html(message);\n }\n\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n\n function makeElFocusable($el) {\n $el.attr('tabIndex', '0');\n }\n\n function makeElNotFocusable($el) {\n $el.attr('tabIndex', '-1');\n }\n\n function addElRole($el, role) {\n $el.attr('role', role);\n }\n\n function addElRoleDescription($el, description) {\n $el.attr('aria-roledescription', description);\n }\n\n function addElControls($el, controls) {\n $el.attr('aria-controls', controls);\n }\n\n function addElLabel($el, label) {\n $el.attr('aria-label', label);\n }\n\n function addElId($el, id) {\n $el.attr('id', id);\n }\n\n function addElLive($el, live) {\n $el.attr('aria-live', live);\n }\n\n function disableEl($el) {\n $el.attr('aria-disabled', true);\n }\n\n function enableEl($el) {\n $el.attr('aria-disabled', false);\n }\n\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const $targetEl = $(e.target);\n\n if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n\n if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n $targetEl[0].click();\n }\n }\n\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($prevEl && $prevEl.length > 0) {\n if (swiper.isBeginning) {\n disableEl($prevEl);\n makeElNotFocusable($prevEl);\n } else {\n enableEl($prevEl);\n makeElFocusable($prevEl);\n }\n }\n\n if ($nextEl && $nextEl.length > 0) {\n if (swiper.isEnd) {\n disableEl($nextEl);\n makeElNotFocusable($nextEl);\n } else {\n enableEl($nextEl);\n makeElFocusable($nextEl);\n }\n }\n }\n\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.each(bulletEl => {\n const $bulletEl = $(bulletEl);\n\n if (swiper.params.pagination.clickable) {\n makeElFocusable($bulletEl);\n\n if (!swiper.params.pagination.renderBullet) {\n addElRole($bulletEl, 'button');\n addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n }\n }\n\n if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n $bulletEl.attr('aria-current', 'true');\n } else {\n $bulletEl.removeAttr('aria-current');\n }\n });\n }\n\n const initNavEl = ($el, wrapperId, message) => {\n makeElFocusable($el);\n\n if ($el[0].tagName !== 'BUTTON') {\n addElRole($el, 'button');\n $el.on('keydown', onEnterOrSpaceKey);\n }\n\n addElLabel($el, message);\n addElControls($el, wrapperId);\n };\n\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n\n const initSlides = () => {\n const params = swiper.params.a11y;\n\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n }\n\n if (params.slideRole) {\n addElRole($(swiper.slides), params.slideRole);\n }\n\n const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n if (params.slideLabelMessage) {\n swiper.slides.each((slideEl, index) => {\n const $slideEl = $(slideEl);\n const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel($slideEl, ariaLabelMessage);\n });\n }\n };\n\n const init = () => {\n const params = swiper.params.a11y;\n swiper.$el.append(liveRegion); // Container\n\n const $containerEl = swiper.$el;\n\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n }\n\n if (params.containerMessage) {\n addElLabel($containerEl, params.containerMessage);\n } // Wrapper\n\n\n const $wrapperEl = swiper.$wrapperEl;\n const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId($wrapperEl, wrapperId);\n addElLive($wrapperEl, live); // Slide\n\n initSlides(); // Navigation\n\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl && $nextEl.length) {\n initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n }\n\n if ($prevEl && $prevEl.length) {\n initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.on('focus', handleFocus, true);\n swiper.$el.on('pointerdown', handlePointerDown, true);\n swiper.$el.on('pointerup', handlePointerUp, true);\n };\n\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let $nextEl;\n let $prevEl;\n\n if (swiper.navigation && swiper.navigation.$nextEl) {\n $nextEl = swiper.navigation.$nextEl;\n }\n\n if (swiper.navigation && swiper.navigation.$prevEl) {\n $prevEl = swiper.navigation.$prevEl;\n }\n\n if ($nextEl) {\n $nextEl.off('keydown', onEnterOrSpaceKey);\n }\n\n if ($prevEl) {\n $prevEl.off('keydown', onEnterOrSpaceKey);\n } // Pagination\n\n\n if (hasClickablePagination()) {\n swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n } // Tab focus\n\n\n swiper.$el.off('focus', handleFocus, true);\n swiper.$el.off('pointerdown', handlePointerDown, true);\n swiper.$el.off('pointerup', handlePointerUp, true);\n }\n\n on('beforeInit', () => {\n liveRegion = $(``);\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n\n const slide = swiper.slides.eq(index);\n let value = slugify(slide.attr('data-history'));\n\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key}/${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key}/${value}`;\n }\n\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n\n const currentState = window.history.state;\n\n if (currentState && currentState.value === value) {\n return;\n }\n\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHistory = slugify(slide.attr('data-history'));\n\n if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) return;\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n\n const destroy = () => {\n const window = getWindow();\n\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides.eq(swiper.activeIndex);\n const hash = slide.attr('data-hash') || slide.attr('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n\n if (hash) {\n const speed = 0;\n\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides.eq(i);\n const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n const index = slide.index();\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n\n if (swiper.params.hashNavigation.watchState) {\n $(window).on('hashchange', onHashChange);\n }\n };\n\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n $(window).off('hashchange', onHashChange);\n }\n };\n\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit\n}) {\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n if (!swiper.size) {\n swiper.autoplay.running = false;\n swiper.autoplay.paused = false;\n return;\n }\n\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n thumbs: {\n swiper: null,\n multipleActiveThumbs: true,\n autoScrollOffset: 0,\n slideThumbActiveClass: 'swiper-slide-thumb-active',\n thumbsContainerClass: 'swiper-thumbs'\n }\n });\n let initialized = false;\n let swiperCreated = false;\n swiper.thumbs = {\n swiper: null\n };\n\n function onThumbClick() {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const clickedIndex = thumbsSwiper.clickedIndex;\n const clickedSlide = thumbsSwiper.clickedSlide;\n if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n let slideToIndex;\n\n if (thumbsSwiper.params.loop) {\n slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n } else {\n slideToIndex = clickedIndex;\n }\n\n if (swiper.params.loop) {\n let currentIndex = swiper.activeIndex;\n\n if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n currentIndex = swiper.activeIndex;\n }\n\n const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n }\n\n swiper.slideTo(slideToIndex);\n }\n\n function init() {\n const {\n thumbs: thumbsParams\n } = swiper.params;\n if (initialized) return false;\n initialized = true;\n const SwiperClass = swiper.constructor;\n\n if (thumbsParams.swiper instanceof SwiperClass) {\n swiper.thumbs.swiper = thumbsParams.swiper;\n Object.assign(swiper.thumbs.swiper.originalParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n Object.assign(swiper.thumbs.swiper.params, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n } else if (isObject(thumbsParams.swiper)) {\n const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n Object.assign(thumbsSwiperParams, {\n watchSlidesProgress: true,\n slideToClickedSlide: false\n });\n swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n swiperCreated = true;\n }\n\n swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n swiper.thumbs.swiper.on('tap', onThumbClick);\n return true;\n }\n\n function update(initial) {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n let thumbsToActivate = 1;\n const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n thumbsToActivate = swiper.params.slidesPerView;\n }\n\n if (!swiper.params.thumbs.multipleActiveThumbs) {\n thumbsToActivate = 1;\n }\n\n thumbsToActivate = Math.floor(thumbsToActivate);\n thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n }\n } else {\n for (let i = 0; i < thumbsToActivate; i += 1) {\n thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n }\n }\n\n const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n let currentThumbsIndex = thumbsSwiper.activeIndex;\n let newThumbsIndex;\n let direction;\n\n if (thumbsSwiper.params.loop) {\n if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n currentThumbsIndex = thumbsSwiper.activeIndex;\n } // Find actual thumbs index to slide to\n\n\n const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n if (typeof prevThumbsIndex === 'undefined') {\n newThumbsIndex = nextThumbsIndex;\n } else if (typeof nextThumbsIndex === 'undefined') {\n newThumbsIndex = prevThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n newThumbsIndex = nextThumbsIndex;\n } else {\n newThumbsIndex = prevThumbsIndex;\n }\n\n direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n } else {\n newThumbsIndex = swiper.realIndex;\n direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n }\n\n if (useOffset) {\n newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n }\n\n if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n if (thumbsSwiper.params.centeredSlides) {\n if (newThumbsIndex > currentThumbsIndex) {\n newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n } else {\n newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n }\n } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\n if (!thumbs || !thumbs.swiper) return;\n init();\n update(true);\n });\n on('slideChange update resize observerUpdate', () => {\n update();\n });\n on('setTransition', (_s, duration) => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n thumbsSwiper.setTransition(duration);\n });\n on('beforeDestroy', () => {\n const thumbsSwiper = swiper.thumbs.swiper;\n if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n if (swiperCreated) {\n thumbsSwiper.destroy();\n }\n });\n Object.assign(swiper.thumbs, {\n init,\n update\n });\n}","import { now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper; // Velocity\n\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n $wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper; // Time diff\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n\n return;\n }\n\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n } // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n\n\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n\n newPosition = -newPosition;\n }\n\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n } // Fix duration\n\n\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n\n if (!swiper.animating) {\n swiper.animating = true;\n $wrapperEl.transitionEnd(() => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","export default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides\n}) {\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n\n const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = $(`
`);\n $slideEl.append(shadowBefore);\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = $(`
`);\n $slideEl.append(shadowAfter);\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.each(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows($(slideEl), progress, isHorizontal);\n });\n };\n\n const setTranslate = () => {\n const {\n $el,\n $wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $wrapperEl.append($cubeShadowEl);\n }\n\n $cubeShadowEl.css({\n height: `${swiperWidth}px`\n });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = $('
');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n\n $slideEl.transform(transform);\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, isHorizontal);\n }\n }\n\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n\n const setTransition = duration => {\n const {\n $el,\n slides\n } = swiper;\n slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n };\n\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n if (!$shadowEl.length) {\n $shadowEl = $(`
`);\n $shadowContainer.append($shadowEl);\n }\n\n return $shadowEl;\n}","import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true,\n transformEl: null\n }\n });\n\n const createSlideShadows = ($slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if (shadowBefore.length === 0) {\n shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n\n if (shadowAfter.length === 0) {\n shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n };\n\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.each(slideEl => {\n const $slideEl = $(slideEl);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n\n createSlideShadows($slideEl, progress, params);\n });\n };\n\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (params.slideShadows) {\n createSlideShadows($slideEl, progress, params);\n }\n\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.flipEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth; // Each slide offset from center\n\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n }\n\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n }\n\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.coverflowEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n };\n\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n transformEl: null,\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n\n const setTranslate = () => {\n const {\n slides,\n $wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n }\n\n const offset = $slideEl[0].swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n } // set translate\n\n\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n }); // set rotates\n\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n if (custom && data.shadow || !custom) {\n let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0 && data.shadow) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform).css({\n opacity: opacityString\n });\n\n if (data.origin) {\n $targetEl.css('transform-origin', data.origin);\n }\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.creativeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n transformEl: null,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideProgress = $slideEl[0].progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = $slideEl[0].swiperSlideOffset;\n\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n }\n\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n\n if (params.slideShadows) {\n // Set shadows\n let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n if ($shadowEl.length === 0) {\n $shadowEl = createShadow(params, $slideEl);\n }\n\n if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.transform(transform);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.cardsEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl\n });\n };\n\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","/**\n * Swiper 8.4.6\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 17, 2023\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';"],"names":["ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread2","target","i","arguments","length","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_typeof","obj","Symbol","iterator","constructor","prototype","value","configurable","writable","_toConsumableArray","arr","_arrayWithoutHoles","Array","isArray","_arrayLikeToArray","_iterableToArray","iter","from","_unsupportedIterableToArray","o","minLen","n","toString","call","slice","name","test","_nonIterableSpread","len","arr2","camelize","string","replace","match","chr","toUpperCase","substr","toLowerCase","_excluded","PRODUCTION","e","normalizeIconArgs","icon","prefix","iconName","_fortawesome_fontawesome_svg_core__WEBPACK_IMPORTED_MODULE_0__","Qc","objectWithKey","FontAwesomeIcon","react__WEBPACK_IMPORTED_MODULE_1__","forwardRef","props","ref","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","listItem","flip","size","rotation","pull","iconArgs","maskArgs","mask","symbol","className","title","titleId","maskId","iconLookup","classes","concat","swapOpacity","map","split","transform","renderedIcon","qv","log","console","error","_console","abstract","extraProps","defaultProps","hasOwnProperty","convertCurry","displayName","propTypes","prop_types__WEBPACK_IMPORTED_MODULE_2___default","bool","oneOfType","array","oneOf","convert","createElement","element","undefined","children","child","mixins","attributes","reduce","acc","val","attrs","style","s","trim","pair","indexOf","prop","startsWith","charAt","_extraProps$style","remaining","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","tag","bind","ReactPropTypesSecret","__webpack_require__","emptyFunction","emptyFunctionWithReset","resetWarningCache","module","exports","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","func","number","any","arrayOf","elementType","instanceOf","node","objectOf","shape","exact","checkPropTypes","PropTypes","isValidProp","AnimationType","BoundingBoxDimension","MotionConfigContext","react","createContext","transformPagePoint","p","isStatic","reducedMotion","MotionContext","PresenceContext_PresenceContext","isBrowser","document","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","LazyContext","strict","isRefObject","isVariantLabel","v","isAnimationControls","start","variantProps","isControllingVariants","animate","some","isVariantNode","Boolean","variants","variantLabelsAsDependency","join","createDefinition","isEnabled","propNames","featureDefinitions","measureLayout","animation","exit","drag","focus","hover","tap","pan","inView","useConstant","init","useRef","current","globalProjectionState","hasAnimatedSinceResize","hasEverUpdated","id","LayoutGroupContext","VisualElementHandler","Component","getSnapshotBeforeUpdate","visualElement","setProps","componentDidUpdate","render","SwitchLayoutGroupContext","motionComponentSymbol","for","lowercaseSVGElements","isSVGComponent","includes","scaleCorrectors","transformPropOrder","transformProps","Set","isForcedMotionValue","layout","layoutId","has","isMotionValue","getVelocity","translateAlias","x","y","z","transformPerspective","sortTransformProps","a","b","isCSSVariable","getValueAsType","type","clamp","min","max","Math","parse","parseFloat","alpha","scale","default","sanitize","round","floatRegex","colorRegex","singleColorRegex","isString","createUnitType","endsWith","unit","degrees","percent","px","vh","vw","progressPercentage","type_int_int","numberValueTypes","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderRadius","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","width","maxWidth","height","maxHeight","top","right","bottom","left","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","margin","marginTop","marginRight","marginBottom","marginLeft","rotate","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","skew","skewX","skewY","distance","translateX","translateY","translateZ","perspective","opacity","originX","originY","originZ","zIndex","fillOpacity","strokeOpacity","numOctaves","buildHTMLStyles","state","latestValues","options","transformTemplate","vars","transformKeys","transformOrigin","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","buildTransform","enableHardwareAcceleration","allowTransformNone","transformIsDefault","transformString","sort","createHtmlRenderState","copyRawValuesOnly","useHTMLProps","visualState","htmlProps","useStyle","styleProp","assign","useInitialMotionValues","useMemo","transformValues","dragListener","draggable","userSelect","WebkitUserSelect","WebkitTouchCallout","touchAction","validMotionProps","isValidMotionProp","shouldForward","require","_a","calcOrigin","origin","offset","dashKeys","camelKeys","buildSVGAttrs","attrX","attrY","pathLength","pathSpacing","pathOffset","latest","isSVGTag","viewBox","dimensions","calcSVGTransformOrigin","pxOriginX","pxOriginY","buildSVGPath","spacing","useDashCase","createSvgRenderState","useSVGProps","_isStatic","visualProps","rawStyles","camelToDash","str","renderHTML","projection","getProjectionStyles","setProperty","camelCaseAttributes","renderSVG","renderState","_styleProp","setAttribute","scrapeMotionValuesFromProps","prevProps","newValues","scrape_motion_values_scrapeMotionValuesFromProps","targetKey","resolveVariantFromProps","definition","custom","currentValues","currentVelocity","isKeyframesTarget","isCustomValue","mix","toValue","resolveFinalValueInKeyframes","resolveMotionValue","unwrappedValue","get","makeUseVisualState","context","useContext","presenceContext","make","makeState","createRenderState","onMount","makeLatestValues","scrapeMotionValues","values","motionValues","initial","isControllingVariants$1","isVariantNode$1","inherit","isInitialAnimationBlocked","variantToSet","list","resolved","transitionEnd","transition","valueTarget","index","mount","instance","config","svgMotionConfig","useVisualState","getBBox","getBoundingClientRect","tagName","htmlMotionConfig","addDomEvent","eventName","handler","passive","addEventListener","removeEventListener","useDomEvent","isPrimaryPointer","event","pointerType","button","isPrimary","extractEventInfo","pointType","point","addPointerInfo","addPointerEvent","usePointerEvent","createLock","lock","openLock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal","openVertical","isDragActive","openGestureLock","createHoverEvent","isActive","applyVariants","callback","info","animationState","setActive","Hover","isNodeOrChild","parent","parentElement","useUnmountEffect","combineFunctions","pipe","transformers","observerCallbacks","WeakMap","observers","fireObserverCallback","entry","fireAllObserverCallbacks","entries","thresholdNames","all","useIntersectionObserver","shouldObserve","root","rootMargin","amount","once","threshold","intersectionCallback","isIntersecting","isInView","hasEnteredView","InView","getProps","onViewportEnter","onViewportLeave","observeIntersection","rootInteresectionObserver","initIntersectionObserver","lookupRoot","set","rootObservers","JSON","stringify","IntersectionObserver","observe","delete","unobserve","useMissingIntersectionObserver","fallback","requestAnimationFrame","makeRenderlessComponent","hook","gestureAnimations","whileInView","viewport","useObserver","onTap","onTapStart","onTapCancel","whileTap","isPressing","cancelPointerEndListeners","eventOptions","removePointerEndListener","checkPointerEnd","latestProps","Tap","onPointerUp","_b","_c","_d","onPointerCancel","startPress","useCallback","window","hasPressListeners","whileFocus","onFocus","Focus","onBlur","onHoverStart","onHoverEnd","whileHover","usePresence","isPresent","onExitComplete","register","useId","safeToRemove","shallowCompare","next","prev","prevLength","isNumericalString","isZeroValueString","frameData","delta","timestamp","defaultTimestep","getCurrentTime","performance","now","Date","onNextFrame","setTimeout","useDefaultElapsed","runNextFrame","isProcessing","stepsOrder","steps","createRenderStep","toRun","toRunNextFrame","numToRun","flushNextFrame","toKeepAlive","WeakSet","step","schedule","keepAlive","immediate","addToCurrentFrame","buffer","add","cancel","splice","process","sync","startLoop","cancelSync","flushSync","processStep","stepId","processFrame","addUniqueItem","item","removeItem","SubscriptionManager","subscriptions","notify","c","numSubscriptions","getSize","clear","velocityPerSecond","velocity","frameDuration","isFloat","isNaN","MotionValue","version","timeDelta","lastUpdated","canTrackVelocity","events","updateAndNotify","postRender","scheduleVelocityCheck","change","velocityChange","renderRequest","velocityCheck","hasAnimated","owner","onChange","subscription","on","unsubscribe","read","stop","clearListeners","eventManagers","attach","passiveEffect","stopPassiveEffect","setWithVelocity","jump","getPrevious","startAnimation","Promise","resolve","animationStart","then","animationComplete","clearAnimation","animationCancel","isAnimating","destroy","motionValue","isColorString","testProp","splitColor","aName","bName","cName","clampRgbUnit","rgbUnit","rgba","red","green","blue","alpha$1","hex","r","g","substring","parseInt","hsla","hue","saturation","lightness","color","colorToken","numberToken","analyseComplexValue","numColors","numNumbers","colors","numbers","tokenised","createTransformer","numValues","output","convertNumbersToZero","complex","getAnimatableNone","parsed","transformer","maxDefaults","applyDefaultFilter","defaultValue","functionRegex","functions","defaultValueTypes","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","WebkitFilter","getDefaultValueType","animatable_none_getAnimatableNone","defaultValueType","testValueType","dimensionValueTypes","findDimensionValueType","find","valueTypes","findValueType","resolveVariant","getCurrent","isWillChangeMotionValue","optimizedAppearDataAttribute","warning","invariant","secondsToMilliseconds","seconds","instantAnimationState","mirrorEasing","easing","reverseEasing","easeIn","easeOut","easeInOut","to","progress","hueToRgb","q","t","mixLinearColor","fromExpo","sqrt","colorTypes","getColorType","asRGBA","model","hslaToRgba","mixColor","fromRGBA","toRGBA","blended","getMixer","mixComplex","mixArray","blendValue","fromThis","mixObject","template","originStats","targetStats","canInterpolate","toFromDifference","mixNumber","interpolate","input","isClamp","ease","mixer","inputLength","reverse","mixers","createMixers","customMixer","mixerFactory","detectMixerFactory","numMixers","easingFunction","interpolator","progressInRange","noop","calcBezier","a1","a2","cubicBezier","mX1","mY1","mX2","mY2","getTForX","binarySubdivide","lowerBound","upperBound","currentX","currentT","abs","aX","circIn","sin","acos","circOut","circInOut","backOut","backIn","backInOut","anticipate","pow","easingLookup","linear","easingDefinitionToFunction","x1","y1","x2","y2","isEasingArray","keyframes","keyframeValues","times","duration","easingFunctions","done","absoluteTimes","defaultOffset","_value","createInterpolator","flipTarget","calcAngularFreq","undampedFreq","dampingRatio","durationKeys","physicsKeys","isSpringType","spring","restDelta","restSpeed","stiffness","damping","mass","isResolvedFromDuration","getSpringOptions","springOptions","derived","findSpring","envelope","derivative","maxDuration","exponentialDecay","safeMin","exp","factor","d","f","initialGuess","approximateRoot","result","resolveSpring","zero","initialVelocity","createSpring","initialDelta","undampedAngularFreq","isGranularScale","angularFreq","cos","dampedAngularFreq","freqForT","sinh","cosh","prevT","isBelowVelocityThreshold","isBelowDisplacementThreshold","needsInterpolation","types","decay","power","timeConstant","modifyTarget","amplitude","ideal","tween","loopElapsed","elapsed","delay","framesync","passTimestamp","update","driver","repeat","repeatMax","repeatType","repeatDelay","keyframes$1","autoplay","onPlay","onStop","onComplete","onRepeat","onUpdate","driverControls","interpolateFromNumber","initialElapsed","repeatCount","computedDuration","isComplete","isForwardPlayback","animator","hasRepeatDelayElapsed","reverseElapsed","currentTime","sample","sampleResolution","sampleElapsed","cubicBezierAsString","supportedWaapiEasing","featureTests","waapi","Element","results","supports","acceleratedValues","timeout","checkElapsed","underDampedSpring","criticallyDampedSpring","linearTween","keyframesTransition","defaultTransitions","getDefaultTransition","valueKey","factory","isAnimatable","isZero","getZeroUnit","potentialUnitType","getValueTransition","createMotionValueAnimation","valueName","valueTransition","getKeyframes","isTargetAnimatable","originKeyframe","targetKeyframe","isOriginAnimatable","createInstantAnimation","setValue","inertia","bounceStiffness","bounceDamping","currentAnimation","isOutOfBounds","findNearestBoundary","startSpring","boundary","heading","checkBoundary","isTransitionDefined","when","_delay","delayChildren","staggerChildren","staggerDirection","HTMLElement","acceleratedAnimation","createAcceleratedAnimation","canAccelerateAnimation","Infinity","sampleAnimation","pregeneratedKeyframes","animateStyle","mapEasingToNativeEasing","iterations","direction","onfinish","getFinalKeyframe","animateVariant","variant","transitionOverride","getAnimation","animateTarget","getChildAnimations","variantChildren","forwardDelay","animateChildren","animations","maxStaggerDuration","generateStaggerDuration","sortByTreeOrder","first","last","makeTargetAnimatable","willChange","getValue","animationTypeState","getState","shouldBlockAnimation","protectedKeys","needsAnimating","shouldBlock","HandoffAppearAnimations","appearId","shouldReduceMotion","remove","setTarget","hasValue","addValue","sortNodePosition","variantPriorityOrder","Animate","Drag","Exit","reversePriorityOrder","numAnimationTypes","createTypeState","prevResolvedValues","createAnimationState","animateVisualElement","resolvedDefinition","isInitialRender","buildResolvedTypeValues","animateChanges","changedActiveType","getVariantContext","removedKeys","encounteredKeys","removedVariantIndex","typeState","propIsVariant","activeDelta","isInherited","manuallyAnimateOnMount","prevProp","variantDidChange","shouldAnimateType","definitionList","resolvedValues","allKeys","markToAnimate","blockInitialAnimation","fallbackAnimation","fallbackTarget","getBaseTarget","shouldAnimate","setAnimateFunction","makeAnimator","subscribe","PanSession","handlers","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","history","isPanStarted","isDistancePastThreshold","distance2D","xDelta","yDelta","onStart","onMove","handlePointerMove","transformPoint","handlePointerUp","end","onEnd","onSessionEnd","panInfo","initialInfo","onSessionStart","removeListeners","updateHandlers","subtractPoint","lastDevicePoint","PanSession_getVelocity","timestampedPoint","lastPoint","time","calcLength","axis","isNear","maxDistance","calcAxisDelta","originPoint","translate","calcBoxDelta","calcRelativeAxis","relative","calcRelativeAxisPosition","calcRelativePosition","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","resolveAxisElastic","dragElastic","minLabel","maxLabel","resolvePointElastic","label","createAxisDelta","createDelta","createAxis","createBox","eachAxis","convertBoundingBoxToBox","isIdentityScale","hasScale","has2DTranslate","is2DTranslate","applyPointDelta","boxScale","scalePoint","applyAxisDelta","applyBoxDelta","box","snapToDefault","isInteger","translateAxis","transformAxis","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","transformBox","measureViewportBox","transformBoxPoints","topLeft","bottomRight","elementDragControls","VisualElementDragControls","openGlobalLock","isDragging","currentDirection","constraints","hasMutatedConstraints","elastic","originEvent","snapToCursor","stopAnimation","dragPropagation","onDragStart","resolveConstraints","isAnimationBlocked","getAxisMotionValue","measuredAxis","layoutBox","dragDirectionLock","onDirectionLock","onDrag","getCurrentDirection","lockThreshold","updateAxis","panSession","getTransformPagePoint","onDragEnd","_point","shouldDrag","axisValue","applyConstraints","dragConstraints","prevConstraints","resolveRefConstraints","calcRelativeConstraints","resolveDragElastic","rebaseAxisConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measurePageBox","rootProjectionNode","viewportBox","scroll","measuredConstraints","userConstraints","convertBoxToBoundingBox","dragMomentum","dragTransition","dragSnapToOrigin","onDragTransitionEnd","momentumAnimations","startAxisValueAnimation","dragKey","externalMotionValue","scalePositionWithinConstraints","boxProgress","constraints_calcOrigin","sourceLength","targetLength","updateScroll","updateLayout","addListeners","stopPointerListener","measureDragConstraints","stopMeasureLayoutListener","stopResizeListener","stopLayoutUpdateListener","hasLayoutChanged","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","dragControls","groupDragControls","css_variables_conversion_isCSSVariable","cssVariableRegex","getVariableValue","depth","token","parseCSSVariable","exec","getComputedStyle","getPropertyValue","positionalKeys","isPositionalKey","hasPositionalKey","isNumOrPxType","getPosFromMatrix","matrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","nonTranslationalTransformKeys","positionalValues","convertChangedValueTypes","changedKeys","originBbox","elementComputedStyle","display","setStaticValue","targetBbox","checkAndConvertChangedValueTypes","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","fromType","numKeyframes","fromIndex","removeNonTranslationalTransform","removedTransforms","scrollY","pageYOffset","convertedTarget","scrollTo","parseDomVariant","resolveCSSVariables","prefersReducedMotion","hasReducedMotionListener","featureNames","numFeatures","propEventHandlers","VisualElement","reducedMotionConfig","Map","valueSubscriptions","prevMotionValues","propEventSubscriptions","notifyUpdate","triggerBuild","renderInstance","scheduleRender","baseTarget","initialValues","initialMotionValues","_props","_prevProps","removeFromVariantTree","addVariantChild","bindToMotionValue","initPrefersReducedMotion","matchMedia","motionMediaQuery","setReducedMotionPreferences","matches","addListener","unmount","valueIsTransform","removeOnChange","latestValue","isTransformDirty","removeOnRenderRequest","other","sortInstanceNodePosition","loadFeatures","renderedProps","isStrict","preloadedFeatures","projectionId","ProjectionNodeConstructor","initialLayoutGroupConfig","features","layoutScroll","layoutRoot","setOptions","alwaysMeasureLayout","animationType","initialPromotionConfig","build","measureInstanceViewportBox","getStaticValue","canMutate","makeTargetAnimatableFromInstance","listener","updateMotionValuesFromProps","nextValue","prevValue","existingValue","removeValue","handleChildMotionValue","getVariant","getClosestVariantNode","startAtParent","numVariantProps","VisualElement_variantProps","closestVariantNode","removeValueFromRenderState","readValue","readValueFromInstance","setBaseTarget","valueFromInitial","getBaseTargetFromProps","args","DOMVisualElement","compareDocumentPosition","isMounted","getOrigin","transitionOrigin","getOriginFromTransition","checkTargetForNewValues","newValueKeys","numNewValues","targetValue","HTMLVisualElement","defaultType","computedStyle","childSubscription","textContent","SVGVisualElement","getAttribute","create_visual_element_createDomVisualElement","pixelsToPercent","pixels","correctBorderRadius","correct","varToken","correctBoxShadow","treeScale","projectionDelta","original","containsCSSVariables","cssVariables","shadow","xScale","yScale","averageScale","cssVariable","MeasureLayoutWithContext","componentDidMount","layoutGroup","switchLayoutGroup","defaultScaleCorrectors","group","didUpdate","layoutDependency","willUpdate","promote","relegate","getStack","members","isLead","componentWillUnmount","promoteContext","scheduleCheckAfterUnmount","deregister","applyTo","boxShadow","borders","numBorders","asNumber","isPx","getRadius","radiusName","easeCrossfadeIn","compress","easeCrossfadeOut","copyAxisInto","originAxis","copyBoxInto","originBox","removePointDelta","removeAxisTransforms","sourceAxis","removeAxisDelta","relativeProgress","delta_remove_xKeys","delta_remove_yKeys","removeBoxTransforms","sourceBox","isAxisDeltaZero","isDeltaZero","boxEquals","aspectRatio","NodeStack","prevLead","lead","indexOfNode","findIndex","member","preserveFollowOpacity","show","resumeFrom","preserveOpacity","snapshot","animationValues","isUpdating","isLayoutDirty","crossfade","hide","exitAnimationComplete","_e","resumingFrom","removeLeadSnapshot","buildProjectionTransform","latestTransform","xTranslate","yTranslate","elementScaleX","elementScaleY","compareByDepth","FlatTree","isDirty","transformAxes","create_projection_node_id","createProjectionNode","attachResizeListener","defaultParent","measureScroll","checkIsScrollRoot","resetTransform","elementId","animationId","isTreeAnimating","isProjectionDirty","updateManuallyBlocked","updateBlockedByResize","isSVG","needsReset","shouldResetTransform","eventHandlers","potentialNodes","checkUpdateFailed","clearAllSnapshots","updateProjection","nodes","propagateDirtyNodes","resolveTargetDelta","calcProjection","hasProjected","isVisible","animationProgress","sharedNodes","path","registerPotentialNode","notifyListeners","subscriptionManager","hasListeners","SVGElement","cancelDelay","resizeUnblockUpdate","finishAnimation","registerSharedNode","hasRelativeTargetChanged","newLayout","isTreeAnimationBlocked","relativeTarget","layoutTransition","defaultLayoutTransition","onLayoutAnimationStart","onLayoutAnimationComplete","targetChanged","targetLayout","hasOnlyRelativeTargetChanged","setAnimationOrigin","animationOptions","preRender","blockUpdate","unblockUpdate","isUpdateBlocked","startUpdate","resetRotation","getTransformTemplate","shouldNotifyListeners","prevTransformTemplateValue","updateSnapshot","updateWasBlocked","clearMeasurements","mountNodeEarly","resetTransformStyle","notifyLayoutUpdate","clearSnapshot","removeLeadSnapshots","scheduleUpdateProjection","measure","prevLayout","layoutCorrected","phase","needsMeasurement","isRoot","isResetRequested","hasProjection","transformTemplateValue","transformTemplateHasChanged","removeTransform","pageBox","removeElementScroll","roundAxis","measuredBox","boxWithoutScroll","rootScroll","applyTransform","transformOnly","withTransforms","boxWithoutTransform","nodeBox","setTargetDelta","targetDelta","getLead","attemptToResolveRelativeTarget","relativeParent","getClosestProjectingParent","relativeTargetOrigin","targetWithTransforms","isShared","canSkip","pendingAnimation","applyTreeDeltas","treePath","isSharedTransition","treeLength","projectionDeltaWithTransform","prevTreeScaleX","prevTreeScaleY","prevProjectionTransform","projectionTransform","notifyAll","snapshotLatestValues","mixedValues","relativeLayout","isSharedLayoutAnimation","isOnlyMember","shouldCrossfadeOpacity","hasOpacityCrossfade","mixTargetDelta","mixAxisDelta","mixAxis","mixValues","follow","opacityExit","borderLabel","followRadius","leadRadius","canMix","animate_animate","completeAnimation","applyTransformsToTarget","shouldAnimatePositionOnly","xLength","yLength","stack","shouldPreserveFollowOpacity","getPrevLead","hasRotate","resetValues","styles","visibility","pointerEvents","emptyStyles","valuesToRender","corrected","num","resetTree","measuredLayout","axisSnapshot","layoutDelta","visualDelta","parentSnapshot","parentLayout","relativeSnapshot","onBeforeLayoutMeasure","searchNode","searchElement","querySelector","DocumentProjectionNode","documentElement","scrollLeft","body","scrollTop","HTMLProjectionNode_HTMLProjectionNode","documentNode","position","featureBundle","motion","createMotionProxy","createConfig","customMotionComponentConfig","motion_createMotionComponent","createVisualElement","projectionNodeConstructor","useRender","ForwardRefComponent","externalRef","configAndProps","useLayoutId","layoutGroupId","useCreateMotionContext","getCurrentTreeVariants","useVisualElement","lazyContext","visualElementRef","renderer","presenceId","useAnimateChangesEffect","lazyStrictMode","Provider","Proxy","componentCache","_target","create_config_createDomMotionConfig","forwardMotionProps","baseConfig","createUseRender","useVisualProps","filteredProps","filterProps","isDom","elementProps","renderedChildren","isObject","extend","src","noExtend","__swiper__","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","unique","paramsList","calcLoopedSlides","slides","swiperParams","slidesPerViewParams","slidesPerView","breakpoints","breakpoint","swiper_esm","ZP","getBreakpoint","breakpointOnlyParams","loopedSlides","ceil","loopAdditionalSlides","loopedSlidesLimit","isChildSwiperSlide","updateOnVirtualData","swiper","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","lazy","load","parallax","setTranslate","deps","SwiperSlideContext","SwiperContext","_extends","Swiper","_temp","externalElRef","Tag","wrapperTag","WrapperTag","onSwiper","rest","eventsAssigned","containerClasses","setContainerClasses","useState","virtualData","setVirtualData","breakpointChanged","setBreakpointChanged","initializedRef","swiperElRef","swiperRef","oldPassedParamsRef","oldSlides","nextElRef","prevElRef","paginationElRef","scrollbarElRef","passedParams","restProps","getParams","splitEvents","defaults","extendedDefaults","_emitClasses","allowedParams","plainObj","search","slots","getChildren","Children","toArray","slot","foundSlides","processChildren","slide","onBeforeBreakpoint","_containerClasses","initSwiper","loopCreate","loopDestroy","loop","extendWith","cache","renderExternal","renderExternalUpdate","originalParams","attachEvents","detachEvents","off","emitSlidesClasses","mountSwiper","paginationEl","scrollbarEl","changedParams","getChangedParams","oldParams","oldChildren","getKey","addKey","oldChildrenKeys","childrenKeys","watchParams","newKeys","oldKeys","newKey","oldKey","updateSwiper","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","updateParams","currentParams","thumbs","controller","control","destroyModule","mod","newValue","initialized","updateSize","allowSlideNext","allowSlidePrev","changeDirection","renderVirtual","isHorizontal","rtlTranslate","cloneElement","renderLoop","modifiedSlides","duplicateSlide","slideDuplicateClass","loopFillGroupWithBlank","blankSlidesNum","slidesPerGroup","blankSlide","slideClass","slideBlankClass","prependSlides","appendSlides","floor","unshift","Fragment","swiper_slide_extends","SwiperSlide","zoom","virtualIndex","slideElRef","slideClasses","setSlideClasses","updateClasses","_s","getSlideClasses","slideData","isDuplicate","isPrev","isNext","renderChildren","support","deviceCached","browser","ssr_window_esm_isObject","ssrDocument","activeElement","blur","nodeName","querySelectorAll","getElementById","createEvent","initEvent","childNodes","getElementsByTagName","createElementNS","importNode","hash","host","hostname","href","pathname","protocol","ssr_window_esm_getDocument","doc","ssrWindow","navigator","userAgent","replaceState","pushState","go","back","CustomEvent","Image","screen","clearTimeout","cancelAnimationFrame","ssr_window_esm_getWindow","win","Dom7","items","makeReactive","proto","__proto__","arrayFlat","res","arrayFilter","dom7_esm_$","selector","html","toCreate","tempParent","innerHTML","qsa","nodeType","arrayUnique","uniqueArray","fn","noTrigger","shortcut","trigger","Methods","addClass","classList","removeClass","hasClass","contains","toggleClass","toggle","attr","attrName","removeAttr","removeAttribute","transitionDuration","j","eventType","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","is","parents","k","handleEvent","dom7LiveListeners","proxyListener","dom7Listeners","dom7proxy","evt","detail","bubbles","cancelable","data","dataIndex","dispatchEvent","dom","fireCallBack","outerWidth","includeMargins","offsetWidth","outerHeight","offsetHeight","clientTop","clientLeft","scrollX","css","each","text","compareWith","webkitMatchesSelector","msMatchesSelector","previousSibling","eq","returnIndex","append","els","newChild","tempDiv","firstChild","appendChild","prepend","insertBefore","nextElementSibling","nextAll","nextEls","previousElementSibling","prevAll","prevEls","parentNode","closest","foundElements","found","removeChild","utils_nextTick","utils_now","utils_isObject","utils_extend","nextSource","keysArray","nextIndex","nextKey","desc","utils_setCSSProperty","varName","varValue","animateCSSModeScroll","targetPosition","side","startPosition","startTime","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","getTime","currentPosition","easeProgress","PI","overflow","getSupport","calcSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","transitionEmit","runCallbacks","activeIndex","previousIndex","emit","onTouchStart","touchEventsData","touches","animating","preventInteractionOnTransition","cssMode","loopFix","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","closestElement","base","__closestFrom","assignedSlot","getRootNode","allowClick","swipeHandler","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","innerWidth","preventDefault","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","rtl","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","diffX","diffY","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","getTranslate","setTransition","$wrapperEl","allowMomentumBounce","grabCursor","setGrabCursor","diff","touchRatio","currentTranslate","disableParentSwiper","resistanceRatio","resistance","followFinger","watchSlidesProgress","updateActiveIndex","onTouchEnd","currentPos","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","increment","rewindFirstIndex","rewindLastIndex","rewind","isBeginning","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","isNavButtonTarget","onResize","setBreakpoint","snapGrid","centeredSlides","running","paused","run","watchOverflow","checkOverflow","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","previousTranslate","translatesDiff","methodName","dummyEventAttached","dummyEventListener","method","touchEvents","device","domMethod","passiveListeners","move","updateOnWindowResize","ios","android","isGridEnabled","grid","rows","initialSlide","resizeObserver","createElements","url","autoHeight","setWrapperSize","virtualTranslate","effect","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","simulateTouch","uniqueNavElements","slideToClickedSlide","preloadImages","updateOnImagesReady","loopPreventsSlide","maxBackfaceHiddenSlides","containerModifierClass","slideActiveClass","slideDuplicateActiveClass","slideVisibleClass","slideNextClass","slideDuplicateNextClass","slidePrevClass","slideDuplicatePrevClass","wrapperClass","runCallbacksOnInit","prototypes","eventsEmitter","priority","self","eventsListeners","onceHandler","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","eventsArray","$el","clientWidth","clientHeight","Number","slideSize","getDirectionLabel","property","getDirectionPropertyValue","swiperSize","wrongRTL","isVirtual","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","gridEnabled","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","boxSizing","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","_","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","visibleSlides","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","wasBeginning","wasEnd","activeSlide","realIndex","nextSlide","prevSlide","newActiveIndex","previousRealIndex","previousSnapIndex","skip","slideFound","clickedSlide","clickedIndex","utils_getTranslate","curTransform","transformMatrix","curStyle","utils_getComputedStyle","currentStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","translateTo","translateBounds","internal","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionStart","indexAsNumber","isValidNumber","isFinite","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","slideNext","perGroup","slidesPerViewDynamic","_clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","currentSnap","nextSnap","slideToIndex","$selector","blankNode","cloneNode","snapTranslate","slideChanged","moving","isLocked","cursor","unsetGrabCursor","currentBreakpoint","breakpointParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","containerEl","currentHeight","innerHeight","points","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","addClasses","suffixes","prepareClasses","resultClasses","removeClasses","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","isPicture","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","swipers","newParams","getDevice","overrides","calcDevice","platform","ua","screenWidth","screenHeight","ipad","ipod","iphone","macos","iPadScreens","os","calcBrowser","isSafari","isWebView","modules","__modules__","allModulesParams","extendParams","moduleParamName","moduleParams","auto","$","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","slideEl","updates","view","spv","breakLoop","slideInView","translateValue","newDirection","needUpdate","changeLanguageDirection","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","deleteProps","extendDefaults","newDefaults","installModule","use","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","createObserver","ResizeObserver","newWidth","contentBoxSize","contentRect","inlineSize","blockSize","removeObserver","orientationChangeHandler","ObserverFunc","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","containerParents","observeSlideChildren","disconnect","core","create_element_if_not_defined_createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","disabled","disabledClass","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","navigationDisabledClass","targetEl","isHidden","clickable","classes_to_selector_classesToSelector","Pagination","bulletSize","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","total","paginationType","firstIndex","midIndex","suffix","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","progressbarDirection","paginationHTML","numberOfBullets","Autoplay","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","afterBouncePosition","needsLoopFix","pop","velocityEvent","momentumDuration","momentumDistance","newPosition","doBounce","bounceAmount","moveDistance","currentSlideSize","EffectFade","fadeEffect","crossFade","transformEl","$slideEl","tx","ty","slideOpacity","effectParams","$transitionElements","effect_virtual_transition_end_effectVirtualTransitionEnd","allSlides","eventTriggered","$transitionEndTarget","triggerEvents","effect_init_effectInit","requireUpdateOnVirtual","overwriteParams","recreateShadows","getEffectParams","overwriteParamsResult","slideShadows"],"sourceRoot":""}