motion 10.3.0 → 10.5.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/README.md +0 -19
  2. package/dist/main.cjs.js +11 -13
  3. package/dist/main.es.js +7 -6
  4. package/dist/motion.min.js +1 -1
  5. package/dist/motion.umd.js +8 -1264
  6. package/dist/size-index.js +1 -0
  7. package/lib/index.js +5 -0
  8. package/lib/index.js.map +1 -0
  9. package/package.json +5 -137
  10. package/types/index.d.ts +3 -7
  11. package/types/index.d.ts.map +1 -0
  12. package/CHANGELOG.md +0 -85
  13. package/LICENSE +0 -21
  14. package/dist/react.cjs.js +0 -9
  15. package/dist/react.es.js +0 -1
  16. package/dist/size-animate-dom.js +0 -1
  17. package/dist/size-animate-style.js +0 -1
  18. package/dist/size-react.js +0 -1
  19. package/dist/size-spring.js +0 -1
  20. package/dist/size-timeline-dom.js +0 -1
  21. package/dist/size-webpack-animate.js +0 -1
  22. package/dist/targets/dom/animate-style.cjs.js +0 -182
  23. package/dist/targets/dom/animate-style.es.js +0 -178
  24. package/dist/targets/dom/animate.cjs.js +0 -42
  25. package/dist/targets/dom/animate.es.js +0 -38
  26. package/dist/targets/dom/data.cjs.js +0 -18
  27. package/dist/targets/dom/data.es.js +0 -14
  28. package/dist/targets/dom/style.cjs.js +0 -22
  29. package/dist/targets/dom/style.es.js +0 -18
  30. package/dist/targets/dom/timeline/index.cjs.js +0 -174
  31. package/dist/targets/dom/timeline/index.es.js +0 -169
  32. package/dist/targets/dom/timeline/utils/calc-time.cjs.js +0 -23
  33. package/dist/targets/dom/timeline/utils/calc-time.es.js +0 -19
  34. package/dist/targets/dom/timeline/utils/edit.cjs.js +0 -36
  35. package/dist/targets/dom/timeline/utils/edit.es.js +0 -31
  36. package/dist/targets/dom/timeline/utils/sort.cjs.js +0 -14
  37. package/dist/targets/dom/timeline/utils/sort.es.js +0 -10
  38. package/dist/targets/dom/utils/apply.cjs.js +0 -9
  39. package/dist/targets/dom/utils/apply.es.js +0 -4
  40. package/dist/targets/dom/utils/controls.cjs.js +0 -59
  41. package/dist/targets/dom/utils/controls.es.js +0 -54
  42. package/dist/targets/dom/utils/css-var.cjs.js +0 -29
  43. package/dist/targets/dom/utils/css-var.es.js +0 -23
  44. package/dist/targets/dom/utils/defaults.cjs.js +0 -13
  45. package/dist/targets/dom/utils/defaults.es.js +0 -9
  46. package/dist/targets/dom/utils/easing.cjs.js +0 -18
  47. package/dist/targets/dom/utils/easing.es.js +0 -10
  48. package/dist/targets/dom/utils/feature-detection.cjs.js +0 -31
  49. package/dist/targets/dom/utils/feature-detection.es.js +0 -27
  50. package/dist/targets/dom/utils/get-style-name.cjs.js +0 -13
  51. package/dist/targets/dom/utils/get-style-name.es.js +0 -9
  52. package/dist/targets/dom/utils/keyframes.cjs.js +0 -16
  53. package/dist/targets/dom/utils/keyframes.es.js +0 -11
  54. package/dist/targets/dom/utils/options.cjs.js +0 -7
  55. package/dist/targets/dom/utils/options.es.js +0 -3
  56. package/dist/targets/dom/utils/resolve-elements.cjs.js +0 -22
  57. package/dist/targets/dom/utils/resolve-elements.es.js +0 -18
  58. package/dist/targets/dom/utils/stop-animation.cjs.js +0 -19
  59. package/dist/targets/dom/utils/stop-animation.es.js +0 -15
  60. package/dist/targets/dom/utils/time.cjs.js +0 -7
  61. package/dist/targets/dom/utils/time.es.js +0 -3
  62. package/dist/targets/dom/utils/transforms.cjs.js +0 -85
  63. package/dist/targets/dom/utils/transforms.es.js +0 -74
  64. package/dist/targets/js/NumberAnimation.cjs.js +0 -144
  65. package/dist/targets/js/NumberAnimation.es.js +0 -140
  66. package/dist/targets/js/easing/cubic-bezier.cjs.js +0 -57
  67. package/dist/targets/js/easing/cubic-bezier.es.js +0 -53
  68. package/dist/targets/js/easing/glide/generator.cjs.js +0 -99
  69. package/dist/targets/js/easing/glide/generator.es.js +0 -95
  70. package/dist/targets/js/easing/glide/index.cjs.js +0 -10
  71. package/dist/targets/js/easing/glide/index.es.js +0 -6
  72. package/dist/targets/js/easing/spring/generator.cjs.js +0 -64
  73. package/dist/targets/js/easing/spring/generator.es.js +0 -57
  74. package/dist/targets/js/easing/spring/index.cjs.js +0 -10
  75. package/dist/targets/js/easing/spring/index.es.js +0 -6
  76. package/dist/targets/js/easing/steps.cjs.js +0 -15
  77. package/dist/targets/js/easing/steps.es.js +0 -11
  78. package/dist/targets/js/easing/utils/create-generator-easing.cjs.js +0 -71
  79. package/dist/targets/js/easing/utils/create-generator-easing.es.js +0 -67
  80. package/dist/targets/js/easing/utils/get-function.cjs.js +0 -37
  81. package/dist/targets/js/easing/utils/get-function.es.js +0 -33
  82. package/dist/targets/js/easing/utils/has-reached-target.cjs.js +0 -10
  83. package/dist/targets/js/easing/utils/has-reached-target.es.js +0 -6
  84. package/dist/targets/js/easing/utils/pregenerate-keyframes.cjs.js +0 -34
  85. package/dist/targets/js/easing/utils/pregenerate-keyframes.es.js +0 -30
  86. package/dist/targets/js/utils/get-easing.cjs.js +0 -14
  87. package/dist/targets/js/utils/get-easing.es.js +0 -10
  88. package/dist/targets/js/utils/interpolate.cjs.js +0 -35
  89. package/dist/targets/js/utils/interpolate.es.js +0 -31
  90. package/dist/targets/js/utils/offset.cjs.js +0 -22
  91. package/dist/targets/js/utils/offset.es.js +0 -17
  92. package/dist/targets/react/animated.cjs.js +0 -126
  93. package/dist/targets/react/animated.es.js +0 -101
  94. package/dist/targets/react/context.cjs.js +0 -9
  95. package/dist/targets/react/context.es.js +0 -5
  96. package/dist/targets/react/hooks/use-animation.cjs.js +0 -47
  97. package/dist/targets/react/hooks/use-animation.es.js +0 -43
  98. package/dist/targets/react/hooks/use-exit.cjs.js +0 -27
  99. package/dist/targets/react/hooks/use-exit.es.js +0 -23
  100. package/dist/targets/react/hooks/use-gesture-state.cjs.js +0 -17
  101. package/dist/targets/react/hooks/use-gesture-state.es.js +0 -13
  102. package/dist/targets/react/hooks/use-hover.cjs.js +0 -24
  103. package/dist/targets/react/hooks/use-hover.es.js +0 -20
  104. package/dist/targets/react/hooks/use-press.cjs.js +0 -25
  105. package/dist/targets/react/hooks/use-press.es.js +0 -21
  106. package/dist/targets/react/hooks/use-viewport.cjs.js +0 -37
  107. package/dist/targets/react/hooks/use-viewport.es.js +0 -33
  108. package/dist/targets/react/index.cjs.js +0 -17
  109. package/dist/targets/react/index.es.js +0 -13
  110. package/dist/targets/react/utils/has-changed.cjs.js +0 -24
  111. package/dist/targets/react/utils/has-changed.es.js +0 -19
  112. package/dist/targets/react/utils/keyframes.cjs.js +0 -38
  113. package/dist/targets/react/utils/keyframes.es.js +0 -34
  114. package/dist/targets/react/utils/poses.cjs.js +0 -14
  115. package/dist/targets/react/utils/poses.es.js +0 -10
  116. package/dist/targets/react/utils/update-target.cjs.js +0 -20
  117. package/dist/targets/react/utils/update-target.es.js +0 -16
  118. package/dist/utils/array.cjs.js +0 -14
  119. package/dist/utils/array.es.js +0 -9
  120. package/dist/utils/clamp.cjs.js +0 -7
  121. package/dist/utils/clamp.es.js +0 -3
  122. package/dist/utils/is-number.cjs.js +0 -7
  123. package/dist/utils/is-number.es.js +0 -3
  124. package/dist/utils/mix.cjs.js +0 -28
  125. package/dist/utils/mix.es.js +0 -24
  126. package/dist/utils/noop.cjs.js +0 -9
  127. package/dist/utils/noop.es.js +0 -4
  128. package/dist/utils/progress.cjs.js +0 -20
  129. package/dist/utils/progress.es.js +0 -16
  130. package/dist/utils/stagger.cjs.js +0 -38
  131. package/dist/utils/stagger.es.js +0 -32
  132. package/dist/utils/velocity-per-second.cjs.js +0 -15
  133. package/dist/utils/velocity-per-second.es.js +0 -11
  134. package/dist/utils/wrap.cjs.js +0 -10
  135. package/dist/utils/wrap.es.js +0 -6
  136. package/react/package.json +0 -6
  137. package/types/react-entry.d.ts +0 -2
  138. package/types/targets/dom/animate-style.d.ts +0 -2
  139. package/types/targets/dom/animate.d.ts +0 -2
  140. package/types/targets/dom/data.d.ts +0 -2
  141. package/types/targets/dom/style.d.ts +0 -3
  142. package/types/targets/dom/timeline/index.d.ts +0 -15
  143. package/types/targets/dom/timeline/types.d.ts +0 -13
  144. package/types/targets/dom/timeline/utils/calc-time.d.ts +0 -2
  145. package/types/targets/dom/timeline/utils/edit.d.ts +0 -4
  146. package/types/targets/dom/timeline/utils/sort.d.ts +0 -2
  147. package/types/targets/dom/types.d.ts +0 -114
  148. package/types/targets/dom/utils/apply.d.ts +0 -3
  149. package/types/targets/dom/utils/controls.d.ts +0 -12
  150. package/types/targets/dom/utils/css-var.d.ts +0 -3
  151. package/types/targets/dom/utils/defaults.d.ts +0 -8
  152. package/types/targets/dom/utils/easing.d.ts +0 -6
  153. package/types/targets/dom/utils/feature-detection.d.ts +0 -8
  154. package/types/targets/dom/utils/get-style-name.d.ts +0 -1
  155. package/types/targets/dom/utils/keyframes.d.ts +0 -3
  156. package/types/targets/dom/utils/options.d.ts +0 -2
  157. package/types/targets/dom/utils/resolve-elements.d.ts +0 -4
  158. package/types/targets/dom/utils/stop-animation.d.ts +0 -6
  159. package/types/targets/dom/utils/time.d.ts +0 -1
  160. package/types/targets/dom/utils/transforms.d.ts +0 -20
  161. package/types/targets/js/NumberAnimation.d.ts +0 -24
  162. package/types/targets/js/easing/cubic-bezier.d.ts +0 -1
  163. package/types/targets/js/easing/glide/generator.d.ts +0 -5
  164. package/types/targets/js/easing/glide/index.d.ts +0 -2
  165. package/types/targets/js/easing/glide/types.d.ts +0 -14
  166. package/types/targets/js/easing/spring/generator.d.ts +0 -6
  167. package/types/targets/js/easing/spring/index.d.ts +0 -2
  168. package/types/targets/js/easing/spring/types.d.ts +0 -10
  169. package/types/targets/js/easing/steps.d.ts +0 -3
  170. package/types/targets/js/easing/utils/create-generator-easing.d.ts +0 -3
  171. package/types/targets/js/easing/utils/get-function.d.ts +0 -3
  172. package/types/targets/js/easing/utils/has-reached-target.d.ts +0 -1
  173. package/types/targets/js/easing/utils/pregenerate-keyframes.d.ts +0 -7
  174. package/types/targets/js/types.d.ts +0 -12
  175. package/types/targets/js/utils/get-easing.d.ts +0 -1
  176. package/types/targets/js/utils/interpolate.d.ts +0 -2
  177. package/types/targets/js/utils/offset.d.ts +0 -2
  178. package/types/targets/react/animated.d.ts +0 -3
  179. package/types/targets/react/context.d.ts +0 -3
  180. package/types/targets/react/hooks/use-animation.d.ts +0 -4
  181. package/types/targets/react/hooks/use-exit.d.ts +0 -3
  182. package/types/targets/react/hooks/use-gesture-state.d.ts +0 -4
  183. package/types/targets/react/hooks/use-hover.d.ts +0 -4
  184. package/types/targets/react/hooks/use-press.d.ts +0 -4
  185. package/types/targets/react/hooks/use-viewport.d.ts +0 -4
  186. package/types/targets/react/index.d.ts +0 -2
  187. package/types/targets/react/types.d.ts +0 -108
  188. package/types/targets/react/utils/has-changed.d.ts +0 -2
  189. package/types/targets/react/utils/keyframes.d.ts +0 -3
  190. package/types/targets/react/utils/poses.d.ts +0 -2
  191. package/types/targets/react/utils/supported-elements.d.ts +0 -8
  192. package/types/targets/react/utils/update-target.d.ts +0 -3
  193. package/types/utils/array.d.ts +0 -2
  194. package/types/utils/clamp.d.ts +0 -1
  195. package/types/utils/interpolate.d.ts +0 -0
  196. package/types/utils/is-number.d.ts +0 -1
  197. package/types/utils/mix.d.ts +0 -1
  198. package/types/utils/noop.d.ts +0 -2
  199. package/types/utils/progress.d.ts +0 -1
  200. package/types/utils/stagger.d.ts +0 -12
  201. package/types/utils/value-types.d.ts +0 -0
  202. package/types/utils/velocity-per-second.d.ts +0 -1
  203. package/types/utils/wrap.d.ts +0 -1
