motion 12.7.4 → 12.7.5-alpha.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 (173) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/debug.js +22 -14
  3. package/dist/cjs/index.js +4113 -3624
  4. package/dist/cjs/mini.js +403 -324
  5. package/dist/cjs/react-client.js +3151 -3245
  6. package/dist/cjs/react-m.js +169 -166
  7. package/dist/cjs/react-mini.js +330 -251
  8. package/dist/es/framer-motion/dist/es/animation/animate/sequence.mjs +1 -1
  9. package/dist/es/framer-motion/dist/es/animation/animators/waapi/animate-elements.mjs +81 -9
  10. package/dist/es/framer-motion/dist/es/animation/interfaces/motion-value.mjs +11 -30
  11. package/dist/es/framer-motion/dist/es/animation/interfaces/visual-element-target.mjs +1 -1
  12. package/dist/es/framer-motion/dist/es/animation/optimized-appear/store-id.mjs +1 -1
  13. package/dist/es/framer-motion/dist/es/animation/sequence/create.mjs +3 -3
  14. package/dist/es/framer-motion/dist/es/animation/sequence/utils/edit.mjs +2 -2
  15. package/dist/es/framer-motion/dist/es/animation/utils/default-transitions.mjs +1 -1
  16. package/dist/es/framer-motion/dist/es/animation/utils/stagger.mjs +1 -1
  17. package/dist/es/framer-motion/dist/es/components/Reorder/utils/check-reorder.mjs +1 -1
  18. package/dist/es/framer-motion/dist/es/gestures/drag/VisualElementDragControls.mjs +2 -2
  19. package/dist/es/framer-motion/dist/es/gestures/drag/utils/constraints.mjs +2 -2
  20. package/dist/es/framer-motion/dist/es/gestures/focus.mjs +1 -1
  21. package/dist/es/framer-motion/dist/es/gestures/pan/PanSession.mjs +1 -1
  22. package/dist/es/framer-motion/dist/es/motion/utils/is-forced-motion-value.mjs +1 -1
  23. package/dist/es/framer-motion/dist/es/projection/animation/mix-values.mjs +3 -3
  24. package/dist/es/framer-motion/dist/es/projection/geometry/delta-apply.mjs +1 -1
  25. package/dist/es/framer-motion/dist/es/projection/geometry/delta-calc.mjs +1 -1
  26. package/dist/es/framer-motion/dist/es/projection/geometry/delta-remove.mjs +2 -2
  27. package/dist/es/framer-motion/dist/es/projection/node/create-projection-node.mjs +3 -5
  28. package/dist/es/framer-motion/dist/es/projection/styles/scale-border-radius.mjs +1 -1
  29. package/dist/es/framer-motion/dist/es/projection/styles/scale-box-shadow.mjs +2 -2
  30. package/dist/es/framer-motion/dist/es/projection/styles/scale-correction.mjs +1 -1
  31. package/dist/es/framer-motion/dist/es/render/VisualElement.mjs +7 -7
  32. package/dist/es/framer-motion/dist/es/render/dom/DOMVisualElement.mjs +1 -1
  33. package/dist/es/framer-motion/dist/es/render/dom/scroll/attach-animation.mjs +17 -0
  34. package/dist/es/framer-motion/dist/es/render/dom/scroll/attach-function.mjs +23 -0
  35. package/dist/es/framer-motion/dist/es/render/dom/scroll/index.mjs +6 -82
  36. package/dist/es/framer-motion/dist/es/render/dom/scroll/offsets/index.mjs +3 -3
  37. package/dist/es/framer-motion/dist/es/render/dom/scroll/utils/get-timeline.mjs +29 -0
  38. package/dist/es/framer-motion/dist/es/render/html/HTMLVisualElement.mjs +3 -3
  39. package/dist/es/framer-motion/dist/es/render/html/utils/build-styles.mjs +4 -4
  40. package/dist/es/framer-motion/dist/es/render/html/utils/build-transform.mjs +3 -3
  41. package/dist/es/framer-motion/dist/es/render/svg/SVGVisualElement.mjs +2 -2
  42. package/dist/es/framer-motion/dist/es/render/svg/config-motion.mjs +1 -1
  43. package/dist/es/framer-motion/dist/es/render/svg/utils/path.mjs +1 -1
  44. package/dist/es/framer-motion/dist/es/render/svg/utils/scrape-motion-values.mjs +1 -1
  45. package/dist/es/framer-motion/dist/es/render/svg/utils/transform-origin.mjs +1 -1
  46. package/dist/es/framer-motion/dist/es/render/utils/motion-values.mjs +1 -1
  47. package/dist/es/framer-motion/dist/es/utils/delay.mjs +1 -1
  48. package/dist/es/framer-motion/dist/es/utils/transform.mjs +1 -1
  49. package/dist/es/framer-motion/dist/es/utils/use-cycle.mjs +1 -1
  50. package/dist/es/framer-motion/dist/es/utils/use-instant-transition.mjs +4 -4
  51. package/dist/es/framer-motion/dist/es/value/use-spring.mjs +2 -2
  52. package/dist/es/framer-motion/dist/es/value/use-will-change/get-will-change-name.mjs +2 -2
  53. package/dist/es/motion/lib/index.mjs +109 -26
  54. package/dist/es/motion/lib/react.mjs +108 -32
  55. package/dist/es/motion-dom/dist/es/animation/AsyncMotionValueAnimation.mjs +179 -0
  56. package/dist/es/motion-dom/dist/es/animation/GroupAnimation.mjs +6 -15
  57. package/dist/es/{framer-motion/dist/es/animation/animators/MainThreadAnimation.mjs → motion-dom/dist/es/animation/JSAnimation.mjs} +108 -156
  58. package/dist/es/motion-dom/dist/es/animation/NativeAnimation.mjs +64 -67
  59. package/dist/es/motion-dom/dist/es/animation/NativeAnimationExtended.mjs +65 -0
  60. package/dist/es/motion-dom/dist/es/animation/NativeAnimationWrapper.mjs +14 -0
  61. package/dist/es/{framer-motion/dist/es/animation/animators → motion-dom/dist/es/animation}/drivers/driver-frameloop.mjs +2 -2
  62. package/dist/es/{framer-motion → motion-dom}/dist/es/animation/generators/keyframes.mjs +5 -5
  63. package/dist/es/{framer-motion → motion-dom}/dist/es/animation/generators/spring/find.mjs +1 -1
  64. package/dist/es/{framer-motion → motion-dom}/dist/es/animation/generators/spring/index.mjs +5 -6
  65. package/dist/es/{framer-motion/dist/es/render/dom → motion-dom/dist/es/animation/keyframes}/DOMKeyframesResolver.mjs +9 -8
  66. package/dist/es/{framer-motion/dist/es/render/utils → motion-dom/dist/es/animation/keyframes}/KeyframesResolver.mjs +28 -35
  67. package/dist/es/motion-dom/dist/es/animation/keyframes/get-final.mjs +3 -4
  68. package/dist/es/{framer-motion/dist/es/utils → motion-dom/dist/es/animation/keyframes}/offsets/fill.mjs +2 -2
  69. package/dist/es/motion-dom/dist/es/animation/keyframes/utils/apply-px-defaults.mjs +11 -0
  70. package/dist/es/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.mjs +7 -0
  71. package/dist/es/{framer-motion/dist/es/animation → motion-dom/dist/es/animation/keyframes}/utils/is-none.mjs +1 -1
  72. package/dist/es/{framer-motion/dist/es/render/html → motion-dom/dist/es/animation/keyframes}/utils/make-none-animatable.mjs +1 -1
  73. package/dist/es/{framer-motion/dist/es/render/dom → motion-dom/dist/es/animation/keyframes}/utils/unit-conversion.mjs +2 -2
  74. package/dist/es/motion-dom/dist/es/animation/utils/WithPromise.mjs +28 -0
  75. package/dist/es/motion-dom/dist/es/animation/utils/active-animations.mjs +9 -0
  76. package/dist/es/{framer-motion/dist/es/animation/animators → motion-dom/dist/es/animation}/utils/can-animate.mjs +3 -3
  77. package/dist/es/{framer-motion/dist/es/render/dom → motion-dom/dist/es/animation}/utils/css-variables-conversion.mjs +2 -2
  78. package/dist/es/motion-dom/dist/es/animation/utils/replace-transition-type.mjs +18 -0
  79. package/dist/es/motion-dom/dist/es/animation/waapi/easing/is-supported.mjs +1 -1
  80. package/dist/es/motion-dom/dist/es/animation/waapi/easing/map-easing.mjs +5 -3
  81. package/dist/es/motion-dom/dist/es/animation/waapi/start-waapi-animation.mjs +6 -4
  82. package/dist/es/motion-dom/dist/es/animation/waapi/supports/waapi.mjs +39 -0
  83. package/dist/es/motion-dom/dist/es/animation/waapi/utils/apply-generator.mjs +2 -1
  84. package/dist/es/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.mjs +20 -0
  85. package/dist/es/motion-dom/dist/es/frameloop/batcher.mjs +2 -1
  86. package/dist/es/motion-dom/dist/es/frameloop/order.mjs +1 -0
  87. package/dist/es/motion-dom/dist/es/render/dom/is-css-var.mjs +3 -0
  88. package/dist/es/motion-dom/dist/es/render/dom/style-computed.mjs +10 -0
  89. package/dist/es/motion-dom/dist/es/render/dom/style-set.mjs +9 -0
  90. package/dist/es/{framer-motion/dist/es/render/html → motion-dom/dist/es/render}/utils/keys-transform.mjs +1 -1
  91. package/dist/es/{framer-motion/dist/es/render/dom → motion-dom/dist/es}/scroll/observe.mjs +1 -1
  92. package/dist/es/motion-dom/dist/es/stats/index.mjs +2 -0
  93. package/dist/es/{framer-motion → motion-dom}/dist/es/utils/interpolate.mjs +4 -3
  94. package/dist/es/{framer-motion → motion-dom}/dist/es/utils/mix/color.mjs +3 -3
  95. package/dist/es/{framer-motion → motion-dom}/dist/es/utils/mix/complex.mjs +5 -5
  96. package/dist/es/motion-dom/dist/es/value/index.mjs +3 -1
  97. package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/color/rgba.mjs +2 -2
  98. package/dist/es/{framer-motion/dist/es/render/dom/value-types → motion-dom/dist/es/value/types}/dimensions.mjs +3 -3
  99. package/dist/es/{framer-motion/dist/es/render/dom/value-types/type-int.mjs → motion-dom/dist/es/value/types/int.mjs} +1 -1
  100. package/dist/es/{framer-motion/dist/es/render/dom/value-types → motion-dom/dist/es/value/types/maps}/defaults.mjs +2 -2
  101. package/dist/es/{framer-motion/dist/es/render/dom/value-types/number-browser.mjs → motion-dom/dist/es/value/types/maps/number.mjs} +13 -3
  102. package/dist/es/{framer-motion/dist/es/render/dom/value-types → motion-dom/dist/es/value/types/maps}/transform.mjs +2 -2
  103. package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/numbers/index.mjs +1 -1
  104. package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/numbers/units.mjs +3 -2
  105. package/dist/es/{framer-motion/dist/es/render/dom/value-types → motion-dom/dist/es/value/types/utils}/animatable-none.mjs +4 -4
  106. package/dist/es/{framer-motion/dist/es/render/dom/value-types → motion-dom/dist/es/value/types/utils}/find.mjs +4 -4
  107. package/dist/es/motion-dom/dist/es/view/index.mjs +64 -0
  108. package/dist/es/motion-dom/dist/es/view/queue.mjs +52 -0
  109. package/dist/es/motion-dom/dist/es/view/start.mjs +155 -0
  110. package/dist/es/motion-dom/dist/es/view/utils/choose-layer-type.mjs +11 -0
  111. package/dist/es/motion-dom/dist/es/view/utils/css.mjs +32 -0
  112. package/dist/es/motion-dom/dist/es/view/utils/get-layer-name.mjs +8 -0
  113. package/dist/es/motion-dom/dist/es/view/utils/get-view-animations.mjs +12 -0
  114. package/dist/es/motion-dom/dist/es/view/utils/has-target.mjs +5 -0
  115. package/dist/es/{framer-motion → motion-utils}/dist/es/easing/cubic-bezier.mjs +1 -1
  116. package/dist/es/{framer-motion → motion-utils}/dist/es/easing/steps.mjs +1 -1
  117. package/dist/es/{framer-motion → motion-utils}/dist/es/easing/utils/get-easing-for-segment.mjs +1 -1
  118. package/dist/es/{framer-motion → motion-utils}/dist/es/easing/utils/map.mjs +7 -4
  119. package/dist/es/motion-utils/dist/es/global-config.mjs +1 -4
  120. package/dist/es/motion-utils/dist/es/warn-once.mjs +4 -1
  121. package/dist/motion.dev.js +4108 -3619
  122. package/dist/motion.js +1 -1
  123. package/package.json +3 -3
  124. package/dist/es/framer-motion/dist/es/animation/animators/AcceleratedAnimation.mjs +0 -324
  125. package/dist/es/framer-motion/dist/es/animation/animators/BaseAnimation.mjs +0 -120
  126. package/dist/es/framer-motion/dist/es/animation/animators/waapi/utils/supports-waapi.mjs +0 -5
  127. package/dist/es/framer-motion/dist/es/render/dom/value-types/number.mjs +0 -18
  128. package/dist/es/framer-motion/dist/es/utils/use-instant-transition-state.mjs +0 -5
  129. package/dist/es/motion-dom/dist/es/animation/keyframes/hydrate.mjs +0 -26
  130. package/dist/es/motion-dom/dist/es/animation/waapi/utils/attach-timeline.mjs +0 -6
  131. package/dist/es/motion-dom/dist/es/render/dom/style.mjs +0 -15
  132. /package/dist/es/{framer-motion → motion-dom}/dist/es/animation/generators/inertia.mjs +0 -0
  133. /package/dist/es/{framer-motion → motion-dom}/dist/es/animation/generators/spring/defaults.mjs +0 -0
  134. /package/dist/es/{framer-motion → motion-dom}/dist/es/animation/generators/utils/velocity.mjs +0 -0
  135. /package/dist/es/{framer-motion/dist/es/utils → motion-dom/dist/es/animation/keyframes}/offsets/default.mjs +0 -0
  136. /package/dist/es/{framer-motion/dist/es/utils → motion-dom/dist/es/animation/keyframes}/offsets/time.mjs +0 -0
  137. /package/dist/es/{framer-motion → motion-dom}/dist/es/animation/utils/is-animatable.mjs +0 -0
  138. /package/dist/es/{framer-motion/dist/es/render/dom → motion-dom/dist/es/animation}/utils/is-css-variable.mjs +0 -0
  139. /package/dist/es/{framer-motion/dist/es/animation/animators → motion-dom/dist/es/animation/waapi}/utils/accelerated-values.mjs +0 -0
  140. /package/dist/es/{framer-motion/dist/es/render/html/utils → motion-dom/dist/es/render/dom}/parse-transform.mjs +0 -0
  141. /package/dist/es/{framer-motion/dist/es/render/html → motion-dom/dist/es/render}/utils/keys-position.mjs +0 -0
  142. /package/dist/es/{framer-motion → motion-dom}/dist/es/utils/mix/immediate.mjs +0 -0
  143. /package/dist/es/{framer-motion → motion-dom}/dist/es/utils/mix/index.mjs +0 -0
  144. /package/dist/es/{framer-motion → motion-dom}/dist/es/utils/mix/number.mjs +0 -0
  145. /package/dist/es/{framer-motion → motion-dom}/dist/es/utils/mix/visibility.mjs +0 -0
  146. /package/dist/es/{framer-motion/dist/es/render/dom/value-types/type-auto.mjs → motion-dom/dist/es/value/types/auto.mjs} +0 -0
  147. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/color/hex.mjs +0 -0
  148. /package/dist/es/{framer-motion/dist/es/utils → motion-dom/dist/es/value/types/color}/hsla-to-rgba.mjs +0 -0
  149. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/color/hsla.mjs +0 -0
  150. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/color/index.mjs +0 -0
  151. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/color/utils.mjs +0 -0
  152. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/complex/filter.mjs +0 -0
  153. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/complex/index.mjs +0 -0
  154. /package/dist/es/{framer-motion/dist/es/render/dom/value-types → motion-dom/dist/es/value/types}/test.mjs +0 -0
  155. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/utils/color-regex.mjs +0 -0
  156. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/utils/float-regex.mjs +0 -0
  157. /package/dist/es/{framer-motion/dist/es/render/dom/value-types → motion-dom/dist/es/value/types/utils}/get-as-type.mjs +0 -0
  158. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/utils/is-nullish.mjs +0 -0
  159. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/utils/sanitize.mjs +0 -0
  160. /package/dist/es/{framer-motion → motion-dom}/dist/es/value/types/utils/single-color-regex.mjs +0 -0
  161. /package/dist/es/{framer-motion/dist/es/utils → motion-utils/dist/es}/clamp.mjs +0 -0
  162. /package/dist/es/{framer-motion → motion-utils}/dist/es/easing/anticipate.mjs +0 -0
  163. /package/dist/es/{framer-motion → motion-utils}/dist/es/easing/back.mjs +0 -0
  164. /package/dist/es/{framer-motion → motion-utils}/dist/es/easing/circ.mjs +0 -0
  165. /package/dist/es/{framer-motion → motion-utils}/dist/es/easing/ease.mjs +0 -0
  166. /package/dist/es/{framer-motion → motion-utils}/dist/es/easing/modifiers/mirror.mjs +0 -0
  167. /package/dist/es/{framer-motion → motion-utils}/dist/es/easing/modifiers/reverse.mjs +0 -0
  168. /package/dist/es/{motion-dom/dist/es → motion-utils/dist/es/easing}/utils/is-bezier-definition.mjs +0 -0
  169. /package/dist/es/{framer-motion → motion-utils}/dist/es/easing/utils/is-easing-array.mjs +0 -0
  170. /package/dist/es/{framer-motion/dist/es/utils → motion-utils/dist/es}/is-numerical-string.mjs +0 -0
  171. /package/dist/es/{framer-motion/dist/es/utils → motion-utils/dist/es}/is-zero-value-string.mjs +0 -0
  172. /package/dist/es/{framer-motion/dist/es/utils → motion-utils/dist/es}/pipe.mjs +0 -0
  173. /package/dist/es/{framer-motion/dist/es/utils → motion-utils/dist/es}/wrap.mjs +0 -0
