@hanzogui/animations-react-native 2.0.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.
@@ -0,0 +1,350 @@
1
+ import { getEffectiveAnimation, normalizeTransition } from "@hanzogui/animation-helpers";
2
+ import { isWeb, useIsomorphicLayoutEffect } from "@hanzogui/constants";
3
+ import { ResetPresence, usePresence } from "@hanzogui/use-presence";
4
+ import { useEvent, useThemeWithState } from "@hanzogui/web";
5
+ import React from "react";
6
+ import { Animated } from "react-native-web";
7
+ const isFabric = !isWeb && typeof global < "u" && !!global.__nativeFabricUIManager,
8
+ resolveDynamicValue = (value, isDark) => value && typeof value == "object" && "dynamic" in value ? isDark ? value.dynamic.dark : value.dynamic.light : value,
9
+ animatedStyleKey = {
10
+ transform: !0,
11
+ opacity: !0
12
+ },
13
+ colorStyleKey = {
14
+ backgroundColor: !0,
15
+ color: !0,
16
+ borderColor: !0,
17
+ borderLeftColor: !0,
18
+ borderRightColor: !0,
19
+ borderTopColor: !0,
20
+ borderBottomColor: !0
21
+ },
22
+ costlyToAnimateStyleKey = {
23
+ borderRadius: !0,
24
+ borderTopLeftRadius: !0,
25
+ borderTopRightRadius: !0,
26
+ borderBottomLeftRadius: !0,
27
+ borderBottomRightRadius: !0,
28
+ borderWidth: !0,
29
+ borderLeftWidth: !0,
30
+ borderRightWidth: !0,
31
+ borderTopWidth: !0,
32
+ borderBottomWidth: !0,
33
+ ...colorStyleKey
34
+ },
35
+ AnimatedView = Animated.View,
36
+ AnimatedText = Animated.Text;
37
+ function useAnimatedNumber(initial) {
38
+ const state = React.useRef(null);
39
+ return state.current || (state.current = {
40
+ composite: null,
41
+ val: new Animated.Value(initial),
42
+ strategy: {
43
+ type: "spring"
44
+ }
45
+ }), {
46
+ getInstance() {
47
+ return state.current.val;
48
+ },
49
+ getValue() {
50
+ return state.current.val._value;
51
+ },
52
+ stop() {
53
+ state.current.composite?.stop(), state.current.composite = null;
54
+ },
55
+ setValue(next, {
56
+ type,
57
+ ...config
58
+ } = {
59
+ type: "spring"
60
+ }, onFinish) {
61
+ const val = state.current.val,
62
+ handleFinish = onFinish ? ({
63
+ finished
64
+ }) => finished ? onFinish() : null : void 0;
65
+ if (type === "direct") val.setValue(next);else if (type === "spring") {
66
+ state.current.composite?.stop();
67
+ const composite = Animated.spring(val, {
68
+ ...config,
69
+ toValue: next,
70
+ useNativeDriver: isFabric
71
+ });
72
+ composite.start(handleFinish), state.current.composite = composite;
73
+ } else {
74
+ state.current.composite?.stop();
75
+ const composite = Animated.timing(val, {
76
+ ...config,
77
+ toValue: next,
78
+ useNativeDriver: isFabric
79
+ });
80
+ composite.start(handleFinish), state.current.composite = composite;
81
+ }
82
+ }
83
+ };
84
+ }
85
+ const useAnimatedNumberReaction = ({
86
+ value
87
+ }, onValue) => {
88
+ const onChange = useEvent(current => {
89
+ onValue(current.value);
90
+ });
91
+ React.useEffect(() => {
92
+ const id = value.getInstance().addListener(onChange);
93
+ return () => {
94
+ value.getInstance().removeListener(id);
95
+ };
96
+ }, [value, onChange]);
97
+ },
98
+ useAnimatedNumberStyle = (value, getStyle) => getStyle(value.getInstance());
99
+ function createAnimations(animations, options) {
100
+ const nativeDriver = options?.useNativeDriver ?? isFabric;
101
+ return {
102
+ isReactNative: !0,
103
+ inputStyle: "value",
104
+ outputStyle: "inline",
105
+ avoidReRenders: !0,
106
+ animations,
107
+ needsCustomComponent: !0,
108
+ View: AnimatedView,
109
+ Text: AnimatedText,
110
+ useAnimatedNumber,
111
+ useAnimatedNumberReaction,
112
+ useAnimatedNumberStyle,
113
+ usePresence,
114
+ ResetPresence,
115
+ useAnimations: ({
116
+ props,
117
+ onDidAnimate,
118
+ style,
119
+ componentState,
120
+ presence,
121
+ useStyleEmitter
122
+ }) => {
123
+ const isDisabled = isWeb && componentState.unmounted === !0,
124
+ isExiting = presence?.[0] === !1,
125
+ sendExitComplete = presence?.[1],
126
+ [, themeState] = useThemeWithState({}),
127
+ isDark = themeState?.scheme === "dark" || themeState?.name?.startsWith("dark"),
128
+ animateStyles = React.useRef({}),
129
+ animatedTranforms = React.useRef([]),
130
+ animationsState = React.useRef(/* @__PURE__ */new WeakMap()),
131
+ exitCycleIdRef = React.useRef(0),
132
+ exitCompletedRef = React.useRef(!1),
133
+ wasExitingRef = React.useRef(!1),
134
+ justStartedExiting = isExiting && !wasExitingRef.current,
135
+ justStoppedExiting = !isExiting && wasExitingRef.current;
136
+ justStartedExiting && (exitCycleIdRef.current++, exitCompletedRef.current = !1), justStoppedExiting && exitCycleIdRef.current++;
137
+ const animateOnly = props.animateOnly || [],
138
+ hasTransitionOnly = !!props.animateOnly,
139
+ isEntering = !!componentState.unmounted,
140
+ wasEnteringRef = React.useRef(isEntering),
141
+ justFinishedEntering = wasEnteringRef.current && !isEntering;
142
+ React.useEffect(() => {
143
+ wasEnteringRef.current = isEntering;
144
+ });
145
+ const args = [JSON.stringify(style), componentState, isExiting, !!onDidAnimate, isDark, justFinishedEntering, hasTransitionOnly],
146
+ res = React.useMemo(() => {
147
+ const runners = [],
148
+ completions = [],
149
+ animationState = isExiting ? "exit" : isEntering || justFinishedEntering ? "enter" : "default",
150
+ nonAnimatedStyle = {};
151
+ for (const key in style) {
152
+ const rawVal = style[key],
153
+ val = resolveDynamicValue(rawVal, isDark);
154
+ if (val !== void 0 && !isDisabled) {
155
+ if (animatedStyleKey[key] == null && !costlyToAnimateStyleKey[key]) {
156
+ nonAnimatedStyle[key] = val;
157
+ continue;
158
+ }
159
+ if (hasTransitionOnly && !animateOnly.includes(key)) {
160
+ nonAnimatedStyle[key] = val;
161
+ continue;
162
+ }
163
+ if (key !== "transform") {
164
+ animateStyles.current[key] = update(key, animateStyles.current[key], val);
165
+ continue;
166
+ }
167
+ if (val) {
168
+ if (typeof val == "string") {
169
+ console.warn("Warning: Hanzo GUI can't animate string transforms yet!");
170
+ continue;
171
+ }
172
+ for (const [index, transform] of val.entries()) {
173
+ if (!transform) continue;
174
+ const tkey = Object.keys(transform)[0],
175
+ currentTransform = animatedTranforms.current[index]?.[tkey];
176
+ animatedTranforms.current[index] = {
177
+ [tkey]: update(tkey, currentTransform, transform[tkey])
178
+ }, animatedTranforms.current = [...animatedTranforms.current];
179
+ }
180
+ }
181
+ }
182
+ }
183
+ const animatedTransformStyle = animatedTranforms.current.length > 0 ? {
184
+ transform: animatedTranforms.current.map(r => {
185
+ const key = Object.keys(r)[0],
186
+ val = animationsState.current.get(r[key])?.interpolation || r[key];
187
+ return {
188
+ [key]: val
189
+ };
190
+ })
191
+ } : {},
192
+ animatedStyle = {
193
+ ...Object.fromEntries(Object.entries(animateStyles.current).map(([k, v]) => [k, animationsState.current.get(v)?.interpolation || v])),
194
+ ...animatedTransformStyle
195
+ };
196
+ return {
197
+ runners,
198
+ completions,
199
+ style: [nonAnimatedStyle, animatedStyle]
200
+ };
201
+ function update(key, animated, valIn) {
202
+ const isColorStyleKey = colorStyleKey[key],
203
+ [val, type] = isColorStyleKey ? [0, void 0] : getValue(valIn);
204
+ let animateToValue = val;
205
+ const value = animated || new Animated.Value(val),
206
+ curInterpolation = animationsState.current.get(value);
207
+ let interpolateArgs;
208
+ if (type && (interpolateArgs = getInterpolated(curInterpolation?.current ?? value._value, val, type), animationsState.current.set(value, {
209
+ interpolation: value.interpolate(interpolateArgs),
210
+ current: val
211
+ })), isColorStyleKey && (animateToValue = curInterpolation?.animateToValue ? 0 : 1, interpolateArgs = getColorInterpolated(curInterpolation?.current,
212
+ // valIn is the next color
213
+ valIn, animateToValue), animationsState.current.set(value, {
214
+ current: valIn,
215
+ interpolation: value.interpolate(interpolateArgs),
216
+ animateToValue: curInterpolation?.animateToValue ? 0 : 1
217
+ })), value) {
218
+ const animationConfig = getAnimationConfig(key, animations, props.transition, animationState);
219
+ let resolve;
220
+ const promise = new Promise(res2 => {
221
+ resolve = res2;
222
+ });
223
+ completions.push(promise), runners.push(() => {
224
+ value.stopAnimation();
225
+ function getAnimation() {
226
+ return Animated[animationConfig.type || "spring"](value, {
227
+ toValue: animateToValue,
228
+ useNativeDriver: nativeDriver,
229
+ ...animationConfig
230
+ });
231
+ }
232
+ (animationConfig.delay ? Animated.sequence([Animated.delay(animationConfig.delay), getAnimation()]) : getAnimation()).start(({
233
+ finished
234
+ }) => {
235
+ (finished || isExiting) && resolve();
236
+ });
237
+ });
238
+ }
239
+ return process.env.NODE_ENV === "development" && props.debug === "verbose" && console.info(" \u{1F4A0} animate", key, `from (${value._value}) to`, valIn, `(${val})`, "type", type, "interpolate", interpolateArgs), value;
240
+ }
241
+ }, args);
242
+ return React.useEffect(() => {
243
+ wasExitingRef.current = isExiting;
244
+ }), useIsomorphicLayoutEffect(() => {
245
+ res.runners.forEach(r => r());
246
+ const cycleId = exitCycleIdRef.current;
247
+ if (res.completions.length === 0) {
248
+ onDidAnimate?.(), isExiting && !exitCompletedRef.current && (exitCompletedRef.current = !0, sendExitComplete?.());
249
+ return;
250
+ }
251
+ let cancel = !1;
252
+ return Promise.all(res.completions).then(() => {
253
+ cancel || isExiting && cycleId !== exitCycleIdRef.current || isExiting && exitCompletedRef.current || (onDidAnimate?.(), isExiting && (exitCompletedRef.current = !0, sendExitComplete?.()));
254
+ }), () => {
255
+ cancel = !0;
256
+ };
257
+ }, args), useStyleEmitter?.(nextStyle => {
258
+ for (const key in nextStyle) {
259
+ const rawVal = nextStyle[key],
260
+ val = resolveDynamicValue(rawVal, isDark);
261
+ if (val !== void 0) if (key === "transform" && Array.isArray(val)) for (const [index, transform] of val.entries()) {
262
+ if (!transform) continue;
263
+ const tkey = Object.keys(transform)[0],
264
+ currentTransform = animatedTranforms.current[index]?.[tkey];
265
+ animatedTranforms.current[index] = {
266
+ [tkey]: update(tkey, currentTransform, transform[tkey])
267
+ };
268
+ } else (animatedStyleKey[key] != null || costlyToAnimateStyleKey[key]) && (animateStyles.current[key] = update(key, animateStyles.current[key], val));
269
+ }
270
+ res.runners.forEach(r => r());
271
+ function update(key, animated, valIn) {
272
+ const isColor = colorStyleKey[key],
273
+ [numVal, type] = isColor ? [0, void 0] : getValue(valIn);
274
+ let animateToValue = numVal;
275
+ const value = animated || new Animated.Value(numVal),
276
+ curInterpolation = animationsState.current.get(value);
277
+ type && animationsState.current.set(value, {
278
+ interpolation: value.interpolate(getInterpolated(curInterpolation?.current ?? value._value, numVal, type)),
279
+ current: numVal
280
+ }), isColor && (animateToValue = curInterpolation?.animateToValue ? 0 : 1, animationsState.current.set(value, {
281
+ current: valIn,
282
+ interpolation: value.interpolate(getColorInterpolated(curInterpolation?.current, valIn, animateToValue)),
283
+ animateToValue: curInterpolation?.animateToValue ? 0 : 1
284
+ }));
285
+ const animationConfig = getAnimationConfig(key, animations, props.transition, "default");
286
+ return res.runners.push(() => {
287
+ value.stopAnimation();
288
+ const anim = Animated[animationConfig.type || "spring"](value, {
289
+ toValue: animateToValue,
290
+ useNativeDriver: nativeDriver,
291
+ ...animationConfig
292
+ });
293
+ (animationConfig.delay ? Animated.sequence([Animated.delay(animationConfig.delay), anim]) : anim).start();
294
+ }), value;
295
+ }
296
+ }), process.env.NODE_ENV === "development" && props.debug === "verbose" && console.info("Animated", {
297
+ response: res,
298
+ inputStyle: style,
299
+ isExiting
300
+ }), res;
301
+ }
302
+ };
303
+ }
304
+ function getColorInterpolated(currentColor, nextColor, animateToValue) {
305
+ const inputRange = [0, 1],
306
+ outputRange = [currentColor || nextColor, nextColor];
307
+ return animateToValue === 0 && outputRange.reverse(), {
308
+ inputRange,
309
+ outputRange
310
+ };
311
+ }
312
+ function getInterpolated(current, next, postfix = "deg") {
313
+ next === current && (current = next - 1e-9);
314
+ const inputRange = [current, next],
315
+ outputRange = [`${current}${postfix}`, `${next}${postfix}`];
316
+ return next < current && (inputRange.reverse(), outputRange.reverse()), {
317
+ inputRange,
318
+ outputRange
319
+ };
320
+ }
321
+ function getAnimationConfig(key, animations, transition, animationState = "default") {
322
+ const normalized = normalizeTransition(transition),
323
+ shortKey = transformShorthands[key],
324
+ propAnimation = normalized.properties[key] ?? normalized.properties[shortKey];
325
+ let animationType = null,
326
+ extraConf = {};
327
+ return typeof propAnimation == "string" ? animationType = propAnimation : propAnimation && typeof propAnimation == "object" ? (animationType = propAnimation.type || getEffectiveAnimation(normalized, animationState), extraConf = propAnimation) : animationType = getEffectiveAnimation(normalized, animationState), normalized.delay && !extraConf.delay && (extraConf = {
328
+ ...extraConf,
329
+ delay: normalized.delay
330
+ }), {
331
+ ...(animationType ? animations[animationType] : {}),
332
+ // Apply global spring config overrides (from transition={['bouncy', { stiffness: 1000 }]})
333
+ ...normalized.config,
334
+ // Property-specific config takes highest precedence
335
+ ...extraConf
336
+ };
337
+ }
338
+ const transformShorthands = {
339
+ x: "translateX",
340
+ y: "translateY",
341
+ translateX: "x",
342
+ translateY: "y"
343
+ };
344
+ function getValue(input, isColor = !1) {
345
+ if (typeof input != "string") return [input];
346
+ const [_, number, after] = input.match(/([-0-9]+)(deg|%|px)/) ?? [];
347
+ return [+number, after];
348
+ }
349
+ export { AnimatedText, AnimatedView, createAnimations, useAnimatedNumber, useAnimatedNumberReaction, useAnimatedNumberStyle };
350
+ //# sourceMappingURL=createAnimations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getEffectiveAnimation","normalizeTransition","isWeb","useIsomorphicLayoutEffect","ResetPresence","usePresence","useEvent","useThemeWithState","React","Animated","isFabric","global","__nativeFabricUIManager","resolveDynamicValue","value","isDark","dynamic","dark","light","animatedStyleKey","transform","opacity","colorStyleKey","backgroundColor","color","borderColor","borderLeftColor","borderRightColor","borderTopColor","borderBottomColor","costlyToAnimateStyleKey","borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","borderWidth","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth","AnimatedView","View","AnimatedText","Text","useAnimatedNumber","initial","state","useRef","current","composite","val","Value","strategy","type","getInstance","getValue","_value","stop","setValue","next","config","onFinish","handleFinish","finished","spring","toValue","useNativeDriver","start","timing","useAnimatedNumberReaction","onValue","onChange","useEffect","id","addListener","removeListener","useAnimatedNumberStyle","getStyle","createAnimations","animations","options","nativeDriver","isReactNative","inputStyle","outputStyle","avoidReRenders","needsCustomComponent","useAnimations","props","onDidAnimate","style","componentState","presence","useStyleEmitter","isDisabled","unmounted","isExiting","sendExitComplete","themeState","scheme","name","startsWith","animateStyles","animatedTranforms","animationsState","WeakMap","exitCycleIdRef","exitCompletedRef","wasExitingRef","justStartedExiting","justStoppedExiting","animateOnly","hasTransitionOnly","isEntering","wasEnteringRef","justFinishedEntering","args","JSON","stringify","res","useMemo","runners","completions","animationState","nonAnimatedStyle","key","rawVal","includes","update","console","warn","index","entries","tkey","Object","keys","currentTransform","animatedTransformStyle","length","map","r","get","interpolation","animatedStyle","fromEntries","k","v","animated","valIn","isColorStyleKey","animateToValue","curInterpolation","interpolateArgs","getInterpolated","set","interpolate","getColorInterpolated","animationConfig","getAnimationConfig","transition","resolve","promise","Promise","res2","push","stopAnimation","getAnimation","delay","sequence","process","env","NODE_ENV","debug","info","forEach","cycleId","cancel","all","then","nextStyle","Array","isArray","isColor","numVal","anim","response","currentColor","nextColor","inputRange","outputRange","reverse","postfix","normalized","shortKey","transformShorthands","propAnimation","properties","animationType","extraConf","x","y","translateX","translateY","input","_","number","after","match"],"sources":["../../src/createAnimations.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}