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,202 +1,243 @@
1
- import { anticipate as F } from "../../easing/anticipate.mjs";
2
- import { backInOut as K } from "../../easing/back.mjs";
3
- import { circInOut as E } from "../../easing/circ.mjs";
4
- import { DOMKeyframesResolver as R } from "../../render/dom/DOMKeyframesResolver.mjs";
5
- import { noop as g } from "../../utils/noop.mjs";
6
- import { millisecondsToSeconds as T, secondsToMilliseconds as S } from "../../utils/time-conversion.mjs";
7
- import { isGenerator as b } from "../generators/utils/is-generator.mjs";
8
- import { BaseAnimation as D } from "./BaseAnimation.mjs";
9
- import { MainThreadAnimation as A } from "./MainThreadAnimation.mjs";
10
- import { acceleratedValues as M } from "./utils/accelerated-values.mjs";
11
- import { startWaapiAnimation as U } from "./waapi/index.mjs";
12
- import { isWaapiSupportedEasing as W } from "./waapi/easing.mjs";
13
- import { attachTimeline as w } from "./waapi/utils/attach-timeline.mjs";
14
- import { getFinalKeyframe as x } from "./waapi/utils/get-final-keyframe.mjs";
15
- import { supportsLinearEasing as C } from "./waapi/utils/supports-linear-easing.mjs";
16
- import { supportsWaapi as G } from "./waapi/utils/supports-waapi.mjs";
17
- const d = 10, O = 2e4;
18
- function k(r) {
19
- return b(r.type) || r.type === "spring" || !W(r.ease);
1
+ import { anticipate } from "../../easing/anticipate.mjs";
2
+ import { backInOut } from "../../easing/back.mjs";
3
+ import { circInOut } from "../../easing/circ.mjs";
4
+ import { DOMKeyframesResolver } from "../../render/dom/DOMKeyframesResolver.mjs";
5
+ import { noop } from "../../utils/noop.mjs";
6
+ import { millisecondsToSeconds, secondsToMilliseconds } from "../../utils/time-conversion.mjs";
7
+ import { isGenerator } from "../generators/utils/is-generator.mjs";
8
+ import { BaseAnimation } from "./BaseAnimation.mjs";
9
+ import { MainThreadAnimation } from "./MainThreadAnimation.mjs";
10
+ import { acceleratedValues } from "./utils/accelerated-values.mjs";
11
+ import { startWaapiAnimation } from "./waapi/index.mjs";
12
+ import { isWaapiSupportedEasing } from "./waapi/easing.mjs";
13
+ import { attachTimeline } from "./waapi/utils/attach-timeline.mjs";
14
+ import { getFinalKeyframe } from "./waapi/utils/get-final-keyframe.mjs";
15
+ import { supportsLinearEasing } from "./waapi/utils/supports-linear-easing.mjs";
16
+ import { supportsWaapi } from "./waapi/utils/supports-waapi.mjs";
17
+ const sampleDelta = 10;
18
+ const maxDuration = 2e4;
19
+ function requiresPregeneratedKeyframes(options) {
20
+ return isGenerator(options.type) || options.type === "spring" || !isWaapiSupportedEasing(options.ease);
20
21
  }
21
- function I(r, e) {
22
- const t = new A({
23
- ...e,
24
- keyframes: r,
22
+ function pregenerateKeyframes(keyframes, options) {
23
+ const sampleAnimation = new MainThreadAnimation({
24
+ ...options,
25
+ keyframes,
25
26
  repeat: 0,
26
27
  delay: 0,
27
- isGenerator: !0
28
+ isGenerator: true
28
29
  });
29
- let i = { done: !1, value: r[0] };
30
- const s = [];
31
- let n = 0;
32
- for (; !i.done && n < O; )
33
- i = t.sample(n), s.push(i.value), n += d;
30
+ let state = { done: false, value: keyframes[0] };
31
+ const pregeneratedKeyframes = [];
32
+ let t = 0;
33
+ while (!state.done && t < maxDuration) {
34
+ state = sampleAnimation.sample(t);
35
+ pregeneratedKeyframes.push(state.value);
36
+ t += sampleDelta;
37
+ }
34
38
  return {
35
39
  times: void 0,
36
- keyframes: s,
37
- duration: n - d,
40
+ keyframes: pregeneratedKeyframes,
41
+ duration: t - sampleDelta,
38
42
  ease: "linear"
39
43
  };
40
44
  }
41
- const P = {
42
- anticipate: F,
43
- backInOut: K,
44
- circInOut: E
45
+ const unsupportedEasingFunctions = {
46
+ anticipate,
47
+ backInOut,
48
+ circInOut
45
49
  };
46
- function L(r) {
47
- return r in P;
50
+ function isUnsupportedEase(key) {
51
+ return key in unsupportedEasingFunctions;
48
52
  }
49
- class ne extends D {
50
- constructor(e) {
51
- super(e);
52
- const { name: t, motionValue: i, element: s, keyframes: n } = this.options;
53
- this.resolver = new R(n, (o, a) => this.onKeyframesResolved(o, a), t, i, s), this.resolver.scheduleResolve();
54
- }
55
- initPlayback(e, t) {
56
- var i;
57
- let { duration: s = 300, times: n, ease: o, type: a, motionValue: m, name: h, startTime: p } = this.options;
58
- if (!(!((i = m.owner) === null || i === void 0) && i.current))
59
- return !1;
60
- if (typeof o == "string" && C() && L(o) && (o = P[o]), k(this.options)) {
61
- const { onComplete: c, onUpdate: y, motionValue: f, element: v, ...V } = this.options, u = I(e, V);
62
- e = u.keyframes, e.length === 1 && (e[1] = e[0]), s = u.duration, n = u.times, o = u.ease, a = "keyframes";
53
+ class AcceleratedAnimation extends BaseAnimation {
54
+ constructor(options) {
55
+ super(options);
56
+ const { name, motionValue, element, keyframes } = this.options;
57
+ this.resolver = new DOMKeyframesResolver(keyframes, (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe), name, motionValue, element);
58
+ this.resolver.scheduleResolve();
59
+ }
60
+ initPlayback(keyframes, finalKeyframe) {
61
+ var _a;
62
+ let { duration = 300, times, ease, type, motionValue, name, startTime } = this.options;
63
+ if (!((_a = motionValue.owner) === null || _a === void 0 ? void 0 : _a.current)) {
64
+ return false;
65
+ }
66
+ if (typeof ease === "string" && supportsLinearEasing() && isUnsupportedEase(ease)) {
67
+ ease = unsupportedEasingFunctions[ease];
68
+ }
69
+ if (requiresPregeneratedKeyframes(this.options)) {
70
+ const { onComplete, onUpdate, motionValue: motionValue2, element, ...options } = this.options;
71
+ const pregeneratedAnimation = pregenerateKeyframes(keyframes, options);
72
+ keyframes = pregeneratedAnimation.keyframes;
73
+ if (keyframes.length === 1) {
74
+ keyframes[1] = keyframes[0];
75
+ }
76
+ duration = pregeneratedAnimation.duration;
77
+ times = pregeneratedAnimation.times;
78
+ ease = pregeneratedAnimation.ease;
79
+ type = "keyframes";
80
+ }
81
+ const animation = startWaapiAnimation(motionValue.owner.current, name, keyframes, { ...this.options, duration, times, ease });
82
+ animation.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();
83
+ if (this.pendingTimeline) {
84
+ attachTimeline(animation, this.pendingTimeline);
85
+ this.pendingTimeline = void 0;
86
+ } else {
87
+ animation.onfinish = () => {
88
+ const { onComplete } = this.options;
89
+ motionValue.set(getFinalKeyframe(keyframes, this.options, finalKeyframe));
90
+ onComplete && onComplete();
91
+ this.cancel();
92
+ this.resolveFinishedPromise();
93
+ };
63
94
  }
64
- const l = U(m.owner.current, h, e, { ...this.options, duration: s, times: n, ease: o });
65
- return l.startTime = p ?? this.calcStartTime(), this.pendingTimeline ? (w(l, this.pendingTimeline), this.pendingTimeline = void 0) : l.onfinish = () => {
66
- const { onComplete: c } = this.options;
67
- m.set(x(e, this.options, t)), c && c(), this.cancel(), this.resolveFinishedPromise();
68
- }, {
69
- animation: l,
70
- duration: s,
71
- times: n,
72
- type: a,
73
- ease: o,
74
- keyframes: e
95
+ return {
96
+ animation,
97
+ duration,
98
+ times,
99
+ type,
100
+ ease,
101
+ keyframes
75
102
  };
76
103
  }
77
104
  get duration() {
78
- const { resolved: e } = this;
79
- if (!e)
105
+ const { resolved } = this;
106
+ if (!resolved)
80
107
  return 0;
81
- const { duration: t } = e;
82
- return T(t);
108
+ const { duration } = resolved;
109
+ return millisecondsToSeconds(duration);
83
110
  }
84
111
  get time() {
85
- const { resolved: e } = this;
86
- if (!e)
112
+ const { resolved } = this;
113
+ if (!resolved)
87
114
  return 0;
88
- const { animation: t } = e;
89
- return T(t.currentTime || 0);
115
+ const { animation } = resolved;
116
+ return millisecondsToSeconds(animation.currentTime || 0);
90
117
  }
91
- set time(e) {
92
- const { resolved: t } = this;
93
- if (!t)
118
+ set time(newTime) {
119
+ const { resolved } = this;
120
+ if (!resolved)
94
121
  return;
95
- const { animation: i } = t;
96
- i.currentTime = S(e);
122
+ const { animation } = resolved;
123
+ animation.currentTime = secondsToMilliseconds(newTime);
97
124
  }
98
125
  get speed() {
99
- const { resolved: e } = this;
100
- if (!e)
126
+ const { resolved } = this;
127
+ if (!resolved)
101
128
  return 1;
102
- const { animation: t } = e;
103
- return t.playbackRate;
129
+ const { animation } = resolved;
130
+ return animation.playbackRate;
104
131
  }
105
- set speed(e) {
106
- const { resolved: t } = this;
107
- if (!t)
132
+ set speed(newSpeed) {
133
+ const { resolved } = this;
134
+ if (!resolved)
108
135
  return;
109
- const { animation: i } = t;
110
- i.playbackRate = e;
136
+ const { animation } = resolved;
137
+ animation.playbackRate = newSpeed;
111
138
  }
112
139
  get state() {
113
- const { resolved: e } = this;
114
- if (!e)
140
+ const { resolved } = this;
141
+ if (!resolved)
115
142
  return "idle";
116
- const { animation: t } = e;
117
- return t.playState;
143
+ const { animation } = resolved;
144
+ return animation.playState;
118
145
  }
119
146
  get startTime() {
120
- const { resolved: e } = this;
121
- if (!e)
147
+ const { resolved } = this;
148
+ if (!resolved)
122
149
  return null;
123
- const { animation: t } = e;
124
- return t.startTime;
150
+ const { animation } = resolved;
151
+ return animation.startTime;
125
152
  }
126
153
  /**
127
154
  * Replace the default DocumentTimeline with another AnimationTimeline.
128
155
  * Currently used for scroll animations.
129
156
  */
130
- attachTimeline(e) {
131
- if (!this._resolved)
132
- this.pendingTimeline = e;
133
- else {
134
- const { resolved: t } = this;
135
- if (!t)
136
- return g;
137
- const { animation: i } = t;
138
- w(i, e);
157
+ attachTimeline(timeline) {
158
+ if (!this._resolved) {
159
+ this.pendingTimeline = timeline;
160
+ } else {
161
+ const { resolved } = this;
162
+ if (!resolved)
163
+ return noop;
164
+ const { animation } = resolved;
165
+ attachTimeline(animation, timeline);
139
166
  }
140
- return g;
167
+ return noop;
141
168
  }
142
169
  play() {
143
170
  if (this.isStopped)
144
171
  return;
145
- const { resolved: e } = this;
146
- if (!e)
172
+ const { resolved } = this;
173
+ if (!resolved)
147
174
  return;
148
- const { animation: t } = e;
149
- t.playState === "finished" && this.updateFinishedPromise(), t.play();
175
+ const { animation } = resolved;
176
+ if (animation.playState === "finished") {
177
+ this.updateFinishedPromise();
178
+ }
179
+ animation.play();
150
180
  }
151
181
  pause() {
152
- const { resolved: e } = this;
153
- if (!e)
182
+ const { resolved } = this;
183
+ if (!resolved)
154
184
  return;
155
- const { animation: t } = e;
156
- t.pause();
185
+ const { animation } = resolved;
186
+ animation.pause();
157
187
  }
158
188
  stop() {
159
- if (this.resolver.cancel(), this.isStopped = !0, this.state === "idle")
189
+ this.resolver.cancel();
190
+ this.isStopped = true;
191
+ if (this.state === "idle")
160
192
  return;
161
- this.resolveFinishedPromise(), this.updateFinishedPromise();
162
- const { resolved: e } = this;
163
- if (!e)
193
+ this.resolveFinishedPromise();
194
+ this.updateFinishedPromise();
195
+ const { resolved } = this;
196
+ if (!resolved)
164
197
  return;
165
- const { animation: t, keyframes: i, duration: s, type: n, ease: o, times: a } = e;
166
- if (t.playState === "idle" || t.playState === "finished")
198
+ const { animation, keyframes, duration, type, ease, times } = resolved;
199
+ if (animation.playState === "idle" || animation.playState === "finished") {
167
200
  return;
201
+ }
168
202
  if (this.time) {
169
- const { motionValue: h, onUpdate: p, onComplete: l, element: c, ...y } = this.options, f = new A({
170
- ...y,
171
- keyframes: i,
172
- duration: s,
173
- type: n,
174
- ease: o,
175
- times: a,
176
- isGenerator: !0
177
- }), v = S(this.time);
178
- h.setWithVelocity(f.sample(v - d).value, f.sample(v).value, d);
203
+ const { motionValue, onUpdate, onComplete, element, ...options } = this.options;
204
+ const sampleAnimation = new MainThreadAnimation({
205
+ ...options,
206
+ keyframes,
207
+ duration,
208
+ type,
209
+ ease,
210
+ times,
211
+ isGenerator: true
212
+ });
213
+ const sampleTime = secondsToMilliseconds(this.time);
214
+ motionValue.setWithVelocity(sampleAnimation.sample(sampleTime - sampleDelta).value, sampleAnimation.sample(sampleTime).value, sampleDelta);
179
215
  }
180
- const { onStop: m } = this.options;
181
- m && m(), this.cancel();
216
+ const { onStop } = this.options;
217
+ onStop && onStop();
218
+ this.cancel();
182
219
  }
183
220
  complete() {
184
- const { resolved: e } = this;
185
- e && e.animation.finish();
221
+ const { resolved } = this;
222
+ if (!resolved)
223
+ return;
224
+ resolved.animation.finish();
186
225
  }
187
226
  cancel() {
188
- const { resolved: e } = this;
189
- e && e.animation.cancel();
227
+ const { resolved } = this;
228
+ if (!resolved)
229
+ return;
230
+ resolved.animation.cancel();
190
231
  }
191
- static supports(e) {
192
- const { motionValue: t, name: i, repeatDelay: s, repeatType: n, damping: o, type: a } = e;
193
- return G() && i && M.has(i) && t && t.owner && t.owner.current instanceof HTMLElement && /**
232
+ static supports(options) {
233
+ const { motionValue, name, repeatDelay, repeatType, damping, type } = options;
234
+ return supportsWaapi() && name && acceleratedValues.has(name) && motionValue && motionValue.owner && motionValue.owner.current instanceof HTMLElement && /**
194
235
  * If we're outputting values to onUpdate then we can't use WAAPI as there's
195
236
  * no way to read the value from WAAPI every frame.
196
237
  */
197
- !t.owner.getProps().onUpdate && !s && n !== "mirror" && o !== 0 && a !== "inertia";
238
+ !motionValue.owner.getProps().onUpdate && !repeatDelay && repeatType !== "mirror" && damping !== 0 && type !== "inertia";
198
239
  }
199
240
  }
200
241
  export {
201
- ne as AcceleratedAnimation
242
+ AcceleratedAnimation
202
243
  };
@@ -1,19 +1,23 @@
1
- import { time as l } from "../../frameloop/sync-time.mjs";
2
- import { flushKeyframeResolvers as m } from "../../render/utils/KeyframesResolver.mjs";
3
- import { canAnimate as v } from "./utils/can-animate.mjs";
4
- import { getFinalKeyframe as p } from "./waapi/utils/get-final-keyframe.mjs";
5
- const c = 40;
6
- class F {
7
- constructor({ autoplay: e = !0, delay: t = 0, type: i = "keyframes", repeat: o = 0, repeatDelay: r = 0, repeatType: n = "loop", ...s }) {
8
- this.isStopped = !1, this.hasAttemptedResolve = !1, this.createdAt = l.now(), this.options = {
9
- autoplay: e,
10
- delay: t,
11
- type: i,
12
- repeat: o,
13
- repeatDelay: r,
14
- repeatType: n,
15
- ...s
16
- }, this.updateFinishedPromise();
1
+ import { time } from "../../frameloop/sync-time.mjs";
2
+ import { flushKeyframeResolvers } from "../../render/utils/KeyframesResolver.mjs";
3
+ import { canAnimate } from "./utils/can-animate.mjs";
4
+ import { getFinalKeyframe } from "./waapi/utils/get-final-keyframe.mjs";
5
+ const MAX_RESOLVE_DELAY = 40;
6
+ class BaseAnimation {
7
+ constructor({ autoplay = true, delay = 0, type = "keyframes", repeat = 0, repeatDelay = 0, repeatType = "loop", ...options }) {
8
+ this.isStopped = false;
9
+ this.hasAttemptedResolve = false;
10
+ this.createdAt = time.now();
11
+ this.options = {
12
+ autoplay,
13
+ delay,
14
+ type,
15
+ repeat,
16
+ repeatDelay,
17
+ repeatType,
18
+ ...options
19
+ };
20
+ this.updateFinishedPromise();
17
21
  }
18
22
  /**
19
23
  * This method uses the createdAt and resolvedAt to calculate the
@@ -26,7 +30,9 @@ class F {
26
30
  * to avoid a sudden jump into the animation.
27
31
  */
28
32
  calcStartTime() {
29
- return this.resolvedAt ? this.resolvedAt - this.createdAt > c ? this.resolvedAt : this.createdAt : this.createdAt;
33
+ if (!this.resolvedAt)
34
+ return this.createdAt;
35
+ return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt;
30
36
  }
31
37
  /**
32
38
  * A getter for resolved data. If keyframes are not yet resolved, accessing
@@ -34,29 +40,39 @@ class F {
34
40
  * This is a deoptimisation, but at its worst still batches read/writes.
35
41
  */
36
42
  get resolved() {
37
- return !this._resolved && !this.hasAttemptedResolve && m(), this._resolved;
43
+ if (!this._resolved && !this.hasAttemptedResolve) {
44
+ flushKeyframeResolvers();
45
+ }
46
+ return this._resolved;
38
47
  }
39
48
  /**
40
49
  * A method to be called when the keyframes resolver completes. This method
41
50
  * will check if its possible to run the animation and, if not, skip it.
42
51
  * Otherwise, it will call initPlayback on the implementing class.
43
52
  */
44
- onKeyframesResolved(e, t) {
45
- this.resolvedAt = l.now(), this.hasAttemptedResolve = !0;
46
- const { name: i, type: o, velocity: r, delay: n, onComplete: s, onUpdate: h, isGenerator: a } = this.options;
47
- if (!a && !v(e, i, o, r))
48
- if (n)
49
- this.options.duration = 0;
50
- else {
51
- h == null || h(p(e, this.options, t)), s == null || s(), this.resolveFinishedPromise();
53
+ onKeyframesResolved(keyframes, finalKeyframe) {
54
+ this.resolvedAt = time.now();
55
+ this.hasAttemptedResolve = true;
56
+ const { name, type, velocity, delay, onComplete, onUpdate, isGenerator } = this.options;
57
+ if (!isGenerator && !canAnimate(keyframes, name, type, velocity)) {
58
+ if (!delay) {
59
+ onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(getFinalKeyframe(keyframes, this.options, finalKeyframe));
60
+ onComplete === null || onComplete === void 0 ? void 0 : onComplete();
61
+ this.resolveFinishedPromise();
52
62
  return;
63
+ } else {
64
+ this.options.duration = 0;
53
65
  }
54
- const d = this.initPlayback(e, t);
55
- d !== !1 && (this._resolved = {
56
- keyframes: e,
57
- finalKeyframe: t,
58
- ...d
59
- }, this.onPostResolved());
66
+ }
67
+ const resolvedAnimation = this.initPlayback(keyframes, finalKeyframe);
68
+ if (resolvedAnimation === false)
69
+ return;
70
+ this._resolved = {
71
+ keyframes,
72
+ finalKeyframe,
73
+ ...resolvedAnimation
74
+ };
75
+ this.onPostResolved();
60
76
  }
61
77
  onPostResolved() {
62
78
  }
@@ -65,15 +81,15 @@ class F {
65
81
  * resolves when the animation finishes at all but in a future update could/should
66
82
  * reject if its cancels.
67
83
  */
68
- then(e, t) {
69
- return this.currentFinishedPromise.then(e, t);
84
+ then(resolve, reject) {
85
+ return this.currentFinishedPromise.then(resolve, reject);
70
86
  }
71
87
  updateFinishedPromise() {
72
- this.currentFinishedPromise = new Promise((e) => {
73
- this.resolveFinishedPromise = e;
88
+ this.currentFinishedPromise = new Promise((resolve) => {
89
+ this.resolveFinishedPromise = resolve;
74
90
  });
75
91
  }
76
92
  }
77
93
  export {
78
- F as BaseAnimation
94
+ BaseAnimation
79
95
  };