@tamagui/animations-css 2.7.7 → 3.0.0-beta.643.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.
@@ -0,0 +1,259 @@
1
+ import React from "react";
2
+ import { unstable_batchedUpdates } from "react-dom";
3
+
4
+ var hasRAF = typeof requestAnimationFrame !== "undefined";
5
+ function notifyAnimatedNumber(instance, value) {
6
+ instance.current = value;
7
+ if (instance.listeners.size === 0) return;
8
+ unstable_batchedUpdates(function() {
9
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
10
+ try {
11
+ for (var _iterator = instance.listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
12
+ var listener = _step.value;
13
+ listener(value);
14
+ }
15
+ } catch (err) {
16
+ _didIteratorError = true;
17
+ _iteratorError = err;
18
+ } finally {
19
+ try {
20
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
21
+ _iterator.return();
22
+ }
23
+ } finally {
24
+ if (_didIteratorError) {
25
+ throw _iteratorError;
26
+ }
27
+ }
28
+ }
29
+ });
30
+ }
31
+ function useAnimatedNumberStyles(values, getStyle) {
32
+ var _token;
33
+ var token = React.useRef(null);
34
+ (_token = token).current || (_token.current = {});
35
+ var [, renderLinkedValue] = React.useReducer(function(value) {
36
+ return value + 1;
37
+ }, 0);
38
+ var instances = values.map(function(value) {
39
+ return value.getInstance();
40
+ });
41
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
42
+ try {
43
+ for (var _iterator = instances[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
44
+ var instance = _step.value;
45
+ if (!instance.styleHost) instance.styleHost = token.current;
46
+ }
47
+ } catch (err) {
48
+ _didIteratorError = true;
49
+ _iteratorError = err;
50
+ } finally {
51
+ try {
52
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
53
+ _iterator.return();
54
+ }
55
+ } finally {
56
+ if (_didIteratorError) {
57
+ throw _iteratorError;
58
+ }
59
+ }
60
+ }
61
+ React.useEffect(function() {
62
+ var listener = function() {
63
+ return renderLinkedValue();
64
+ };
65
+ var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;
66
+ try {
67
+ for (var _iterator2 = instances[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
68
+ var instance2 = _step2.value;
69
+ if (instance2.styleHost !== token.current) instance2.listeners.add(listener);
70
+ }
71
+ } catch (err) {
72
+ _didIteratorError2 = true;
73
+ _iteratorError2 = err;
74
+ } finally {
75
+ try {
76
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
77
+ _iterator2.return();
78
+ }
79
+ } finally {
80
+ if (_didIteratorError2) {
81
+ throw _iteratorError2;
82
+ }
83
+ }
84
+ }
85
+ return function() {
86
+ var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;
87
+ try {
88
+ for (var _iterator3 = instances[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
89
+ var instance3 = _step3.value;
90
+ instance3.listeners.delete(listener);
91
+ if (instance3.styleHost === token.current) instance3.styleHost = null;
92
+ }
93
+ } catch (err) {
94
+ _didIteratorError3 = true;
95
+ _iteratorError3 = err;
96
+ } finally {
97
+ try {
98
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
99
+ _iterator3.return();
100
+ }
101
+ } finally {
102
+ if (_didIteratorError3) {
103
+ throw _iteratorError3;
104
+ }
105
+ }
106
+ }
107
+ };
108
+ }, instances);
109
+ return getStyle(...instances.map(function(instance2) {
110
+ return instance2.styleHost === token.current ? instance2.target : instance2.current;
111
+ }));
112
+ }
113
+ function useAnimatedNumber(initial) {
114
+ var [, renderTarget] = React.useReducer(function(value) {
115
+ return value + 1;
116
+ }, 0);
117
+ var instanceRef = React.useRef(null);
118
+ if (!instanceRef.current) {
119
+ instanceRef.current = {
120
+ current: initial,
121
+ target: initial,
122
+ listeners: /* @__PURE__ */ new Set(),
123
+ styleHost: null,
124
+ raf: null,
125
+ finish: null,
126
+ renderTarget,
127
+ cancel() {
128
+ if (this.raf !== null) cancelAnimationFrame(this.raf);
129
+ this.raf = null;
130
+ this.finish = null;
131
+ }
132
+ };
133
+ }
134
+ var instance = instanceRef.current;
135
+ instance.renderTarget = renderTarget;
136
+ React.useEffect(function() {
137
+ return function() {
138
+ return instance.cancel();
139
+ };
140
+ }, [instance]);
141
+ return React.useMemo(function() {
142
+ return {
143
+ getInstance() {
144
+ return instance;
145
+ },
146
+ getValue() {
147
+ return instance.current;
148
+ },
149
+ setValue(next) {
150
+ var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { type: "spring" }, onFinish = arguments.length > 2 ? arguments[2] : void 0;
151
+ instance.cancel();
152
+ var from = instance.current;
153
+ instance.target = next;
154
+ if (instance.styleHost) instance.renderTarget();
155
+ if (!hasRAF || config.type === "direct" || config.type === "timing" && config.duration === 0 || from === next) {
156
+ notifyAnimatedNumber(instance, next);
157
+ onFinish === null || onFinish === void 0 ? void 0 : onFinish();
158
+ return;
159
+ }
160
+ if (instance.listeners.size === 0 && !onFinish) {
161
+ instance.current = next;
162
+ return;
163
+ }
164
+ instance.finish = onFinish !== null && onFinish !== void 0 ? onFinish : null;
165
+ var settle = function() {
166
+ instance.raf = null;
167
+ notifyAnimatedNumber(instance, next);
168
+ var finish = instance.finish;
169
+ instance.finish = null;
170
+ finish === null || finish === void 0 ? void 0 : finish();
171
+ };
172
+ if (config.type === "timing") {
173
+ var startedAt = performance.now();
174
+ var tick = function() {
175
+ var progress = Math.min(1, (performance.now() - startedAt) / config.duration);
176
+ if (progress === 1) {
177
+ settle();
178
+ return;
179
+ }
180
+ notifyAnimatedNumber(instance, from + (next - from) * progress);
181
+ instance.raf = requestAnimationFrame(tick);
182
+ };
183
+ instance.raf = requestAnimationFrame(tick);
184
+ return;
185
+ }
186
+ var { stiffness = 300, damping = 35, mass = 1, overshootClamping, restSpeedThreshold: restSpeed = .001, restDisplacementThreshold: restDisplacement = .001 } = config;
187
+ var displacement = from - next;
188
+ var decayRate = damping / (2 * mass);
189
+ var naturalFrequency = Math.sqrt(stiffness / mass);
190
+ var startedAt1 = performance.now();
191
+ var tick1 = function() {
192
+ var elapsed = (performance.now() - startedAt1) / 1e3;
193
+ var value;
194
+ var velocity;
195
+ if (decayRate < naturalFrequency) {
196
+ var dampedFrequency = Math.sqrt(Math.pow(naturalFrequency, 2) - Math.pow(decayRate, 2));
197
+ var b = decayRate * displacement / dampedFrequency;
198
+ var decay = Math.exp(-decayRate * elapsed);
199
+ var cos = Math.cos(dampedFrequency * elapsed);
200
+ var sin = Math.sin(dampedFrequency * elapsed);
201
+ value = next + decay * (displacement * cos + b * sin);
202
+ velocity = decay * ((-decayRate * displacement + b * dampedFrequency) * cos + (-decayRate * b - displacement * dampedFrequency) * sin);
203
+ } else if (decayRate === naturalFrequency) {
204
+ var b1 = decayRate * displacement;
205
+ var decay1 = Math.exp(-decayRate * elapsed);
206
+ value = next + (displacement + b1 * elapsed) * decay1;
207
+ velocity = (b1 - decayRate * (displacement + b1 * elapsed)) * decay1;
208
+ } else {
209
+ var frequency = Math.sqrt(Math.pow(decayRate, 2) - Math.pow(naturalFrequency, 2));
210
+ var slowRoot = -decayRate + frequency;
211
+ var fastRoot = -decayRate - frequency;
212
+ var slowCoefficient = -fastRoot * displacement / (slowRoot - fastRoot);
213
+ var fastCoefficient = displacement - slowCoefficient;
214
+ value = next + slowCoefficient * Math.exp(slowRoot * elapsed) + fastCoefficient * Math.exp(fastRoot * elapsed);
215
+ velocity = slowCoefficient * slowRoot * Math.exp(slowRoot * elapsed) + fastCoefficient * fastRoot * Math.exp(fastRoot * elapsed);
216
+ }
217
+ if (overshootClamping && (from < next && value > next || from > next && value < next)) {
218
+ value = next;
219
+ velocity = 0;
220
+ }
221
+ if (Math.abs(velocity) <= restSpeed && Math.abs(next - value) <= restDisplacement) {
222
+ settle();
223
+ return;
224
+ }
225
+ notifyAnimatedNumber(instance, value);
226
+ instance.raf = requestAnimationFrame(tick1);
227
+ };
228
+ instance.raf = requestAnimationFrame(tick1);
229
+ },
230
+ stop() {
231
+ instance.cancel();
232
+ }
233
+ };
234
+ }, [instance]);
235
+ }
236
+ var useAnimatedNumberReaction = function(param, onValue) {
237
+ var { value } = param;
238
+ var onValueRef = React.useRef(onValue);
239
+ onValueRef.current = onValue;
240
+ React.useEffect(function() {
241
+ var instance = value.getInstance();
242
+ var listener = function(current) {
243
+ return onValueRef.current(current);
244
+ };
245
+ instance.listeners.add(listener);
246
+ return function() {
247
+ instance.listeners.delete(listener);
248
+ };
249
+ }, [value]);
250
+ };
251
+ var useAnimatedNumberStyle = function(val, getStyle) {
252
+ return useAnimatedNumberStyles([val], getStyle);
253
+ };
254
+ var useAnimatedNumbersStyle = function(vals, getStyle) {
255
+ return useAnimatedNumberStyles(vals, getStyle);
256
+ };
257
+
258
+ export { useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle, useAnimatedNumbersStyle };
259
+ //# sourceMappingURL=animated-number.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animated-number.native.js","names":[],"sources":["esm/animated-number.native.js"],"sourcesContent":["import React from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nvar hasRAF = typeof requestAnimationFrame !== \"undefined\";\nfunction notifyAnimatedNumber(instance, value) {\n instance.current = value;\n if (instance.listeners.size === 0) return;\n unstable_batchedUpdates(function() {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = instance.listeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var listener = _step.value;\n listener(value);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n}\nfunction useAnimatedNumberStyles(values, getStyle) {\n var _token;\n var token = React.useRef(null);\n (_token = token).current || (_token.current = {});\n var [, renderLinkedValue] = React.useReducer(function(value) {\n return value + 1;\n }, 0);\n var instances = values.map(function(value) {\n return value.getInstance();\n });\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = instances[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var instance = _step.value;\n if (!instance.styleHost) instance.styleHost = token.current;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n React.useEffect(function() {\n var listener = function() {\n return renderLinkedValue();\n };\n var _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = void 0;\n try {\n for (var _iterator2 = instances[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var instance2 = _step2.value;\n if (instance2.styleHost !== token.current) instance2.listeners.add(listener);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n return function() {\n var _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = void 0;\n try {\n for (var _iterator3 = instances[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var instance3 = _step3.value;\n instance3.listeners.delete(listener);\n if (instance3.styleHost === token.current) instance3.styleHost = null;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n };\n }, instances);\n return getStyle(...instances.map(function(instance2) {\n return instance2.styleHost === token.current ? instance2.target : instance2.current;\n }));\n}\nfunction useAnimatedNumber(initial) {\n var [, renderTarget] = React.useReducer(function(value) {\n return value + 1;\n }, 0);\n var instanceRef = React.useRef(null);\n if (!instanceRef.current) {\n instanceRef.current = {\n current: initial,\n target: initial,\n listeners: /* @__PURE__ */ new Set(),\n styleHost: null,\n raf: null,\n finish: null,\n renderTarget,\n cancel() {\n if (this.raf !== null) cancelAnimationFrame(this.raf);\n this.raf = null;\n this.finish = null;\n }\n };\n }\n var instance = instanceRef.current;\n instance.renderTarget = renderTarget;\n React.useEffect(function() {\n return function() {\n return instance.cancel();\n };\n }, [\n instance\n ]);\n return React.useMemo(function() {\n return {\n getInstance() {\n return instance;\n },\n getValue() {\n return instance.current;\n },\n setValue(next) {\n var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {\n type: \"spring\"\n }, onFinish = arguments.length > 2 ? arguments[2] : void 0;\n instance.cancel();\n var from = instance.current;\n instance.target = next;\n if (instance.styleHost) instance.renderTarget();\n if (!hasRAF || config.type === \"direct\" || config.type === \"timing\" && config.duration === 0 || from === next) {\n notifyAnimatedNumber(instance, next);\n onFinish === null || onFinish === void 0 ? void 0 : onFinish();\n return;\n }\n if (instance.listeners.size === 0 && !onFinish) {\n instance.current = next;\n return;\n }\n instance.finish = onFinish !== null && onFinish !== void 0 ? onFinish : null;\n var settle = function() {\n instance.raf = null;\n notifyAnimatedNumber(instance, next);\n var finish = instance.finish;\n instance.finish = null;\n finish === null || finish === void 0 ? void 0 : finish();\n };\n if (config.type === \"timing\") {\n var startedAt = performance.now();\n var tick = function() {\n var progress = Math.min(1, (performance.now() - startedAt) / config.duration);\n if (progress === 1) {\n settle();\n return;\n }\n notifyAnimatedNumber(instance, from + (next - from) * progress);\n instance.raf = requestAnimationFrame(tick);\n };\n instance.raf = requestAnimationFrame(tick);\n return;\n }\n var { stiffness = 300, damping = 35, mass = 1, overshootClamping, restSpeedThreshold: restSpeed = 1e-3, restDisplacementThreshold: restDisplacement = 1e-3 } = config;\n var displacement = from - next;\n var decayRate = damping / (2 * mass);\n var naturalFrequency = Math.sqrt(stiffness / mass);\n var startedAt1 = performance.now();\n var tick1 = function() {\n var elapsed = (performance.now() - startedAt1) / 1e3;\n var value;\n var velocity;\n if (decayRate < naturalFrequency) {\n var dampedFrequency = Math.sqrt(Math.pow(naturalFrequency, 2) - Math.pow(decayRate, 2));\n var b = decayRate * displacement / dampedFrequency;\n var decay = Math.exp(-decayRate * elapsed);\n var cos = Math.cos(dampedFrequency * elapsed);\n var sin = Math.sin(dampedFrequency * elapsed);\n value = next + decay * (displacement * cos + b * sin);\n velocity = decay * ((-decayRate * displacement + b * dampedFrequency) * cos + (-decayRate * b - displacement * dampedFrequency) * sin);\n } else if (decayRate === naturalFrequency) {\n var b1 = decayRate * displacement;\n var decay1 = Math.exp(-decayRate * elapsed);\n value = next + (displacement + b1 * elapsed) * decay1;\n velocity = (b1 - decayRate * (displacement + b1 * elapsed)) * decay1;\n } else {\n var frequency = Math.sqrt(Math.pow(decayRate, 2) - Math.pow(naturalFrequency, 2));\n var slowRoot = -decayRate + frequency;\n var fastRoot = -decayRate - frequency;\n var slowCoefficient = -fastRoot * displacement / (slowRoot - fastRoot);\n var fastCoefficient = displacement - slowCoefficient;\n value = next + slowCoefficient * Math.exp(slowRoot * elapsed) + fastCoefficient * Math.exp(fastRoot * elapsed);\n velocity = slowCoefficient * slowRoot * Math.exp(slowRoot * elapsed) + fastCoefficient * fastRoot * Math.exp(fastRoot * elapsed);\n }\n if (overshootClamping && (from < next && value > next || from > next && value < next)) {\n value = next;\n velocity = 0;\n }\n if (Math.abs(velocity) <= restSpeed && Math.abs(next - value) <= restDisplacement) {\n settle();\n return;\n }\n notifyAnimatedNumber(instance, value);\n instance.raf = requestAnimationFrame(tick1);\n };\n instance.raf = requestAnimationFrame(tick1);\n },\n stop() {\n instance.cancel();\n }\n };\n }, [\n instance\n ]);\n}\nvar useAnimatedNumberReaction = function(param, onValue) {\n var { value } = param;\n var onValueRef = React.useRef(onValue);\n onValueRef.current = onValue;\n React.useEffect(function() {\n var instance = value.getInstance();\n var listener = function(current) {\n return onValueRef.current(current);\n };\n instance.listeners.add(listener);\n return function() {\n instance.listeners.delete(listener);\n };\n }, [\n value\n ]);\n};\nvar useAnimatedNumberStyle = function(val, getStyle) {\n return useAnimatedNumberStyles([\n val\n ], getStyle);\n};\nvar useAnimatedNumbersStyle = function(vals, getStyle) {\n return useAnimatedNumberStyles(vals, getStyle);\n};\nexport {\n useAnimatedNumber,\n useAnimatedNumberReaction,\n useAnimatedNumberStyle,\n useAnimatedNumbersStyle\n};\n//# sourceMappingURL=animated-number.js.map\n"],"mappings":"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"}