@@ -5,6 +5,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var react = require('react');
7
7
 
8
+ const clamp = (min, max, v) => {
9
+ if (v > max)
10
+ return max;
11
+ if (v < min)
12
+ return min;
13
+ return v;
14
+ };
15
+
8
16
  let warning = () => { };
9
17
  let invariant = () => { };
10
18
  if (process.env.NODE_ENV !== "production") {
@@ -20,6 +28,8 @@ if (process.env.NODE_ENV !== "production") {
20
28
  };
21
29
  }
22
30
 
31
+ const MotionGlobalConfig = {};
32
+
23
33
  /*#__NO_SIDE_EFFECTS__*/
24
34
  const noop = (any) => any;
25
35
 
@@ -171,12 +181,8 @@ function useMotionRef(visualState, visualElement, externalRef) {
171
181
  [visualElement]);
172
182
  }
173
183
 
174
- const statsBuffer = {
175
- value: null,
176
- addProjectionMetrics: null,
177
- };
178
-
179
184
  const stepsOrder = [
185
+ "setup", // Compute
180
186
  "read", // Read
181
187
  "resolveKeyframes", // Write/Read/Write/Read
182
188
  "update", // Compute
@@ -185,6 +191,11 @@ const stepsOrder = [
185
191
  "postRender", // Compute
186
192
  ];
187
193
 
194
+ const statsBuffer = {
195
+ value: null,
196
+ addProjectionMetrics: null,
197
+ };
198
+
188
199
  function createRenderStep(runNextFrame, stepName) {
189
200
  /**
190
201
  * We create and reuse two queues, one to queue jobs for the current frame
@@ -288,11 +299,13 @@ function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
288
299
  acc[key] = createRenderStep(flagRunNextFrame, allowKeepAlive ? key : undefined);
289
300
  return acc;
290
301
  }, {});
291
- const { read, resolveKeyframes, update, preRender, render, postRender } = steps;
302
+ const { setup, read, resolveKeyframes, update, preRender, render, postRender, } = steps;
292
303
  const processBatch = () => {
293
- const timestamp = performance.now();
304
+ const timestamp = MotionGlobalConfig.useManualTiming
305
+ ? state.timestamp
306
+ : performance.now();
294
307
  runNextFrame = false;
295
- {
308
+ if (!MotionGlobalConfig.useManualTiming) {
296
309
  state.delta = useDefaultElapsed
297
310
  ? 1000 / 60
298
311
  : Math.max(Math.min(timestamp - state.timestamp, maxElapsed), 1);
@@ -300,6 +313,7 @@ function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
300
313
  state.timestamp = timestamp;
301
314
  state.isProcessing = true;
302
315
  // Unrolled render loop for better per-frame performance
316
+ setup.process(state);
303
317
  read.process(state);
304
318
  resolveKeyframes.process(state);
305
319
  update.process(state);
@@ -336,10 +350,156 @@ function createRenderBatcher(scheduleNextBatch, allowKeepAlive) {
336
350
  return { schedule, cancel, state, steps };
337
351
  }
338
352
 
353
+ const { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps, } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : noop, true);
354
+
355
+ const checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
356
+ const isCSSVariableName =
357
+ /*@__PURE__*/ checkStringStartsWith("--");
358
+
359
+ const number = {
360
+ test: (v) => typeof v === "number",
361
+ parse: parseFloat,
362
+ transform: (v) => v,
363
+ };
364
+ const alpha = {
365
+ ...number,
366
+ transform: (v) => clamp(0, 1, v),
367
+ };
368
+ const scale = {
369
+ ...number,
370
+ default: 1,
371
+ };
372
+
373
+ /*#__NO_SIDE_EFFECTS__*/
374
+ const createUnitType = (unit) => ({
375
+ test: (v) => typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1,
376
+ parse: parseFloat,
377
+ transform: (v) => `${v}${unit}`,
378
+ });
379
+ const degrees = /*@__PURE__*/ createUnitType("deg");
380
+ const percent = /*@__PURE__*/ createUnitType("%");
381
+ const px = /*@__PURE__*/ createUnitType("px");
382
+ const progressPercentage = /*@__PURE__*/ (() => ({
383
+ ...percent,
384
+ parse: (v) => percent.parse(v) / 100,
385
+ transform: (v) => percent.transform(v * 100),
386
+ }))();
387
+
388
+ /**
389
+ * Generate a list of every possible transform key.
390
+ */
391
+ const transformPropOrder = [
392
+ "transformPerspective",
393
+ "x",
394
+ "y",
395
+ "z",
396
+ "translateX",
397
+ "translateY",
398
+ "translateZ",
399
+ "scale",
400
+ "scaleX",
401
+ "scaleY",
402
+ "rotate",
403
+ "rotateX",
404
+ "rotateY",
405
+ "rotateZ",
406
+ "skew",
407
+ "skewX",
408
+ "skewY",
409
+ ];
410
+ /**
411
+ * A quick lookup for transform props.
412
+ */
413
+ const transformProps = /*@__PURE__*/ (() => new Set(transformPropOrder))();
414
+
415
+ const int = {
416
+ ...number,
417
+ transform: Math.round,
418
+ };
419
+
420
+ const transformValueTypes = {
421
+ rotate: degrees,
422
+ rotateX: degrees,
423
+ rotateY: degrees,
424
+ rotateZ: degrees,
425
+ scale,
426
+ scaleX: scale,
427
+ scaleY: scale,
428
+ scaleZ: scale,
429
+ skew: degrees,
430
+ skewX: degrees,
431
+ skewY: degrees,
432
+ distance: px,
433
+ translateX: px,
434
+ translateY: px,
435
+ translateZ: px,
436
+ x: px,
437
+ y: px,
438
+ z: px,
439
+ perspective: px,
440
+ transformPerspective: px,
441
+ opacity: alpha,
442
+ originX: progressPercentage,
443
+ originY: progressPercentage,
444
+ originZ: px,
445
+ };
446
+
447
+ const numberValueTypes = {
448
+ // Border props
449
+ borderWidth: px,
450
+ borderTopWidth: px,
451
+ borderRightWidth: px,
452
+ borderBottomWidth: px,
453
+ borderLeftWidth: px,
454
+ borderRadius: px,
455
+ radius: px,
456
+ borderTopLeftRadius: px,
457
+ borderTopRightRadius: px,
458
+ borderBottomRightRadius: px,
459
+ borderBottomLeftRadius: px,
460
+ // Positioning props
461
+ width: px,
462
+ maxWidth: px,
463
+ height: px,
464
+ maxHeight: px,
465
+ top: px,
466
+ right: px,
467
+ bottom: px,
468
+ left: px,
469
+ // Spacing props
470
+ padding: px,
471
+ paddingTop: px,
472
+ paddingRight: px,
473
+ paddingBottom: px,
474
+ paddingLeft: px,
475
+ margin: px,
476
+ marginTop: px,
477
+ marginRight: px,
478
+ marginBottom: px,
479
+ marginLeft: px,
480
+ // Misc
481
+ backgroundPositionX: px,
482
+ backgroundPositionY: px,
483
+ ...transformValueTypes,
484
+ zIndex: int,
485
+ size: px,
486
+ // SVG
487
+ fillOpacity: alpha,
488
+ strokeOpacity: alpha,
489
+ numOctaves: int,
490
+ };
491
+
339
492
  const { schedule: microtask, cancel: cancelMicrotask } =
340
493
  /* @__PURE__ */ createRenderBatcher(queueMicrotask, false);
341
494
 
342
- const { schedule: frame, cancel: cancelFrame, state: frameData, steps: frameSteps, } = /* @__PURE__ */ createRenderBatcher(typeof requestAnimationFrame !== "undefined" ? requestAnimationFrame : noop, true);
495
+ /**
496
+ * Provided a value and a ValueType, returns the value as that value type.
497
+ */
498
+ const getValueAsType = (value, type) => {
499
+ return type && typeof value === "number"
500
+ ? type.transform(value)
501
+ : value;
502
+ };
343
503
 
344
504
  /**
345
505
  * Convert camelCase to dash-case properties.
@@ -567,39 +727,8 @@ function getProjectionFunctionality(props) {
567
727
  };
568
728
  }
569
729
 
570
- const checkStringStartsWith = (token) => (key) => typeof key === "string" && key.startsWith(token);
571
- const isCSSVariableName =
572
- /*@__PURE__*/ checkStringStartsWith("--");
573
-
574
730
  const scaleCorrectors = {};
575
731
 
576
- /**
577
- * Generate a list of every possible transform key.
578
- */
579
- const transformPropOrder = [
580
- "transformPerspective",
581
- "x",
582
- "y",
583
- "z",
584
- "translateX",
585
- "translateY",
586
- "translateZ",
587
- "scale",
588
- "scaleX",
589
- "scaleY",
590
- "rotate",
591
- "rotateX",
592
- "rotateY",
593
- "rotateZ",
594
- "skew",
595
- "skewX",
596
- "skewY",
597
- ];
598
- /**
599
- * A quick lookup for transform props.
600
- */
601
- const transformProps = new Set(transformPropOrder);
602
-
603
732
  function isForcedMotionValue(key, { layout, layoutId }) {
604
733
  return (transformProps.has(key) ||
605
734
  key.startsWith("origin") ||
@@ -609,132 +738,6 @@ function isForcedMotionValue(key, { layout, layoutId }) {
609
738
 
610
739
  const isMotionValue = (value) => Boolean(value && value.getVelocity);
611
740
 
612
- /**
613
- * Provided a value and a ValueType, returns the value as that value type.
614
- */
615
- const getValueAsType = (value, type) => {
616
- return type && typeof value === "number"
617
- ? type.transform(value)
618
- : value;
619
- };
620
-
621
- const clamp = (min, max, v) => {
622
- if (v > max)
623
- return max;
624
- if (v < min)
625
- return min;
626
- return v;
627
- };
628
-
629
- const number = {
630
- test: (v) => typeof v === "number",
631
- parse: parseFloat,
632
- transform: (v) => v,
633
- };
634
- const alpha = {
635
- ...number,
636
- transform: (v) => clamp(0, 1, v),
637
- };
638
- const scale = {
639
- ...number,
640
- default: 1,
641
- };
642
-
643
- const createUnitType = (unit) => ({
644
- test: (v) => typeof v === "string" && v.endsWith(unit) && v.split(" ").length === 1,
645
- parse: parseFloat,
646
- transform: (v) => `${v}${unit}`,
647
- });
648
- const degrees = /*@__PURE__*/ createUnitType("deg");
649
- const percent = /*@__PURE__*/ createUnitType("%");
650
- const px = /*@__PURE__*/ createUnitType("px");
651
- const progressPercentage = {
652
- ...percent,
653
- parse: (v) => percent.parse(v) / 100,
654
- transform: (v) => percent.transform(v * 100),
655
- };
656
-
657
- const browserNumberValueTypes = {
658
- // Border props
659
- borderWidth: px,
660
- borderTopWidth: px,
661
- borderRightWidth: px,
662
- borderBottomWidth: px,
663
- borderLeftWidth: px,
664
- borderRadius: px,
665
- radius: px,
666
- borderTopLeftRadius: px,
667
- borderTopRightRadius: px,
668
- borderBottomRightRadius: px,
669
- borderBottomLeftRadius: px,
670
- // Positioning props
671
- width: px,
672
- maxWidth: px,
673
- height: px,
674
- maxHeight: px,
675
- top: px,
676
- right: px,
677
- bottom: px,
678
- left: px,
679
- // Spacing props
680
- padding: px,
681
- paddingTop: px,
682
- paddingRight: px,
683
- paddingBottom: px,
684
- paddingLeft: px,
685
- margin: px,
686
- marginTop: px,
687
- marginRight: px,
688
- marginBottom: px,
689
- marginLeft: px,
690
- // Misc
691
- backgroundPositionX: px,
692
- backgroundPositionY: px,
693
- };
694
-
695
- const transformValueTypes = {
696
- rotate: degrees,
697
- rotateX: degrees,
698
- rotateY: degrees,
699
- rotateZ: degrees,
700
- scale,
701
- scaleX: scale,
702
- scaleY: scale,
703
- scaleZ: scale,
704
- skew: degrees,
705
- skewX: degrees,
706
- skewY: degrees,
707
- distance: px,
708
- translateX: px,
709
- translateY: px,
710
- translateZ: px,
711
- x: px,
712
- y: px,
713
- z: px,
714
- perspective: px,
715
- transformPerspective: px,
716
- opacity: alpha,
717
- originX: progressPercentage,
718
- originY: progressPercentage,
719
- originZ: px,
720
- };
721
-
722
- const int = {
723
- ...number,
724
- transform: Math.round,
725
- };
726
-
727
- const numberValueTypes = {
728
- ...browserNumberValueTypes,
729
- ...transformValueTypes,
730
- zIndex: int,
731
- size: px,
732
- // SVG
733
- fillOpacity: alpha,
734
- strokeOpacity: alpha,
735
- numOctaves: int,
736
- };
737
-
738
741
  const translateAlias = {
739
742
  x: "translateX",
740
743
  y: "translateY",