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,19 +1,21 @@
1
- import { VisualElement as o } from "../VisualElement.mjs";
2
- import { DOMKeyframesResolver as s } from "./DOMKeyframesResolver.mjs";
3
- class l extends o {
1
+ import { VisualElement } from "../VisualElement.mjs";
2
+ import { DOMKeyframesResolver } from "./DOMKeyframesResolver.mjs";
3
+ class DOMVisualElement extends VisualElement {
4
4
  constructor() {
5
- super(...arguments), this.KeyframeResolver = s;
5
+ super(...arguments);
6
+ this.KeyframeResolver = DOMKeyframesResolver;
6
7
  }
7
- sortInstanceNodePosition(e, t) {
8
- return e.compareDocumentPosition(t) & 2 ? 1 : -1;
8
+ sortInstanceNodePosition(a, b) {
9
+ return a.compareDocumentPosition(b) & 2 ? 1 : -1;
9
10
  }
10
- getBaseTargetFromProps(e, t) {
11
- return e.style ? e.style[t] : void 0;
11
+ getBaseTargetFromProps(props, key) {
12
+ return props.style ? props.style[key] : void 0;
12
13
  }
13
- removeValueFromRenderState(e, { vars: t, style: r }) {
14
- delete t[e], delete r[e];
14
+ removeValueFromRenderState(key, { vars, style }) {
15
+ delete vars[key];
16
+ delete style[key];
15
17
  }
16
18
  }
17
19
  export {
18
- l as DOMVisualElement
20
+ DOMVisualElement
19
21
  };
@@ -1,46 +1,62 @@
1
- import { resolveElements as l } from "../utils/resolve-element.mjs";
2
- const s = /* @__PURE__ */ new WeakMap();
3
- let o;
4
- function f(e, t) {
5
- if (t) {
6
- const { inlineSize: r, blockSize: i } = t[0];
7
- return { width: r, height: i };
8
- } else return e instanceof SVGElement && "getBBox" in e ? e.getBBox() : {
9
- width: e.offsetWidth,
10
- height: e.offsetHeight
11
- };
1
+ import { resolveElements } from "../utils/resolve-element.mjs";
2
+ const resizeHandlers = /* @__PURE__ */ new WeakMap();
3
+ let observer;
4
+ function getElementSize(target, borderBoxSize) {
5
+ if (borderBoxSize) {
6
+ const { inlineSize, blockSize } = borderBoxSize[0];
7
+ return { width: inlineSize, height: blockSize };
8
+ } else if (target instanceof SVGElement && "getBBox" in target) {
9
+ return target.getBBox();
10
+ } else {
11
+ return {
12
+ width: target.offsetWidth,
13
+ height: target.offsetHeight
14
+ };
15
+ }
12
16
  }
13
- function d({ target: e, contentRect: t, borderBoxSize: r }) {
14
- var i;
15
- (i = s.get(e)) === null || i === void 0 || i.forEach((n) => {
16
- n({
17
- target: e,
18
- contentSize: t,
17
+ function notifyTarget({ target, contentRect, borderBoxSize }) {
18
+ var _a;
19
+ (_a = resizeHandlers.get(target)) === null || _a === void 0 ? void 0 : _a.forEach((handler) => {
20
+ handler({
21
+ target,
22
+ contentSize: contentRect,
19
23
  get size() {
20
- return f(e, r);
24
+ return getElementSize(target, borderBoxSize);
21
25
  }
22
26
  });
23
27
  });
24
28
  }
25
- function u(e) {
26
- e.forEach(d);
29
+ function notifyAll(entries) {
30
+ entries.forEach(notifyTarget);
27
31
  }
28
- function v() {
29
- typeof ResizeObserver > "u" || (o = new ResizeObserver(u));
32
+ function createResizeObserver() {
33
+ if (typeof ResizeObserver === "undefined")
34
+ return;
35
+ observer = new ResizeObserver(notifyAll);
30
36
  }
31
- function h(e, t) {
32
- o || v();
33
- const r = l(e);
34
- return r.forEach((i) => {
35
- let n = s.get(i);
36
- n || (n = /* @__PURE__ */ new Set(), s.set(i, n)), n.add(t), o == null || o.observe(i);
37
- }), () => {
38
- r.forEach((i) => {
39
- const n = s.get(i);
40
- n == null || n.delete(t), n != null && n.size || o == null || o.unobserve(i);
37
+ function resizeElement(target, handler) {
38
+ if (!observer)
39
+ createResizeObserver();
40
+ const elements = resolveElements(target);
41
+ elements.forEach((element) => {
42
+ let elementHandlers = resizeHandlers.get(element);
43
+ if (!elementHandlers) {
44
+ elementHandlers = /* @__PURE__ */ new Set();
45
+ resizeHandlers.set(element, elementHandlers);
46
+ }
47
+ elementHandlers.add(handler);
48
+ observer === null || observer === void 0 ? void 0 : observer.observe(element);
49
+ });
50
+ return () => {
51
+ elements.forEach((element) => {
52
+ const elementHandlers = resizeHandlers.get(element);
53
+ elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.delete(handler);
54
+ if (!(elementHandlers === null || elementHandlers === void 0 ? void 0 : elementHandlers.size)) {
55
+ observer === null || observer === void 0 ? void 0 : observer.unobserve(element);
56
+ }
41
57
  });
42
58
  };
43
59
  }
44
60
  export {
45
- h as resizeElement
61
+ resizeElement
46
62
  };
@@ -1,23 +1,31 @@
1
- const i = /* @__PURE__ */ new Set();
2
- let n;
3
- function o() {
4
- n = () => {
5
- const e = {
1
+ const windowCallbacks = /* @__PURE__ */ new Set();
2
+ let windowResizeHandler;
3
+ function createWindowResizeHandler() {
4
+ windowResizeHandler = () => {
5
+ const size = {
6
6
  width: window.innerWidth,
7
7
  height: window.innerHeight
8
- }, t = {
8
+ };
9
+ const info = {
9
10
  target: window,
10
- size: e,
11
- contentSize: e
11
+ size,
12
+ contentSize: size
12
13
  };
13
- i.forEach((d) => d(t));
14
- }, window.addEventListener("resize", n);
14
+ windowCallbacks.forEach((callback) => callback(info));
15
+ };
16
+ window.addEventListener("resize", windowResizeHandler);
15
17
  }
16
- function w(e) {
17
- return i.add(e), n || o(), () => {
18
- i.delete(e), !i.size && n && (n = void 0);
18
+ function resizeWindow(callback) {
19
+ windowCallbacks.add(callback);
20
+ if (!windowResizeHandler)
21
+ createWindowResizeHandler();
22
+ return () => {
23
+ windowCallbacks.delete(callback);
24
+ if (!windowCallbacks.size && windowResizeHandler) {
25
+ windowResizeHandler = void 0;
26
+ }
19
27
  };
20
28
  }
21
29
  export {
22
- w as resizeWindow
30
+ resizeWindow
23
31
  };
@@ -1,8 +1,8 @@
1
- import { resizeElement as o } from "./handle-element.mjs";
2
- import { resizeWindow as i } from "./handle-window.mjs";
3
- function f(e, r) {
4
- return typeof e == "function" ? i(e) : o(e, r);
1
+ import { resizeElement } from "./handle-element.mjs";
2
+ import { resizeWindow } from "./handle-window.mjs";
3
+ function resize(a, b) {
4
+ return typeof a === "function" ? resizeWindow(a) : resizeElement(a, b);
5
5
  }
6
6
  export {
7
- f as resize
7
+ resize
8
8
  };
@@ -1,46 +1,63 @@
1
- import { scrollInfo as c } from "./track.mjs";
2
- import { observeTimeline as f } from "./observe.mjs";
3
- import { supportsScrollTimeline as o } from "./supports.mjs";
4
- function g({ source: e, container: r, axis: t = "y" }) {
5
- e && (r = e);
6
- const u = { value: 0 }, n = c((m) => {
7
- u.value = m[t].progress * 100;
8
- }, { container: r, axis: t });
9
- return { currentTime: u, cancel: n };
1
+ import { scrollInfo } from "./track.mjs";
2
+ import { observeTimeline } from "./observe.mjs";
3
+ import { supportsScrollTimeline } from "./supports.mjs";
4
+ function scrollTimelineFallback({ source, container, axis = "y" }) {
5
+ if (source)
6
+ container = source;
7
+ const currentTime = { value: 0 };
8
+ const cancel = scrollInfo((info) => {
9
+ currentTime.value = info[axis].progress * 100;
10
+ }, { container, axis });
11
+ return { currentTime, cancel };
10
12
  }
11
- const l = /* @__PURE__ */ new Map();
12
- function s({ source: e, container: r = document.documentElement, axis: t = "y" } = {}) {
13
- e && (r = e), l.has(r) || l.set(r, {});
14
- const u = l.get(r);
15
- return u[t] || (u[t] = o() ? new ScrollTimeline({ source: r, axis: t }) : g({ source: r, axis: t })), u[t];
13
+ const timelineCache = /* @__PURE__ */ new Map();
14
+ function getTimeline({ source, container = document.documentElement, axis = "y" } = {}) {
15
+ if (source)
16
+ container = source;
17
+ if (!timelineCache.has(container)) {
18
+ timelineCache.set(container, {});
19
+ }
20
+ const elementCache = timelineCache.get(container);
21
+ if (!elementCache[axis]) {
22
+ elementCache[axis] = supportsScrollTimeline() ? new ScrollTimeline({ source: container, axis }) : scrollTimelineFallback({ source: container, axis });
23
+ }
24
+ return elementCache[axis];
16
25
  }
17
- function T(e) {
18
- return e.length === 2;
26
+ function isOnScrollWithInfo(onScroll) {
27
+ return onScroll.length === 2;
19
28
  }
20
- function i(e) {
21
- return e && (e.target || e.offset);
29
+ function needsElementTracking(options) {
30
+ return options && (options.target || options.offset);
22
31
  }
23
- function h(e, r) {
24
- return T(e) || i(r) ? c((t) => {
25
- e(t[r.axis].progress, t);
26
- }, r) : f(e, s(r));
32
+ function scrollFunction(onScroll, options) {
33
+ if (isOnScrollWithInfo(onScroll) || needsElementTracking(options)) {
34
+ return scrollInfo((info) => {
35
+ onScroll(info[options.axis].progress, info);
36
+ }, options);
37
+ } else {
38
+ return observeTimeline(onScroll, getTimeline(options));
39
+ }
27
40
  }
28
- function p(e, r) {
29
- if (i(r))
30
- return e.pause(), c((t) => {
31
- e.time = e.duration * t[r.axis].progress;
32
- }, r);
33
- {
34
- const t = s(r);
35
- return e.attachTimeline(t, (u) => (u.pause(), f((n) => {
36
- u.time = u.duration * n;
37
- }, t)));
41
+ function scrollAnimation(animation, options) {
42
+ if (needsElementTracking(options)) {
43
+ animation.pause();
44
+ return scrollInfo((info) => {
45
+ animation.time = animation.duration * info[options.axis].progress;
46
+ }, options);
47
+ } else {
48
+ const timeline = getTimeline(options);
49
+ return animation.attachTimeline(timeline, (valueAnimation) => {
50
+ valueAnimation.pause();
51
+ return observeTimeline((progress) => {
52
+ valueAnimation.time = valueAnimation.duration * progress;
53
+ }, timeline);
54
+ });
38
55
  }
39
56
  }
40
- function k(e, { axis: r = "y", ...t } = {}) {
41
- const u = { axis: r, ...t };
42
- return typeof e == "function" ? h(e, u) : p(e, u);
57
+ function scroll(onScroll, { axis = "y", ...options } = {}) {
58
+ const optionsWithDefaults = { axis, ...options };
59
+ return typeof onScroll === "function" ? scrollFunction(onScroll, optionsWithDefaults) : scrollAnimation(onScroll, optionsWithDefaults);
43
60
  }
44
61
  export {
45
- k as scroll
62
+ scroll
46
63
  };
@@ -1,6 +1,7 @@
1
- import { progress as h } from "../../../utils/progress.mjs";
2
- import { velocityPerSecond as a } from "../../../utils/velocity-per-second.mjs";
3
- const u = 50, c = () => ({
1
+ import { progress } from "../../../utils/progress.mjs";
2
+ import { velocityPerSecond } from "../../../utils/velocity-per-second.mjs";
3
+ const maxElapsed = 50;
4
+ const createAxisInfo = () => ({
4
5
  current: 0,
5
6
  offset: [],
6
7
  progress: 0,
@@ -9,11 +10,13 @@ const u = 50, c = () => ({
9
10
  targetLength: 0,
10
11
  containerLength: 0,
11
12
  velocity: 0
12
- }), d = () => ({
13
+ });
14
+ const createScrollInfo = () => ({
13
15
  time: 0,
14
- x: c(),
15
- y: c()
16
- }), x = {
16
+ x: createAxisInfo(),
17
+ y: createAxisInfo()
18
+ });
19
+ const keys = {
17
20
  x: {
18
21
  length: "Width",
19
22
  position: "Left"
@@ -23,16 +26,26 @@ const u = 50, c = () => ({
23
26
  position: "Top"
24
27
  }
25
28
  };
26
- function l(o, e, r, i) {
27
- const t = r[e], { length: s, position: f } = x[e], g = t.current, p = r.time;
28
- t.current = o[`scroll${f}`], t.scrollLength = o[`scroll${s}`] - o[`client${s}`], t.offset.length = 0, t.offset[0] = 0, t.offset[1] = t.scrollLength, t.progress = h(0, t.scrollLength, t.current);
29
- const n = i - p;
30
- t.velocity = n > u ? 0 : a(t.current - g, n);
29
+ function updateAxisInfo(element, axisName, info, time) {
30
+ const axis = info[axisName];
31
+ const { length, position } = keys[axisName];
32
+ const prev = axis.current;
33
+ const prevTime = info.time;
34
+ axis.current = element[`scroll${position}`];
35
+ axis.scrollLength = element[`scroll${length}`] - element[`client${length}`];
36
+ axis.offset.length = 0;
37
+ axis.offset[0] = 0;
38
+ axis.offset[1] = axis.scrollLength;
39
+ axis.progress = progress(0, axis.scrollLength, axis.current);
40
+ const elapsed = time - prevTime;
41
+ axis.velocity = elapsed > maxElapsed ? 0 : velocityPerSecond(axis.current - prev, elapsed);
31
42
  }
32
- function v(o, e, r) {
33
- l(o, "x", e, r), l(o, "y", e, r), e.time = r;
43
+ function updateScrollInfo(element, info, time) {
44
+ updateAxisInfo(element, "x", info, time);
45
+ updateAxisInfo(element, "y", info, time);
46
+ info.time = time;
34
47
  }
35
48
  export {
36
- d as createScrollInfo,
37
- v as updateScrollInfo
49
+ createScrollInfo,
50
+ updateScrollInfo
38
51
  };
@@ -1,12 +1,18 @@
1
- import { frame as s, cancelFrame as a } from "../../../frameloop/frame.mjs";
2
- function u(o, c) {
3
- let r;
4
- const n = () => {
5
- const { currentTime: t } = c, e = (t === null ? 0 : t.value) / 100;
6
- r !== e && o(e), r = e;
1
+ import { frame, cancelFrame } from "../../../frameloop/frame.mjs";
2
+ function observeTimeline(update, timeline) {
3
+ let prevProgress;
4
+ const onFrame = () => {
5
+ const { currentTime } = timeline;
6
+ const percentage = currentTime === null ? 0 : currentTime.value;
7
+ const progress = percentage / 100;
8
+ if (prevProgress !== progress) {
9
+ update(progress);
10
+ }
11
+ prevProgress = progress;
7
12
  };
8
- return s.update(n, !0), () => a(n);
13
+ frame.update(onFrame, true);
14
+ return () => cancelFrame(onFrame);
9
15
  }
10
16
  export {
11
- u as observeTimeline
17
+ observeTimeline
12
18
  };
@@ -1,17 +1,33 @@
1
- const e = {
1
+ const namedEdges = {
2
2
  start: 0,
3
3
  center: 0.5,
4
4
  end: 1
5
5
  };
6
- function o(t, s, l = 0) {
7
- let n = 0;
8
- if (t in e && (t = e[t]), typeof t == "string") {
9
- const i = parseFloat(t);
10
- t.endsWith("px") ? n = i : t.endsWith("%") ? t = i / 100 : t.endsWith("vw") ? n = i / 100 * document.documentElement.clientWidth : t.endsWith("vh") ? n = i / 100 * document.documentElement.clientHeight : t = i;
6
+ function resolveEdge(edge, length, inset = 0) {
7
+ let delta = 0;
8
+ if (edge in namedEdges) {
9
+ edge = namedEdges[edge];
11
10
  }
12
- return typeof t == "number" && (n = s * t), l + n;
11
+ if (typeof edge === "string") {
12
+ const asNumber = parseFloat(edge);
13
+ if (edge.endsWith("px")) {
14
+ delta = asNumber;
15
+ } else if (edge.endsWith("%")) {
16
+ edge = asNumber / 100;
17
+ } else if (edge.endsWith("vw")) {
18
+ delta = asNumber / 100 * document.documentElement.clientWidth;
19
+ } else if (edge.endsWith("vh")) {
20
+ delta = asNumber / 100 * document.documentElement.clientHeight;
21
+ } else {
22
+ edge = asNumber;
23
+ }
24
+ }
25
+ if (typeof edge === "number") {
26
+ delta = length * edge;
27
+ }
28
+ return inset + delta;
13
29
  }
14
30
  export {
15
- e as namedEdges,
16
- o as resolveEdge
31
+ namedEdges,
32
+ resolveEdge
17
33
  };
@@ -1,26 +1,38 @@
1
- import { calcInset as d } from "./inset.mjs";
2
- import { ScrollOffset as a } from "./presets.mjs";
3
- import { resolveOffset as u } from "./offset.mjs";
4
- import { interpolate as O } from "../../../../utils/interpolate.mjs";
5
- import { defaultOffset as x } from "../../../../utils/offsets/default.mjs";
6
- const w = { x: 0, y: 0 };
7
- function B(t) {
8
- return "getBBox" in t && t.tagName !== "svg" ? t.getBBox() : { width: t.clientWidth, height: t.clientHeight };
1
+ import { calcInset } from "./inset.mjs";
2
+ import { ScrollOffset } from "./presets.mjs";
3
+ import { resolveOffset } from "./offset.mjs";
4
+ import { interpolate } from "../../../../utils/interpolate.mjs";
5
+ import { defaultOffset } from "../../../../utils/offsets/default.mjs";
6
+ const point = { x: 0, y: 0 };
7
+ function getTargetSize(target) {
8
+ return "getBBox" in target && target.tagName !== "svg" ? target.getBBox() : { width: target.clientWidth, height: target.clientHeight };
9
9
  }
10
- function W(t, s, r) {
11
- const { offset: l = a.All } = r, { target: o = t, axis: e = "y" } = r, h = e === "y" ? "height" : "width", c = o !== t ? d(o, t) : w, n = o === t ? { width: t.scrollWidth, height: t.scrollHeight } : B(o), p = {
12
- width: t.clientWidth,
13
- height: t.clientHeight
10
+ function resolveOffsets(container, info, options) {
11
+ const { offset: offsetDefinition = ScrollOffset.All } = options;
12
+ const { target = container, axis = "y" } = options;
13
+ const lengthLabel = axis === "y" ? "height" : "width";
14
+ const inset = target !== container ? calcInset(target, container) : point;
15
+ const targetSize = target === container ? { width: container.scrollWidth, height: container.scrollHeight } : getTargetSize(target);
16
+ const containerSize = {
17
+ width: container.clientWidth,
18
+ height: container.clientHeight
14
19
  };
15
- s[e].offset.length = 0;
16
- let i = !s[e].interpolate;
17
- const m = l.length;
18
- for (let f = 0; f < m; f++) {
19
- const g = u(l[f], p[h], n[h], c[e]);
20
- !i && g !== s[e].interpolatorOffsets[f] && (i = !0), s[e].offset[f] = g;
20
+ info[axis].offset.length = 0;
21
+ let hasChanged = !info[axis].interpolate;
22
+ const numOffsets = offsetDefinition.length;
23
+ for (let i = 0; i < numOffsets; i++) {
24
+ const offset = resolveOffset(offsetDefinition[i], containerSize[lengthLabel], targetSize[lengthLabel], inset[axis]);
25
+ if (!hasChanged && offset !== info[axis].interpolatorOffsets[i]) {
26
+ hasChanged = true;
27
+ }
28
+ info[axis].offset[i] = offset;
21
29
  }
22
- i && (s[e].interpolate = O(s[e].offset, x(l)), s[e].interpolatorOffsets = [...s[e].offset]), s[e].progress = s[e].interpolate(s[e].current);
30
+ if (hasChanged) {
31
+ info[axis].interpolate = interpolate(info[axis].offset, defaultOffset(offsetDefinition));
32
+ info[axis].interpolatorOffsets = [...info[axis].offset];
33
+ }
34
+ info[axis].progress = info[axis].interpolate(info[axis].current);
23
35
  }
24
36
  export {
25
- W as resolveOffsets
37
+ resolveOffsets
26
38
  };
@@ -1,25 +1,36 @@
1
- function a(i, f) {
2
- const t = { x: 0, y: 0 };
3
- let e = i;
4
- for (; e && e !== f; )
5
- if (e instanceof HTMLElement)
6
- t.x += e.offsetLeft, t.y += e.offsetTop, e = e.offsetParent;
7
- else if (e.tagName === "svg") {
8
- const n = e.getBoundingClientRect();
9
- e = e.parentElement;
10
- const o = e.getBoundingClientRect();
11
- t.x += n.left - o.left, t.y += n.top - o.top;
12
- } else if (e instanceof SVGGraphicsElement) {
13
- const { x: n, y: o } = e.getBBox();
14
- t.x += n, t.y += o;
15
- let s = null, l = e.parentNode;
16
- for (; !s; )
17
- l.tagName === "svg" && (s = l), l = e.parentNode;
18
- e = s;
19
- } else
1
+ function calcInset(element, container) {
2
+ const inset = { x: 0, y: 0 };
3
+ let current = element;
4
+ while (current && current !== container) {
5
+ if (current instanceof HTMLElement) {
6
+ inset.x += current.offsetLeft;
7
+ inset.y += current.offsetTop;
8
+ current = current.offsetParent;
9
+ } else if (current.tagName === "svg") {
10
+ const svgBoundingBox = current.getBoundingClientRect();
11
+ current = current.parentElement;
12
+ const parentBoundingBox = current.getBoundingClientRect();
13
+ inset.x += svgBoundingBox.left - parentBoundingBox.left;
14
+ inset.y += svgBoundingBox.top - parentBoundingBox.top;
15
+ } else if (current instanceof SVGGraphicsElement) {
16
+ const { x, y } = current.getBBox();
17
+ inset.x += x;
18
+ inset.y += y;
19
+ let svg = null;
20
+ let parent = current.parentNode;
21
+ while (!svg) {
22
+ if (parent.tagName === "svg") {
23
+ svg = parent;
24
+ }
25
+ parent = current.parentNode;
26
+ }
27
+ current = svg;
28
+ } else {
20
29
  break;
21
- return t;
30
+ }
31
+ }
32
+ return inset;
22
33
  }
23
34
  export {
24
- a as calcInset
35
+ calcInset
25
36
  };
@@ -1,9 +1,23 @@
1
- import { resolveEdge as t, namedEdges as m } from "./edge.mjs";
2
- const p = [0, 0];
3
- function c(i, l, a, d) {
4
- let r = Array.isArray(i) ? i : p, e = 0, n = 0;
5
- return typeof i == "number" ? r = [i, i] : typeof i == "string" && (i = i.trim(), i.includes(" ") ? r = i.split(" ") : r = [i, m[i] ? i : "0"]), e = t(r[0], a, d), n = t(r[1], l), e - n;
1
+ import { resolveEdge, namedEdges } from "./edge.mjs";
2
+ const defaultOffset = [0, 0];
3
+ function resolveOffset(offset, containerLength, targetLength, targetInset) {
4
+ let offsetDefinition = Array.isArray(offset) ? offset : defaultOffset;
5
+ let targetPoint = 0;
6
+ let containerPoint = 0;
7
+ if (typeof offset === "number") {
8
+ offsetDefinition = [offset, offset];
9
+ } else if (typeof offset === "string") {
10
+ offset = offset.trim();
11
+ if (offset.includes(" ")) {
12
+ offsetDefinition = offset.split(" ");
13
+ } else {
14
+ offsetDefinition = [offset, namedEdges[offset] ? offset : `0`];
15
+ }
16
+ }
17
+ targetPoint = resolveEdge(offsetDefinition[0], targetLength, targetInset);
18
+ containerPoint = resolveEdge(offsetDefinition[1], containerLength);
19
+ return targetPoint - containerPoint;
6
20
  }
7
21
  export {
8
- c as resolveOffset
22
+ resolveOffset
9
23
  };
@@ -1,4 +1,4 @@
1
- const t = {
1
+ const ScrollOffset = {
2
2
  Enter: [
3
3
  [0, 1],
4
4
  [1, 1]
@@ -17,5 +17,5 @@ const t = {
17
17
  ]
18
18
  };
19
19
  export {
20
- t as ScrollOffset
20
+ ScrollOffset
21
21
  };