@@ -1,31 +0,0 @@
1
- import { mix } from '../../../utils/mix.es.js';
2
- import { noopReturn } from '../../../utils/noop.es.js';
3
- import { progress } from '../../../utils/progress.es.js';
4
- import { getEasingForSegment } from './get-easing.es.js';
5
- import { defaultOffset, fillOffset } from './offset.es.js';
6
-
7
- const clampProgress = (p) => Math.min(1, Math.max(p, 0));
8
- function slowInterpolateNumbers(output, input = defaultOffset(output.length), easing = noopReturn) {
9
- const length = output.length;
10
- /**
11
- * If the input length is lower than the output we
12
- * fill the input to match. This currently assumes the input
13
- * is an animation progress value so is a good candidate for
14
- * moving outside the function.
15
- */
16
- const remainder = length - input.length;
17
- remainder > 0 && fillOffset(input, remainder);
18
- return (t) => {
19
- let i = 0;
20
- for (; i < length - 2; i++) {
21
- if (t < input[i + 1])
22
- break;
23
- }
24
- let progressInRange = clampProgress(progress(input[i], input[i + 1], t));
25
- const segmentEasing = getEasingForSegment(easing, i);
26
- progressInRange = segmentEasing(progressInRange);
27
- return mix(output[i], output[i + 1], progressInRange);
28
- };
29
- }
30
-
31
- export { slowInterpolateNumbers };
@@ -1,22 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var mix = require('../../../utils/mix.cjs.js');
6
- var progress = require('../../../utils/progress.cjs.js');
7
-
8
- function fillOffset(offset, remaining) {
9
- const min = offset[offset.length - 1];
10
- for (let i = 1; i <= remaining; i++) {
11
- const offsetProgress = progress.progress(0, remaining, i);
12
- offset.push(mix.mix(min, 1, offsetProgress));
13
- }
14
- }
15
- function defaultOffset(length) {
16
- const offset = [0];
17
- fillOffset(offset, length - 1);
18
- return offset;
19
- }
20
-
21
- exports.defaultOffset = defaultOffset;
22
- exports.fillOffset = fillOffset;
@@ -1,17 +0,0 @@
1
- import { mix } from '../../../utils/mix.es.js';
2
- import { progress } from '../../../utils/progress.es.js';
3
-
4
- function fillOffset(offset, remaining) {
5
- const min = offset[offset.length - 1];
6
- for (let i = 1; i <= remaining; i++) {
7
- const offsetProgress = progress(0, remaining, i);
8
- offset.push(mix(min, 1, offsetProgress));
9
- }
10
- }
11
- function defaultOffset(length) {
12
- const offset = [0];
13
- fillOffset(offset, length - 1);
14
- return offset;
15
- }
16
-
17
- export { defaultOffset, fillOffset };
@@ -1,126 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var tslib = require('tslib');
6
- var React = require('react');
7
- var useAnimation = require('./hooks/use-animation.cjs.js');
8
- var useHover = require('./hooks/use-hover.cjs.js');
9
- var usePress = require('./hooks/use-press.cjs.js');
10
- var useExit = require('./hooks/use-exit.cjs.js');
11
- var useViewport = require('./hooks/use-viewport.cjs.js');
12
- var keyframes = require('./utils/keyframes.cjs.js');
13
- var poses = require('./utils/poses.cjs.js');
14
- var context = require('./context.cjs.js');
15
-
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () {
26
- return e[k];
27
- }
28
- });
29
- }
30
- });
31
- }
32
- n['default'] = e;
33
- return Object.freeze(n);
34
- }
35
-
36
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
37
-
38
- function createAnimatedComponent(Component) {
39
- function Animated(props, _externalRef) {
40
- // TODO: Support externalRef if provided
41
- const ref = React.useRef(null);
42
- const { options: defaultOptions, style, initial, hover, press, exit, inViewport, viewport, poses: poses$1, onStart, onComplete, onViewportEnter, onViewportLeave, inherit = true } = props, forwardProps = tslib.__rest(props
43
- /**
44
- * Track throughout the render which poses are considered active and should
45
- * be passed to children.
46
- */
47
- , ["options", "style", "initial", "hover", "press", "exit", "inViewport", "viewport", "poses", "onStart", "onComplete", "onViewportEnter", "onViewportLeave", "inherit"]);
48
- /**
49
- * Track throughout the render which poses are considered active and should
50
- * be passed to children.
51
- */
52
- const isPoseActive = { initial: true, style: true };
53
- /**
54
- * Inherit poses from the parent context,
55
- */
56
- let inherited = React.useContext(context.AnimationContext);
57
- if (!inherit)
58
- inherited = {};
59
- const resolvedStyle = poses.resolvePose(style, inherited.style, poses$1);
60
- const resolvedInitial = poses.resolvePose(initial, inherited.initial, poses$1);
61
- const initialTarget = Object.assign(Object.assign({}, resolvedStyle), resolvedInitial);
62
- const target = Object.assign(Object.assign({}, resolvedInitial), resolvedStyle);
63
- const options = Object.assign(Object.assign({}, defaultOptions), resolvedStyle === null || resolvedStyle === void 0 ? void 0 : resolvedStyle.options);
64
- /**
65
- * If we haven't created a style prop for SSR yet (this is the initial render)
66
- * make one. We provide this to React every render as beyond that with manage style
67
- * via animations.
68
- */
69
- const styleProp = React.useRef(null);
70
- styleProp.current || (styleProp.current = keyframes.convertKeyframesToStyles(initialTarget));
71
- /**
72
- * Attach animation event handlers (gestures/exit/viewport appearance).
73
- * This are called in reverse order of which styles should take priority when
74
- * active, for example if there's a hover and press gesture active the press
75
- * gesture will take precedence.
76
- */
77
- const hoverProps = useHover.useHover(target, options, props, inherited, isPoseActive);
78
- const pressProps = usePress.usePress(target, options, props, inherited, isPoseActive);
79
- useViewport.useViewport(ref, target, options, props, inherited, isPoseActive);
80
- const onExitComplete = useExit.useExit(target, options, props, inherited);
81
- /**
82
- * Compare our final calculated style target with the one from the previous render
83
- * and trigger any necessary animations.
84
- */
85
- useAnimation.useAnimation(ref, initialTarget, target, options, onStart, (animation) => {
86
- onComplete && onComplete(animation);
87
- onExitComplete && onExitComplete();
88
- });
89
- const element = React.createElement(Component, Object.assign({}, forwardProps, hoverProps, pressProps, {
90
- style: styleProp.current,
91
- ref,
92
- }));
93
- /**
94
- * Create a variant context to pass forward to child components.
95
- */
96
- const context$1 = variantProps.reduce((acc, key) => {
97
- acc[key] = undefined;
98
- if (props[key]) {
99
- if (typeof props[key] === "string" && isPoseActive[key]) {
100
- acc[key] = props[key];
101
- }
102
- }
103
- else if (inherited[key]) {
104
- acc[key] = inherited[key];
105
- }
106
- return acc;
107
- }, {});
108
- /**
109
- * Memoize the context so we only trigger a re-render in children if the values
110
- * within it change.
111
- */
112
- const memoizedContext = React.useMemo(() => context$1, Object.values(context$1));
113
- return (React__namespace.createElement(context.AnimationContext.Provider, { value: memoizedContext }, element));
114
- }
115
- return React.forwardRef(Animated);
116
- }
117
- const variantProps = [
118
- "initial",
119
- "style",
120
- "hover",
121
- "press",
122
- "inViewport",
123
- "exit",
124
- ];
125
-
126
- exports.createAnimatedComponent = createAnimatedComponent;
@@ -1,101 +0,0 @@
1
- import { __rest } from 'tslib';
2
- import * as React from 'react';
3
- import { forwardRef, useRef, useContext, createElement, useMemo } from 'react';
4
- import { useAnimation } from './hooks/use-animation.es.js';
5
- import { useHover } from './hooks/use-hover.es.js';
6
- import { usePress } from './hooks/use-press.es.js';
7
- import { useExit } from './hooks/use-exit.es.js';
8
- import { useViewport } from './hooks/use-viewport.es.js';
9
- import { convertKeyframesToStyles } from './utils/keyframes.es.js';
10
- import { resolvePose } from './utils/poses.es.js';
11
- import { AnimationContext } from './context.es.js';
12
-
13
- function createAnimatedComponent(Component) {
14
- function Animated(props, _externalRef) {
15
- // TODO: Support externalRef if provided
16
- const ref = useRef(null);
17
- const { options: defaultOptions, style, initial, hover, press, exit, inViewport, viewport, poses, onStart, onComplete, onViewportEnter, onViewportLeave, inherit = true } = props, forwardProps = __rest(props
18
- /**
19
- * Track throughout the render which poses are considered active and should
20
- * be passed to children.
21
- */
22
- , ["options", "style", "initial", "hover", "press", "exit", "inViewport", "viewport", "poses", "onStart", "onComplete", "onViewportEnter", "onViewportLeave", "inherit"]);
23
- /**
24
- * Track throughout the render which poses are considered active and should
25
- * be passed to children.
26
- */
27
- const isPoseActive = { initial: true, style: true };
28
- /**
29
- * Inherit poses from the parent context,
30
- */
31
- let inherited = useContext(AnimationContext);
32
- if (!inherit)
33
- inherited = {};
34
- const resolvedStyle = resolvePose(style, inherited.style, poses);
35
- const resolvedInitial = resolvePose(initial, inherited.initial, poses);
36
- const initialTarget = Object.assign(Object.assign({}, resolvedStyle), resolvedInitial);
37
- const target = Object.assign(Object.assign({}, resolvedInitial), resolvedStyle);
38
- const options = Object.assign(Object.assign({}, defaultOptions), resolvedStyle === null || resolvedStyle === void 0 ? void 0 : resolvedStyle.options);
39
- /**
40
- * If we haven't created a style prop for SSR yet (this is the initial render)
41
- * make one. We provide this to React every render as beyond that with manage style
42
- * via animations.
43
- */
44
- const styleProp = useRef(null);
45
- styleProp.current || (styleProp.current = convertKeyframesToStyles(initialTarget));
46
- /**
47
- * Attach animation event handlers (gestures/exit/viewport appearance).
48
- * This are called in reverse order of which styles should take priority when
49
- * active, for example if there's a hover and press gesture active the press
50
- * gesture will take precedence.
51
- */
52
- const hoverProps = useHover(target, options, props, inherited, isPoseActive);
53
- const pressProps = usePress(target, options, props, inherited, isPoseActive);
54
- useViewport(ref, target, options, props, inherited, isPoseActive);
55
- const onExitComplete = useExit(target, options, props, inherited);
56
- /**
57
- * Compare our final calculated style target with the one from the previous render
58
- * and trigger any necessary animations.
59
- */
60
- useAnimation(ref, initialTarget, target, options, onStart, (animation) => {
61
- onComplete && onComplete(animation);
62
- onExitComplete && onExitComplete();
63
- });
64
- const element = createElement(Component, Object.assign({}, forwardProps, hoverProps, pressProps, {
65
- style: styleProp.current,
66
- ref,
67
- }));
68
- /**
69
- * Create a variant context to pass forward to child components.
70
- */
71
- const context = variantProps.reduce((acc, key) => {
72
- acc[key] = undefined;
73
- if (props[key]) {
74
- if (typeof props[key] === "string" && isPoseActive[key]) {
75
- acc[key] = props[key];
76
- }
77
- }
78
- else if (inherited[key]) {
79
- acc[key] = inherited[key];
80
- }
81
- return acc;
82
- }, {});
83
- /**
84
- * Memoize the context so we only trigger a re-render in children if the values
85
- * within it change.
86
- */
87
- const memoizedContext = useMemo(() => context, Object.values(context));
88
- return (React.createElement(AnimationContext.Provider, { value: memoizedContext }, element));
89
- }
90
- return forwardRef(Animated);
91
- }
92
- const variantProps = [
93
- "initial",
94
- "style",
95
- "hover",
96
- "press",
97
- "inViewport",
98
- "exit",
99
- ];
100
-
101
- export { createAnimatedComponent };
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
-
7
- const AnimationContext = React.createContext({});
8
-
9
- exports.AnimationContext = AnimationContext;
@@ -1,5 +0,0 @@
1
- import { createContext } from 'react';
2
-
3
- const AnimationContext = createContext({});
4
-
5
- export { AnimationContext };
@@ -1,47 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var animateStyle = require('../../dom/animate-style.cjs.js');
7
- var noop = require('../../../utils/noop.cjs.js');
8
- var hasChanged = require('../utils/has-changed.cjs.js');
9
- var options = require('../../dom/utils/options.cjs.js');
10
-
11
- function useAnimation(ref, initial, target, options$1, onStart, onComplete) {
12
- const prevTarget = React.useRef(initial);
13
- React.useEffect(() => {
14
- const targetKeyframe = {};
15
- const allKeys = new Set([
16
- ...Object.keys(target),
17
- ...Object.keys(prevTarget.current),
18
- ]);
19
- allKeys.forEach((key) => {
20
- let next = target[key];
21
- if (!hasChanged.hasChanged(next, prevTarget.current[key]))
22
- return;
23
- /**
24
- * TODO: If next is undefined, throw error or record a "base value"
25
- * to animate back down to
26
- */
27
- targetKeyframe[key] = next;
28
- });
29
- if (Object.keys(targetKeyframe).length && ref.current) {
30
- onStart === null || onStart === void 0 ? void 0 : onStart(targetKeyframe);
31
- const animationFactories = [];
32
- for (const key in targetKeyframe) {
33
- const animation = animateStyle.animateStyle(ref.current, key, targetKeyframe[key], options.getOptions(options$1, key));
34
- animationFactories.push(animation);
35
- }
36
- const animations = animationFactories
37
- .map((factory) => factory())
38
- .filter(Boolean);
39
- Promise.all(animations.map((animation) => animation.finished))
40
- .then(() => onComplete === null || onComplete === void 0 ? void 0 : onComplete(targetKeyframe))
41
- .catch(noop.noop);
42
- }
43
- prevTarget.current = target;
44
- });
45
- }
46
-
47
- exports.useAnimation = useAnimation;
@@ -1,43 +0,0 @@
1
- import { useRef, useEffect } from 'react';
2
- import { animateStyle } from '../../dom/animate-style.es.js';
3
- import { noop } from '../../../utils/noop.es.js';
4
- import { hasChanged } from '../utils/has-changed.es.js';
5
- import { getOptions } from '../../dom/utils/options.es.js';
6
-
7
- function useAnimation(ref, initial, target, options, onStart, onComplete) {
8
- const prevTarget = useRef(initial);
9
- useEffect(() => {
10
- const targetKeyframe = {};
11
- const allKeys = new Set([
12
- ...Object.keys(target),
13
- ...Object.keys(prevTarget.current),
14
- ]);
15
- allKeys.forEach((key) => {
16
- let next = target[key];
17
- if (!hasChanged(next, prevTarget.current[key]))
18
- return;
19
- /**
20
- * TODO: If next is undefined, throw error or record a "base value"
21
- * to animate back down to
22
- */
23
- targetKeyframe[key] = next;
24
- });
25
- if (Object.keys(targetKeyframe).length && ref.current) {
26
- onStart === null || onStart === void 0 ? void 0 : onStart(targetKeyframe);
27
- const animationFactories = [];
28
- for (const key in targetKeyframe) {
29
- const animation = animateStyle(ref.current, key, targetKeyframe[key], getOptions(options, key));
30
- animationFactories.push(animation);
31
- }
32
- const animations = animationFactories
33
- .map((factory) => factory())
34
- .filter(Boolean);
35
- Promise.all(animations.map((animation) => animation.finished))
36
- .then(() => onComplete === null || onComplete === void 0 ? void 0 : onComplete(targetKeyframe))
37
- .catch(noop);
38
- }
39
- prevTarget.current = target;
40
- });
41
- }
42
-
43
- export { useAnimation };
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var framerMotion = require('framer-motion');
6
- var React = require('react');
7
- var poses = require('../utils/poses.cjs.js');
8
- var updateTarget = require('../utils/update-target.cjs.js');
9
-
10
- function useExit(target, options, { exit, poses: poses$1 }, { exit: inheritedExit }) {
11
- const [isPresent, onExitComplete] = framerMotion.usePresence();
12
- /**
13
- * In case we don't have an exit animation defined we still need to
14
- * call onExitComplete if it exits so AnimatePresence knows it
15
- * can remove this component.
16
- */
17
- React.useEffect(() => {
18
- if (!exit)
19
- onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete();
20
- }, [isPresent]);
21
- if (exit && !isPresent) {
22
- updateTarget.updateTargetAndOptions(target, options, poses.resolvePose(exit, inheritedExit, poses$1));
23
- return onExitComplete;
24
- }
25
- }
26
-
27
- exports.useExit = useExit;
@@ -1,23 +0,0 @@
1
- import { usePresence } from 'framer-motion';
2
- import { useEffect } from 'react';
3
- import { resolvePose } from '../utils/poses.es.js';
4
- import { updateTargetAndOptions } from '../utils/update-target.es.js';
5
-
6
- function useExit(target, options, { exit, poses }, { exit: inheritedExit }) {
7
- const [isPresent, onExitComplete] = usePresence();
8
- /**
9
- * In case we don't have an exit animation defined we still need to
10
- * call onExitComplete if it exits so AnimatePresence knows it
11
- * can remove this component.
12
- */
13
- useEffect(() => {
14
- if (!exit)
15
- onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete();
16
- }, [isPresent]);
17
- if (exit && !isPresent) {
18
- updateTargetAndOptions(target, options, resolvePose(exit, inheritedExit, poses));
19
- return onExitComplete;
20
- }
21
- }
22
-
23
- export { useExit };
@@ -1,17 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var poses = require('../utils/poses.cjs.js');
7
- var updateTarget = require('../utils/update-target.cjs.js');
8
-
9
- function useGestureState(target, options, stylesToApply, inheritedPose, poses$1) {
10
- const [isGestureActive, setGestureState] = React.useState(false);
11
- if (isGestureActive || inheritedPose) {
12
- updateTarget.updateTargetAndOptions(target, options, poses.resolvePose(stylesToApply, inheritedPose, poses$1));
13
- }
14
- return [isGestureActive || Boolean(inheritedPose), setGestureState];
15
- }
16
-
17
- exports.useGestureState = useGestureState;
@@ -1,13 +0,0 @@
1
- import { useState } from 'react';
2
- import { resolvePose } from '../utils/poses.es.js';
3
- import { updateTargetAndOptions } from '../utils/update-target.es.js';
4
-
5
- function useGestureState(target, options, stylesToApply, inheritedPose, poses) {
6
- const [isGestureActive, setGestureState] = useState(false);
7
- if (isGestureActive || inheritedPose) {
8
- updateTargetAndOptions(target, options, resolvePose(stylesToApply, inheritedPose, poses));
9
- }
10
- return [isGestureActive || Boolean(inheritedPose), setGestureState];
11
- }
12
-
13
- export { useGestureState };
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var useGestureState = require('./use-gesture-state.cjs.js');
6
-
7
- function useHover(target, options, { hover, onPointerEnter, onPointerLeave, poses, } = {}, { hover: inheritedHover }, isPoseActive) {
8
- const [isHoverActive, setHoverState] = useGestureState.useGestureState(target, options, hover, inheritedHover, poses);
9
- isPoseActive.hover = isHoverActive;
10
- return hover
11
- ? {
12
- onPointerEnter: (e) => {
13
- onPointerEnter === null || onPointerEnter === void 0 ? void 0 : onPointerEnter(e);
14
- setHoverState(true);
15
- },
16
- onPointerLeave: (e) => {
17
- onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(e);
18
- setHoverState(false);
19
- },
20
- }
21
- : {};
22
- }
23
-
24
- exports.useHover = useHover;
@@ -1,20 +0,0 @@
1
- import { useGestureState } from './use-gesture-state.es.js';
2
-
3
- function useHover(target, options, { hover, onPointerEnter, onPointerLeave, poses, } = {}, { hover: inheritedHover }, isPoseActive) {
4
- const [isHoverActive, setHoverState] = useGestureState(target, options, hover, inheritedHover, poses);
5
- isPoseActive.hover = isHoverActive;
6
- return hover
7
- ? {
8
- onPointerEnter: (e) => {
9
- onPointerEnter === null || onPointerEnter === void 0 ? void 0 : onPointerEnter(e);
10
- setHoverState(true);
11
- },
12
- onPointerLeave: (e) => {
13
- onPointerLeave === null || onPointerLeave === void 0 ? void 0 : onPointerLeave(e);
14
- setHoverState(false);
15
- },
16
- }
17
- : {};
18
- }
19
-
20
- export { useHover };
@@ -1,25 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var useGestureState = require('./use-gesture-state.cjs.js');
6
-
7
- function usePress(target, options, { press, onPointerDown, poses } = {}, { press: inheritedPress }, isPoseActive) {
8
- const [isPressActive, setPressState] = useGestureState.useGestureState(target, options, press, inheritedPress, poses);
9
- isPoseActive.press = isPressActive;
10
- if (!press)
11
- return {};
12
- const onPointerUp = () => {
13
- setPressState(false);
14
- window.removeEventListener("pointerup", onPointerUp);
15
- };
16
- return {
17
- onPointerDown: (e) => {
18
- onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(e);
19
- setPressState(true);
20
- window.addEventListener("pointerup", onPointerUp);
21
- },
22
- };
23
- }
24
-
25
- exports.usePress = usePress;
@@ -1,21 +0,0 @@
1
- import { useGestureState } from './use-gesture-state.es.js';
2
-
3
- function usePress(target, options, { press, onPointerDown, poses } = {}, { press: inheritedPress }, isPoseActive) {
4
- const [isPressActive, setPressState] = useGestureState(target, options, press, inheritedPress, poses);
5
- isPoseActive.press = isPressActive;
6
- if (!press)
7
- return {};
8
- const onPointerUp = () => {
9
- setPressState(false);
10
- window.removeEventListener("pointerup", onPointerUp);
11
- };
12
- return {
13
- onPointerDown: (e) => {
14
- onPointerDown === null || onPointerDown === void 0 ? void 0 : onPointerDown(e);
15
- setPressState(true);
16
- window.addEventListener("pointerup", onPointerUp);
17
- },
18
- };
19
- }
20
-
21
- export { usePress };
@@ -1,37 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var useGestureState = require('./use-gesture-state.cjs.js');
7
-
8
- function useViewport(ref, target, options, { inViewport, poses, viewport = {}, onViewportEnter, onViewportLeave, }, { inViewport: inheritedInViewport }, isPoseActive) {
9
- const { root, margin: rootMargin, once, threshold } = viewport;
10
- const [isInViewport, setViewportState] = useGestureState.useGestureState(target, options, inViewport, inheritedInViewport, poses);
11
- isPoseActive.inViewport = isInViewport;
12
- let shouldObserve = !!inViewport || !!onViewportEnter || !!onViewportLeave;
13
- if (once && isInViewport)
14
- shouldObserve = false;
15
- React.useEffect(() => {
16
- if (!shouldObserve || typeof IntersectionObserver === "undefined")
17
- return;
18
- const observer = new IntersectionObserver(([entry]) => {
19
- setViewportState(entry.isIntersecting);
20
- const callback = entry.isIntersecting
21
- ? onViewportEnter
22
- : onViewportLeave;
23
- callback && callback(entry);
24
- }, { root: root === null || root === void 0 ? void 0 : root.current, rootMargin, threshold });
25
- observer.observe(ref.current);
26
- return () => observer.disconnect();
27
- }, [
28
- inViewport,
29
- onViewportEnter,
30
- onViewportLeave,
31
- root,
32
- rootMargin,
33
- threshold,
34
- ]);
35
- }
36
-
37
- exports.useViewport = useViewport;
@@ -1,33 +0,0 @@
1
- import { useEffect } from 'react';
2
- import { useGestureState } from './use-gesture-state.es.js';
3
-
4
- function useViewport(ref, target, options, { inViewport, poses, viewport = {}, onViewportEnter, onViewportLeave, }, { inViewport: inheritedInViewport }, isPoseActive) {
5
- const { root, margin: rootMargin, once, threshold } = viewport;
6
- const [isInViewport, setViewportState] = useGestureState(target, options, inViewport, inheritedInViewport, poses);
7
- isPoseActive.inViewport = isInViewport;
8
- let shouldObserve = !!inViewport || !!onViewportEnter || !!onViewportLeave;
9
- if (once && isInViewport)
10
- shouldObserve = false;
11
- useEffect(() => {
12
- if (!shouldObserve || typeof IntersectionObserver === "undefined")
13
- return;
14
- const observer = new IntersectionObserver(([entry]) => {
15
- setViewportState(entry.isIntersecting);
16
- const callback = entry.isIntersecting
17
- ? onViewportEnter
18
- : onViewportLeave;
19
- callback && callback(entry);
20
- }, { root: root === null || root === void 0 ? void 0 : root.current, rootMargin, threshold });
21
- observer.observe(ref.current);
22
- return () => observer.disconnect();
23
- }, [
24
- inViewport,
25
- onViewportEnter,
26
- onViewportLeave,
27
- root,
28
- rootMargin,
29
- threshold,
30
- ]);
31
- }
32
-
33
- export { useViewport };