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.
Files changed (275) hide show
  1. package/dist/cjs/index.js +7637 -1
  2. package/dist/es/animation/use-animate.mjs +25 -15
  3. package/dist/es/components/AnimatePresence.vue.mjs +57 -39
  4. package/dist/es/components/AnimatePresence.vue2.mjs +2 -2
  5. package/dist/es/components/LayoutGroup.vue.mjs +39 -0
  6. package/dist/es/components/LayoutGroup.vue2.mjs +4 -0
  7. package/dist/es/components/Motion.vue.mjs +87 -57
  8. package/dist/es/components/Motion.vue2.mjs +2 -2
  9. package/dist/es/components/Primitive.mjs +15 -9
  10. package/dist/es/components/Slot.mjs +28 -19
  11. package/dist/es/components/context.mjs +15 -4
  12. package/dist/es/components/group.mjs +30 -0
  13. package/dist/es/components/presence.mjs +13 -10
  14. package/dist/es/components/renderSlotFragments.mjs +10 -4
  15. package/dist/es/components/use-force-update.mjs +11 -0
  16. package/dist/es/constants/index.mjs +13 -6
  17. package/dist/es/features/events.mjs +59 -43
  18. package/dist/es/features/feature-manager.mjs +20 -17
  19. package/dist/es/features/feature.mjs +4 -4
  20. package/dist/es/features/gestures/base.mjs +12 -7
  21. package/dist/es/features/gestures/hover.mjs +25 -16
  22. package/dist/es/features/gestures/in-view.mjs +21 -15
  23. package/dist/es/features/gestures/press.mjs +22 -13
  24. package/dist/es/features/layout/config.mjs +21 -0
  25. package/dist/es/features/layout/layout.mjs +74 -0
  26. package/dist/es/features/layout/utils.mjs +8 -0
  27. package/dist/es/features/svg.mjs +14 -13
  28. package/dist/es/index.mjs +119 -102
  29. package/dist/es/node_modules/.pnpm/@vueuse_shared@12.0.0_typescript@5.5.4/node_modules/@vueuse/shared/index.mjs +6 -0
  30. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +38 -28
  31. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/index.mjs +22 -15
  32. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/resolve-subjects.mjs +13 -5
  33. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/sequence.mjs +11 -9
  34. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/single-value.mjs +8 -7
  35. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animate/subject.mjs +32 -24
  36. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +178 -137
  37. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +53 -37
  38. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs +227 -100
  39. 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
  40. 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
  41. 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
  42. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs +112 -56
  43. 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
  44. 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
  45. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/easing.mjs +27 -17
  46. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/animators/waapi/index.mjs +15 -12
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/inertia.mjs +58 -28
  57. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/keyframes.mjs +28 -21
  58. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/spring/find.mjs +71 -43
  59. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/spring/index.mjs +64 -48
  60. 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
  61. 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
  62. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/generators/utils/velocity.mjs +6 -6
  63. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/interfaces/motion-value.mjs +64 -37
  64. 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
  65. 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
  66. 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
  67. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/sequence/create.mjs +133 -86
  68. 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
  69. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/sequence/utils/edit.mjs +20 -16
  70. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/sequence/utils/sort.mjs +11 -3
  71. 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
  72. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/default-transitions.mjs +19 -8
  73. 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
  74. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-animatable.mjs +14 -5
  75. 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
  76. 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
  77. 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
  78. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/is-none.mjs +10 -4
  79. 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
  80. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/animation/utils/stagger.mjs +18 -16
  81. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/anticipate.mjs +3 -3
  82. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/back.mjs +9 -7
  83. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/circ.mjs +8 -6
  84. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/cubic-bezier.mjs +24 -14
  85. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/ease.mjs +7 -5
  86. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/modifiers/mirror.mjs +2 -2
  87. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/modifiers/reverse.mjs +2 -2
  88. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/steps.mjs +8 -7
  89. 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
  90. 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
  91. 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
  92. 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
  93. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/easing/utils/map.mjs +32 -29
  94. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/events/add-dom-event.mjs +7 -0
  95. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/batcher.mjs +57 -21
  96. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/frame.mjs +7 -7
  97. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/index-legacy.mjs +9 -5
  98. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/microtask.mjs +6 -0
  99. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/render-step.mjs +41 -19
  100. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/frameloop/sync-time.mjs +16 -10
  101. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/motion/features/definitions.mjs +8 -6
  102. 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
  103. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/animation/mix-values.mjs +60 -0
  104. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/conversion.mjs +14 -13
  105. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/copy.mjs +19 -0
  106. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-apply.mjs +81 -0
  107. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-calc.mjs +55 -0
  108. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/delta-remove.mjs +40 -0
  109. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/models.mjs +18 -5
  110. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/geometry/utils.mjs +34 -0
  111. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs +13 -0
  112. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs +28 -0
  113. 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
  114. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/node/state.mjs +15 -0
  115. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/shared/stack.mjs +94 -0
  116. 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
  117. 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
  118. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/scale-correction.mjs +6 -2
  119. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/styles/transform.mjs +36 -0
  120. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/each-axis.mjs +6 -0
  121. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/has-transform.mjs +20 -0
  122. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/projection/utils/measure.mjs +4 -4
  123. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/VisualElement.mjs +263 -117
  124. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +81 -45
  125. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +13 -11
  126. 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
  127. 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
  128. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/resize/index.mjs +5 -5
  129. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/index.mjs +53 -36
  130. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/info.mjs +29 -16
  131. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/observe.mjs +14 -8
  132. 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
  133. 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
  134. 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
  135. 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
  136. 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
  137. 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
  138. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/supports.mjs +3 -3
  139. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/scroll/track.mjs +60 -33
  140. 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
  141. 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
  142. 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
  143. 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
  144. 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
  145. 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
  146. 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
  147. 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
  148. 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
  149. 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
  150. 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
  151. 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
  152. 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
  153. 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
  154. 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
  155. 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
  156. 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
  157. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs +29 -17
  158. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +41 -32
  159. 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
  160. 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
  161. 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
  162. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/render.mjs +6 -5
  163. 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
  164. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/html/utils/transform.mjs +5 -4
  165. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/object/ObjectVisualElement.mjs +24 -20
  166. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/store.mjs +2 -2
  167. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +33 -28
  168. 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
  169. 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
  170. 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
  171. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/path.mjs +12 -10
  172. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/svg/utils/render.mjs +9 -8
  173. 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
  174. 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
  175. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/KeyframesResolver.mjs +105 -47
  176. 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
  177. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/flat-tree.mjs +24 -0
  178. 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
  179. 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
  180. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/motion-values.mjs +31 -20
  181. 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
  182. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/resolve-variants.mjs +19 -14
  183. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/setters.mjs +17 -13
  184. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/render/utils/variant-props.mjs +5 -4
  185. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/GlobalConfig.mjs +4 -4
  186. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/array.mjs +9 -7
  187. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/clamp.mjs +8 -2
  188. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/delay.mjs +17 -12
  189. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/distance.mjs +7 -6
  190. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/errors.mjs +17 -10
  191. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/hsla-to-rgba.mjs +32 -15
  192. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/interpolate.mjs +42 -31
  193. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/is-browser.mjs +2 -2
  194. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/is-numerical-string.mjs +2 -2
  195. 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
  196. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/memo.mjs +8 -4
  197. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/color.mjs +40 -25
  198. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/complex.mjs +73 -41
  199. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/immediate.mjs +3 -3
  200. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/index.mjs +9 -5
  201. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/number.mjs +4 -2
  202. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/mix/visibility.mjs +9 -5
  203. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/noop.mjs +2 -2
  204. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/offsets/default.mjs +6 -5
  205. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/offsets/fill.mjs +8 -8
  206. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/offsets/time.mjs +3 -3
  207. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/pipe.mjs +3 -2
  208. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/progress.mjs +4 -4
  209. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/reduced-motion/index.mjs +15 -10
  210. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/reduced-motion/state.mjs +4 -3
  211. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/resolve-value.mjs +9 -3
  212. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/subscription-manager.mjs +18 -15
  213. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/time-conversion.mjs +4 -3
  214. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/transform.mjs +17 -8
  215. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/velocity-per-second.mjs +3 -3
  216. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/warn-once.mjs +7 -4
  217. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/utils/wrap.mjs +4 -4
  218. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/index.mjs +125 -53
  219. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/hex.mjs +32 -14
  220. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/hsla.mjs +11 -9
  221. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/index.mjs +18 -8
  222. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/rgba.mjs +15 -13
  223. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/color/utils.mjs +16 -13
  224. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/complex/filter.mjs +22 -19
  225. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/complex/index.mjs +71 -36
  226. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/numbers/index.mjs +14 -12
  227. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/numbers/units.mjs +19 -13
  228. 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
  229. 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
  230. 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
  231. package/dist/es/node_modules/.pnpm/framer-motion@11.11.11/node_modules/framer-motion/dist/es/value/types/utils/sanitize.mjs +2 -2
  232. 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
  233. 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
  234. 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
  235. 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
  236. 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
  237. package/dist/es/node_modules/.pnpm/hey-listen@1.0.8/node_modules/hey-listen/dist/hey-listen.es.mjs +17 -10
  238. package/dist/es/state/create-visual-element.mjs +9 -0
  239. package/dist/es/state/event.mjs +3 -3
  240. package/dist/es/state/motion-state.mjs +145 -91
  241. package/dist/es/state/schedule.mjs +23 -15
  242. package/dist/es/state/style.mjs +105 -81
  243. package/dist/es/state/transform.mjs +37 -29
  244. package/dist/es/state/utils.mjs +51 -45
  245. package/dist/es/utils/createContext.mjs +19 -11
  246. package/dist/es/utils/events.mjs +4 -4
  247. package/dist/es/utils/motion-value.mjs +3 -3
  248. package/dist/es/utils/use-animation-frame.mjs +17 -11
  249. package/dist/es/utils/use-in-view.mjs +20 -14
  250. package/dist/es/value/use-combine-values.mjs +22 -17
  251. package/dist/es/value/use-computed.mjs +17 -10
  252. package/dist/es/value/use-motion-template.mjs +17 -14
  253. package/dist/es/value/use-motion-value-event.mjs +11 -0
  254. package/dist/es/value/use-scroll.mjs +42 -33
  255. package/dist/es/value/use-spring.mjs +48 -28
  256. package/dist/es/value/use-time.mjs +7 -6
  257. package/dist/es/value/use-transform.mjs +24 -20
  258. package/dist/es/value/use-velocity.mjs +20 -0
  259. package/dist/src/components/LayoutGroup.d.ts +30 -0
  260. package/dist/src/components/context.d.ts +17 -0
  261. package/dist/src/components/group.d.ts +7 -0
  262. package/dist/src/components/use-force-update.d.ts +2 -0
  263. package/dist/src/features/index.d.ts +1 -0
  264. package/dist/src/features/layout/config.d.ts +8 -0
  265. package/dist/src/features/layout/layout.d.ts +10 -0
  266. package/dist/src/features/layout/types.d.ts +7 -0
  267. package/dist/src/features/layout/utils.d.ts +4 -0
  268. package/dist/src/index.d.ts +2 -0
  269. package/dist/src/state/create-visual-element.d.ts +1 -0
  270. package/dist/src/state/motion-state.d.ts +1 -2
  271. package/dist/src/types/state.d.ts +2 -1
  272. package/dist/src/value/index.d.ts +4 -0
  273. package/package.json +2 -1
  274. 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
  275. package/dist/src/components/usePrimitiveElement.d.ts +0 -5
