motion-v 0.2.6 → 0.3.1-beta.1

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 (244) hide show
  1. package/dist/cjs/index.js +5858 -0
  2. package/dist/es/animation/use-animate.mjs +31 -0
  3. package/dist/es/components/AnimatePresence.vue.mjs +71 -0
  4. package/dist/es/components/AnimatePresence.vue2.mjs +4 -0
  5. package/dist/es/components/Motion.vue.mjs +116 -0
  6. package/dist/es/components/Motion.vue2.mjs +4 -0
  7. package/dist/es/components/Primitive.mjs +29 -0
  8. package/dist/es/components/Slot.mjs +36 -0
  9. package/dist/es/components/context.mjs +6 -0
  10. package/dist/es/components/presence.mjs +16 -0
  11. package/dist/es/components/renderSlotFragments.mjs +13 -0
  12. package/dist/es/constants/index.mjs +20 -0
  13. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +76 -0
  14. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animate/index.mjs +27 -0
  15. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animate/resolve-subjects.mjs +16 -0
  16. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animate/sequence.mjs +14 -0
  17. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animate/single-value.mjs +11 -0
  18. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animate/subject.mjs +38 -0
  19. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +243 -0
  20. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +95 -0
  21. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs +275 -0
  22. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs +17 -0
  23. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs +12 -0
  24. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/utils/can-animate.mjs +30 -0
  25. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs +162 -0
  26. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs +31 -0
  27. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs +13 -0
  28. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/easing.mjs +37 -0
  29. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/index.mjs +20 -0
  30. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs +7 -0
  31. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs +9 -0
  32. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs +13 -0
  33. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs +12 -0
  34. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs +10 -0
  35. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs +6 -0
  36. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs +12 -0
  37. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs +12 -0
  38. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs +5 -0
  39. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/generators/inertia.mjs +67 -0
  40. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/generators/keyframes.mjs +37 -0
  41. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/generators/spring/find.mjs +83 -0
  42. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/generators/spring/index.mjs +83 -0
  43. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs +15 -0
  44. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/generators/utils/is-generator.mjs +6 -0
  45. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/generators/utils/velocity.mjs +9 -0
  46. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/interfaces/motion-value.mjs +73 -0
  47. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +59 -0
  48. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/optimized-appear/data-id.mjs +7 -0
  49. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +7 -0
  50. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/sequence/create.mjs +153 -0
  51. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs +15 -0
  52. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/sequence/utils/edit.mjs +26 -0
  53. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/sequence/utils/sort.mjs +14 -0
  54. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/create-visual-element.mjs +43 -0
  55. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/default-transitions.mjs +33 -0
  56. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/get-value-transition.mjs +6 -0
  57. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/is-animatable.mjs +16 -0
  58. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/is-animation-controls.mjs +6 -0
  59. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs +6 -0
  60. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs +6 -0
  61. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/is-none.mjs +13 -0
  62. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/is-transition-defined.mjs +6 -0
  63. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/animation/utils/stagger.mjs +26 -0
  64. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/anticipate.mjs +5 -0
  65. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/back.mjs +11 -0
  66. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/circ.mjs +10 -0
  67. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/cubic-bezier.mjs +28 -0
  68. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/ease.mjs +9 -0
  69. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/modifiers/mirror.mjs +4 -0
  70. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/modifiers/reverse.mjs +4 -0
  71. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/steps.mjs +12 -0
  72. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/utils/create-generator-easing.mjs +14 -0
  73. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs +8 -0
  74. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs +4 -0
  75. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/utils/is-easing-array.mjs +6 -0
  76. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/easing/utils/map.mjs +35 -0
  77. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/frameloop/batcher.mjs +75 -0
  78. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/frameloop/frame.mjs +9 -0
  79. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/frameloop/index-legacy.mjs +11 -0
  80. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/frameloop/render-step.mjs +63 -0
  81. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/frameloop/sync-time.mjs +21 -0
  82. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/motion/features/definitions.mjs +29 -0
  83. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +8 -0
  84. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/projection/geometry/conversion.mjs +22 -0
  85. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/projection/geometry/models.mjs +9 -0
  86. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/projection/styles/scale-correction.mjs +4 -0
  87. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/projection/utils/measure.mjs +7 -0
  88. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/VisualElement.mjs +372 -0
  89. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +101 -0
  90. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +21 -0
  91. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/resize/handle-element.mjs +62 -0
  92. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/resize/handle-window.mjs +31 -0
  93. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/resize/index.mjs +8 -0
  94. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/index.mjs +63 -0
  95. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/info.mjs +51 -0
  96. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/observe.mjs +18 -0
  97. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs +33 -0
  98. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +38 -0
  99. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs +36 -0
  100. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs +23 -0
  101. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs +21 -0
  102. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs +39 -0
  103. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/supports.mjs +5 -0
  104. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/scroll/track.mjs +67 -0
  105. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs +4 -0
  106. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs +31 -0
  107. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs +14 -0
  108. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs +6 -0
  109. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/utils/resolve-element.mjs +23 -0
  110. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs +65 -0
  111. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs +12 -0
  112. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/defaults.mjs +25 -0
  113. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/dimensions.mjs +10 -0
  114. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/find.mjs +9 -0
  115. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs +6 -0
  116. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/number-browser.mjs +41 -0
  117. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/number.mjs +18 -0
  118. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/test.mjs +4 -0
  119. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/transform.mjs +31 -0
  120. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/type-auto.mjs +7 -0
  121. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/value-types/type-int.mjs +8 -0
  122. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/dom/viewport/index.mjs +37 -0
  123. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +55 -0
  124. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/html/utils/build-styles.mjs +42 -0
  125. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/html/utils/build-transform.mjs +47 -0
  126. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs +22 -0
  127. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/html/utils/render.mjs +9 -0
  128. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs +16 -0
  129. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/html/utils/transform.mjs +24 -0
  130. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/object/ObjectVisualElement.mjs +41 -0
  131. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/store.mjs +4 -0
  132. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +45 -0
  133. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/utils/build-attrs.mjs +46 -0
  134. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs +28 -0
  135. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs +4 -0
  136. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/utils/path.mjs +20 -0
  137. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/utils/render.mjs +12 -0
  138. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +16 -0
  139. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/svg/utils/transform-origin.mjs +12 -0
  140. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/KeyframesResolver.mjs +134 -0
  141. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/is-controlling-variants.mjs +13 -0
  142. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/is-variant-label.mjs +6 -0
  143. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/motion-values.mjs +37 -0
  144. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs +8 -0
  145. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/resolve-variants.mjs +25 -0
  146. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/setters.mjs +22 -0
  147. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/render/utils/variant-props.mjs +14 -0
  148. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/GlobalConfig.mjs +7 -0
  149. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/array.mjs +13 -0
  150. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/clamp.mjs +10 -0
  151. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/delay.mjs +22 -0
  152. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/distance.mjs +10 -0
  153. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/errors.mjs +19 -0
  154. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/hsla-to-rgba.mjs +39 -0
  155. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/interpolate.mjs +49 -0
  156. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/is-browser.mjs +4 -0
  157. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/is-numerical-string.mjs +4 -0
  158. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/is-zero-value-string.mjs +4 -0
  159. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/memo.mjs +11 -0
  160. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/mix/color.mjs +44 -0
  161. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/mix/complex.mjs +84 -0
  162. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/mix/immediate.mjs +6 -0
  163. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/mix/index.mjs +12 -0
  164. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/mix/number.mjs +6 -0
  165. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/mix/visibility.mjs +12 -0
  166. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/noop.mjs +4 -0
  167. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/offsets/default.mjs +9 -0
  168. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/offsets/fill.mjs +12 -0
  169. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/offsets/time.mjs +6 -0
  170. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/pipe.mjs +5 -0
  171. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/progress.mjs +7 -0
  172. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/reduced-motion/index.mjs +18 -0
  173. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/reduced-motion/state.mjs +6 -0
  174. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/resolve-value.mjs +7 -0
  175. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/subscription-manager.mjs +32 -0
  176. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/time-conversion.mjs +6 -0
  177. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/transform.mjs +21 -0
  178. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/velocity-per-second.mjs +6 -0
  179. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/warn-once.mjs +10 -0
  180. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/utils/wrap.mjs +7 -0
  181. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/index.mjs +282 -0
  182. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/color/hex.mjs +37 -0
  183. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/color/hsla.mjs +14 -0
  184. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/color/index.mjs +21 -0
  185. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/color/rgba.mjs +18 -0
  186. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/color/utils.mjs +21 -0
  187. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/complex/filter.mjs +27 -0
  188. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/complex/index.mjs +84 -0
  189. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/numbers/index.mjs +19 -0
  190. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/numbers/units.mjs +23 -0
  191. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/utils/color-regex.mjs +4 -0
  192. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/utils/float-regex.mjs +4 -0
  193. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/utils/is-nullish.mjs +6 -0
  194. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/utils/sanitize.mjs +4 -0
  195. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/types/utils/single-color-regex.mjs +4 -0
  196. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/use-will-change/add-will-change.mjs +10 -0
  197. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/use-will-change/is.mjs +7 -0
  198. package/dist/es/external/.pnpm/framer-motion@11.11.11/external/framer-motion/dist/es/value/utils/is-motion-value.mjs +4 -0
  199. package/dist/es/external/.pnpm/hey-listen@1.0.8/external/hey-listen/dist/hey-listen.es.mjs +20 -0
  200. package/dist/es/features/events.mjs +69 -0
  201. package/dist/es/features/feature-manager.mjs +29 -0
  202. package/dist/es/features/feature.mjs +10 -0
  203. package/dist/es/features/gestures/base.mjs +19 -0
  204. package/dist/es/features/gestures/hover.mjs +42 -0
  205. package/dist/es/features/gestures/in-view.mjs +35 -0
  206. package/dist/es/features/gestures/press.mjs +37 -0
  207. package/dist/es/features/svg.mjs +31 -0
  208. package/dist/es/index.mjs +104 -0
  209. package/dist/es/state/event.mjs +6 -0
  210. package/dist/es/state/motion-state.mjs +175 -0
  211. package/dist/es/state/schedule.mjs +30 -0
  212. package/dist/es/state/style.mjs +117 -0
  213. package/dist/es/state/transform.mjs +68 -0
  214. package/dist/es/state/utils.mjs +119 -0
  215. package/dist/es/utils/createContext.mjs +25 -0
  216. package/dist/es/utils/events.mjs +8 -0
  217. package/dist/es/utils/motion-value.mjs +6 -0
  218. package/dist/es/utils/use-animation-frame.mjs +20 -0
  219. package/dist/es/utils/use-in-view.mjs +25 -0
  220. package/dist/es/value/use-combine-values.mjs +27 -0
  221. package/dist/es/value/use-computed.mjs +20 -0
  222. package/dist/es/value/use-motion-template.mjs +22 -0
  223. package/dist/es/value/use-scroll.mjs +56 -0
  224. package/dist/es/value/use-spring.mjs +59 -0
  225. package/dist/es/value/use-time.mjs +10 -0
  226. package/dist/es/value/use-transform.mjs +29 -0
  227. package/dist/src/animation/index.d.ts +1 -0
  228. package/dist/src/animation/use-animate.d.ts +8 -0
  229. package/dist/src/components/Motion.d.ts +3 -3
  230. package/dist/src/features/events.d.ts +1 -1
  231. package/dist/src/features/feature-manager.d.ts +9 -0
  232. package/dist/src/features/feature.d.ts +0 -7
  233. package/dist/src/features/index.d.ts +2 -1
  234. package/dist/src/index.d.ts +3 -0
  235. package/dist/src/state/motion-state.d.ts +1 -1
  236. package/dist/src/state/utils.d.ts +1 -1
  237. package/dist/src/types/state.d.ts +3 -2
  238. package/dist/src/utils/index.d.ts +2 -0
  239. package/dist/src/utils/use-dom-ref.d.ts +1 -0
  240. package/dist/src/utils/use-in-view.d.ts +3 -0
  241. package/package.json +8 -7
  242. package/dist/index.js +0 -4011
  243. package/dist/index.umd.cjs +0 -1
  244. package/dist/src/components/usePrimitiveElement.d.ts +0 -5
