motion-v 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +7637 -1
- package/dist/es/animation/use-animate.mjs +25 -15
- package/dist/es/components/AnimatePresence.vue.mjs +57 -39
- package/dist/es/components/AnimatePresence.vue2.mjs +2 -2
- package/dist/es/components/LayoutGroup.vue.mjs +39 -0
- package/dist/es/components/LayoutGroup.vue2.mjs +4 -0
- package/dist/es/components/Motion.vue.mjs +87 -57
- package/dist/es/components/Motion.vue2.mjs +2 -2
- package/dist/es/components/Primitive.mjs +15 -9
- package/dist/es/components/Slot.mjs +28 -19
- package/dist/es/components/context.mjs +15 -4
- package/dist/es/components/group.mjs +30 -0
- package/dist/es/components/presence.mjs +13 -10
- package/dist/es/components/renderSlotFragments.mjs +10 -4
- package/dist/es/components/use-force-update.mjs +11 -0
- package/dist/es/constants/index.mjs +13 -6
- package/dist/es/features/events.mjs +59 -43
- package/dist/es/features/feature-manager.mjs +20 -17
- package/dist/es/features/feature.mjs +4 -4
- package/dist/es/features/gestures/base.mjs +12 -7
- package/dist/es/features/gestures/hover.mjs +25 -16
- package/dist/es/features/gestures/in-view.mjs +21 -15
- package/dist/es/features/gestures/press.mjs +22 -13
- package/dist/es/features/layout/config.mjs +21 -0
- package/dist/es/features/layout/layout.mjs +74 -0
- package/dist/es/features/layout/utils.mjs +8 -0
- package/dist/es/features/svg.mjs +14 -13
- package/dist/es/index.mjs +119 -102
- package/dist/es/node_modules/.pnpm/@vueuse_shared@12.0.0_typescript@5.5.4/node_modules/@vueuse/shared/index.mjs +6 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +38 -28
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/index.mjs +22 -15
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs +13 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/sequence.mjs +11 -9
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/single-value.mjs +8 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/subject.mjs +32 -24
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +178 -137
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +53 -37
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs +227 -100
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs +8 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/utils/can-animate.mjs +26 -19
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs +112 -56
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs +25 -18
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs +10 -9
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs +27 -17
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs +15 -12
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs +4 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs +6 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs +10 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs +7 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs +6 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs +6 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs +6 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/inertia.mjs +58 -28
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs +28 -21
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs +71 -43
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs +64 -48
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs +12 -10
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/utils/is-generator.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs +6 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs +64 -37
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +48 -34
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/optimized-appear/data-id.mjs +5 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/sequence/create.mjs +133 -86
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs +12 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs +20 -16
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs +11 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/create-visual-element.mjs +19 -15
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs +19 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/get-value-transition.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs +14 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-animation-controls.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs +4 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-none.mjs +10 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-transition-defined.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/stagger.mjs +18 -16
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/anticipate.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/back.mjs +9 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/circ.mjs +8 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs +24 -14
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/ease.mjs +7 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/steps.mjs +8 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/utils/create-generator-easing.mjs +8 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs +5 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/utils/is-easing-array.mjs +4 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/utils/map.mjs +32 -29
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/events/add-dom-event.mjs +7 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/batcher.mjs +57 -21
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/frame.mjs +7 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/index-legacy.mjs +9 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/microtask.mjs +6 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/render-step.mjs +41 -19
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/sync-time.mjs +16 -10
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/motion/features/definitions.mjs +8 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +5 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs +60 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs +14 -13
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/copy.mjs +19 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs +81 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs +55 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs +40 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/models.mjs +18 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/utils.mjs +34 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs +13 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs +28 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/create-projection-node.mjs +1086 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/state.mjs +15 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/shared/stack.mjs +94 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/scale-border-radius.mjs +26 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs +25 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs +6 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/transform.mjs +36 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs +6 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs +20 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/measure.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/VisualElement.mjs +263 -117
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +81 -45
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +13 -11
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/resize/handle-element.mjs +49 -33
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/resize/handle-window.mjs +22 -14
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/resize/index.mjs +5 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs +53 -36
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs +29 -16
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs +14 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs +25 -9
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +32 -20
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs +32 -21
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs +20 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs +31 -15
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs +60 -33
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs +21 -21
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs +12 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/utils/resolve-element.mjs +20 -9
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs +47 -34
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs +9 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/defaults.mjs +21 -20
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/dimensions.mjs +8 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/find.mjs +7 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs +4 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/number-browser.mjs +34 -34
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/number.mjs +14 -14
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/test.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/transform.mjs +28 -28
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/type-auto.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/value-types/type-int.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs +29 -17
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +41 -32
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/build-styles.mjs +33 -20
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/build-transform.mjs +36 -20
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs +18 -12
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/render.mjs +6 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs +13 -9
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/transform.mjs +5 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/object/ObjectVisualElement.mjs +24 -20
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/store.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +33 -28
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/build-attrs.mjs +40 -20
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/path.mjs +12 -10
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/render.mjs +9 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +12 -11
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/transform-origin.mjs +8 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs +105 -47
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/compare-by-depth.mjs +4 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs +24 -0
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/is-controlling-variants.mjs +9 -9
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/is-variant-label.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs +31 -20
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs +5 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs +19 -14
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/setters.mjs +17 -13
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/variant-props.mjs +5 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/array.mjs +9 -7
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/clamp.mjs +8 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/delay.mjs +17 -12
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/distance.mjs +7 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/errors.mjs +17 -10
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs +32 -15
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/interpolate.mjs +42 -31
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/is-browser.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/is-zero-value-string.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/memo.mjs +8 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/color.mjs +40 -25
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/complex.mjs +73 -41
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/immediate.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/index.mjs +9 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/number.mjs +4 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/visibility.mjs +9 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/noop.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/offsets/default.mjs +6 -5
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/offsets/fill.mjs +8 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/offsets/time.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/pipe.mjs +3 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/progress.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs +15 -10
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs +4 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/resolve-value.mjs +9 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/subscription-manager.mjs +18 -15
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/time-conversion.mjs +4 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/transform.mjs +17 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/warn-once.mjs +7 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/wrap.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/index.mjs +125 -53
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/hex.mjs +32 -14
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/hsla.mjs +11 -9
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/index.mjs +18 -8
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/rgba.mjs +15 -13
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/utils.mjs +16 -13
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/complex/filter.mjs +22 -19
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/complex/index.mjs +71 -36
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/numbers/index.mjs +14 -12
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/numbers/units.mjs +19 -13
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/utils/color-regex.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/utils/float-regex.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/utils/is-nullish.mjs +3 -3
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/utils/single-color-regex.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/use-will-change/add-will-change.mjs +7 -6
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/use-will-change/is.mjs +4 -4
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/utils/is-motion-value.mjs +2 -2
- package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/utils/resolve-motion-value.mjs +9 -0
- package/dist/es/node_modules/.pnpm/hey-listen@1.0.8/node_modules/hey-listen/dist/hey-listen.es.mjs +17 -10
- package/dist/es/state/create-visual-element.mjs +9 -0
- package/dist/es/state/event.mjs +3 -3
- package/dist/es/state/motion-state.mjs +145 -91
- package/dist/es/state/schedule.mjs +23 -15
- package/dist/es/state/style.mjs +105 -81
- package/dist/es/state/transform.mjs +37 -29
- package/dist/es/state/utils.mjs +51 -45
- package/dist/es/utils/createContext.mjs +19 -11
- package/dist/es/utils/events.mjs +4 -4
- package/dist/es/utils/motion-value.mjs +3 -3
- package/dist/es/utils/use-animation-frame.mjs +17 -11
- package/dist/es/utils/use-in-view.mjs +20 -14
- package/dist/es/value/use-combine-values.mjs +22 -17
- package/dist/es/value/use-computed.mjs +17 -10
- package/dist/es/value/use-motion-template.mjs +17 -14
- package/dist/es/value/use-motion-value-event.mjs +11 -0
- package/dist/es/value/use-scroll.mjs +42 -33
- package/dist/es/value/use-spring.mjs +48 -28
- package/dist/es/value/use-time.mjs +7 -6
- package/dist/es/value/use-transform.mjs +24 -20
- package/dist/es/value/use-velocity.mjs +20 -0
- package/dist/src/components/LayoutGroup.d.ts +30 -0
- package/dist/src/components/context.d.ts +17 -0
- package/dist/src/components/group.d.ts +7 -0
- package/dist/src/components/use-force-update.d.ts +2 -0
- package/dist/src/features/index.d.ts +1 -0
- package/dist/src/features/layout/config.d.ts +8 -0
- package/dist/src/features/layout/layout.d.ts +10 -0
- package/dist/src/features/layout/types.d.ts +7 -0
- package/dist/src/features/layout/utils.d.ts +4 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/state/create-visual-element.d.ts +1 -0
- package/dist/src/state/motion-state.d.ts +1 -2
- package/dist/src/types/state.d.ts +2 -1
- package/dist/src/value/index.d.ts +4 -0
- package/package.json +2 -1
- package/dist/es/node_modules/.pnpm/@vueuse_shared@11.1.0_vue@3.4.38_typescript@5.5.4_/node_modules/@vueuse/shared/index.mjs +0 -6
- package/dist/src/components/usePrimitiveElement.d.ts +0 -5
|
@@ -1,30 +1,37 @@
|
|
|
1
|
-
import { easeInOut
|
|
2
|
-
import { isEasingArray
|
|
3
|
-
import { easingDefinitionToFunction
|
|
4
|
-
import { interpolate
|
|
5
|
-
import { defaultOffset
|
|
6
|
-
import { convertOffsetToTimes
|
|
7
|
-
function
|
|
8
|
-
return
|
|
1
|
+
import { easeInOut } from "../../easing/ease.mjs";
|
|
2
|
+
import { isEasingArray } from "../../easing/utils/is-easing-array.mjs";
|
|
3
|
+
import { easingDefinitionToFunction } from "../../easing/utils/map.mjs";
|
|
4
|
+
import { interpolate } from "../../utils/interpolate.mjs";
|
|
5
|
+
import { defaultOffset } from "../../utils/offsets/default.mjs";
|
|
6
|
+
import { convertOffsetToTimes } from "../../utils/offsets/time.mjs";
|
|
7
|
+
function defaultEasing(values, easing) {
|
|
8
|
+
return values.map(() => easing || easeInOut).splice(0, values.length - 1);
|
|
9
9
|
}
|
|
10
|
-
function
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
function keyframes({ duration = 300, keyframes: keyframeValues, times, ease = "easeInOut" }) {
|
|
11
|
+
const easingFunctions = isEasingArray(ease) ? ease.map(easingDefinitionToFunction) : easingDefinitionToFunction(ease);
|
|
12
|
+
const state = {
|
|
13
|
+
done: false,
|
|
14
|
+
value: keyframeValues[0]
|
|
15
|
+
};
|
|
16
|
+
const absoluteTimes = convertOffsetToTimes(
|
|
15
17
|
// Only use the provided offsets if they're the correct length
|
|
16
18
|
// TODO Maybe we should warn here if there's a length mismatch
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
)
|
|
20
|
-
|
|
19
|
+
times && times.length === keyframeValues.length ? times : defaultOffset(keyframeValues),
|
|
20
|
+
duration
|
|
21
|
+
);
|
|
22
|
+
const mapTimeToKeyframe = interpolate(absoluteTimes, keyframeValues, {
|
|
23
|
+
ease: Array.isArray(easingFunctions) ? easingFunctions : defaultEasing(keyframeValues, easingFunctions)
|
|
21
24
|
});
|
|
22
25
|
return {
|
|
23
|
-
calculatedDuration:
|
|
24
|
-
next: (
|
|
26
|
+
calculatedDuration: duration,
|
|
27
|
+
next: (t) => {
|
|
28
|
+
state.value = mapTimeToKeyframe(t);
|
|
29
|
+
state.done = t >= duration;
|
|
30
|
+
return state;
|
|
31
|
+
}
|
|
25
32
|
};
|
|
26
33
|
}
|
|
27
34
|
export {
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
defaultEasing,
|
|
36
|
+
keyframes
|
|
30
37
|
};
|
|
@@ -1,55 +1,83 @@
|
|
|
1
|
-
import { warning
|
|
2
|
-
import { clamp
|
|
3
|
-
import { secondsToMilliseconds
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
import { warning } from "../../../utils/errors.mjs";
|
|
2
|
+
import { clamp } from "../../../utils/clamp.mjs";
|
|
3
|
+
import { secondsToMilliseconds, millisecondsToSeconds } from "../../../utils/time-conversion.mjs";
|
|
4
|
+
const safeMin = 1e-3;
|
|
5
|
+
const minDuration = 0.01;
|
|
6
|
+
const maxDuration = 10;
|
|
7
|
+
const minDamping = 0.05;
|
|
8
|
+
const maxDamping = 1;
|
|
9
|
+
function findSpring({ duration = 800, bounce = 0.25, velocity = 0, mass = 1 }) {
|
|
10
|
+
let envelope;
|
|
11
|
+
let derivative;
|
|
12
|
+
warning(duration <= secondsToMilliseconds(maxDuration), "Spring duration must be 10 seconds or less");
|
|
13
|
+
let dampingRatio = 1 - bounce;
|
|
14
|
+
dampingRatio = clamp(minDamping, maxDamping, dampingRatio);
|
|
15
|
+
duration = clamp(minDuration, maxDuration, millisecondsToSeconds(duration));
|
|
16
|
+
if (dampingRatio < 1) {
|
|
17
|
+
envelope = (undampedFreq2) => {
|
|
18
|
+
const exponentialDecay = undampedFreq2 * dampingRatio;
|
|
19
|
+
const delta = exponentialDecay * duration;
|
|
20
|
+
const a = exponentialDecay - velocity;
|
|
21
|
+
const b = calcAngularFreq(undampedFreq2, dampingRatio);
|
|
22
|
+
const c = Math.exp(-delta);
|
|
23
|
+
return safeMin - a / b * c;
|
|
24
|
+
};
|
|
25
|
+
derivative = (undampedFreq2) => {
|
|
26
|
+
const exponentialDecay = undampedFreq2 * dampingRatio;
|
|
27
|
+
const delta = exponentialDecay * duration;
|
|
28
|
+
const d = delta * velocity + velocity;
|
|
29
|
+
const e = Math.pow(dampingRatio, 2) * Math.pow(undampedFreq2, 2) * duration;
|
|
30
|
+
const f = Math.exp(-delta);
|
|
31
|
+
const g = calcAngularFreq(Math.pow(undampedFreq2, 2), dampingRatio);
|
|
32
|
+
const factor = -envelope(undampedFreq2) + safeMin > 0 ? -1 : 1;
|
|
33
|
+
return factor * ((d - e) * f) / g;
|
|
34
|
+
};
|
|
35
|
+
} else {
|
|
36
|
+
envelope = (undampedFreq2) => {
|
|
37
|
+
const a = Math.exp(-undampedFreq2 * duration);
|
|
38
|
+
const b = (undampedFreq2 - velocity) * duration + 1;
|
|
39
|
+
return -safeMin + a * b;
|
|
40
|
+
};
|
|
41
|
+
derivative = (undampedFreq2) => {
|
|
42
|
+
const a = Math.exp(-undampedFreq2 * duration);
|
|
43
|
+
const b = (velocity - undampedFreq2) * (duration * duration);
|
|
44
|
+
return a * b;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const initialGuess = 5 / duration;
|
|
48
|
+
const undampedFreq = approximateRoot(envelope, derivative, initialGuess);
|
|
49
|
+
duration = secondsToMilliseconds(duration);
|
|
50
|
+
if (isNaN(undampedFreq)) {
|
|
24
51
|
return {
|
|
25
52
|
stiffness: 100,
|
|
26
53
|
damping: 10,
|
|
27
|
-
duration
|
|
54
|
+
duration
|
|
28
55
|
};
|
|
29
|
-
{
|
|
30
|
-
const
|
|
56
|
+
} else {
|
|
57
|
+
const stiffness = Math.pow(undampedFreq, 2) * mass;
|
|
31
58
|
return {
|
|
32
|
-
stiffness
|
|
33
|
-
damping:
|
|
34
|
-
duration
|
|
59
|
+
stiffness,
|
|
60
|
+
damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),
|
|
61
|
+
duration
|
|
35
62
|
};
|
|
36
63
|
}
|
|
37
64
|
}
|
|
38
|
-
const
|
|
39
|
-
function
|
|
40
|
-
let
|
|
41
|
-
for (let
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
const rootIterations = 12;
|
|
66
|
+
function approximateRoot(envelope, derivative, initialGuess) {
|
|
67
|
+
let result = initialGuess;
|
|
68
|
+
for (let i = 1; i < rootIterations; i++) {
|
|
69
|
+
result = result - envelope(result) / derivative(result);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
44
72
|
}
|
|
45
|
-
function
|
|
46
|
-
return
|
|
73
|
+
function calcAngularFreq(undampedFreq, dampingRatio) {
|
|
74
|
+
return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);
|
|
47
75
|
}
|
|
48
76
|
export {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
77
|
+
calcAngularFreq,
|
|
78
|
+
findSpring,
|
|
79
|
+
maxDamping,
|
|
80
|
+
maxDuration,
|
|
81
|
+
minDamping,
|
|
82
|
+
minDuration
|
|
55
83
|
};
|
|
@@ -1,67 +1,83 @@
|
|
|
1
|
-
import { millisecondsToSeconds
|
|
2
|
-
import { calcGeneratorVelocity
|
|
3
|
-
import { findSpring
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { millisecondsToSeconds, secondsToMilliseconds } from "../../../utils/time-conversion.mjs";
|
|
2
|
+
import { calcGeneratorVelocity } from "../utils/velocity.mjs";
|
|
3
|
+
import { findSpring, calcAngularFreq } from "./find.mjs";
|
|
4
|
+
const durationKeys = ["duration", "bounce"];
|
|
5
|
+
const physicsKeys = ["stiffness", "damping", "mass"];
|
|
6
|
+
function isSpringType(options, keys) {
|
|
7
|
+
return keys.some((key) => options[key] !== void 0);
|
|
7
8
|
}
|
|
8
|
-
function
|
|
9
|
-
let
|
|
9
|
+
function getSpringOptions(options) {
|
|
10
|
+
let springOptions = {
|
|
10
11
|
velocity: 0,
|
|
11
12
|
stiffness: 100,
|
|
12
13
|
damping: 10,
|
|
13
14
|
mass: 1,
|
|
14
|
-
isResolvedFromDuration:
|
|
15
|
-
...
|
|
15
|
+
isResolvedFromDuration: false,
|
|
16
|
+
...options
|
|
16
17
|
};
|
|
17
|
-
if (!
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
...
|
|
21
|
-
...
|
|
18
|
+
if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {
|
|
19
|
+
const derived = findSpring(options);
|
|
20
|
+
springOptions = {
|
|
21
|
+
...springOptions,
|
|
22
|
+
...derived,
|
|
22
23
|
mass: 1
|
|
23
|
-
}
|
|
24
|
+
};
|
|
25
|
+
springOptions.isResolvedFromDuration = true;
|
|
24
26
|
}
|
|
25
|
-
return
|
|
27
|
+
return springOptions;
|
|
26
28
|
}
|
|
27
|
-
function
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
function spring({ keyframes, restDelta, restSpeed, ...options }) {
|
|
30
|
+
const origin = keyframes[0];
|
|
31
|
+
const target = keyframes[keyframes.length - 1];
|
|
32
|
+
const state = { done: false, value: origin };
|
|
33
|
+
const { stiffness, damping, mass, duration, velocity, isResolvedFromDuration } = getSpringOptions({
|
|
34
|
+
...options,
|
|
35
|
+
velocity: -millisecondsToSeconds(options.velocity || 0)
|
|
36
|
+
});
|
|
37
|
+
const initialVelocity = velocity || 0;
|
|
38
|
+
const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));
|
|
39
|
+
const initialDelta = target - origin;
|
|
40
|
+
const undampedAngularFreq = millisecondsToSeconds(Math.sqrt(stiffness / mass));
|
|
41
|
+
const isGranularScale = Math.abs(initialDelta) < 5;
|
|
42
|
+
restSpeed || (restSpeed = isGranularScale ? 0.01 : 2);
|
|
43
|
+
restDelta || (restDelta = isGranularScale ? 5e-3 : 0.5);
|
|
44
|
+
let resolveSpring;
|
|
45
|
+
if (dampingRatio < 1) {
|
|
46
|
+
const angularFreq = calcAngularFreq(undampedAngularFreq, dampingRatio);
|
|
47
|
+
resolveSpring = (t) => {
|
|
48
|
+
const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
|
|
49
|
+
return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) / angularFreq * Math.sin(angularFreq * t) + initialDelta * Math.cos(angularFreq * t));
|
|
39
50
|
};
|
|
40
|
-
} else if (
|
|
41
|
-
|
|
42
|
-
else {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
const
|
|
46
|
-
|
|
51
|
+
} else if (dampingRatio === 1) {
|
|
52
|
+
resolveSpring = (t) => target - Math.exp(-undampedAngularFreq * t) * (initialDelta + (initialVelocity + undampedAngularFreq * initialDelta) * t);
|
|
53
|
+
} else {
|
|
54
|
+
const dampedAngularFreq = undampedAngularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);
|
|
55
|
+
resolveSpring = (t) => {
|
|
56
|
+
const envelope = Math.exp(-dampingRatio * undampedAngularFreq * t);
|
|
57
|
+
const freqForT = Math.min(dampedAngularFreq * t, 300);
|
|
58
|
+
return target - envelope * ((initialVelocity + dampingRatio * undampedAngularFreq * initialDelta) * Math.sinh(freqForT) + dampedAngularFreq * initialDelta * Math.cosh(freqForT)) / dampedAngularFreq;
|
|
47
59
|
};
|
|
48
60
|
}
|
|
49
61
|
return {
|
|
50
|
-
calculatedDuration:
|
|
51
|
-
next: (
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
|
|
62
|
+
calculatedDuration: isResolvedFromDuration ? duration || null : null,
|
|
63
|
+
next: (t) => {
|
|
64
|
+
const current = resolveSpring(t);
|
|
65
|
+
if (!isResolvedFromDuration) {
|
|
66
|
+
let currentVelocity = 0;
|
|
67
|
+
if (dampingRatio < 1) {
|
|
68
|
+
currentVelocity = t === 0 ? secondsToMilliseconds(initialVelocity) : calcGeneratorVelocity(resolveSpring, t, current);
|
|
69
|
+
}
|
|
70
|
+
const isBelowVelocityThreshold = Math.abs(currentVelocity) <= restSpeed;
|
|
71
|
+
const isBelowDisplacementThreshold = Math.abs(target - current) <= restDelta;
|
|
72
|
+
state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;
|
|
73
|
+
} else {
|
|
74
|
+
state.done = t >= duration;
|
|
60
75
|
}
|
|
61
|
-
|
|
76
|
+
state.value = state.done ? target : current;
|
|
77
|
+
return state;
|
|
62
78
|
}
|
|
63
79
|
};
|
|
64
80
|
}
|
|
65
81
|
export {
|
|
66
|
-
|
|
82
|
+
spring
|
|
67
83
|
};
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
const
|
|
2
|
-
function
|
|
3
|
-
let
|
|
4
|
-
const
|
|
5
|
-
let
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
const maxGeneratorDuration = 2e4;
|
|
2
|
+
function calcGeneratorDuration(generator) {
|
|
3
|
+
let duration = 0;
|
|
4
|
+
const timeStep = 50;
|
|
5
|
+
let state = generator.next(duration);
|
|
6
|
+
while (!state.done && duration < maxGeneratorDuration) {
|
|
7
|
+
duration += timeStep;
|
|
8
|
+
state = generator.next(duration);
|
|
9
|
+
}
|
|
10
|
+
return duration >= maxGeneratorDuration ? Infinity : duration;
|
|
9
11
|
}
|
|
10
12
|
export {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
calcGeneratorDuration,
|
|
14
|
+
maxGeneratorDuration
|
|
13
15
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { velocityPerSecond
|
|
2
|
-
const
|
|
3
|
-
function
|
|
4
|
-
const
|
|
5
|
-
return
|
|
1
|
+
import { velocityPerSecond } from "../../../utils/velocity-per-second.mjs";
|
|
2
|
+
const velocitySampleDuration = 5;
|
|
3
|
+
function calcGeneratorVelocity(resolveValue, t, current) {
|
|
4
|
+
const prevT = Math.max(t - velocitySampleDuration, 0);
|
|
5
|
+
return velocityPerSecond(current - resolveValue(prevT), t - prevT);
|
|
6
6
|
}
|
|
7
7
|
export {
|
|
8
|
-
|
|
8
|
+
calcGeneratorVelocity
|
|
9
9
|
};
|
|
@@ -1,46 +1,73 @@
|
|
|
1
|
-
import { secondsToMilliseconds
|
|
2
|
-
import { getDefaultTransition
|
|
3
|
-
import { getValueTransition
|
|
4
|
-
import { getFinalKeyframe
|
|
5
|
-
import { frame
|
|
6
|
-
import { AcceleratedAnimation
|
|
7
|
-
import { MainThreadAnimation
|
|
8
|
-
import { GroupPlaybackControls
|
|
9
|
-
import { isTransitionDefined
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
1
|
+
import { secondsToMilliseconds } from "../../utils/time-conversion.mjs";
|
|
2
|
+
import { getDefaultTransition } from "../utils/default-transitions.mjs";
|
|
3
|
+
import { getValueTransition } from "../utils/get-value-transition.mjs";
|
|
4
|
+
import { getFinalKeyframe } from "../animators/waapi/utils/get-final-keyframe.mjs";
|
|
5
|
+
import { frame } from "../../frameloop/frame.mjs";
|
|
6
|
+
import { AcceleratedAnimation } from "../animators/AcceleratedAnimation.mjs";
|
|
7
|
+
import { MainThreadAnimation } from "../animators/MainThreadAnimation.mjs";
|
|
8
|
+
import { GroupPlaybackControls } from "../GroupPlaybackControls.mjs";
|
|
9
|
+
import { isTransitionDefined } from "../utils/is-transition-defined.mjs";
|
|
10
|
+
const animateMotionValue = (name, value, target, transition = {}, element, isHandoff) => (onComplete) => {
|
|
11
|
+
const valueTransition = getValueTransition(transition, name) || {};
|
|
12
|
+
const delay = valueTransition.delay || transition.delay || 0;
|
|
13
|
+
let { elapsed = 0 } = transition;
|
|
14
|
+
elapsed = elapsed - secondsToMilliseconds(delay);
|
|
15
|
+
let options = {
|
|
16
|
+
keyframes: Array.isArray(target) ? target : [null, target],
|
|
16
17
|
ease: "easeOut",
|
|
17
|
-
velocity:
|
|
18
|
-
...
|
|
19
|
-
delay: -
|
|
20
|
-
onUpdate: (
|
|
21
|
-
|
|
18
|
+
velocity: value.getVelocity(),
|
|
19
|
+
...valueTransition,
|
|
20
|
+
delay: -elapsed,
|
|
21
|
+
onUpdate: (v) => {
|
|
22
|
+
value.set(v);
|
|
23
|
+
valueTransition.onUpdate && valueTransition.onUpdate(v);
|
|
22
24
|
},
|
|
23
25
|
onComplete: () => {
|
|
24
|
-
|
|
26
|
+
onComplete();
|
|
27
|
+
valueTransition.onComplete && valueTransition.onComplete();
|
|
25
28
|
},
|
|
26
|
-
name
|
|
27
|
-
motionValue:
|
|
28
|
-
element:
|
|
29
|
+
name,
|
|
30
|
+
motionValue: value,
|
|
31
|
+
element: isHandoff ? void 0 : element
|
|
29
32
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
if (!isTransitionDefined(valueTransition)) {
|
|
34
|
+
options = {
|
|
35
|
+
...options,
|
|
36
|
+
...getDefaultTransition(name, options)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (options.duration) {
|
|
40
|
+
options.duration = secondsToMilliseconds(options.duration);
|
|
41
|
+
}
|
|
42
|
+
if (options.repeatDelay) {
|
|
43
|
+
options.repeatDelay = secondsToMilliseconds(options.repeatDelay);
|
|
44
|
+
}
|
|
45
|
+
if (options.from !== void 0) {
|
|
46
|
+
options.keyframes[0] = options.from;
|
|
47
|
+
}
|
|
48
|
+
let shouldSkip = false;
|
|
49
|
+
if (options.type === false || options.duration === 0 && !options.repeatDelay) {
|
|
50
|
+
options.duration = 0;
|
|
51
|
+
if (options.delay === 0) {
|
|
52
|
+
shouldSkip = true;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (shouldSkip && !isHandoff && value.get() !== void 0) {
|
|
56
|
+
const finalKeyframe = getFinalKeyframe(options.keyframes, valueTransition);
|
|
57
|
+
if (finalKeyframe !== void 0) {
|
|
58
|
+
frame.update(() => {
|
|
59
|
+
options.onUpdate(finalKeyframe);
|
|
60
|
+
options.onComplete();
|
|
61
|
+
});
|
|
62
|
+
return new GroupPlaybackControls([]);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (!isHandoff && AcceleratedAnimation.supports(options)) {
|
|
66
|
+
return new AcceleratedAnimation(options);
|
|
67
|
+
} else {
|
|
68
|
+
return new MainThreadAnimation(options);
|
|
41
69
|
}
|
|
42
|
-
return !l && d.supports(e) ? new d(e) : new A(e);
|
|
43
70
|
};
|
|
44
71
|
export {
|
|
45
|
-
|
|
72
|
+
animateMotionValue
|
|
46
73
|
};
|
|
@@ -1,45 +1,59 @@
|
|
|
1
|
-
import { transformProps
|
|
2
|
-
import { animateMotionValue
|
|
3
|
-
import { setTarget
|
|
4
|
-
import { getValueTransition
|
|
5
|
-
import { getOptimisedAppearId
|
|
6
|
-
import { addValueToWillChange
|
|
7
|
-
import { frame
|
|
8
|
-
function
|
|
9
|
-
const
|
|
10
|
-
|
|
1
|
+
import { transformProps } from "../../render/html/utils/transform.mjs";
|
|
2
|
+
import { animateMotionValue } from "./motion-value.mjs";
|
|
3
|
+
import { setTarget } from "../../render/utils/setters.mjs";
|
|
4
|
+
import { getValueTransition } from "../utils/get-value-transition.mjs";
|
|
5
|
+
import { getOptimisedAppearId } from "../optimized-appear/get-appear-id.mjs";
|
|
6
|
+
import { addValueToWillChange } from "../../value/use-will-change/add-will-change.mjs";
|
|
7
|
+
import { frame } from "../../frameloop/frame.mjs";
|
|
8
|
+
function shouldBlockAnimation({ protectedKeys, needsAnimating }, key) {
|
|
9
|
+
const shouldBlock = protectedKeys.hasOwnProperty(key) && needsAnimating[key] !== true;
|
|
10
|
+
needsAnimating[key] = false;
|
|
11
|
+
return shouldBlock;
|
|
11
12
|
}
|
|
12
|
-
function
|
|
13
|
-
var
|
|
14
|
-
let { transition
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
function animateTarget(visualElement, targetAndTransition, { delay = 0, transitionOverride, type } = {}) {
|
|
14
|
+
var _a;
|
|
15
|
+
let { transition = visualElement.getDefaultTransition(), transitionEnd, ...target } = targetAndTransition;
|
|
16
|
+
if (transitionOverride)
|
|
17
|
+
transition = transitionOverride;
|
|
18
|
+
const animations = [];
|
|
19
|
+
const animationTypeState = type && visualElement.animationState && visualElement.animationState.getState()[type];
|
|
20
|
+
for (const key in target) {
|
|
21
|
+
const value = visualElement.getValue(key, (_a = visualElement.latestValues[key]) !== null && _a !== void 0 ? _a : null);
|
|
22
|
+
const valueTarget = target[key];
|
|
23
|
+
if (valueTarget === void 0 || animationTypeState && shouldBlockAnimation(animationTypeState, key)) {
|
|
20
24
|
continue;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
}
|
|
26
|
+
const valueTransition = {
|
|
27
|
+
delay,
|
|
28
|
+
...getValueTransition(transition || {}, key)
|
|
24
29
|
};
|
|
25
|
-
let
|
|
30
|
+
let isHandoff = false;
|
|
26
31
|
if (window.MotionHandoffAnimation) {
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
29
|
-
const
|
|
30
|
-
|
|
32
|
+
const appearId = getOptimisedAppearId(visualElement);
|
|
33
|
+
if (appearId) {
|
|
34
|
+
const startTime = window.MotionHandoffAnimation(appearId, key, frame);
|
|
35
|
+
if (startTime !== null) {
|
|
36
|
+
valueTransition.startTime = startTime;
|
|
37
|
+
isHandoff = true;
|
|
38
|
+
}
|
|
31
39
|
}
|
|
32
40
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
addValueToWillChange(visualElement, key);
|
|
42
|
+
value.start(animateMotionValue(key, value, valueTarget, visualElement.shouldReduceMotion && transformProps.has(key) ? { type: false } : valueTransition, visualElement, isHandoff));
|
|
43
|
+
const animation = value.animation;
|
|
44
|
+
if (animation) {
|
|
45
|
+
animations.push(animation);
|
|
46
|
+
}
|
|
36
47
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
48
|
+
if (transitionEnd) {
|
|
49
|
+
Promise.all(animations).then(() => {
|
|
50
|
+
frame.update(() => {
|
|
51
|
+
transitionEnd && setTarget(visualElement, transitionEnd);
|
|
52
|
+
});
|
|
40
53
|
});
|
|
41
|
-
}
|
|
54
|
+
}
|
|
55
|
+
return animations;
|
|
42
56
|
}
|
|
43
57
|
export {
|
|
44
|
-
|
|
58
|
+
animateTarget
|
|
45
59
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { camelToDash
|
|
2
|
-
const
|
|
1
|
+
import { camelToDash } from "../../render/dom/utils/camel-to-dash.mjs";
|
|
2
|
+
const optimizedAppearDataId = "framerAppearId";
|
|
3
|
+
const optimizedAppearDataAttribute = "data-" + camelToDash(optimizedAppearDataId);
|
|
3
4
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
optimizedAppearDataAttribute,
|
|
6
|
+
optimizedAppearDataId
|
|
6
7
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { optimizedAppearDataAttribute
|
|
2
|
-
function
|
|
3
|
-
return
|
|
1
|
+
import { optimizedAppearDataAttribute } from "./data-id.mjs";
|
|
2
|
+
function getOptimisedAppearId(visualElement) {
|
|
3
|
+
return visualElement.props[optimizedAppearDataAttribute];
|
|
4
4
|
}
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
getOptimisedAppearId
|
|
7
7
|
};
|