motion 10.18.0 → 11.11.12

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 (320) hide show
  1. package/.turbo/turbo-build.log +29 -0
  2. package/{LICENSE → LICENSE.md} +2 -2
  3. package/README.md +99 -7
  4. package/dist/cjs/index.js +6117 -0
  5. package/dist/cjs/react-client.js +10003 -0
  6. package/dist/cjs/react-m.js +1852 -0
  7. package/dist/es/framer-motion/dist/es/animation/GroupPlaybackControls.mjs +78 -0
  8. package/dist/es/framer-motion/dist/es/animation/animate/index.mjs +34 -0
  9. package/dist/es/framer-motion/dist/es/animation/animate/resolve-subjects.mjs +19 -0
  10. package/dist/es/framer-motion/dist/es/animation/animate/sequence.mjs +14 -0
  11. package/dist/es/framer-motion/dist/es/animation/animate/single-value.mjs +11 -0
  12. package/dist/es/framer-motion/dist/es/animation/animate/subject.mjs +52 -0
  13. package/dist/es/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +318 -0
  14. package/dist/es/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +112 -0
  15. package/dist/es/framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs +380 -0
  16. package/dist/es/framer-motion/dist/es/animation/animators/drivers/driver-frameloop.mjs +17 -0
  17. package/dist/es/framer-motion/dist/es/animation/animators/utils/accelerated-values.mjs +14 -0
  18. package/dist/es/framer-motion/dist/es/animation/animators/utils/can-animate.mjs +42 -0
  19. package/dist/es/framer-motion/dist/es/animation/animators/waapi/NativeAnimation.mjs +169 -0
  20. package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs +36 -0
  21. package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-style.mjs +12 -0
  22. package/dist/es/framer-motion/dist/es/animation/animators/waapi/easing.mjs +44 -0
  23. package/dist/es/framer-motion/dist/es/animation/animators/waapi/index.mjs +23 -0
  24. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/attach-timeline.mjs +6 -0
  25. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/get-final-keyframe.mjs +12 -0
  26. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/linear.mjs +15 -0
  27. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/memo-supports.mjs +9 -0
  28. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/style.mjs +8 -0
  29. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-flags.mjs +9 -0
  30. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-linear-easing.mjs +15 -0
  31. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-partial-keyframes.mjs +13 -0
  32. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs +5 -0
  33. package/dist/es/framer-motion/dist/es/animation/generators/inertia.mjs +87 -0
  34. package/dist/es/framer-motion/dist/es/animation/generators/keyframes.mjs +51 -0
  35. package/dist/es/framer-motion/dist/es/animation/generators/spring/find.mjs +89 -0
  36. package/dist/es/framer-motion/dist/es/animation/generators/spring/index.mjs +129 -0
  37. package/dist/es/framer-motion/dist/es/animation/generators/utils/calc-duration.mjs +17 -0
  38. package/dist/es/framer-motion/dist/es/animation/generators/utils/is-generator.mjs +5 -0
  39. package/dist/es/framer-motion/dist/es/animation/generators/utils/velocity.mjs +9 -0
  40. package/dist/es/framer-motion/dist/es/animation/interfaces/motion-value.mjs +105 -0
  41. package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +75 -0
  42. package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-variant.mjs +66 -0
  43. package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element.mjs +26 -0
  44. package/dist/es/framer-motion/dist/es/animation/optimized-appear/data-id.mjs +6 -0
  45. package/dist/es/framer-motion/dist/es/animation/optimized-appear/get-appear-id.mjs +7 -0
  46. package/dist/es/framer-motion/dist/es/animation/sequence/create.mjs +230 -0
  47. package/dist/es/framer-motion/dist/es/animation/sequence/utils/calc-time.mjs +21 -0
  48. package/dist/es/framer-motion/dist/es/animation/sequence/utils/edit.mjs +31 -0
  49. package/dist/es/framer-motion/dist/es/animation/sequence/utils/sort.mjs +14 -0
  50. package/dist/es/framer-motion/dist/es/animation/utils/create-visual-element.mjs +44 -0
  51. package/dist/es/framer-motion/dist/es/animation/utils/default-transitions.mjs +40 -0
  52. package/dist/es/framer-motion/dist/es/animation/utils/get-value-transition.mjs +9 -0
  53. package/dist/es/framer-motion/dist/es/animation/utils/is-animatable.mjs +30 -0
  54. package/dist/es/framer-motion/dist/es/animation/utils/is-animation-controls.mjs +7 -0
  55. package/dist/es/framer-motion/dist/es/animation/utils/is-dom-keyframes.mjs +5 -0
  56. package/dist/es/framer-motion/dist/es/animation/utils/is-keyframes-target.mjs +5 -0
  57. package/dist/es/framer-motion/dist/es/animation/utils/is-none.mjs +15 -0
  58. package/dist/es/framer-motion/dist/es/animation/utils/is-transition-defined.mjs +10 -0
  59. package/dist/es/framer-motion/dist/es/animation/utils/stagger.mjs +26 -0
  60. package/dist/es/framer-motion/dist/es/components/AnimatePresence/use-presence.mjs +40 -0
  61. package/dist/es/framer-motion/dist/es/context/LayoutGroupContext.mjs +6 -0
  62. package/dist/es/framer-motion/dist/es/context/LazyContext.mjs +6 -0
  63. package/dist/es/framer-motion/dist/es/context/MotionConfigContext.mjs +13 -0
  64. package/dist/es/framer-motion/dist/es/context/MotionContext/create.mjs +13 -0
  65. package/dist/es/framer-motion/dist/es/context/MotionContext/index.mjs +6 -0
  66. package/dist/es/framer-motion/dist/es/context/MotionContext/utils.mjs +17 -0
  67. package/dist/es/framer-motion/dist/es/context/PresenceContext.mjs +9 -0
  68. package/dist/es/framer-motion/dist/es/context/SwitchLayoutGroupContext.mjs +9 -0
  69. package/dist/es/framer-motion/dist/es/easing/anticipate.mjs +5 -0
  70. package/dist/es/framer-motion/dist/es/easing/back.mjs +9 -0
  71. package/dist/es/framer-motion/dist/es/easing/circ.mjs +8 -0
  72. package/dist/es/framer-motion/dist/es/easing/cubic-bezier.mjs +51 -0
  73. package/dist/es/framer-motion/dist/es/easing/ease.mjs +7 -0
  74. package/dist/es/framer-motion/dist/es/easing/modifiers/mirror.mjs +5 -0
  75. package/dist/es/framer-motion/dist/es/easing/modifiers/reverse.mjs +5 -0
  76. package/dist/es/framer-motion/dist/es/easing/steps.mjs +15 -0
  77. package/dist/es/framer-motion/dist/es/easing/utils/create-generator-easing.mjs +17 -0
  78. package/dist/es/framer-motion/dist/es/easing/utils/get-easing-for-segment.mjs +8 -0
  79. package/dist/es/framer-motion/dist/es/easing/utils/is-bezier-definition.mjs +3 -0
  80. package/dist/es/framer-motion/dist/es/easing/utils/is-easing-array.mjs +5 -0
  81. package/dist/es/framer-motion/dist/es/easing/utils/map.mjs +38 -0
  82. package/dist/es/framer-motion/dist/es/events/add-dom-event.mjs +6 -0
  83. package/dist/es/framer-motion/dist/es/events/add-pointer-event.mjs +8 -0
  84. package/dist/es/framer-motion/dist/es/events/event-info.mjs +15 -0
  85. package/dist/es/framer-motion/dist/es/events/utils/is-primary-pointer.mjs +18 -0
  86. package/dist/es/framer-motion/dist/es/frameloop/batcher.mjs +71 -0
  87. package/dist/es/framer-motion/dist/es/frameloop/frame.mjs +6 -0
  88. package/dist/es/framer-motion/dist/es/frameloop/index-legacy.mjs +20 -0
  89. package/dist/es/framer-motion/dist/es/frameloop/microtask.mjs +5 -0
  90. package/dist/es/framer-motion/dist/es/frameloop/render-step.mjs +80 -0
  91. package/dist/es/framer-motion/dist/es/frameloop/sync-time.mjs +31 -0
  92. package/dist/es/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs +487 -0
  93. package/dist/es/framer-motion/dist/es/gestures/drag/index.mjs +27 -0
  94. package/dist/es/framer-motion/dist/es/gestures/drag/utils/constraints.mjs +129 -0
  95. package/dist/es/framer-motion/dist/es/gestures/drag/utils/lock.mjs +53 -0
  96. package/dist/es/framer-motion/dist/es/gestures/focus.mjs +41 -0
  97. package/dist/es/framer-motion/dist/es/gestures/hover.mjs +33 -0
  98. package/dist/es/framer-motion/dist/es/gestures/pan/PanSession.mjs +156 -0
  99. package/dist/es/framer-motion/dist/es/gestures/pan/index.mjs +50 -0
  100. package/dist/es/framer-motion/dist/es/gestures/press.mjs +130 -0
  101. package/dist/es/framer-motion/dist/es/gestures/utils/is-node-or-child.mjs +20 -0
  102. package/dist/es/framer-motion/dist/es/motion/features/Feature.mjs +9 -0
  103. package/dist/es/framer-motion/dist/es/motion/features/animation/exit.mjs +31 -0
  104. package/dist/es/framer-motion/dist/es/motion/features/animation/index.mjs +41 -0
  105. package/dist/es/framer-motion/dist/es/motion/features/animations.mjs +13 -0
  106. package/dist/es/framer-motion/dist/es/motion/features/definitions.mjs +28 -0
  107. package/dist/es/framer-motion/dist/es/motion/features/drag.mjs +17 -0
  108. package/dist/es/framer-motion/dist/es/motion/features/gestures.mjs +21 -0
  109. package/dist/es/framer-motion/dist/es/motion/features/layout/MeasureLayout.mjs +134 -0
  110. package/dist/es/framer-motion/dist/es/motion/features/layout.mjs +11 -0
  111. package/dist/es/framer-motion/dist/es/motion/features/load-features.mjs +12 -0
  112. package/dist/es/framer-motion/dist/es/motion/features/viewport/index.mjs +72 -0
  113. package/dist/es/framer-motion/dist/es/motion/features/viewport/observers.mjs +49 -0
  114. package/dist/es/framer-motion/dist/es/motion/index.mjs +98 -0
  115. package/dist/es/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +11 -0
  116. package/dist/es/framer-motion/dist/es/motion/utils/symbol.mjs +3 -0
  117. package/dist/es/framer-motion/dist/es/motion/utils/use-motion-ref.mjs +36 -0
  118. package/dist/es/framer-motion/dist/es/motion/utils/use-visual-element.mjs +134 -0
  119. package/dist/es/framer-motion/dist/es/motion/utils/use-visual-state.mjs +82 -0
  120. package/dist/es/framer-motion/dist/es/motion/utils/valid-prop.mjs +57 -0
  121. package/dist/es/framer-motion/dist/es/projection/animation/mix-values.mjs +93 -0
  122. package/dist/es/framer-motion/dist/es/projection/geometry/conversion.mjs +33 -0
  123. package/dist/es/framer-motion/dist/es/projection/geometry/copy.mjs +31 -0
  124. package/dist/es/framer-motion/dist/es/projection/geometry/delta-apply.mjs +119 -0
  125. package/dist/es/framer-motion/dist/es/projection/geometry/delta-calc.mjs +52 -0
  126. package/dist/es/framer-motion/dist/es/projection/geometry/delta-remove.mjs +54 -0
  127. package/dist/es/framer-motion/dist/es/projection/geometry/models.mjs +17 -0
  128. package/dist/es/framer-motion/dist/es/projection/geometry/utils.mjs +31 -0
  129. package/dist/es/framer-motion/dist/es/projection/node/DocumentProjectionNode.mjs +13 -0
  130. package/dist/es/framer-motion/dist/es/projection/node/HTMLProjectionNode.mjs +27 -0
  131. package/dist/es/framer-motion/dist/es/projection/node/create-projection-node.mjs +1583 -0
  132. package/dist/es/framer-motion/dist/es/projection/node/state.mjs +19 -0
  133. package/dist/es/framer-motion/dist/es/projection/shared/stack.mjs +112 -0
  134. package/dist/es/framer-motion/dist/es/projection/styles/scale-border-radius.mjs +41 -0
  135. package/dist/es/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs +35 -0
  136. package/dist/es/framer-motion/dist/es/projection/styles/scale-correction.mjs +6 -0
  137. package/dist/es/framer-motion/dist/es/projection/styles/transform.mjs +49 -0
  138. package/dist/es/framer-motion/dist/es/projection/utils/each-axis.mjs +5 -0
  139. package/dist/es/framer-motion/dist/es/projection/utils/has-transform.mjs +26 -0
  140. package/dist/es/framer-motion/dist/es/projection/utils/measure.mjs +17 -0
  141. package/dist/es/framer-motion/dist/es/render/VisualElement.mjs +477 -0
  142. package/dist/es/framer-motion/dist/es/render/components/create-factory.mjs +23 -0
  143. package/dist/es/framer-motion/dist/es/render/components/m/create.mjs +6 -0
  144. package/dist/es/framer-motion/dist/es/render/components/m/elements.mjs +227 -0
  145. package/dist/es/framer-motion/dist/es/render/components/motion/create.mjs +15 -0
  146. package/dist/es/framer-motion/dist/es/render/components/motion/elements.mjs +194 -0
  147. package/dist/es/framer-motion/dist/es/render/dom/DOMKeyframesResolver.mjs +130 -0
  148. package/dist/es/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +28 -0
  149. package/dist/es/framer-motion/dist/es/render/dom/create-visual-element.mjs +14 -0
  150. package/dist/es/framer-motion/dist/es/render/dom/resize/handle-element.mjs +64 -0
  151. package/dist/es/framer-motion/dist/es/render/dom/resize/handle-window.mjs +30 -0
  152. package/dist/es/framer-motion/dist/es/render/dom/resize/index.mjs +8 -0
  153. package/dist/es/framer-motion/dist/es/render/dom/scroll/index.mjs +80 -0
  154. package/dist/es/framer-motion/dist/es/render/dom/scroll/info.mjs +56 -0
  155. package/dist/es/framer-motion/dist/es/render/dom/scroll/observe.mjs +18 -0
  156. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/edge.mjs +45 -0
  157. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +59 -0
  158. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/inset.mjs +45 -0
  159. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/offset.mjs +35 -0
  160. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/presets.mjs +20 -0
  161. package/dist/es/framer-motion/dist/es/render/dom/scroll/on-scroll-handler.mjs +48 -0
  162. package/dist/es/framer-motion/dist/es/render/dom/scroll/supports.mjs +5 -0
  163. package/dist/es/framer-motion/dist/es/render/dom/scroll/track.mjs +84 -0
  164. package/dist/es/framer-motion/dist/es/render/dom/use-render.mjs +33 -0
  165. package/dist/es/framer-motion/dist/es/render/dom/utils/camel-to-dash.mjs +6 -0
  166. package/dist/es/framer-motion/dist/es/render/dom/utils/css-variables-conversion.mjs +42 -0
  167. package/dist/es/framer-motion/dist/es/render/dom/utils/filter-props.mjs +59 -0
  168. package/dist/es/framer-motion/dist/es/render/dom/utils/is-css-variable.mjs +15 -0
  169. package/dist/es/framer-motion/dist/es/render/dom/utils/is-svg-component.mjs +30 -0
  170. package/dist/es/framer-motion/dist/es/render/dom/utils/is-svg-element.mjs +5 -0
  171. package/dist/es/framer-motion/dist/es/render/dom/utils/resolve-element.mjs +28 -0
  172. package/dist/es/framer-motion/dist/es/render/dom/utils/unit-conversion.mjs +65 -0
  173. package/dist/es/framer-motion/dist/es/render/dom/value-types/animatable-none.mjs +15 -0
  174. package/dist/es/framer-motion/dist/es/render/dom/value-types/defaults.mjs +30 -0
  175. package/dist/es/framer-motion/dist/es/render/dom/value-types/dimensions.mjs +15 -0
  176. package/dist/es/framer-motion/dist/es/render/dom/value-types/find.mjs +15 -0
  177. package/dist/es/framer-motion/dist/es/render/dom/value-types/get-as-type.mjs +10 -0
  178. package/dist/es/framer-motion/dist/es/render/dom/value-types/number-browser.mjs +41 -0
  179. package/dist/es/framer-motion/dist/es/render/dom/value-types/number.mjs +18 -0
  180. package/dist/es/framer-motion/dist/es/render/dom/value-types/test.mjs +6 -0
  181. package/dist/es/framer-motion/dist/es/render/dom/value-types/transform.mjs +31 -0
  182. package/dist/es/framer-motion/dist/es/render/dom/value-types/type-auto.mjs +9 -0
  183. package/dist/es/framer-motion/dist/es/render/dom/value-types/type-int.mjs +8 -0
  184. package/dist/es/framer-motion/dist/es/render/dom/viewport/index.mjs +43 -0
  185. package/dist/es/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +57 -0
  186. package/dist/es/framer-motion/dist/es/render/html/config-motion.mjs +12 -0
  187. package/dist/es/framer-motion/dist/es/render/html/use-props.mjs +57 -0
  188. package/dist/es/framer-motion/dist/es/render/html/utils/build-styles.mjs +65 -0
  189. package/dist/es/framer-motion/dist/es/render/html/utils/build-transform.mjs +62 -0
  190. package/dist/es/framer-motion/dist/es/render/html/utils/create-render-state.mjs +8 -0
  191. package/dist/es/framer-motion/dist/es/render/html/utils/make-none-animatable.mjs +30 -0
  192. package/dist/es/framer-motion/dist/es/render/html/utils/render.mjs +9 -0
  193. package/dist/es/framer-motion/dist/es/render/html/utils/scrape-motion-values.mjs +20 -0
  194. package/dist/es/framer-motion/dist/es/render/html/utils/transform.mjs +28 -0
  195. package/dist/es/framer-motion/dist/es/render/object/ObjectVisualElement.mjs +41 -0
  196. package/dist/es/framer-motion/dist/es/render/store.mjs +3 -0
  197. package/dist/es/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +45 -0
  198. package/dist/es/framer-motion/dist/es/render/svg/config-motion.mjs +40 -0
  199. package/dist/es/framer-motion/dist/es/render/svg/lowercase-elements.mjs +33 -0
  200. package/dist/es/framer-motion/dist/es/render/svg/use-props.mjs +24 -0
  201. package/dist/es/framer-motion/dist/es/render/svg/utils/build-attrs.mjs +52 -0
  202. package/dist/es/framer-motion/dist/es/render/svg/utils/camel-case-attrs.mjs +30 -0
  203. package/dist/es/framer-motion/dist/es/render/svg/utils/create-render-state.mjs +8 -0
  204. package/dist/es/framer-motion/dist/es/render/svg/utils/is-svg-tag.mjs +3 -0
  205. package/dist/es/framer-motion/dist/es/render/svg/utils/path.mjs +32 -0
  206. package/dist/es/framer-motion/dist/es/render/svg/utils/render.mjs +12 -0
  207. package/dist/es/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +19 -0
  208. package/dist/es/framer-motion/dist/es/render/svg/utils/transform-origin.mjs +18 -0
  209. package/dist/es/framer-motion/dist/es/render/utils/KeyframesResolver.mjs +164 -0
  210. package/dist/es/framer-motion/dist/es/render/utils/animation-state.mjs +332 -0
  211. package/dist/es/framer-motion/dist/es/render/utils/compare-by-depth.mjs +3 -0
  212. package/dist/es/framer-motion/dist/es/render/utils/flat-tree.mjs +24 -0
  213. package/dist/es/framer-motion/dist/es/render/utils/get-variant-context.mjs +28 -0
  214. package/dist/es/framer-motion/dist/es/render/utils/is-controlling-variants.mjs +13 -0
  215. package/dist/es/framer-motion/dist/es/render/utils/is-variant-label.mjs +8 -0
  216. package/dist/es/framer-motion/dist/es/render/utils/motion-values.mjs +59 -0
  217. package/dist/es/framer-motion/dist/es/render/utils/resolve-dynamic-variants.mjs +8 -0
  218. package/dist/es/framer-motion/dist/es/render/utils/resolve-variants.mjs +36 -0
  219. package/dist/es/framer-motion/dist/es/render/utils/setters.mjs +27 -0
  220. package/dist/es/framer-motion/dist/es/render/utils/variant-props.mjs +12 -0
  221. package/dist/es/framer-motion/dist/es/utils/GlobalConfig.mjs +6 -0
  222. package/dist/es/framer-motion/dist/es/utils/array.mjs +11 -0
  223. package/dist/es/framer-motion/dist/es/utils/clamp.mjs +9 -0
  224. package/dist/es/framer-motion/dist/es/utils/delay.mjs +24 -0
  225. package/dist/es/framer-motion/dist/es/utils/distance.mjs +9 -0
  226. package/dist/es/framer-motion/dist/es/utils/errors.mjs +18 -0
  227. package/dist/es/framer-motion/dist/es/utils/get-context-window.mjs +6 -0
  228. package/dist/es/framer-motion/dist/es/utils/hsla-to-rgba.mjs +42 -0
  229. package/dist/es/framer-motion/dist/es/utils/interpolate.mjs +75 -0
  230. package/dist/es/framer-motion/dist/es/utils/is-browser.mjs +3 -0
  231. package/dist/es/framer-motion/dist/es/utils/is-numerical-string.mjs +6 -0
  232. package/dist/es/framer-motion/dist/es/utils/is-ref-object.mjs +7 -0
  233. package/dist/es/framer-motion/dist/es/utils/is-zero-value-string.mjs +6 -0
  234. package/dist/es/framer-motion/dist/es/utils/memo.mjs +10 -0
  235. package/dist/es/framer-motion/dist/es/utils/mix/color.mjs +47 -0
  236. package/dist/es/framer-motion/dist/es/utils/mix/complex.mjs +94 -0
  237. package/dist/es/framer-motion/dist/es/utils/mix/immediate.mjs +5 -0
  238. package/dist/es/framer-motion/dist/es/utils/mix/index.mjs +14 -0
  239. package/dist/es/framer-motion/dist/es/utils/mix/number.mjs +26 -0
  240. package/dist/es/framer-motion/dist/es/utils/mix/visibility.mjs +16 -0
  241. package/dist/es/framer-motion/dist/es/utils/noop.mjs +3 -0
  242. package/dist/es/framer-motion/dist/es/utils/offsets/default.mjs +9 -0
  243. package/dist/es/framer-motion/dist/es/utils/offsets/fill.mjs +12 -0
  244. package/dist/es/framer-motion/dist/es/utils/offsets/time.mjs +5 -0
  245. package/dist/es/framer-motion/dist/es/utils/pipe.mjs +11 -0
  246. package/dist/es/framer-motion/dist/es/utils/progress.mjs +18 -0
  247. package/dist/es/framer-motion/dist/es/utils/reduced-motion/index.mjs +19 -0
  248. package/dist/es/framer-motion/dist/es/utils/reduced-motion/state.mjs +5 -0
  249. package/dist/es/framer-motion/dist/es/utils/resolve-value.mjs +11 -0
  250. package/dist/es/framer-motion/dist/es/utils/shallow-compare.mjs +14 -0
  251. package/dist/es/framer-motion/dist/es/utils/subscription-manager.mjs +40 -0
  252. package/dist/es/framer-motion/dist/es/utils/time-conversion.mjs +10 -0
  253. package/dist/es/framer-motion/dist/es/utils/transform.mjs +21 -0
  254. package/dist/es/framer-motion/dist/es/utils/use-constant.mjs +18 -0
  255. package/dist/es/framer-motion/dist/es/utils/use-isomorphic-effect.mjs +6 -0
  256. package/dist/es/framer-motion/dist/es/utils/velocity-per-second.mjs +11 -0
  257. package/dist/es/framer-motion/dist/es/utils/warn-once.mjs +11 -0
  258. package/dist/es/framer-motion/dist/es/utils/wrap.mjs +6 -0
  259. package/dist/es/framer-motion/dist/es/value/index.mjs +313 -0
  260. package/dist/es/framer-motion/dist/es/value/types/color/hex.mjs +40 -0
  261. package/dist/es/framer-motion/dist/es/value/types/color/hsla.mjs +22 -0
  262. package/dist/es/framer-motion/dist/es/value/types/color/index.mjs +27 -0
  263. package/dist/es/framer-motion/dist/es/value/types/color/rgba.mjs +25 -0
  264. package/dist/es/framer-motion/dist/es/value/types/color/utils.mjs +29 -0
  265. package/dist/es/framer-motion/dist/es/value/types/complex/filter.mjs +30 -0
  266. package/dist/es/framer-motion/dist/es/value/types/complex/index.mjs +92 -0
  267. package/dist/es/framer-motion/dist/es/value/types/numbers/index.mjs +17 -0
  268. package/dist/es/framer-motion/dist/es/value/types/numbers/units.mjs +17 -0
  269. package/dist/es/framer-motion/dist/es/value/types/utils/color-regex.mjs +3 -0
  270. package/dist/es/framer-motion/dist/es/value/types/utils/float-regex.mjs +3 -0
  271. package/dist/es/framer-motion/dist/es/value/types/utils/is-nullish.mjs +5 -0
  272. package/dist/es/framer-motion/dist/es/value/types/utils/sanitize.mjs +5 -0
  273. package/dist/es/framer-motion/dist/es/value/types/utils/single-color-regex.mjs +3 -0
  274. package/dist/es/framer-motion/dist/es/value/use-will-change/add-will-change.mjs +14 -0
  275. package/dist/es/framer-motion/dist/es/value/use-will-change/is.mjs +7 -0
  276. package/dist/es/framer-motion/dist/es/value/utils/is-motion-value.mjs +3 -0
  277. package/dist/es/framer-motion/dist/es/value/utils/resolve-motion-value.mjs +16 -0
  278. package/dist/es/motion/lib/index.mjs +30 -0
  279. package/dist/es/motion/lib/react-client.mjs +3 -0
  280. package/dist/es/motion/lib/react-m.mjs +3 -0
  281. package/dist/index.d.ts +1 -0
  282. package/dist/motion.dev.js +6121 -0
  283. package/dist/motion.js +1 -0
  284. package/dist/react-client.d.ts +1 -0
  285. package/dist/react-m.d.ts +1 -0
  286. package/lib/index.js +1 -3
  287. package/lib/index.js.map +1 -1
  288. package/lib/react-client.js +3 -0
  289. package/lib/react-client.js.map +1 -0
  290. package/lib/react-m.js +3 -0
  291. package/lib/react-m.js.map +1 -0
  292. package/lib/react.js +3 -0
  293. package/lib/react.js.map +1 -0
  294. package/package.json +79 -29
  295. package/react/package.json +6 -0
  296. package/react-client/package.json +6 -0
  297. package/react-m/package.json +6 -0
  298. package/rollup.config.mjs +174 -0
  299. package/src/index.ts +1 -0
  300. package/src/react-client.ts +3 -0
  301. package/src/react-m.ts +3 -0
  302. package/src/react.ts +3 -0
  303. package/tsconfig.json +25 -0
  304. package/types/index.d.ts +1 -4
  305. package/types/react-client.d.ts +1 -0
  306. package/types/react-m.d.ts +1 -0
  307. package/types/react.d.ts +1 -0
  308. package/CHANGELOG.md +0 -378
  309. package/dist/animate.cjs.js +0 -22
  310. package/dist/animate.es.js +0 -19
  311. package/dist/main.cjs.js +0 -21
  312. package/dist/main.es.js +0 -3
  313. package/dist/motion.min.js +0 -1
  314. package/dist/motion.umd.js +0 -2364
  315. package/dist/size-index.js +0 -1
  316. package/lib/animate.js +0 -17
  317. package/lib/animate.js.map +0 -1
  318. package/types/animate.d.ts +0 -6
  319. package/types/animate.d.ts.map +0 -1
  320. package/types/index.d.ts.map +0 -1