@@ -0,0 +1,243 @@
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);
21
+ }
22
+ function pregenerateKeyframes(keyframes, options) {
23
+ const sampleAnimation = new MainThreadAnimation({
24
+ ...options,
25
+ keyframes,
26
+ repeat: 0,
27
+ delay: 0,
28
+ isGenerator: true
29
+ });
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
+ }
38
+ return {
39
+ times: void 0,
40
+ keyframes: pregeneratedKeyframes,
41
+ duration: t - sampleDelta,
42
+ ease: "linear"
43
+ };
44
+ }
45
+ const unsupportedEasingFunctions = {
46
+ anticipate,
47
+ backInOut,
48
+ circInOut
49
+ };
50
+ function isUnsupportedEase(key) {
51
+ return key in unsupportedEasingFunctions;
52
+ }
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
+ };
94
+ }
95
+ return {
96
+ animation,
97
+ duration,
98
+ times,
99
+ type,
100
+ ease,
101
+ keyframes
102
+ };
103
+ }
104
+ get duration() {
105
+ const { resolved } = this;
106
+ if (!resolved)
107
+ return 0;
108
+ const { duration } = resolved;
109
+ return millisecondsToSeconds(duration);
110
+ }
111
+ get time() {
112
+ const { resolved } = this;
113
+ if (!resolved)
114
+ return 0;
115
+ const { animation } = resolved;
116
+ return millisecondsToSeconds(animation.currentTime || 0);
117
+ }
118
+ set time(newTime) {
119
+ const { resolved } = this;
120
+ if (!resolved)
121
+ return;
122
+ const { animation } = resolved;
123
+ animation.currentTime = secondsToMilliseconds(newTime);
124
+ }
125
+ get speed() {
126
+ const { resolved } = this;
127
+ if (!resolved)
128
+ return 1;
129
+ const { animation } = resolved;
130
+ return animation.playbackRate;
131
+ }
132
+ set speed(newSpeed) {
133
+ const { resolved } = this;
134
+ if (!resolved)
135
+ return;
136
+ const { animation } = resolved;
137
+ animation.playbackRate = newSpeed;
138
+ }
139
+ get state() {
140
+ const { resolved } = this;
141
+ if (!resolved)
142
+ return "idle";
143
+ const { animation } = resolved;
144
+ return animation.playState;
145
+ }
146
+ get startTime() {
147
+ const { resolved } = this;
148
+ if (!resolved)
149
+ return null;
150
+ const { animation } = resolved;
151
+ return animation.startTime;
152
+ }
153
+ /**
154
+ * Replace the default DocumentTimeline with another AnimationTimeline.
155
+ * Currently used for scroll animations.
156
+ */
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);
166
+ }
167
+ return noop;
168
+ }
169
+ play() {
170
+ if (this.isStopped)
171
+ return;
172
+ const { resolved } = this;
173
+ if (!resolved)
174
+ return;
175
+ const { animation } = resolved;
176
+ if (animation.playState === "finished") {
177
+ this.updateFinishedPromise();
178
+ }
179
+ animation.play();
180
+ }
181
+ pause() {
182
+ const { resolved } = this;
183
+ if (!resolved)
184
+ return;
185
+ const { animation } = resolved;
186
+ animation.pause();
187
+ }
188
+ stop() {
189
+ this.resolver.cancel();
190
+ this.isStopped = true;
191
+ if (this.state === "idle")
192
+ return;
193
+ this.resolveFinishedPromise();
194
+ this.updateFinishedPromise();
195
+ const { resolved } = this;
196
+ if (!resolved)
197
+ return;
198
+ const { animation, keyframes, duration, type, ease, times } = resolved;
199
+ if (animation.playState === "idle" || animation.playState === "finished") {
200
+ return;
201
+ }
202
+ if (this.time) {
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);
215
+ }
216
+ const { onStop } = this.options;
217
+ onStop && onStop();
218
+ this.cancel();
219
+ }
220
+ complete() {
221
+ const { resolved } = this;
222
+ if (!resolved)
223
+ return;
224
+ resolved.animation.finish();
225
+ }
226
+ cancel() {
227
+ const { resolved } = this;
228
+ if (!resolved)
229
+ return;
230
+ resolved.animation.cancel();
231
+ }
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 && /**
235
+ * If we're outputting values to onUpdate then we can't use WAAPI as there's
236
+ * no way to read the value from WAAPI every frame.
237
+ */
238
+ !motionValue.owner.getProps().onUpdate && !repeatDelay && repeatType !== "mirror" && damping !== 0 && type !== "inertia";
239
+ }
240
+ }
241
+ export {
242
+ AcceleratedAnimation
243
+ };
@@ -0,0 +1,95 @@
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();
21
+ }
22
+ /**
23
+ * This method uses the createdAt and resolvedAt to calculate the
24
+ * animation startTime. *Ideally*, we would use the createdAt time as t=0
25
+ * as the following frame would then be the first frame of the animation in
26
+ * progress, which would feel snappier.
27
+ *
28
+ * However, if there's a delay (main thread work) between the creation of
29
+ * the animation and the first commited frame, we prefer to use resolvedAt
30
+ * to avoid a sudden jump into the animation.
31
+ */
32
+ calcStartTime() {
33
+ if (!this.resolvedAt)
34
+ return this.createdAt;
35
+ return this.resolvedAt - this.createdAt > MAX_RESOLVE_DELAY ? this.resolvedAt : this.createdAt;
36
+ }
37
+ /**
38
+ * A getter for resolved data. If keyframes are not yet resolved, accessing
39
+ * this.resolved will synchronously flush all pending keyframe resolvers.
40
+ * This is a deoptimisation, but at its worst still batches read/writes.
41
+ */
42
+ get resolved() {
43
+ if (!this._resolved && !this.hasAttemptedResolve) {
44
+ flushKeyframeResolvers();
45
+ }
46
+ return this._resolved;
47
+ }
48
+ /**
49
+ * A method to be called when the keyframes resolver completes. This method
50
+ * will check if its possible to run the animation and, if not, skip it.
51
+ * Otherwise, it will call initPlayback on the implementing class.
52
+ */
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();
62
+ return;
63
+ } else {
64
+ this.options.duration = 0;
65
+ }
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();
76
+ }
77
+ onPostResolved() {
78
+ }
79
+ /**
80
+ * Allows the returned animation to be awaited or promise-chained. Currently
81
+ * resolves when the animation finishes at all but in a future update could/should
82
+ * reject if its cancels.
83
+ */
84
+ then(resolve, reject) {
85
+ return this.currentFinishedPromise.then(resolve, reject);
86
+ }
87
+ updateFinishedPromise() {
88
+ this.currentFinishedPromise = new Promise((resolve) => {
89
+ this.resolveFinishedPromise = resolve;
90
+ });
91
+ }
92
+ }
93
+ export {
94
+ BaseAnimation
95
+ };
@@ -0,0 +1,275 @@
1
+ import { KeyframeResolver } from "../../render/utils/KeyframesResolver.mjs";
2
+ import { spring } from "../generators/spring/index.mjs";
3
+ import { inertia } from "../generators/inertia.mjs";
4
+ import { keyframes } from "../generators/keyframes.mjs";
5
+ import { BaseAnimation } from "./BaseAnimation.mjs";
6
+ import { pipe } from "../../utils/pipe.mjs";
7
+ import { mix } from "../../utils/mix/index.mjs";
8
+ import { calcGeneratorDuration } from "../generators/utils/calc-duration.mjs";
9
+ import { millisecondsToSeconds, secondsToMilliseconds } from "../../utils/time-conversion.mjs";
10
+ import { clamp } from "../../utils/clamp.mjs";
11
+ import { invariant } from "../../utils/errors.mjs";
12
+ import { frameloopDriver } from "./drivers/driver-frameloop.mjs";
13
+ import { getFinalKeyframe } from "./waapi/utils/get-final-keyframe.mjs";
14
+ import { isGenerator } from "../generators/utils/is-generator.mjs";
15
+ const generators = {
16
+ decay: inertia,
17
+ inertia,
18
+ tween: keyframes,
19
+ keyframes,
20
+ spring
21
+ };
22
+ const percentToProgress = (percent) => percent / 100;
23
+ class MainThreadAnimation extends BaseAnimation {
24
+ constructor(options) {
25
+ super(options);
26
+ this.holdTime = null;
27
+ this.cancelTime = null;
28
+ this.currentTime = 0;
29
+ this.playbackSpeed = 1;
30
+ this.pendingPlayState = "running";
31
+ this.startTime = null;
32
+ this.state = "idle";
33
+ this.stop = () => {
34
+ this.resolver.cancel();
35
+ this.isStopped = true;
36
+ if (this.state === "idle")
37
+ return;
38
+ this.teardown();
39
+ const { onStop } = this.options;
40
+ onStop && onStop();
41
+ };
42
+ const { name, motionValue, element, keyframes: keyframes2 } = this.options;
43
+ const KeyframeResolver$1 = (element === null || element === void 0 ? void 0 : element.KeyframeResolver) || KeyframeResolver;
44
+ const onResolved = (resolvedKeyframes, finalKeyframe) => this.onKeyframesResolved(resolvedKeyframes, finalKeyframe);
45
+ this.resolver = new KeyframeResolver$1(keyframes2, onResolved, name, motionValue, element);
46
+ this.resolver.scheduleResolve();
47
+ }
48
+ initPlayback(keyframes$1) {
49
+ const { type = "keyframes", repeat = 0, repeatDelay = 0, repeatType, velocity = 0 } = this.options;
50
+ const generatorFactory = isGenerator(type) ? type : generators[type] || keyframes;
51
+ let mapPercentToKeyframes;
52
+ let mirroredGenerator;
53
+ if (generatorFactory !== keyframes && typeof keyframes$1[0] !== "number") {
54
+ if (process.env.NODE_ENV !== "production") {
55
+ invariant(keyframes$1.length === 2, `Only two keyframes currently supported with spring and inertia animations. Trying to animate ${keyframes$1}`);
56
+ }
57
+ mapPercentToKeyframes = pipe(percentToProgress, mix(keyframes$1[0], keyframes$1[1]));
58
+ keyframes$1 = [0, 100];
59
+ }
60
+ const generator = generatorFactory({ ...this.options, keyframes: keyframes$1 });
61
+ if (repeatType === "mirror") {
62
+ mirroredGenerator = generatorFactory({
63
+ ...this.options,
64
+ keyframes: [...keyframes$1].reverse(),
65
+ velocity: -velocity
66
+ });
67
+ }
68
+ if (generator.calculatedDuration === null) {
69
+ generator.calculatedDuration = calcGeneratorDuration(generator);
70
+ }
71
+ const { calculatedDuration } = generator;
72
+ const resolvedDuration = calculatedDuration + repeatDelay;
73
+ const totalDuration = resolvedDuration * (repeat + 1) - repeatDelay;
74
+ return {
75
+ generator,
76
+ mirroredGenerator,
77
+ mapPercentToKeyframes,
78
+ calculatedDuration,
79
+ resolvedDuration,
80
+ totalDuration
81
+ };
82
+ }
83
+ onPostResolved() {
84
+ const { autoplay = true } = this.options;
85
+ this.play();
86
+ if (this.pendingPlayState === "paused" || !autoplay) {
87
+ this.pause();
88
+ } else {
89
+ this.state = this.pendingPlayState;
90
+ }
91
+ }
92
+ tick(timestamp, sample = false) {
93
+ const { resolved } = this;
94
+ if (!resolved) {
95
+ const { keyframes: keyframes3 } = this.options;
96
+ return { done: true, value: keyframes3[keyframes3.length - 1] };
97
+ }
98
+ const { finalKeyframe, generator, mirroredGenerator, mapPercentToKeyframes, keyframes: keyframes2, calculatedDuration, totalDuration, resolvedDuration } = resolved;
99
+ if (this.startTime === null)
100
+ return generator.next(0);
101
+ const { delay, repeat, repeatType, repeatDelay, onUpdate } = this.options;
102
+ if (this.speed > 0) {
103
+ this.startTime = Math.min(this.startTime, timestamp);
104
+ } else if (this.speed < 0) {
105
+ this.startTime = Math.min(timestamp - totalDuration / this.speed, this.startTime);
106
+ }
107
+ if (sample) {
108
+ this.currentTime = timestamp;
109
+ } else if (this.holdTime !== null) {
110
+ this.currentTime = this.holdTime;
111
+ } else {
112
+ this.currentTime = Math.round(timestamp - this.startTime) * this.speed;
113
+ }
114
+ const timeWithoutDelay = this.currentTime - delay * (this.speed >= 0 ? 1 : -1);
115
+ const isInDelayPhase = this.speed >= 0 ? timeWithoutDelay < 0 : timeWithoutDelay > totalDuration;
116
+ this.currentTime = Math.max(timeWithoutDelay, 0);
117
+ if (this.state === "finished" && this.holdTime === null) {
118
+ this.currentTime = totalDuration;
119
+ }
120
+ let elapsed = this.currentTime;
121
+ let frameGenerator = generator;
122
+ if (repeat) {
123
+ const progress = Math.min(this.currentTime, totalDuration) / resolvedDuration;
124
+ let currentIteration = Math.floor(progress);
125
+ let iterationProgress = progress % 1;
126
+ if (!iterationProgress && progress >= 1) {
127
+ iterationProgress = 1;
128
+ }
129
+ iterationProgress === 1 && currentIteration--;
130
+ currentIteration = Math.min(currentIteration, repeat + 1);
131
+ const isOddIteration = Boolean(currentIteration % 2);
132
+ if (isOddIteration) {
133
+ if (repeatType === "reverse") {
134
+ iterationProgress = 1 - iterationProgress;
135
+ if (repeatDelay) {
136
+ iterationProgress -= repeatDelay / resolvedDuration;
137
+ }
138
+ } else if (repeatType === "mirror") {
139
+ frameGenerator = mirroredGenerator;
140
+ }
141
+ }
142
+ elapsed = clamp(0, 1, iterationProgress) * resolvedDuration;
143
+ }
144
+ const state = isInDelayPhase ? { done: false, value: keyframes2[0] } : frameGenerator.next(elapsed);
145
+ if (mapPercentToKeyframes) {
146
+ state.value = mapPercentToKeyframes(state.value);
147
+ }
148
+ let { done } = state;
149
+ if (!isInDelayPhase && calculatedDuration !== null) {
150
+ done = this.speed >= 0 ? this.currentTime >= totalDuration : this.currentTime <= 0;
151
+ }
152
+ const isAnimationFinished = this.holdTime === null && (this.state === "finished" || this.state === "running" && done);
153
+ if (isAnimationFinished && finalKeyframe !== void 0) {
154
+ state.value = getFinalKeyframe(keyframes2, this.options, finalKeyframe);
155
+ }
156
+ if (onUpdate) {
157
+ onUpdate(state.value);
158
+ }
159
+ if (isAnimationFinished) {
160
+ this.finish();
161
+ }
162
+ return state;
163
+ }
164
+ get duration() {
165
+ const { resolved } = this;
166
+ return resolved ? millisecondsToSeconds(resolved.calculatedDuration) : 0;
167
+ }
168
+ get time() {
169
+ return millisecondsToSeconds(this.currentTime);
170
+ }
171
+ set time(newTime) {
172
+ newTime = secondsToMilliseconds(newTime);
173
+ this.currentTime = newTime;
174
+ if (this.holdTime !== null || this.speed === 0) {
175
+ this.holdTime = newTime;
176
+ } else if (this.driver) {
177
+ this.startTime = this.driver.now() - newTime / this.speed;
178
+ }
179
+ }
180
+ get speed() {
181
+ return this.playbackSpeed;
182
+ }
183
+ set speed(newSpeed) {
184
+ const hasChanged = this.playbackSpeed !== newSpeed;
185
+ this.playbackSpeed = newSpeed;
186
+ if (hasChanged) {
187
+ this.time = millisecondsToSeconds(this.currentTime);
188
+ }
189
+ }
190
+ play() {
191
+ if (!this.resolver.isScheduled) {
192
+ this.resolver.resume();
193
+ }
194
+ if (!this._resolved) {
195
+ this.pendingPlayState = "running";
196
+ return;
197
+ }
198
+ if (this.isStopped)
199
+ return;
200
+ const { driver = frameloopDriver, onPlay, startTime } = this.options;
201
+ if (!this.driver) {
202
+ this.driver = driver((timestamp) => this.tick(timestamp));
203
+ }
204
+ onPlay && onPlay();
205
+ const now = this.driver.now();
206
+ if (this.holdTime !== null) {
207
+ this.startTime = now - this.holdTime;
208
+ } else if (!this.startTime) {
209
+ this.startTime = startTime !== null && startTime !== void 0 ? startTime : this.calcStartTime();
210
+ } else if (this.state === "finished") {
211
+ this.startTime = now;
212
+ }
213
+ if (this.state === "finished") {
214
+ this.updateFinishedPromise();
215
+ }
216
+ this.cancelTime = this.startTime;
217
+ this.holdTime = null;
218
+ this.state = "running";
219
+ this.driver.start();
220
+ }
221
+ pause() {
222
+ var _a;
223
+ if (!this._resolved) {
224
+ this.pendingPlayState = "paused";
225
+ return;
226
+ }
227
+ this.state = "paused";
228
+ this.holdTime = (_a = this.currentTime) !== null && _a !== void 0 ? _a : 0;
229
+ }
230
+ complete() {
231
+ if (this.state !== "running") {
232
+ this.play();
233
+ }
234
+ this.pendingPlayState = this.state = "finished";
235
+ this.holdTime = null;
236
+ }
237
+ finish() {
238
+ this.teardown();
239
+ this.state = "finished";
240
+ const { onComplete } = this.options;
241
+ onComplete && onComplete();
242
+ }
243
+ cancel() {
244
+ if (this.cancelTime !== null) {
245
+ this.tick(this.cancelTime);
246
+ }
247
+ this.teardown();
248
+ this.updateFinishedPromise();
249
+ }
250
+ teardown() {
251
+ this.state = "idle";
252
+ this.stopDriver();
253
+ this.resolveFinishedPromise();
254
+ this.updateFinishedPromise();
255
+ this.startTime = this.cancelTime = null;
256
+ this.resolver.cancel();
257
+ }
258
+ stopDriver() {
259
+ if (!this.driver)
260
+ return;
261
+ this.driver.stop();
262
+ this.driver = void 0;
263
+ }
264
+ sample(time) {
265
+ this.startTime = 0;
266
+ return this.tick(time, true);
267
+ }
268
+ }
269
+ function animateValue(options) {
270
+ return new MainThreadAnimation(options);
271
+ }
272
+ export {
273
+ MainThreadAnimation,
274
+ animateValue
275
+ };
@@ -0,0 +1,17 @@
1
+ import { time } from "../../../frameloop/sync-time.mjs";
2
+ import { frame, cancelFrame, frameData } from "../../../frameloop/frame.mjs";
3
+ const frameloopDriver = (update) => {
4
+ const passTimestamp = ({ timestamp }) => update(timestamp);
5
+ return {
6
+ start: () => frame.update(passTimestamp, true),
7
+ stop: () => cancelFrame(passTimestamp),
8
+ /**
9
+ * If we're processing this frame we can use the
10
+ * framelocked timestamp to keep things in sync.
11
+ */
12
+ now: () => frameData.isProcessing ? frameData.timestamp : time.now()
13
+ };
14
+ };
15
+ export {
16
+ frameloopDriver
17
+ };
@@ -0,0 +1,12 @@
1
+ const acceleratedValues = /* @__PURE__ */ new Set([
2
+ "opacity",
3
+ "clipPath",
4
+ "filter",
5
+ "transform"
6
+ // TODO: Can be accelerated but currently disabled until https://issues.chromium.org/issues/41491098 is resolved
7
+ // or until we implement support for linear() easing.
8
+ // "background-color"
9
+ ]);
10
+ export {
11
+ acceleratedValues
12
+ };
@@ -0,0 +1,30 @@
1
+ import { warning } from "../../../utils/errors.mjs";
2
+ import { isGenerator } from "../../generators/utils/is-generator.mjs";
3
+ import { isAnimatable } from "../../utils/is-animatable.mjs";
4
+ function hasKeyframesChanged(keyframes) {
5
+ const current = keyframes[0];
6
+ if (keyframes.length === 1)
7
+ return true;
8
+ for (let i = 0; i < keyframes.length; i++) {
9
+ if (keyframes[i] !== current)
10
+ return true;
11
+ }
12
+ }
13
+ function canAnimate(keyframes, name, type, velocity) {
14
+ const originKeyframe = keyframes[0];
15
+ if (originKeyframe === null)
16
+ return false;
17
+ if (name === "display" || name === "visibility")
18
+ return true;
19
+ const targetKeyframe = keyframes[keyframes.length - 1];
20
+ const isOriginAnimatable = isAnimatable(originKeyframe, name);
21
+ const isTargetAnimatable = isAnimatable(targetKeyframe, name);
22
+ warning(isOriginAnimatable === isTargetAnimatable, `You are trying to animate ${name} from "${originKeyframe}" to "${targetKeyframe}". ${originKeyframe} is not an animatable value - to enable this animation set ${originKeyframe} to a value animatable to ${targetKeyframe} via the \`style\` property.`);
23
+ if (!isOriginAnimatable || !isTargetAnimatable) {
24
+ return false;
25
+ }
26
+ return hasKeyframesChanged(keyframes) || (type === "spring" || isGenerator(type)) && velocity;
27
+ }
28
+ export {
29
+ canAnimate
30
+ };