@@ -1,30 +1,37 @@
1
- import { easeInOut as c } from "../../easing/ease.mjs";
2
- import { isEasingArray as p } from "../../easing/utils/is-easing-array.mjs";
3
- import { easingDefinitionToFunction as m } from "../../easing/utils/map.mjs";
4
- import { interpolate as u } from "../../utils/interpolate.mjs";
5
- import { defaultOffset as l } from "../../utils/offsets/default.mjs";
6
- import { convertOffsetToTimes as g } from "../../utils/offsets/time.mjs";
7
- function T(n, t) {
8
- return n.map(() => t || c).splice(0, n.length - 1);
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 y({ duration: n = 300, keyframes: t, times: o, ease: r = "easeInOut" }) {
11
- const e = p(r) ? r.map(m) : m(r), i = {
12
- done: !1,
13
- value: t[0]
14
- }, s = g(
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
- o && o.length === t.length ? o : l(t),
18
- n
19
- ), a = u(s, t, {
20
- ease: Array.isArray(e) ? e : T(t, e)
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: n,
24
- next: (f) => (i.value = a(f), i.done = f >= n, i)
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
- T as defaultEasing,
29
- y as keyframes
35
+ defaultEasing,
36
+ keyframes
30
37
  };
@@ -1,55 +1,83 @@
1
- import { warning as N } from "../../../utils/errors.mjs";
2
- import { clamp as h } from "../../../utils/clamp.mjs";
3
- import { secondsToMilliseconds as g, millisecondsToSeconds as T } from "../../../utils/time-conversion.mjs";
4
- const M = 1e-3, A = 0.01, D = 10, G = 0.05, I = 1;
5
- function E({ duration: t = 800, bounce: i = 0.25, velocity: c = 0, mass: o = 1 }) {
6
- let a, p;
7
- N(t <= g(D), "Spring duration must be 10 seconds or less");
8
- let s = 1 - i;
9
- s = h(G, I, s), t = h(A, D, T(t)), s < 1 ? (a = (n) => {
10
- const r = n * s, e = r * t, l = r - c, f = w(n, s), m = Math.exp(-e);
11
- return M - l / f * m;
12
- }, p = (n) => {
13
- const e = n * s * t, l = e * c + c, f = Math.pow(s, 2) * Math.pow(n, 2) * t, m = Math.exp(-e), S = w(Math.pow(n, 2), s);
14
- return (-a(n) + M > 0 ? -1 : 1) * ((l - f) * m) / S;
15
- }) : (a = (n) => {
16
- const r = Math.exp(-n * t), e = (n - c) * t + 1;
17
- return -M + r * e;
18
- }, p = (n) => {
19
- const r = Math.exp(-n * t), e = (c - n) * (t * t);
20
- return r * e;
21
- });
22
- const b = 5 / t, x = j(a, p, b);
23
- if (t = g(t), isNaN(x))
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: t
54
+ duration
28
55
  };
29
- {
30
- const n = Math.pow(x, 2) * o;
56
+ } else {
57
+ const stiffness = Math.pow(undampedFreq, 2) * mass;
31
58
  return {
32
- stiffness: n,
33
- damping: s * 2 * Math.sqrt(o * n),
34
- duration: t
59
+ stiffness,
60
+ damping: dampingRatio * 2 * Math.sqrt(mass * stiffness),
61
+ duration
35
62
  };
36
63
  }
37
64
  }
38
- const R = 12;
39
- function j(t, i, c) {
40
- let o = c;
41
- for (let a = 1; a < R; a++)
42
- o = o - t(o) / i(o);
43
- return o;
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 w(t, i) {
46
- return t * Math.sqrt(1 - i * i);
73
+ function calcAngularFreq(undampedFreq, dampingRatio) {
74
+ return undampedFreq * Math.sqrt(1 - dampingRatio * dampingRatio);
47
75
  }
48
76
  export {
49
- w as calcAngularFreq,
50
- E as findSpring,
51
- I as maxDamping,
52
- D as maxDuration,
53
- G as minDamping,
54
- A as minDuration
77
+ calcAngularFreq,
78
+ findSpring,
79
+ maxDamping,
80
+ maxDuration,
81
+ minDamping,
82
+ minDuration
55
83
  };
@@ -1,67 +1,83 @@
1
- import { millisecondsToSeconds as F, secondsToMilliseconds as R } from "../../../utils/time-conversion.mjs";
2
- import { calcGeneratorVelocity as S } from "../utils/velocity.mjs";
3
- import { findSpring as V, calcAngularFreq as A } from "./find.mjs";
4
- const w = ["duration", "bounce"], B = ["stiffness", "damping", "mass"];
5
- function T(e, s) {
6
- return s.some((r) => e[r] !== void 0);
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 G(e) {
9
- let s = {
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: !1,
15
- ...e
15
+ isResolvedFromDuration: false,
16
+ ...options
16
17
  };
17
- if (!T(e, B) && T(e, w)) {
18
- const r = V(e);
19
- s = {
20
- ...s,
21
- ...r,
18
+ if (!isSpringType(options, physicsKeys) && isSpringType(options, durationKeys)) {
19
+ const derived = findSpring(options);
20
+ springOptions = {
21
+ ...springOptions,
22
+ ...derived,
22
23
  mass: 1
23
- }, s.isResolvedFromDuration = !0;
24
+ };
25
+ springOptions.isResolvedFromDuration = true;
24
26
  }
25
- return s;
27
+ return springOptions;
26
28
  }
27
- function z({ keyframes: e, restDelta: s, restSpeed: r, ...f }) {
28
- const p = e[0], c = e[e.length - 1], u = { done: !1, value: p }, { stiffness: g, damping: x, mass: M, duration: v, velocity: b, isResolvedFromDuration: y } = G({
29
- ...f,
30
- velocity: -F(f.velocity || 0)
31
- }), h = b || 0, t = x / (2 * Math.sqrt(g * M)), a = c - p, i = F(Math.sqrt(g / M)), q = Math.abs(a) < 5;
32
- r || (r = q ? 0.01 : 2), s || (s = q ? 5e-3 : 0.5);
33
- let d;
34
- if (t < 1) {
35
- const n = A(i, t);
36
- d = (o) => {
37
- const l = Math.exp(-t * i * o);
38
- return c - l * ((h + t * i * a) / n * Math.sin(n * o) + a * Math.cos(n * o));
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 (t === 1)
41
- d = (n) => c - Math.exp(-i * n) * (a + (h + i * a) * n);
42
- else {
43
- const n = i * Math.sqrt(t * t - 1);
44
- d = (o) => {
45
- const l = Math.exp(-t * i * o), m = Math.min(n * o, 300);
46
- return c - l * ((h + t * i * a) * Math.sinh(m) + n * a * Math.cosh(m)) / n;
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: y && v || null,
51
- next: (n) => {
52
- const o = d(n);
53
- if (y)
54
- u.done = n >= v;
55
- else {
56
- let l = 0;
57
- t < 1 && (l = n === 0 ? R(h) : S(d, n, o));
58
- const m = Math.abs(l) <= r, D = Math.abs(c - o) <= s;
59
- u.done = m && D;
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
- return u.value = u.done ? c : o, u;
76
+ state.value = state.done ? target : current;
77
+ return state;
62
78
  }
63
79
  };
64
80
  }
65
81
  export {
66
- z as spring
82
+ spring
67
83
  };
@@ -1,13 +1,15 @@
1
- const a = 2e4;
2
- function o(n) {
3
- let t = 0;
4
- const r = 50;
5
- let e = n.next(t);
6
- for (; !e.done && t < 2e4; )
7
- t += r, e = n.next(t);
8
- return t >= 2e4 ? 1 / 0 : t;
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
- o as calcGeneratorDuration,
12
- a as maxGeneratorDuration
13
+ calcGeneratorDuration,
14
+ maxGeneratorDuration
13
15
  };
@@ -1,6 +1,6 @@
1
- function t(n) {
2
- return typeof n == "function";
1
+ function isGenerator(type) {
2
+ return typeof type === "function";
3
3
  }
4
4
  export {
5
- t as isGenerator
5
+ isGenerator
6
6
  };
@@ -1,9 +1,9 @@
1
- import { velocityPerSecond as c } from "../../../utils/velocity-per-second.mjs";
2
- const n = 5;
3
- function i(t, o, r) {
4
- const e = Math.max(o - n, 0);
5
- return c(r - t(e), o - e);
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
- i as calcGeneratorVelocity
8
+ calcGeneratorVelocity
9
9
  };
@@ -1,46 +1,73 @@
1
- import { secondsToMilliseconds as f } from "../../utils/time-conversion.mjs";
2
- import { getDefaultTransition as c } from "../utils/default-transitions.mjs";
3
- import { getValueTransition as D } from "../utils/get-value-transition.mjs";
4
- import { getFinalKeyframe as T } from "../animators/waapi/utils/get-final-keyframe.mjs";
5
- import { frame as k } from "../../frameloop/frame.mjs";
6
- import { AcceleratedAnimation as d } from "../animators/AcceleratedAnimation.mjs";
7
- import { MainThreadAnimation as A } from "../animators/MainThreadAnimation.mjs";
8
- import { GroupPlaybackControls as C } from "../GroupPlaybackControls.mjs";
9
- import { isTransitionDefined as U } from "../utils/is-transition-defined.mjs";
10
- const G = (i, r, n, a = {}, s, l) => (u) => {
11
- const o = D(a, i) || {}, y = o.delay || a.delay || 0;
12
- let { elapsed: m = 0 } = a;
13
- m = m - f(y);
14
- let e = {
15
- keyframes: Array.isArray(n) ? n : [null, n],
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: r.getVelocity(),
18
- ...o,
19
- delay: -m,
20
- onUpdate: (t) => {
21
- r.set(t), o.onUpdate && o.onUpdate(t);
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
- u(), o.onComplete && o.onComplete();
26
+ onComplete();
27
+ valueTransition.onComplete && valueTransition.onComplete();
25
28
  },
26
- name: i,
27
- motionValue: r,
28
- element: l ? void 0 : s
29
+ name,
30
+ motionValue: value,
31
+ element: isHandoff ? void 0 : element
29
32
  };
30
- U(o) || (e = {
31
- ...e,
32
- ...c(i, e)
33
- }), e.duration && (e.duration = f(e.duration)), e.repeatDelay && (e.repeatDelay = f(e.repeatDelay)), e.from !== void 0 && (e.keyframes[0] = e.from);
34
- let p = !1;
35
- if ((e.type === !1 || e.duration === 0 && !e.repeatDelay) && (e.duration = 0, e.delay === 0 && (p = !0)), p && !l && r.get() !== void 0) {
36
- const t = T(e.keyframes, o);
37
- if (t !== void 0)
38
- return k.update(() => {
39
- e.onUpdate(t), e.onComplete();
40
- }), new C([]);
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
- G as animateMotionValue
72
+ animateMotionValue
46
73
  };
@@ -1,45 +1,59 @@
1
- import { transformProps as M } from "../../render/html/utils/transform.mjs";
2
- import { animateMotionValue as S } from "./motion-value.mjs";
3
- import { setTarget as A } from "../../render/utils/setters.mjs";
4
- import { getValueTransition as H } from "../utils/get-value-transition.mjs";
5
- import { getOptimisedAppearId as P } from "../optimized-appear/get-appear-id.mjs";
6
- import { addValueToWillChange as B } from "../../value/use-will-change/add-will-change.mjs";
7
- import { frame as V } from "../../frameloop/frame.mjs";
8
- function I({ protectedKeys: t, needsAnimating: a }, n) {
9
- const i = t.hasOwnProperty(n) && a[n] !== !0;
10
- return a[n] = !1, i;
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 W(t, a, { delay: n = 0, transitionOverride: i, type: m } = {}) {
13
- var r;
14
- let { transition: p = t.getDefaultTransition(), transitionEnd: e, ...d } = a;
15
- i && (p = i);
16
- const f = [], u = m && t.animationState && t.animationState.getState()[m];
17
- for (const o in d) {
18
- const s = t.getValue(o, (r = t.latestValues[o]) !== null && r !== void 0 ? r : null), c = d[o];
19
- if (c === void 0 || u && I(u, o))
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
- const l = {
22
- delay: n,
23
- ...H(p || {}, o)
25
+ }
26
+ const valueTransition = {
27
+ delay,
28
+ ...getValueTransition(transition || {}, key)
24
29
  };
25
- let T = !1;
30
+ let isHandoff = false;
26
31
  if (window.MotionHandoffAnimation) {
27
- const h = P(t);
28
- if (h) {
29
- const w = window.MotionHandoffAnimation(h, o, V);
30
- w !== null && (l.startTime = w, T = !0);
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
- B(t, o), s.start(S(o, s, c, t.shouldReduceMotion && M.has(o) ? { type: !1 } : l, t, T));
34
- const g = s.animation;
35
- g && f.push(g);
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
- return e && Promise.all(f).then(() => {
38
- V.update(() => {
39
- e && A(t, e);
48
+ if (transitionEnd) {
49
+ Promise.all(animations).then(() => {
50
+ frame.update(() => {
51
+ transitionEnd && setTarget(visualElement, transitionEnd);
52
+ });
40
53
  });
41
- }), f;
54
+ }
55
+ return animations;
42
56
  }
43
57
  export {
44
- W as animateTarget
58
+ animateTarget
45
59
  };
@@ -1,6 +1,7 @@
1
- import { camelToDash as a } from "../../render/dom/utils/camel-to-dash.mjs";
2
- const t = "framerAppearId", e = "data-" + a(t);
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
- e as optimizedAppearDataAttribute,
5
- t as optimizedAppearDataId
5
+ optimizedAppearDataAttribute,
6
+ optimizedAppearDataId
6
7
  };
@@ -1,7 +1,7 @@
1
- import { optimizedAppearDataAttribute as p } from "./data-id.mjs";
2
- function e(t) {
3
- return t.props[p];
1
+ import { optimizedAppearDataAttribute } from "./data-id.mjs";
2
+ function getOptimisedAppearId(visualElement) {
3
+ return visualElement.props[optimizedAppearDataAttribute];
4
4
  }
5
5
  export {
6
- e as getOptimisedAppearId
6
+ getOptimisedAppearId
7
7
  };