@@ -0,0 +1,42 @@
1
+ import { invariant } from '../../../utils/errors.mjs';
2
+ import { isNumericalString } from '../../../utils/is-numerical-string.mjs';
3
+ import { isCSSVariableToken } from './is-css-variable.mjs';
4
+
5
+ /**
6
+ * Parse Framer's special CSS variable format into a CSS token and a fallback.
7
+ *
8
+ * ```
9
+ * `var(--foo, #fff)` => [`--foo`, '#fff']
10
+ * ```
11
+ *
12
+ * @param current
13
+ */
14
+ const splitCSSVariableRegex =
15
+ // eslint-disable-next-line redos-detector/no-unsafe-regex -- false positive, as it can match a lot of words
16
+ /^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;
17
+ function parseCSSVariable(current) {
18
+ const match = splitCSSVariableRegex.exec(current);
19
+ if (!match)
20
+ return [,];
21
+ const [, token1, token2, fallback] = match;
22
+ return [`--${token1 !== null && token1 !== void 0 ? token1 : token2}`, fallback];
23
+ }
24
+ const maxDepth = 4;
25
+ function getVariableValue(current, element, depth = 1) {
26
+ invariant(depth <= maxDepth, `Max CSS variable fallback depth detected in property "${current}". This may indicate a circular fallback dependency.`);
27
+ const [token, fallback] = parseCSSVariable(current);
28
+ // No CSS variable detected
29
+ if (!token)
30
+ return;
31
+ // Attempt to read this CSS variable off the element
32
+ const resolved = window.getComputedStyle(element).getPropertyValue(token);
33
+ if (resolved) {
34
+ const trimmed = resolved.trim();
35
+ return isNumericalString(trimmed) ? parseFloat(trimmed) : trimmed;
36
+ }
37
+ return isCSSVariableToken(fallback)
38
+ ? getVariableValue(fallback, element, depth + 1)
39
+ : fallback;
40
+ }
41
+
42
+ export { getVariableValue, parseCSSVariable };
@@ -0,0 +1,59 @@
1
+ import { isValidMotionProp } from '../../../motion/utils/valid-prop.mjs';
2
+
3
+ let shouldForward = (key) => !isValidMotionProp(key);
4
+ function loadExternalIsValidProp(isValidProp) {
5
+ if (!isValidProp)
6
+ return;
7
+ // Explicitly filter our events
8
+ shouldForward = (key) => key.startsWith("on") ? !isValidMotionProp(key) : isValidProp(key);
9
+ }
10
+ /**
11
+ * Emotion and Styled Components both allow users to pass through arbitrary props to their components
12
+ * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which
13
+ * of these should be passed to the underlying DOM node.
14
+ *
15
+ * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props
16
+ * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props
17
+ * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of
18
+ * `@emotion/is-prop-valid`, however to fix this problem we need to use it.
19
+ *
20
+ * By making it an optionalDependency we can offer this functionality only in the situations where it's
21
+ * actually required.
22
+ */
23
+ try {
24
+ /**
25
+ * We attempt to import this package but require won't be defined in esm environments, in that case
26
+ * isPropValid will have to be provided via `MotionContext`. In a 6.0.0 this should probably be removed
27
+ * in favour of explicit injection.
28
+ */
29
+ loadExternalIsValidProp(require("@emotion/is-prop-valid").default);
30
+ }
31
+ catch (_a) {
32
+ // We don't need to actually do anything here - the fallback is the existing `isPropValid`.
33
+ }
34
+ function filterProps(props, isDom, forwardMotionProps) {
35
+ const filteredProps = {};
36
+ for (const key in props) {
37
+ /**
38
+ * values is considered a valid prop by Emotion, so if it's present
39
+ * this will be rendered out to the DOM unless explicitly filtered.
40
+ *
41
+ * We check the type as it could be used with the `feColorMatrix`
42
+ * element, which we support.
43
+ */
44
+ if (key === "values" && typeof props.values === "object")
45
+ continue;
46
+ if (shouldForward(key) ||
47
+ (forwardMotionProps === true && isValidMotionProp(key)) ||
48
+ (!isDom && !isValidMotionProp(key)) ||
49
+ // If trying to use native HTML drag events, forward drag listeners
50
+ (props["draggable"] &&
51
+ key.startsWith("onDrag"))) {
52
+ filteredProps[key] =
53
+ props[key];
54
+ }
55
+ }
56
+ return filteredProps;
57
+ }
58
+
59
+ export { filterProps, loadExternalIsValidProp };
@@ -0,0 +1,15 @@
1
+ const checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
2
+ const isCSSVariableName =
3
+ /*@__PURE__*/ checkStringStartsWith("--");
4
+ const startsAsVariableToken =
5
+ /*@__PURE__*/ checkStringStartsWith("var(--");
6
+ const isCSSVariableToken = (value) => {
7
+ const startsWithToken = startsAsVariableToken(value);
8
+ if (!startsWithToken)
9
+ return false;
10
+ // Ensure any comments are stripped from the value as this can harm performance of the regex.
11
+ return singleCssVariableRegex.test(value.split("/*")[0].trim());
12
+ };
13
+ const singleCssVariableRegex = /var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;
14
+
15
+ export { isCSSVariableName, isCSSVariableToken };
@@ -0,0 +1,30 @@
1
+ import { lowercaseSVGElements } from '../../svg/lowercase-elements.mjs';
2
+
3
+ function isSVGComponent(Component) {
4
+ if (
5
+ /**
6
+ * If it's not a string, it's a custom React component. Currently we only support
7
+ * HTML custom React components.
8
+ */
9
+ typeof Component !== "string" ||
10
+ /**
11
+ * If it contains a dash, the element is a custom HTML webcomponent.
12
+ */
13
+ Component.includes("-")) {
14
+ return false;
15
+ }
16
+ else if (
17
+ /**
18
+ * If it's in our list of lowercase SVG tags, it's an SVG component
19
+ */
20
+ lowercaseSVGElements.indexOf(Component) > -1 ||
21
+ /**
22
+ * If it contains a capital letter, it's an SVG component
23
+ */
24
+ /[A-Z]/u.test(Component)) {
25
+ return true;
26
+ }
27
+ return false;
28
+ }
29
+
30
+ export { isSVGComponent };
@@ -0,0 +1,5 @@
1
+ function isSVGElement(element) {
2
+ return element instanceof SVGElement && element.tagName !== "svg";
3
+ }
4
+
5
+ export { isSVGElement };
@@ -0,0 +1,28 @@
1
+ import { invariant } from '../../../utils/errors.mjs';
2
+
3
+ function resolveElements(elements, scope, selectorCache) {
4
+ var _a;
5
+ if (typeof elements === "string") {
6
+ let root = document;
7
+ if (scope) {
8
+ invariant(Boolean(scope.current), "Scope provided, but no element detected.");
9
+ root = scope.current;
10
+ }
11
+ if (selectorCache) {
12
+ (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : (selectorCache[elements] = root.querySelectorAll(elements));
13
+ elements = selectorCache[elements];
14
+ }
15
+ else {
16
+ elements = root.querySelectorAll(elements);
17
+ }
18
+ }
19
+ else if (elements instanceof Element) {
20
+ elements = [elements];
21
+ }
22
+ /**
23
+ * Return an empty array
24
+ */
25
+ return Array.from(elements || []);
26
+ }
27
+
28
+ export { resolveElements };
@@ -0,0 +1,65 @@
1
+ import { transformPropOrder } from '../../html/utils/transform.mjs';
2
+ import { number } from '../../../value/types/numbers/index.mjs';
3
+ import { px } from '../../../value/types/numbers/units.mjs';
4
+
5
+ const positionalKeys = new Set([
6
+ "width",
7
+ "height",
8
+ "top",
9
+ "left",
10
+ "right",
11
+ "bottom",
12
+ "x",
13
+ "y",
14
+ "translateX",
15
+ "translateY",
16
+ ]);
17
+ const isNumOrPxType = (v) => v === number || v === px;
18
+ const getPosFromMatrix = (matrix, pos) => parseFloat(matrix.split(", ")[pos]);
19
+ const getTranslateFromMatrix = (pos2, pos3) => (_bbox, { transform }) => {
20
+ if (transform === "none" || !transform)
21
+ return 0;
22
+ const matrix3d = transform.match(/^matrix3d\((.+)\)$/u);
23
+ if (matrix3d) {
24
+ return getPosFromMatrix(matrix3d[1], pos3);
25
+ }
26
+ else {
27
+ const matrix = transform.match(/^matrix\((.+)\)$/u);
28
+ if (matrix) {
29
+ return getPosFromMatrix(matrix[1], pos2);
30
+ }
31
+ else {
32
+ return 0;
33
+ }
34
+ }
35
+ };
36
+ const transformKeys = new Set(["x", "y", "z"]);
37
+ const nonTranslationalTransformKeys = transformPropOrder.filter((key) => !transformKeys.has(key));
38
+ function removeNonTranslationalTransform(visualElement) {
39
+ const removedTransforms = [];
40
+ nonTranslationalTransformKeys.forEach((key) => {
41
+ const value = visualElement.getValue(key);
42
+ if (value !== undefined) {
43
+ removedTransforms.push([key, value.get()]);
44
+ value.set(key.startsWith("scale") ? 1 : 0);
45
+ }
46
+ });
47
+ return removedTransforms;
48
+ }
49
+ const positionalValues = {
50
+ // Dimensions
51
+ width: ({ x }, { paddingLeft = "0", paddingRight = "0" }) => x.max - x.min - parseFloat(paddingLeft) - parseFloat(paddingRight),
52
+ height: ({ y }, { paddingTop = "0", paddingBottom = "0" }) => y.max - y.min - parseFloat(paddingTop) - parseFloat(paddingBottom),
53
+ top: (_bbox, { top }) => parseFloat(top),
54
+ left: (_bbox, { left }) => parseFloat(left),
55
+ bottom: ({ y }, { top }) => parseFloat(top) + (y.max - y.min),
56
+ right: ({ x }, { left }) => parseFloat(left) + (x.max - x.min),
57
+ // Transform
58
+ x: getTranslateFromMatrix(4, 13),
59
+ y: getTranslateFromMatrix(5, 14),
60
+ };
61
+ // Alias translate longform names
62
+ positionalValues.translateX = positionalValues.x;
63
+ positionalValues.translateY = positionalValues.y;
64
+
65
+ export { isNumOrPxType, positionalKeys, positionalValues, removeNonTranslationalTransform };
@@ -0,0 +1,15 @@
1
+ import { complex } from '../../../value/types/complex/index.mjs';
2
+ import { filter } from '../../../value/types/complex/filter.mjs';
3
+ import { getDefaultValueType } from './defaults.mjs';
4
+
5
+ function getAnimatableNone(key, value) {
6
+ let defaultValueType = getDefaultValueType(key);
7
+ if (defaultValueType !== filter)
8
+ defaultValueType = complex;
9
+ // If value is not recognised as animatable, ie "none", create an animatable version origin based on the target
10
+ return defaultValueType.getAnimatableNone
11
+ ? defaultValueType.getAnimatableNone(value)
12
+ : undefined;
13
+ }
14
+
15
+ export { getAnimatableNone };
@@ -0,0 +1,30 @@
1
+ import { color } from '../../../value/types/color/index.mjs';
2
+ import { filter } from '../../../value/types/complex/filter.mjs';
3
+ import { numberValueTypes } from './number.mjs';
4
+
5
+ /**
6
+ * A map of default value types for common values
7
+ */
8
+ const defaultValueTypes = {
9
+ ...numberValueTypes,
10
+ // Color props
11
+ color,
12
+ backgroundColor: color,
13
+ outlineColor: color,
14
+ fill: color,
15
+ stroke: color,
16
+ // Border props
17
+ borderColor: color,
18
+ borderTopColor: color,
19
+ borderRightColor: color,
20
+ borderBottomColor: color,
21
+ borderLeftColor: color,
22
+ filter,
23
+ WebkitFilter: filter,
24
+ };
25
+ /**
26
+ * Gets the default ValueType for the provided value key
27
+ */
28
+ const getDefaultValueType = (key) => defaultValueTypes[key];
29
+
30
+ export { defaultValueTypes, getDefaultValueType };
@@ -0,0 +1,15 @@
1
+ import { number } from '../../../value/types/numbers/index.mjs';
2
+ import { px, percent, degrees, vw, vh } from '../../../value/types/numbers/units.mjs';
3
+ import { testValueType } from './test.mjs';
4
+ import { auto } from './type-auto.mjs';
5
+
6
+ /**
7
+ * A list of value types commonly used for dimensions
8
+ */
9
+ const dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];
10
+ /**
11
+ * Tests a dimensional value against the list of dimension ValueTypes
12
+ */
13
+ const findDimensionValueType = (v) => dimensionValueTypes.find(testValueType(v));
14
+
15
+ export { dimensionValueTypes, findDimensionValueType };
@@ -0,0 +1,15 @@
1
+ import { color } from '../../../value/types/color/index.mjs';
2
+ import { complex } from '../../../value/types/complex/index.mjs';
3
+ import { dimensionValueTypes } from './dimensions.mjs';
4
+ import { testValueType } from './test.mjs';
5
+
6
+ /**
7
+ * A list of all ValueTypes
8
+ */
9
+ const valueTypes = [...dimensionValueTypes, color, complex];
10
+ /**
11
+ * Tests a value against the list of ValueTypes
12
+ */
13
+ const findValueType = (v) => valueTypes.find(testValueType(v));
14
+
15
+ export { findValueType };
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Provided a value and a ValueType, returns the value as that value type.
3
+ */
4
+ const getValueAsType = (value, type) => {
5
+ return type && typeof value === "number"
6
+ ? type.transform(value)
7
+ : value;
8
+ };
9
+
10
+ export { getValueAsType };
@@ -0,0 +1,41 @@
1
+ import { px } from '../../../value/types/numbers/units.mjs';
2
+
3
+ const browserNumberValueTypes = {
4
+ // Border props
5
+ borderWidth: px,
6
+ borderTopWidth: px,
7
+ borderRightWidth: px,
8
+ borderBottomWidth: px,
9
+ borderLeftWidth: px,
10
+ borderRadius: px,
11
+ radius: px,
12
+ borderTopLeftRadius: px,
13
+ borderTopRightRadius: px,
14
+ borderBottomRightRadius: px,
15
+ borderBottomLeftRadius: px,
16
+ // Positioning props
17
+ width: px,
18
+ maxWidth: px,
19
+ height: px,
20
+ maxHeight: px,
21
+ top: px,
22
+ right: px,
23
+ bottom: px,
24
+ left: px,
25
+ // Spacing props
26
+ padding: px,
27
+ paddingTop: px,
28
+ paddingRight: px,
29
+ paddingBottom: px,
30
+ paddingLeft: px,
31
+ margin: px,
32
+ marginTop: px,
33
+ marginRight: px,
34
+ marginBottom: px,
35
+ marginLeft: px,
36
+ // Misc
37
+ backgroundPositionX: px,
38
+ backgroundPositionY: px,
39
+ };
40
+
41
+ export { browserNumberValueTypes };
@@ -0,0 +1,18 @@
1
+ import { alpha } from '../../../value/types/numbers/index.mjs';
2
+ import { px } from '../../../value/types/numbers/units.mjs';
3
+ import { browserNumberValueTypes } from './number-browser.mjs';
4
+ import { transformValueTypes } from './transform.mjs';
5
+ import { int } from './type-int.mjs';
6
+
7
+ const numberValueTypes = {
8
+ ...browserNumberValueTypes,
9
+ ...transformValueTypes,
10
+ zIndex: int,
11
+ size: px,
12
+ // SVG
13
+ fillOpacity: alpha,
14
+ strokeOpacity: alpha,
15
+ numOctaves: int,
16
+ };
17
+
18
+ export { numberValueTypes };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Tests a provided value against a ValueType
3
+ */
4
+ const testValueType = (v) => (type) => type.test(v);
5
+
6
+ export { testValueType };
@@ -0,0 +1,31 @@
1
+ import { scale, alpha } from '../../../value/types/numbers/index.mjs';
2
+ import { degrees, px, progressPercentage } from '../../../value/types/numbers/units.mjs';
3
+
4
+ const transformValueTypes = {
5
+ rotate: degrees,
6
+ rotateX: degrees,
7
+ rotateY: degrees,
8
+ rotateZ: degrees,
9
+ scale,
10
+ scaleX: scale,
11
+ scaleY: scale,
12
+ scaleZ: scale,
13
+ skew: degrees,
14
+ skewX: degrees,
15
+ skewY: degrees,
16
+ distance: px,
17
+ translateX: px,
18
+ translateY: px,
19
+ translateZ: px,
20
+ x: px,
21
+ y: px,
22
+ z: px,
23
+ perspective: px,
24
+ transformPerspective: px,
25
+ opacity: alpha,
26
+ originX: progressPercentage,
27
+ originY: progressPercentage,
28
+ originZ: px,
29
+ };
30
+
31
+ export { transformValueTypes };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * ValueType for "auto"
3
+ */
4
+ const auto = {
5
+ test: (v) => v === "auto",
6
+ parse: (v) => v,
7
+ };
8
+
9
+ export { auto };
@@ -0,0 +1,8 @@
1
+ import { number } from '../../../value/types/numbers/index.mjs';
2
+
3
+ const int = {
4
+ ...number,
5
+ transform: Math.round,
6
+ };
7
+
8
+ export { int };
@@ -0,0 +1,43 @@
1
+ import { resolveElements } from '../utils/resolve-element.mjs';
2
+
3
+ const thresholds = {
4
+ some: 0,
5
+ all: 1,
6
+ };
7
+ function inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = "some" } = {}) {
8
+ const elements = resolveElements(elementOrSelector);
9
+ const activeIntersections = new WeakMap();
10
+ const onIntersectionChange = (entries) => {
11
+ entries.forEach((entry) => {
12
+ const onEnd = activeIntersections.get(entry.target);
13
+ /**
14
+ * If there's no change to the intersection, we don't need to
15
+ * do anything here.
16
+ */
17
+ if (entry.isIntersecting === Boolean(onEnd))
18
+ return;
19
+ if (entry.isIntersecting) {
20
+ const newOnEnd = onStart(entry);
21
+ if (typeof newOnEnd === "function") {
22
+ activeIntersections.set(entry.target, newOnEnd);
23
+ }
24
+ else {
25
+ observer.unobserve(entry.target);
26
+ }
27
+ }
28
+ else if (onEnd) {
29
+ onEnd(entry);
30
+ activeIntersections.delete(entry.target);
31
+ }
32
+ });
33
+ };
34
+ const observer = new IntersectionObserver(onIntersectionChange, {
35
+ root,
36
+ rootMargin,
37
+ threshold: typeof amount === "number" ? amount : thresholds[amount],
38
+ });
39
+ elements.forEach((element) => observer.observe(element));
40
+ return () => observer.disconnect();
41
+ }
42
+
43
+ export { inView };
@@ -0,0 +1,57 @@
1
+ import { buildHTMLStyles } from './utils/build-styles.mjs';
2
+ import { isCSSVariableName } from '../dom/utils/is-css-variable.mjs';
3
+ import { transformProps } from './utils/transform.mjs';
4
+ import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';
5
+ import { renderHTML } from './utils/render.mjs';
6
+ import { getDefaultValueType } from '../dom/value-types/defaults.mjs';
7
+ import { measureViewportBox } from '../../projection/utils/measure.mjs';
8
+ import { DOMVisualElement } from '../dom/DOMVisualElement.mjs';
9
+ import { isMotionValue } from '../../value/utils/is-motion-value.mjs';
10
+
11
+ function getComputedStyle(element) {
12
+ return window.getComputedStyle(element);
13
+ }
14
+ class HTMLVisualElement extends DOMVisualElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.type = "html";
18
+ this.renderInstance = renderHTML;
19
+ }
20
+ readValueFromInstance(instance, key) {
21
+ if (transformProps.has(key)) {
22
+ const defaultType = getDefaultValueType(key);
23
+ return defaultType ? defaultType.default || 0 : 0;
24
+ }
25
+ else {
26
+ const computedStyle = getComputedStyle(instance);
27
+ const value = (isCSSVariableName(key)
28
+ ? computedStyle.getPropertyValue(key)
29
+ : computedStyle[key]) || 0;
30
+ return typeof value === "string" ? value.trim() : value;
31
+ }
32
+ }
33
+ measureInstanceViewportBox(instance, { transformPagePoint }) {
34
+ return measureViewportBox(instance, transformPagePoint);
35
+ }
36
+ build(renderState, latestValues, props) {
37
+ buildHTMLStyles(renderState, latestValues, props.transformTemplate);
38
+ }
39
+ scrapeMotionValuesFromProps(props, prevProps, visualElement) {
40
+ return scrapeMotionValuesFromProps(props, prevProps, visualElement);
41
+ }
42
+ handleChildMotionValue() {
43
+ if (this.childSubscription) {
44
+ this.childSubscription();
45
+ delete this.childSubscription;
46
+ }
47
+ const { children } = this.props;
48
+ if (isMotionValue(children)) {
49
+ this.childSubscription = children.on("change", (latest) => {
50
+ if (this.current)
51
+ this.current.textContent = `${latest}`;
52
+ });
53
+ }
54
+ }
55
+ }
56
+
57
+ export { HTMLVisualElement, getComputedStyle };
@@ -0,0 +1,12 @@
1
+ import { makeUseVisualState } from '../../motion/utils/use-visual-state.mjs';
2
+ import { scrapeMotionValuesFromProps } from './utils/scrape-motion-values.mjs';
3
+ import { createHtmlRenderState } from './utils/create-render-state.mjs';
4
+
5
+ const htmlMotionConfig = {
6
+ useVisualState: makeUseVisualState({
7
+ scrapeMotionValuesFromProps,
8
+ createRenderState: createHtmlRenderState,
9
+ }),
10
+ };
11
+
12
+ export { htmlMotionConfig };
@@ -0,0 +1,57 @@
1
+ import { useMemo } from 'react';
2
+ import { isForcedMotionValue } from '../../motion/utils/is-forced-motion-value.mjs';
3
+ import { isMotionValue } from '../../value/utils/is-motion-value.mjs';
4
+ import { buildHTMLStyles } from './utils/build-styles.mjs';
5
+ import { createHtmlRenderState } from './utils/create-render-state.mjs';
6
+
7
+ function copyRawValuesOnly(target, source, props) {
8
+ for (const key in source) {
9
+ if (!isMotionValue(source[key]) && !isForcedMotionValue(key, props)) {
10
+ target[key] = source[key];
11
+ }
12
+ }
13
+ }
14
+ function useInitialMotionValues({ transformTemplate }, visualState) {
15
+ return useMemo(() => {
16
+ const state = createHtmlRenderState();
17
+ buildHTMLStyles(state, visualState, transformTemplate);
18
+ return Object.assign({}, state.vars, state.style);
19
+ }, [visualState]);
20
+ }
21
+ function useStyle(props, visualState) {
22
+ const styleProp = props.style || {};
23
+ const style = {};
24
+ /**
25
+ * Copy non-Motion Values straight into style
26
+ */
27
+ copyRawValuesOnly(style, styleProp, props);
28
+ Object.assign(style, useInitialMotionValues(props, visualState));
29
+ return style;
30
+ }
31
+ function useHTMLProps(props, visualState) {
32
+ // The `any` isn't ideal but it is the type of createElement props argument
33
+ const htmlProps = {};
34
+ const style = useStyle(props, visualState);
35
+ if (props.drag && props.dragListener !== false) {
36
+ // Disable the ghost element when a user drags
37
+ htmlProps.draggable = false;
38
+ // Disable text selection
39
+ style.userSelect =
40
+ style.WebkitUserSelect =
41
+ style.WebkitTouchCallout =
42
+ "none";
43
+ // Disable scrolling on the draggable direction
44
+ style.touchAction =
45
+ props.drag === true
46
+ ? "none"
47
+ : `pan-${props.drag === "x" ? "y" : "x"}`;
48
+ }
49
+ if (props.tabIndex === undefined &&
50
+ (props.onTap || props.onTapStart || props.whileTap)) {
51
+ htmlProps.tabIndex = 0;
52
+ }
53
+ htmlProps.style = style;
54
+ return htmlProps;
55
+ }
56
+
57
+ export { copyRawValuesOnly, useHTMLProps };