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,25 +1,25 @@
1
- import { initPrefersReducedMotion as g } from "../utils/reduced-motion/index.mjs";
2
- import { hasReducedMotionListener as M, prefersReducedMotion as S } from "../utils/reduced-motion/state.mjs";
3
- import { SubscriptionManager as C } from "../utils/subscription-manager.mjs";
4
- import { motionValue as b } from "../value/index.mjs";
5
- import { isMotionValue as h } from "../value/utils/is-motion-value.mjs";
6
- import { transformProps as P } from "./html/utils/transform.mjs";
7
- import { isControllingVariants as T, isVariantNode as w } from "./utils/is-controlling-variants.mjs";
8
- import { updateMotionValuesFromProps as F } from "./utils/motion-values.mjs";
9
- import { resolveVariantFromProps as R } from "./utils/resolve-variants.mjs";
10
- import { warnOnce as N } from "../utils/warn-once.mjs";
11
- import { featureDefinitions as d } from "../motion/features/definitions.mjs";
12
- import { visualElementStore as c } from "./store.mjs";
13
- import { KeyframeResolver as E } from "./utils/KeyframesResolver.mjs";
14
- import { isNumericalString as x } from "../utils/is-numerical-string.mjs";
15
- import { isZeroValueString as A } from "../utils/is-zero-value-string.mjs";
16
- import { findValueType as B } from "./dom/value-types/find.mjs";
17
- import { complex as j } from "../value/types/complex/index.mjs";
18
- import { getAnimatableNone as y } from "./dom/value-types/animatable-none.mjs";
19
- import { createBox as I } from "../projection/geometry/models.mjs";
20
- import { time as U } from "../frameloop/sync-time.mjs";
21
- import { frame as f, cancelFrame as m } from "../frameloop/frame.mjs";
22
- const V = [
1
+ import { initPrefersReducedMotion } from "../utils/reduced-motion/index.mjs";
2
+ import { hasReducedMotionListener, prefersReducedMotion } from "../utils/reduced-motion/state.mjs";
3
+ import { SubscriptionManager } from "../utils/subscription-manager.mjs";
4
+ import { motionValue } from "../value/index.mjs";
5
+ import { isMotionValue } from "../value/utils/is-motion-value.mjs";
6
+ import { transformProps } from "./html/utils/transform.mjs";
7
+ import { isControllingVariants, isVariantNode } from "./utils/is-controlling-variants.mjs";
8
+ import { updateMotionValuesFromProps } from "./utils/motion-values.mjs";
9
+ import { resolveVariantFromProps } from "./utils/resolve-variants.mjs";
10
+ import { warnOnce } from "../utils/warn-once.mjs";
11
+ import { featureDefinitions } from "../motion/features/definitions.mjs";
12
+ import { visualElementStore } from "./store.mjs";
13
+ import { KeyframeResolver } from "./utils/KeyframesResolver.mjs";
14
+ import { isNumericalString } from "../utils/is-numerical-string.mjs";
15
+ import { isZeroValueString } from "../utils/is-zero-value-string.mjs";
16
+ import { findValueType } from "./dom/value-types/find.mjs";
17
+ import { complex } from "../value/types/complex/index.mjs";
18
+ import { getAnimatableNone } from "./dom/value-types/animatable-none.mjs";
19
+ import { createBox } from "../projection/geometry/models.mjs";
20
+ import { time } from "../frameloop/sync-time.mjs";
21
+ import { frame, cancelFrame } from "../frameloop/frame.mjs";
22
+ const propEventHandlers = [
23
23
  "AnimationStart",
24
24
  "AnimationComplete",
25
25
  "Update",
@@ -28,7 +28,7 @@ const V = [
28
28
  "LayoutAnimationStart",
29
29
  "LayoutAnimationComplete"
30
30
  ];
31
- class ot {
31
+ class VisualElement {
32
32
  /**
33
33
  * This method takes React props and returns found MotionValues. For example, HTML
34
34
  * MotionValues will be found within the style prop, whereas for Three.js within attribute arrays.
@@ -36,60 +36,155 @@ class ot {
36
36
  * This isn't an abstract method as it needs calling in the constructor, but it is
37
37
  * intended to be one.
38
38
  */
39
- scrapeMotionValuesFromProps(t, e, s) {
39
+ scrapeMotionValuesFromProps(_props, _prevProps, _visualElement) {
40
40
  return {};
41
41
  }
42
- constructor({ parent: t, props: e, presenceContext: s, reducedMotionConfig: i, blockInitialAnimation: r, visualState: n }, u = {}) {
43
- this.current = null, this.children = /* @__PURE__ */ new Set(), this.isVariantNode = !1, this.isControllingVariants = !1, this.shouldReduceMotion = null, this.values = /* @__PURE__ */ new Map(), this.KeyframeResolver = E, this.features = {}, this.valueSubscriptions = /* @__PURE__ */ new Map(), this.prevMotionValues = {}, this.events = {}, this.propEventSubscriptions = {}, this.notifyUpdate = () => this.notify("Update", this.latestValues), this.render = () => {
44
- this.current && (this.triggerBuild(), this.renderInstance(this.current, this.renderState, this.props.style, this.projection));
45
- }, this.renderScheduledAt = 0, this.scheduleRender = () => {
46
- const o = U.now();
47
- this.renderScheduledAt < o && (this.renderScheduledAt = o, f.render(this.render, !1, !0));
42
+ constructor({ parent, props, presenceContext, reducedMotionConfig, blockInitialAnimation, visualState }, options = {}) {
43
+ this.current = null;
44
+ this.children = /* @__PURE__ */ new Set();
45
+ this.isVariantNode = false;
46
+ this.isControllingVariants = false;
47
+ this.shouldReduceMotion = null;
48
+ this.values = /* @__PURE__ */ new Map();
49
+ this.KeyframeResolver = KeyframeResolver;
50
+ this.features = {};
51
+ this.valueSubscriptions = /* @__PURE__ */ new Map();
52
+ this.prevMotionValues = {};
53
+ this.events = {};
54
+ this.propEventSubscriptions = {};
55
+ this.notifyUpdate = () => this.notify("Update", this.latestValues);
56
+ this.render = () => {
57
+ if (!this.current)
58
+ return;
59
+ this.triggerBuild();
60
+ this.renderInstance(this.current, this.renderState, this.props.style, this.projection);
61
+ };
62
+ this.renderScheduledAt = 0;
63
+ this.scheduleRender = () => {
64
+ const now = time.now();
65
+ if (this.renderScheduledAt < now) {
66
+ this.renderScheduledAt = now;
67
+ frame.render(this.render, false, true);
68
+ }
48
69
  };
49
- const { latestValues: a, renderState: v } = n;
50
- this.latestValues = a, this.baseTarget = { ...a }, this.initialValues = e.initial ? { ...a } : {}, this.renderState = v, this.parent = t, this.props = e, this.presenceContext = s, this.depth = t ? t.depth + 1 : 0, this.reducedMotionConfig = i, this.options = u, this.blockInitialAnimation = !!r, this.isControllingVariants = T(e), this.isVariantNode = w(e), this.isVariantNode && (this.variantChildren = /* @__PURE__ */ new Set()), this.manuallyAnimateOnMount = !!(t && t.current);
51
- const { willChange: D, ...l } = this.scrapeMotionValuesFromProps(e, {}, this);
52
- for (const o in l) {
53
- const p = l[o];
54
- a[o] !== void 0 && h(p) && p.set(a[o], !1);
70
+ const { latestValues, renderState } = visualState;
71
+ this.latestValues = latestValues;
72
+ this.baseTarget = { ...latestValues };
73
+ this.initialValues = props.initial ? { ...latestValues } : {};
74
+ this.renderState = renderState;
75
+ this.parent = parent;
76
+ this.props = props;
77
+ this.presenceContext = presenceContext;
78
+ this.depth = parent ? parent.depth + 1 : 0;
79
+ this.reducedMotionConfig = reducedMotionConfig;
80
+ this.options = options;
81
+ this.blockInitialAnimation = Boolean(blockInitialAnimation);
82
+ this.isControllingVariants = isControllingVariants(props);
83
+ this.isVariantNode = isVariantNode(props);
84
+ if (this.isVariantNode) {
85
+ this.variantChildren = /* @__PURE__ */ new Set();
86
+ }
87
+ this.manuallyAnimateOnMount = Boolean(parent && parent.current);
88
+ const { willChange, ...initialMotionValues } = this.scrapeMotionValuesFromProps(props, {}, this);
89
+ for (const key in initialMotionValues) {
90
+ const value = initialMotionValues[key];
91
+ if (latestValues[key] !== void 0 && isMotionValue(value)) {
92
+ value.set(latestValues[key], false);
93
+ }
55
94
  }
56
95
  }
57
- mount(t) {
58
- this.current = t, c.set(t, this), this.projection && !this.projection.instance && this.projection.mount(t), this.parent && this.isVariantNode && !this.isControllingVariants && (this.removeFromVariantTree = this.parent.addVariantChild(this)), this.values.forEach((e, s) => this.bindToMotionValue(s, e)), M.current || g(), this.shouldReduceMotion = this.reducedMotionConfig === "never" ? !1 : this.reducedMotionConfig === "always" ? !0 : S.current, process.env.NODE_ENV !== "production" && N(this.shouldReduceMotion !== !0, "You have Reduced Motion enabled on your device. Animations may not appear as expected."), this.parent && this.parent.children.add(this), this.update(this.props, this.presenceContext);
96
+ mount(instance) {
97
+ this.current = instance;
98
+ visualElementStore.set(instance, this);
99
+ if (this.projection && !this.projection.instance) {
100
+ this.projection.mount(instance);
101
+ }
102
+ if (this.parent && this.isVariantNode && !this.isControllingVariants) {
103
+ this.removeFromVariantTree = this.parent.addVariantChild(this);
104
+ }
105
+ this.values.forEach((value, key) => this.bindToMotionValue(key, value));
106
+ if (!hasReducedMotionListener.current) {
107
+ initPrefersReducedMotion();
108
+ }
109
+ this.shouldReduceMotion = this.reducedMotionConfig === "never" ? false : this.reducedMotionConfig === "always" ? true : prefersReducedMotion.current;
110
+ if (process.env.NODE_ENV !== "production") {
111
+ warnOnce(this.shouldReduceMotion !== true, "You have Reduced Motion enabled on your device. Animations may not appear as expected.");
112
+ }
113
+ if (this.parent)
114
+ this.parent.children.add(this);
115
+ this.update(this.props, this.presenceContext);
59
116
  }
60
117
  unmount() {
61
- c.delete(this.current), this.projection && this.projection.unmount(), m(this.notifyUpdate), m(this.render), this.valueSubscriptions.forEach((t) => t()), this.valueSubscriptions.clear(), this.removeFromVariantTree && this.removeFromVariantTree(), this.parent && this.parent.children.delete(this);
62
- for (const t in this.events)
63
- this.events[t].clear();
64
- for (const t in this.features) {
65
- const e = this.features[t];
66
- e && (e.unmount(), e.isMounted = !1);
118
+ visualElementStore.delete(this.current);
119
+ this.projection && this.projection.unmount();
120
+ cancelFrame(this.notifyUpdate);
121
+ cancelFrame(this.render);
122
+ this.valueSubscriptions.forEach((remove) => remove());
123
+ this.valueSubscriptions.clear();
124
+ this.removeFromVariantTree && this.removeFromVariantTree();
125
+ this.parent && this.parent.children.delete(this);
126
+ for (const key in this.events) {
127
+ this.events[key].clear();
128
+ }
129
+ for (const key in this.features) {
130
+ const feature = this.features[key];
131
+ if (feature) {
132
+ feature.unmount();
133
+ feature.isMounted = false;
134
+ }
67
135
  }
68
136
  this.current = null;
69
137
  }
70
- bindToMotionValue(t, e) {
71
- this.valueSubscriptions.has(t) && this.valueSubscriptions.get(t)();
72
- const s = P.has(t), i = e.on("change", (u) => {
73
- this.latestValues[t] = u, this.props.onUpdate && f.preRender(this.notifyUpdate), s && this.projection && (this.projection.isTransformDirty = !0);
74
- }), r = e.on("renderRequest", this.scheduleRender);
75
- let n;
76
- window.MotionCheckAppearSync && (n = window.MotionCheckAppearSync(this, t, e)), this.valueSubscriptions.set(t, () => {
77
- i(), r(), n && n(), e.owner && e.stop();
138
+ bindToMotionValue(key, value) {
139
+ if (this.valueSubscriptions.has(key)) {
140
+ this.valueSubscriptions.get(key)();
141
+ }
142
+ const valueIsTransform = transformProps.has(key);
143
+ const removeOnChange = value.on("change", (latestValue) => {
144
+ this.latestValues[key] = latestValue;
145
+ this.props.onUpdate && frame.preRender(this.notifyUpdate);
146
+ if (valueIsTransform && this.projection) {
147
+ this.projection.isTransformDirty = true;
148
+ }
149
+ });
150
+ const removeOnRenderRequest = value.on("renderRequest", this.scheduleRender);
151
+ let removeSyncCheck;
152
+ if (window.MotionCheckAppearSync) {
153
+ removeSyncCheck = window.MotionCheckAppearSync(this, key, value);
154
+ }
155
+ this.valueSubscriptions.set(key, () => {
156
+ removeOnChange();
157
+ removeOnRenderRequest();
158
+ if (removeSyncCheck)
159
+ removeSyncCheck();
160
+ if (value.owner)
161
+ value.stop();
78
162
  });
79
163
  }
80
- sortNodePosition(t) {
81
- return !this.current || !this.sortInstanceNodePosition || this.type !== t.type ? 0 : this.sortInstanceNodePosition(this.current, t.current);
164
+ sortNodePosition(other) {
165
+ if (!this.current || !this.sortInstanceNodePosition || this.type !== other.type) {
166
+ return 0;
167
+ }
168
+ return this.sortInstanceNodePosition(this.current, other.current);
82
169
  }
83
170
  updateFeatures() {
84
- let t = "animation";
85
- for (t in d) {
86
- const e = d[t];
87
- if (!e)
171
+ let key = "animation";
172
+ for (key in featureDefinitions) {
173
+ const featureDefinition = featureDefinitions[key];
174
+ if (!featureDefinition)
88
175
  continue;
89
- const { isEnabled: s, Feature: i } = e;
90
- if (!this.features[t] && i && s(this.props) && (this.features[t] = new i(this)), this.features[t]) {
91
- const r = this.features[t];
92
- r.isMounted ? r.update() : (r.mount(), r.isMounted = !0);
176
+ const { isEnabled, Feature: FeatureConstructor } = featureDefinition;
177
+ if (!this.features[key] && FeatureConstructor && isEnabled(this.props)) {
178
+ this.features[key] = new FeatureConstructor(this);
179
+ }
180
+ if (this.features[key]) {
181
+ const feature = this.features[key];
182
+ if (feature.isMounted) {
183
+ feature.update();
184
+ } else {
185
+ feature.mount();
186
+ feature.isMounted = true;
187
+ }
93
188
  }
94
189
  }
95
190
  }
@@ -102,27 +197,42 @@ class ot {
102
197
  * removed with a re-render to work.
103
198
  */
104
199
  measureViewportBox() {
105
- return this.current ? this.measureInstanceViewportBox(this.current, this.props) : I();
200
+ return this.current ? this.measureInstanceViewportBox(this.current, this.props) : createBox();
106
201
  }
107
- getStaticValue(t) {
108
- return this.latestValues[t];
202
+ getStaticValue(key) {
203
+ return this.latestValues[key];
109
204
  }
110
- setStaticValue(t, e) {
111
- this.latestValues[t] = e;
205
+ setStaticValue(key, value) {
206
+ this.latestValues[key] = value;
112
207
  }
113
208
  /**
114
209
  * Update the provided props. Ensure any newly-added motion values are
115
210
  * added to our map, old ones removed, and listeners updated.
116
211
  */
117
- update(t, e) {
118
- (t.transformTemplate || this.props.transformTemplate) && this.scheduleRender(), this.prevProps = this.props, this.props = t, this.prevPresenceContext = this.presenceContext, this.presenceContext = e;
119
- for (let s = 0; s < V.length; s++) {
120
- const i = V[s];
121
- this.propEventSubscriptions[i] && (this.propEventSubscriptions[i](), delete this.propEventSubscriptions[i]);
122
- const r = "on" + i, n = t[r];
123
- n && (this.propEventSubscriptions[i] = this.on(i, n));
212
+ update(props, presenceContext) {
213
+ if (props.transformTemplate || this.props.transformTemplate) {
214
+ this.scheduleRender();
215
+ }
216
+ this.prevProps = this.props;
217
+ this.props = props;
218
+ this.prevPresenceContext = this.presenceContext;
219
+ this.presenceContext = presenceContext;
220
+ for (let i = 0; i < propEventHandlers.length; i++) {
221
+ const key = propEventHandlers[i];
222
+ if (this.propEventSubscriptions[key]) {
223
+ this.propEventSubscriptions[key]();
224
+ delete this.propEventSubscriptions[key];
225
+ }
226
+ const listenerName = "on" + key;
227
+ const listener = props[listenerName];
228
+ if (listener) {
229
+ this.propEventSubscriptions[key] = this.on(key, listener);
230
+ }
231
+ }
232
+ this.prevMotionValues = updateMotionValuesFromProps(this, this.scrapeMotionValuesFromProps(props, this.prevProps, this), this.prevMotionValues);
233
+ if (this.handleChildMotionValue) {
234
+ this.handleChildMotionValue();
124
235
  }
125
- this.prevMotionValues = F(this, this.scrapeMotionValuesFromProps(t, this.prevProps, this), this.prevMotionValues), this.handleChildMotionValue && this.handleChildMotionValue();
126
236
  }
127
237
  getProps() {
128
238
  return this.props;
@@ -130,8 +240,8 @@ class ot {
130
240
  /**
131
241
  * Returns the variant definition with a given name.
132
242
  */
133
- getVariant(t) {
134
- return this.props.variants ? this.props.variants[t] : void 0;
243
+ getVariant(name) {
244
+ return this.props.variants ? this.props.variants[name] : void 0;
135
245
  }
136
246
  /**
137
247
  * Returns the defined default transition on this component.
@@ -148,79 +258,115 @@ class ot {
148
258
  /**
149
259
  * Add a child visual element to our set of children.
150
260
  */
151
- addVariantChild(t) {
152
- const e = this.getClosestVariantNode();
153
- if (e)
154
- return e.variantChildren && e.variantChildren.add(t), () => e.variantChildren.delete(t);
261
+ addVariantChild(child) {
262
+ const closestVariantNode = this.getClosestVariantNode();
263
+ if (closestVariantNode) {
264
+ closestVariantNode.variantChildren && closestVariantNode.variantChildren.add(child);
265
+ return () => closestVariantNode.variantChildren.delete(child);
266
+ }
155
267
  }
156
268
  /**
157
269
  * Add a motion value and bind it to this visual element.
158
270
  */
159
- addValue(t, e) {
160
- const s = this.values.get(t);
161
- e !== s && (s && this.removeValue(t), this.bindToMotionValue(t, e), this.values.set(t, e), this.latestValues[t] = e.get());
271
+ addValue(key, value) {
272
+ const existingValue = this.values.get(key);
273
+ if (value !== existingValue) {
274
+ if (existingValue)
275
+ this.removeValue(key);
276
+ this.bindToMotionValue(key, value);
277
+ this.values.set(key, value);
278
+ this.latestValues[key] = value.get();
279
+ }
162
280
  }
163
281
  /**
164
282
  * Remove a motion value and unbind any active subscriptions.
165
283
  */
166
- removeValue(t) {
167
- this.values.delete(t);
168
- const e = this.valueSubscriptions.get(t);
169
- e && (e(), this.valueSubscriptions.delete(t)), delete this.latestValues[t], this.removeValueFromRenderState(t, this.renderState);
284
+ removeValue(key) {
285
+ this.values.delete(key);
286
+ const unsubscribe = this.valueSubscriptions.get(key);
287
+ if (unsubscribe) {
288
+ unsubscribe();
289
+ this.valueSubscriptions.delete(key);
290
+ }
291
+ delete this.latestValues[key];
292
+ this.removeValueFromRenderState(key, this.renderState);
170
293
  }
171
294
  /**
172
295
  * Check whether we have a motion value for this key
173
296
  */
174
- hasValue(t) {
175
- return this.values.has(t);
297
+ hasValue(key) {
298
+ return this.values.has(key);
176
299
  }
177
- getValue(t, e) {
178
- if (this.props.values && this.props.values[t])
179
- return this.props.values[t];
180
- let s = this.values.get(t);
181
- return s === void 0 && e !== void 0 && (s = b(e === null ? void 0 : e, { owner: this }), this.addValue(t, s)), s;
300
+ getValue(key, defaultValue) {
301
+ if (this.props.values && this.props.values[key]) {
302
+ return this.props.values[key];
303
+ }
304
+ let value = this.values.get(key);
305
+ if (value === void 0 && defaultValue !== void 0) {
306
+ value = motionValue(defaultValue === null ? void 0 : defaultValue, { owner: this });
307
+ this.addValue(key, value);
308
+ }
309
+ return value;
182
310
  }
183
311
  /**
184
312
  * If we're trying to animate to a previously unencountered value,
185
313
  * we need to check for it in our state and as a last resort read it
186
314
  * directly from the instance (which might have performance implications).
187
315
  */
188
- readValue(t, e) {
189
- var s;
190
- let i = this.latestValues[t] !== void 0 || !this.current ? this.latestValues[t] : (s = this.getBaseTargetFromProps(this.props, t)) !== null && s !== void 0 ? s : this.readValueFromInstance(this.current, t, this.options);
191
- return i != null && (typeof i == "string" && (x(i) || A(i)) ? i = parseFloat(i) : !B(i) && j.test(e) && (i = y(t, e)), this.setBaseTarget(t, h(i) ? i.get() : i)), h(i) ? i.get() : i;
316
+ readValue(key, target) {
317
+ var _a;
318
+ let value = this.latestValues[key] !== void 0 || !this.current ? this.latestValues[key] : (_a = this.getBaseTargetFromProps(this.props, key)) !== null && _a !== void 0 ? _a : this.readValueFromInstance(this.current, key, this.options);
319
+ if (value !== void 0 && value !== null) {
320
+ if (typeof value === "string" && (isNumericalString(value) || isZeroValueString(value))) {
321
+ value = parseFloat(value);
322
+ } else if (!findValueType(value) && complex.test(target)) {
323
+ value = getAnimatableNone(key, target);
324
+ }
325
+ this.setBaseTarget(key, isMotionValue(value) ? value.get() : value);
326
+ }
327
+ return isMotionValue(value) ? value.get() : value;
192
328
  }
193
329
  /**
194
330
  * Set the base target to later animate back to. This is currently
195
331
  * only hydrated on creation and when we first read a value.
196
332
  */
197
- setBaseTarget(t, e) {
198
- this.baseTarget[t] = e;
333
+ setBaseTarget(key, value) {
334
+ this.baseTarget[key] = value;
199
335
  }
200
336
  /**
201
337
  * Find the base target for a value thats been removed from all animation
202
338
  * props.
203
339
  */
204
- getBaseTarget(t) {
205
- var e;
206
- const { initial: s } = this.props;
207
- let i;
208
- if (typeof s == "string" || typeof s == "object") {
209
- const n = R(this.props, s, (e = this.presenceContext) === null || e === void 0 ? void 0 : e.custom);
210
- n && (i = n[t]);
340
+ getBaseTarget(key) {
341
+ var _a;
342
+ const { initial } = this.props;
343
+ let valueFromInitial;
344
+ if (typeof initial === "string" || typeof initial === "object") {
345
+ const variant = resolveVariantFromProps(this.props, initial, (_a = this.presenceContext) === null || _a === void 0 ? void 0 : _a.custom);
346
+ if (variant) {
347
+ valueFromInitial = variant[key];
348
+ }
349
+ }
350
+ if (initial && valueFromInitial !== void 0) {
351
+ return valueFromInitial;
211
352
  }
212
- if (s && i !== void 0)
213
- return i;
214
- const r = this.getBaseTargetFromProps(this.props, t);
215
- return r !== void 0 && !h(r) ? r : this.initialValues[t] !== void 0 && i === void 0 ? void 0 : this.baseTarget[t];
353
+ const target = this.getBaseTargetFromProps(this.props, key);
354
+ if (target !== void 0 && !isMotionValue(target))
355
+ return target;
356
+ return this.initialValues[key] !== void 0 && valueFromInitial === void 0 ? void 0 : this.baseTarget[key];
216
357
  }
217
- on(t, e) {
218
- return this.events[t] || (this.events[t] = new C()), this.events[t].add(e);
358
+ on(eventName, callback) {
359
+ if (!this.events[eventName]) {
360
+ this.events[eventName] = new SubscriptionManager();
361
+ }
362
+ return this.events[eventName].add(callback);
219
363
  }
220
- notify(t, ...e) {
221
- this.events[t] && this.events[t].notify(...e);
364
+ notify(eventName, ...args) {
365
+ if (this.events[eventName]) {
366
+ this.events[eventName].notify(...args);
367
+ }
222
368
  }
223
369
  }
224
370
  export {
225
- ot as VisualElement
371
+ VisualElement
226
372
  };
@@ -1,65 +1,101 @@
1
- import { isNone as h } from "../../animation/utils/is-none.mjs";
2
- import { getVariableValue as y } from "./utils/css-variables-conversion.mjs";
3
- import { isCSSVariableToken as p } from "./utils/is-css-variable.mjs";
4
- import { positionalKeys as g, isNumOrPxType as l, positionalValues as u } from "./utils/unit-conversion.mjs";
5
- import { findDimensionValueType as d } from "./value-types/dimensions.mjs";
6
- import { KeyframeResolver as c } from "../utils/KeyframesResolver.mjs";
7
- import { makeNoneKeyframesAnimatable as K } from "../html/utils/make-none-animatable.mjs";
8
- class b extends c {
9
- constructor(e, r, n, t, o) {
10
- super(e, r, n, t, o, !0);
1
+ import { isNone } from "../../animation/utils/is-none.mjs";
2
+ import { getVariableValue } from "./utils/css-variables-conversion.mjs";
3
+ import { isCSSVariableToken } from "./utils/is-css-variable.mjs";
4
+ import { positionalKeys, isNumOrPxType, positionalValues } from "./utils/unit-conversion.mjs";
5
+ import { findDimensionValueType } from "./value-types/dimensions.mjs";
6
+ import { KeyframeResolver } from "../utils/KeyframesResolver.mjs";
7
+ import { makeNoneKeyframesAnimatable } from "../html/utils/make-none-animatable.mjs";
8
+ class DOMKeyframesResolver extends KeyframeResolver {
9
+ constructor(unresolvedKeyframes, onComplete, name, motionValue, element) {
10
+ super(unresolvedKeyframes, onComplete, name, motionValue, element, true);
11
11
  }
12
12
  readKeyframes() {
13
- const { unresolvedKeyframes: e, element: r, name: n } = this;
14
- if (!r || !r.current)
13
+ const { unresolvedKeyframes, element, name } = this;
14
+ if (!element || !element.current)
15
15
  return;
16
16
  super.readKeyframes();
17
- for (let s = 0; s < e.length; s++) {
18
- let i = e[s];
19
- if (typeof i == "string" && (i = i.trim(), p(i))) {
20
- const m = y(i, r.current);
21
- m !== void 0 && (e[s] = m), s === e.length - 1 && (this.finalKeyframe = i);
17
+ for (let i = 0; i < unresolvedKeyframes.length; i++) {
18
+ let keyframe = unresolvedKeyframes[i];
19
+ if (typeof keyframe === "string") {
20
+ keyframe = keyframe.trim();
21
+ if (isCSSVariableToken(keyframe)) {
22
+ const resolved = getVariableValue(keyframe, element.current);
23
+ if (resolved !== void 0) {
24
+ unresolvedKeyframes[i] = resolved;
25
+ }
26
+ if (i === unresolvedKeyframes.length - 1) {
27
+ this.finalKeyframe = keyframe;
28
+ }
29
+ }
22
30
  }
23
31
  }
24
- if (this.resolveNoneKeyframes(), !g.has(n) || e.length !== 2)
32
+ this.resolveNoneKeyframes();
33
+ if (!positionalKeys.has(name) || unresolvedKeyframes.length !== 2) {
34
+ return;
35
+ }
36
+ const [origin, target] = unresolvedKeyframes;
37
+ const originType = findDimensionValueType(origin);
38
+ const targetType = findDimensionValueType(target);
39
+ if (originType === targetType)
25
40
  return;
26
- const [t, o] = e, a = d(t), f = d(o);
27
- if (a !== f)
28
- if (l(a) && l(f))
29
- for (let s = 0; s < e.length; s++) {
30
- const i = e[s];
31
- typeof i == "string" && (e[s] = parseFloat(i));
41
+ if (isNumOrPxType(originType) && isNumOrPxType(targetType)) {
42
+ for (let i = 0; i < unresolvedKeyframes.length; i++) {
43
+ const value = unresolvedKeyframes[i];
44
+ if (typeof value === "string") {
45
+ unresolvedKeyframes[i] = parseFloat(value);
32
46
  }
33
- else
34
- this.needsMeasurement = !0;
47
+ }
48
+ } else {
49
+ this.needsMeasurement = true;
50
+ }
35
51
  }
36
52
  resolveNoneKeyframes() {
37
- const { unresolvedKeyframes: e, name: r } = this, n = [];
38
- for (let t = 0; t < e.length; t++)
39
- h(e[t]) && n.push(t);
40
- n.length && K(e, n, r);
53
+ const { unresolvedKeyframes, name } = this;
54
+ const noneKeyframeIndexes = [];
55
+ for (let i = 0; i < unresolvedKeyframes.length; i++) {
56
+ if (isNone(unresolvedKeyframes[i])) {
57
+ noneKeyframeIndexes.push(i);
58
+ }
59
+ }
60
+ if (noneKeyframeIndexes.length) {
61
+ makeNoneKeyframesAnimatable(unresolvedKeyframes, noneKeyframeIndexes, name);
62
+ }
41
63
  }
42
64
  measureInitialState() {
43
- const { element: e, unresolvedKeyframes: r, name: n } = this;
44
- if (!e || !e.current)
65
+ const { element, unresolvedKeyframes, name } = this;
66
+ if (!element || !element.current)
45
67
  return;
46
- n === "height" && (this.suspendedScrollY = window.pageYOffset), this.measuredOrigin = u[n](e.measureViewportBox(), window.getComputedStyle(e.current)), r[0] = this.measuredOrigin;
47
- const t = r[r.length - 1];
48
- t !== void 0 && e.getValue(n, t).jump(t, !1);
68
+ if (name === "height") {
69
+ this.suspendedScrollY = window.pageYOffset;
70
+ }
71
+ this.measuredOrigin = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
72
+ unresolvedKeyframes[0] = this.measuredOrigin;
73
+ const measureKeyframe = unresolvedKeyframes[unresolvedKeyframes.length - 1];
74
+ if (measureKeyframe !== void 0) {
75
+ element.getValue(name, measureKeyframe).jump(measureKeyframe, false);
76
+ }
49
77
  }
50
78
  measureEndState() {
51
- var e;
52
- const { element: r, name: n, unresolvedKeyframes: t } = this;
53
- if (!r || !r.current)
79
+ var _a;
80
+ const { element, name, unresolvedKeyframes } = this;
81
+ if (!element || !element.current)
54
82
  return;
55
- const o = r.getValue(n);
56
- o && o.jump(this.measuredOrigin, !1);
57
- const a = t.length - 1, f = t[a];
58
- t[a] = u[n](r.measureViewportBox(), window.getComputedStyle(r.current)), f !== null && this.finalKeyframe === void 0 && (this.finalKeyframe = f), !((e = this.removedTransforms) === null || e === void 0) && e.length && this.removedTransforms.forEach(([s, i]) => {
59
- r.getValue(s).set(i);
60
- }), this.resolveNoneKeyframes();
83
+ const value = element.getValue(name);
84
+ value && value.jump(this.measuredOrigin, false);
85
+ const finalKeyframeIndex = unresolvedKeyframes.length - 1;
86
+ const finalKeyframe = unresolvedKeyframes[finalKeyframeIndex];
87
+ unresolvedKeyframes[finalKeyframeIndex] = positionalValues[name](element.measureViewportBox(), window.getComputedStyle(element.current));
88
+ if (finalKeyframe !== null && this.finalKeyframe === void 0) {
89
+ this.finalKeyframe = finalKeyframe;
90
+ }
91
+ if ((_a = this.removedTransforms) === null || _a === void 0 ? void 0 : _a.length) {
92
+ this.removedTransforms.forEach(([unsetTransformName, unsetTransformValue]) => {
93
+ element.getValue(unsetTransformName).set(unsetTransformValue);
94
+ });
95
+ }
96
+ this.resolveNoneKeyframes();
61
97
  }
62
98
  }
63
99
  export {
64
- b as DOMKeyframesResolver
100
+ DOMKeyframesResolver
65
101
  };