react-native-laminar 1.4.4 → 1.5.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.
- package/README.md +36 -6
- package/lib/commonjs/hooks/use-inline-auto-width.js +24 -1
- package/lib/commonjs/hooks/use-inline-auto-width.js.map +1 -1
- package/lib/commonjs/hooks/use-leading-animation.js +49 -0
- package/lib/commonjs/hooks/use-leading-animation.js.map +1 -0
- package/lib/commonjs/hooks/use-morph-motion.js +3 -1
- package/lib/commonjs/hooks/use-morph-motion.js.map +1 -1
- package/lib/commonjs/index.js +35 -6
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/motion/preset-map.js +5 -0
- package/lib/commonjs/motion/preset-map.js.map +1 -1
- package/lib/commonjs/view/leading-element.js +37 -0
- package/lib/commonjs/view/leading-element.js.map +1 -0
- package/lib/commonjs/view/morph-viewport.js +26 -0
- package/lib/commonjs/view/morph-viewport.js.map +1 -1
- package/lib/commonjs/view/number-run.js +70 -22
- package/lib/commonjs/view/number-run.js.map +1 -1
- package/lib/commonjs/view/slot-shadow.js +77 -0
- package/lib/commonjs/view/slot-shadow.js.map +1 -0
- package/lib/commonjs/view/slots-run.js +111 -42
- package/lib/commonjs/view/slots-run.js.map +1 -1
- package/lib/commonjs/view/text-run.js +13 -24
- package/lib/commonjs/view/text-run.js.map +1 -1
- package/lib/commonjs/view/ticker-run.js +127 -0
- package/lib/commonjs/view/ticker-run.js.map +1 -0
- package/lib/module/hooks/use-inline-auto-width.js +24 -1
- package/lib/module/hooks/use-inline-auto-width.js.map +1 -1
- package/lib/module/hooks/use-leading-animation.js +44 -0
- package/lib/module/hooks/use-leading-animation.js.map +1 -0
- package/lib/module/hooks/use-morph-motion.js +3 -1
- package/lib/module/hooks/use-morph-motion.js.map +1 -1
- package/lib/module/index.js +35 -6
- package/lib/module/index.js.map +1 -1
- package/lib/module/motion/preset-map.js +5 -0
- package/lib/module/motion/preset-map.js.map +1 -1
- package/lib/module/view/leading-element.js +32 -0
- package/lib/module/view/leading-element.js.map +1 -0
- package/lib/module/view/morph-viewport.js +28 -2
- package/lib/module/view/morph-viewport.js.map +1 -1
- package/lib/module/view/number-run.js +70 -23
- package/lib/module/view/number-run.js.map +1 -1
- package/lib/module/view/slot-shadow.js +72 -0
- package/lib/module/view/slot-shadow.js.map +1 -0
- package/lib/module/view/slots-run.js +111 -42
- package/lib/module/view/slots-run.js.map +1 -1
- package/lib/module/view/text-run.js +14 -25
- package/lib/module/view/text-run.js.map +1 -1
- package/lib/module/view/ticker-run.js +121 -0
- package/lib/module/view/ticker-run.js.map +1 -0
- package/lib/typescript/commonjs/hooks/use-inline-auto-width.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/use-leading-animation.d.ts +16 -0
- package/lib/typescript/commonjs/hooks/use-leading-animation.d.ts.map +1 -0
- package/lib/typescript/commonjs/hooks/use-morph-motion.d.ts +3 -2
- package/lib/typescript/commonjs/hooks/use-morph-motion.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +1 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/motion/preset-map.d.ts.map +1 -1
- package/lib/typescript/commonjs/types.d.ts +14 -2
- package/lib/typescript/commonjs/types.d.ts.map +1 -1
- package/lib/typescript/commonjs/view/leading-element.d.ts +14 -0
- package/lib/typescript/commonjs/view/leading-element.d.ts.map +1 -0
- package/lib/typescript/commonjs/view/morph-viewport.d.ts +4 -1
- package/lib/typescript/commonjs/view/morph-viewport.d.ts.map +1 -1
- package/lib/typescript/commonjs/view/number-run.d.ts +6 -2
- package/lib/typescript/commonjs/view/number-run.d.ts.map +1 -1
- package/lib/typescript/commonjs/view/slot-shadow.d.ts +11 -0
- package/lib/typescript/commonjs/view/slot-shadow.d.ts.map +1 -0
- package/lib/typescript/commonjs/view/slots-run.d.ts +8 -3
- package/lib/typescript/commonjs/view/slots-run.d.ts.map +1 -1
- package/lib/typescript/commonjs/view/text-run.d.ts.map +1 -1
- package/lib/typescript/commonjs/view/ticker-run.d.ts +21 -0
- package/lib/typescript/commonjs/view/ticker-run.d.ts.map +1 -0
- package/lib/typescript/module/hooks/use-inline-auto-width.d.ts.map +1 -1
- package/lib/typescript/module/hooks/use-leading-animation.d.ts +16 -0
- package/lib/typescript/module/hooks/use-leading-animation.d.ts.map +1 -0
- package/lib/typescript/module/hooks/use-morph-motion.d.ts +3 -2
- package/lib/typescript/module/hooks/use-morph-motion.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +1 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/motion/preset-map.d.ts.map +1 -1
- package/lib/typescript/module/types.d.ts +14 -2
- package/lib/typescript/module/types.d.ts.map +1 -1
- package/lib/typescript/module/view/leading-element.d.ts +14 -0
- package/lib/typescript/module/view/leading-element.d.ts.map +1 -0
- package/lib/typescript/module/view/morph-viewport.d.ts +4 -1
- package/lib/typescript/module/view/morph-viewport.d.ts.map +1 -1
- package/lib/typescript/module/view/number-run.d.ts +6 -2
- package/lib/typescript/module/view/number-run.d.ts.map +1 -1
- package/lib/typescript/module/view/slot-shadow.d.ts +11 -0
- package/lib/typescript/module/view/slot-shadow.d.ts.map +1 -0
- package/lib/typescript/module/view/slots-run.d.ts +8 -3
- package/lib/typescript/module/view/slots-run.d.ts.map +1 -1
- package/lib/typescript/module/view/text-run.d.ts.map +1 -1
- package/lib/typescript/module/view/ticker-run.d.ts +21 -0
- package/lib/typescript/module/view/ticker-run.d.ts.map +1 -0
- package/package.json +3 -1
- package/src/hooks/use-inline-auto-width.ts +33 -1
- package/src/hooks/use-leading-animation.ts +74 -0
- package/src/hooks/use-morph-motion.ts +10 -1
- package/src/index.tsx +44 -6
- package/src/motion/preset-map.ts +5 -0
- package/src/types.ts +17 -2
- package/src/view/leading-element.tsx +45 -0
- package/src/view/morph-viewport.tsx +39 -1
- package/src/view/number-run.tsx +94 -26
- package/src/view/slot-shadow.tsx +99 -0
- package/src/view/slots-run.tsx +163 -58
- package/src/view/text-run.tsx +14 -51
- package/src/view/ticker-run.tsx +167 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","View","Animated","jsx","_jsx","
|
|
1
|
+
{"version":3,"names":["React","useMemo","useRef","View","Animated","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","shellStyle","position","alignSelf","viewportStyle","measuredContentStyle","left","top","opacity","flexShrink","clippedViewportStyle","overflow","unclippedViewportStyle","fullWidthViewportStyle","width","shellAlignStyles","center","right","viewportAlignStyles","alignItems","MorphViewport","memo","autoSize","clipToBounds","align","containerStyle","animatedWidthStyle","autoSizeLayoutTransition","onVisibleLayout","measurement","children","hasRenderedRef","shouldAnimateAutoSizeLayout","undefined","current","resolvedViewportStyle","layout","style","accessibilityElementsHidden","collapsable","importantForAccessibility","pointerEvents","onLayout","displayName"],"sourceRoot":"../../../src","sources":["view/morph-viewport.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
import React, { useMemo, useRef } from "react";
|
|
4
4
|
import { View } from "react-native";
|
|
5
|
+
import Animated from "react-native-reanimated";
|
|
6
|
+
import { useLeadingAnimation } from "../hooks/use-leading-animation.js";
|
|
5
7
|
import { useNumericLanes } from "../hooks/use-numeric-lanes.js";
|
|
8
|
+
import { LeadingElement } from "./leading-element.js";
|
|
6
9
|
import { NumberLane } from "./number-lane.js";
|
|
7
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
11
|
const rowStyle = {
|
|
9
12
|
flexDirection: "row",
|
|
10
13
|
alignItems: "center",
|
|
@@ -29,45 +32,89 @@ export const NumberRun = /*#__PURE__*/React.memo(({
|
|
|
29
32
|
fontSize,
|
|
30
33
|
textStyle,
|
|
31
34
|
staggerMs,
|
|
32
|
-
className
|
|
35
|
+
className,
|
|
36
|
+
leading,
|
|
37
|
+
leadingKey,
|
|
38
|
+
leadingGap = 0,
|
|
39
|
+
ready = true
|
|
33
40
|
}) => {
|
|
41
|
+
const hasDisplayedRef = useRef(false);
|
|
42
|
+
const displayedValueRef = useRef(value);
|
|
43
|
+
const displayedLeadingRef = useRef(leading);
|
|
44
|
+
const displayedLeadingKeyRef = useRef(leadingKey);
|
|
45
|
+
const displayedLeadingGapRef = useRef(leadingGap);
|
|
46
|
+
const shouldDisplayTarget = ready || !hasDisplayedRef.current;
|
|
47
|
+
const visibleValue = shouldDisplayTarget ? value : displayedValueRef.current;
|
|
48
|
+
const visibleLeading = shouldDisplayTarget ? leading : displayedLeadingRef.current;
|
|
49
|
+
const visibleLeadingKey = shouldDisplayTarget ? leadingKey : displayedLeadingKeyRef.current;
|
|
50
|
+
const visibleLeadingGap = shouldDisplayTarget ? leadingGap : displayedLeadingGapRef.current;
|
|
51
|
+
if (shouldDisplayTarget) {
|
|
52
|
+
hasDisplayedRef.current = true;
|
|
53
|
+
displayedValueRef.current = value;
|
|
54
|
+
displayedLeadingRef.current = leading;
|
|
55
|
+
displayedLeadingKeyRef.current = leadingKey;
|
|
56
|
+
displayedLeadingGapRef.current = leadingGap;
|
|
57
|
+
}
|
|
58
|
+
const {
|
|
59
|
+
elementEnterTransition,
|
|
60
|
+
elementExitTransition,
|
|
61
|
+
isLeadingChange,
|
|
62
|
+
isLeadingSwap
|
|
63
|
+
} = useLeadingAnimation({
|
|
64
|
+
leading: visibleLeading,
|
|
65
|
+
leadingKey: visibleLeadingKey,
|
|
66
|
+
leadingGap: visibleLeadingGap,
|
|
67
|
+
motionRecipe
|
|
68
|
+
});
|
|
34
69
|
// the hook owns lane identity while this component owns row placement and timing
|
|
35
70
|
const {
|
|
36
71
|
units,
|
|
37
72
|
laneKeys,
|
|
38
73
|
direction,
|
|
39
74
|
leadLength
|
|
40
|
-
} = useNumericLanes(
|
|
41
|
-
const lastValueRef = useRef(
|
|
75
|
+
} = useNumericLanes(visibleValue);
|
|
76
|
+
const lastValueRef = useRef(visibleValue);
|
|
42
77
|
const hasAnimatedRef = useRef(false);
|
|
43
78
|
|
|
44
79
|
// skip enter animations on first paint so the number feels settled
|
|
45
|
-
if (
|
|
80
|
+
if (visibleValue !== lastValueRef.current || isLeadingChange) {
|
|
46
81
|
hasAnimatedRef.current = true;
|
|
47
|
-
lastValueRef.current =
|
|
82
|
+
lastValueRef.current = visibleValue;
|
|
48
83
|
}
|
|
49
84
|
|
|
50
85
|
// scale travel from the font while keeping a minimum visible movement
|
|
51
86
|
const travelDistance = useMemo(() => Math.max(8, Math.round((fontSize ?? 16) * 0.4)), [fontSize]);
|
|
52
87
|
const hasAnimated = hasAnimatedRef.current;
|
|
53
|
-
return /*#__PURE__*/
|
|
88
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
54
89
|
style: [rowStyle, rowAlignStyles[align]],
|
|
55
|
-
children:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
90
|
+
children: [/*#__PURE__*/_jsx(LeadingElement, {
|
|
91
|
+
leading: visibleLeading,
|
|
92
|
+
leadingKey: visibleLeadingKey,
|
|
93
|
+
leadingGap: visibleLeadingGap,
|
|
94
|
+
enterTransition: hasAnimated ? motionRecipe.enterTransition : undefined,
|
|
95
|
+
elementEnterTransition: isLeadingSwap ? elementEnterTransition : undefined,
|
|
96
|
+
exitTransition: motionRecipe.exitTransition,
|
|
97
|
+
elementExitTransition: elementExitTransition
|
|
98
|
+
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
99
|
+
layout: isLeadingChange ? motionRecipe.layoutTransition : undefined,
|
|
100
|
+
style: rowStyle,
|
|
101
|
+
children: units.map((unit, index) => {
|
|
102
|
+
const inLead = index < leadLength;
|
|
103
|
+
const laneKey = inLead ? `lead:${index}` : `lane:${units.length - 1 - index}`;
|
|
104
|
+
return /*#__PURE__*/_jsx(NumberLane, {
|
|
105
|
+
unit: unit,
|
|
106
|
+
tokenKey: laneKeys[index],
|
|
107
|
+
isLead: inLead,
|
|
108
|
+
hasAnimated: hasAnimated,
|
|
109
|
+
delayMs: index * staggerMs,
|
|
110
|
+
direction: direction,
|
|
111
|
+
travelDistance: travelDistance,
|
|
112
|
+
motionRecipe: motionRecipe,
|
|
113
|
+
textStyle: textStyle,
|
|
114
|
+
className: className
|
|
115
|
+
}, laneKey);
|
|
116
|
+
})
|
|
117
|
+
})]
|
|
71
118
|
});
|
|
72
119
|
});
|
|
73
120
|
NumberRun.displayName = "NumberRun";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","useRef","View","useNumericLanes","NumberLane","jsx","_jsx","rowStyle","flexDirection","alignItems","alignSelf","rowAlignStyles","left","center","right","NumberRun","memo","value","motionRecipe","align","fontSize","textStyle","staggerMs","className","units","laneKeys","direction","leadLength","lastValueRef","hasAnimatedRef","
|
|
1
|
+
{"version":3,"names":["React","useMemo","useRef","View","Animated","useLeadingAnimation","useNumericLanes","LeadingElement","NumberLane","jsx","_jsx","jsxs","_jsxs","rowStyle","flexDirection","alignItems","alignSelf","rowAlignStyles","left","center","right","NumberRun","memo","value","motionRecipe","align","fontSize","textStyle","staggerMs","className","leading","leadingKey","leadingGap","ready","hasDisplayedRef","displayedValueRef","displayedLeadingRef","displayedLeadingKeyRef","displayedLeadingGapRef","shouldDisplayTarget","current","visibleValue","visibleLeading","visibleLeadingKey","visibleLeadingGap","elementEnterTransition","elementExitTransition","isLeadingChange","isLeadingSwap","units","laneKeys","direction","leadLength","lastValueRef","hasAnimatedRef","travelDistance","Math","max","round","hasAnimated","style","children","enterTransition","undefined","exitTransition","layout","layoutTransition","map","unit","index","inLead","laneKey","length","tokenKey","isLead","delayMs","displayName"],"sourceRoot":"../../../src","sources":["view/number-run.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from "react";
|
|
4
|
+
import MaskedView from "@react-native-masked-view/masked-view";
|
|
5
|
+
import { LinearGradient } from "expo-linear-gradient";
|
|
6
|
+
import { StyleSheet } from "react-native";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const DEFAULT_SHADOW_COLOR = "#ffffff";
|
|
9
|
+
// The reference digit viewport fades across roughly one third of its visible row.
|
|
10
|
+
const DEFAULT_SHADOW_SIZE_RATIO = 0.28;
|
|
11
|
+
const transparentColor = color => {
|
|
12
|
+
const value = color.trim();
|
|
13
|
+
if (value.startsWith("#")) {
|
|
14
|
+
const hex = value.slice(1);
|
|
15
|
+
const expanded = hex.length === 3 || hex.length === 4 ? hex.slice(0, 3).split("").map(channel => channel + channel).join("") : hex.slice(0, 6);
|
|
16
|
+
if (expanded.length === 6 && /^[0-9a-f]+$/i.test(expanded)) {
|
|
17
|
+
return `rgba(${Number.parseInt(expanded.slice(0, 2), 16)}, ${Number.parseInt(expanded.slice(2, 4), 16)}, ${Number.parseInt(expanded.slice(4, 6), 16)}, 0)`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const channels = value.match(/\d+(?:\.\d+)?%?/g);
|
|
21
|
+
if ((value.startsWith("rgb(") || value.startsWith("rgba(")) && channels) {
|
|
22
|
+
const rgb = channels.slice(0, 3).map(channel => {
|
|
23
|
+
if (channel.endsWith("%")) {
|
|
24
|
+
return Math.round(Number.parseFloat(channel) / 100 * 255);
|
|
25
|
+
}
|
|
26
|
+
return Number.parseFloat(channel);
|
|
27
|
+
});
|
|
28
|
+
if (rgb.length === 3 && rgb.every(Number.isFinite)) {
|
|
29
|
+
return `rgba(${rgb.join(", ")}, 0)`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Keep the fallback light so an unknown color never introduces a dark edge.
|
|
34
|
+
return "rgba(255, 255, 255, 0)";
|
|
35
|
+
};
|
|
36
|
+
// Keep the mask mounted for the lifetime of the viewport. The gradient controls
|
|
37
|
+
// content alpha at the clipping edges instead of painting over the glyphs.
|
|
38
|
+
export const SlotShadow = /*#__PURE__*/React.memo(function SlotShadow({
|
|
39
|
+
slotHeight,
|
|
40
|
+
viewportHeight,
|
|
41
|
+
color = DEFAULT_SHADOW_COLOR,
|
|
42
|
+
size,
|
|
43
|
+
children
|
|
44
|
+
}) {
|
|
45
|
+
const edgeSize = Math.min(Math.max(4, size ?? slotHeight * DEFAULT_SHADOW_SIZE_RATIO), viewportHeight / 2);
|
|
46
|
+
const fadeColor = transparentColor(color);
|
|
47
|
+
const fadeRatio = edgeSize / viewportHeight;
|
|
48
|
+
return /*#__PURE__*/_jsx(MaskedView, {
|
|
49
|
+
pointerEvents: "none",
|
|
50
|
+
style: styles.container,
|
|
51
|
+
maskElement: /*#__PURE__*/_jsx(LinearGradient, {
|
|
52
|
+
colors: [fadeColor, color, color, fadeColor],
|
|
53
|
+
locations: [0, fadeRatio, 1 - fadeRatio, 1],
|
|
54
|
+
start: {
|
|
55
|
+
x: 0,
|
|
56
|
+
y: 0
|
|
57
|
+
},
|
|
58
|
+
end: {
|
|
59
|
+
x: 0,
|
|
60
|
+
y: 1
|
|
61
|
+
},
|
|
62
|
+
style: styles.mask
|
|
63
|
+
}),
|
|
64
|
+
children: children
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
SlotShadow.displayName = "SlotShadow";
|
|
68
|
+
const styles = StyleSheet.create({
|
|
69
|
+
container: StyleSheet.absoluteFillObject,
|
|
70
|
+
mask: StyleSheet.absoluteFillObject
|
|
71
|
+
});
|
|
72
|
+
//# sourceMappingURL=slot-shadow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","MaskedView","LinearGradient","StyleSheet","jsx","_jsx","DEFAULT_SHADOW_COLOR","DEFAULT_SHADOW_SIZE_RATIO","transparentColor","color","value","trim","startsWith","hex","slice","expanded","length","split","map","channel","join","test","Number","parseInt","channels","match","rgb","endsWith","Math","round","parseFloat","every","isFinite","SlotShadow","memo","slotHeight","viewportHeight","size","children","edgeSize","min","max","fadeColor","fadeRatio","pointerEvents","style","styles","container","maskElement","colors","locations","start","x","y","end","mask","displayName","create","absoluteFillObject"],"sourceRoot":"../../../src","sources":["view/slot-shadow.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
import React, { useEffect, useMemo, useRef } from "react";
|
|
4
4
|
import { StyleSheet, Text, View } from "react-native";
|
|
5
5
|
import Animated, { useAnimatedStyle, useSharedValue } from "react-native-reanimated";
|
|
6
|
+
import { useLeadingAnimation } from "../hooks/use-leading-animation.js";
|
|
6
7
|
import { useNumericLanes } from "../hooks/use-numeric-lanes.js";
|
|
7
8
|
import { isAsciiDigit } from "../model/display-units.js";
|
|
9
|
+
import { LeadingElement } from "./leading-element.js";
|
|
10
|
+
import { SlotShadow } from "./slot-shadow.js";
|
|
8
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
12
|
const rowStyle = {
|
|
10
13
|
flexDirection: "row",
|
|
@@ -44,7 +47,7 @@ const mod = (value, divisor) => (value % divisor + divisor) % divisor;
|
|
|
44
47
|
// compare flattened style values without treating a new array as a visual change
|
|
45
48
|
const equalStyleValue = (left, right) => left === right || Array.isArray(left) && Array.isArray(right) && left.length === right.length && left.every((value, index) => value === right[index]);
|
|
46
49
|
|
|
47
|
-
// prevent every parent update from rebuilding the
|
|
50
|
+
// prevent every parent update from rebuilding the bounded reel
|
|
48
51
|
const areSlotReelPropsEqual = (previous, next) => {
|
|
49
52
|
if (previous.current !== next.current || previous.slotHeight !== next.slotHeight || previous.className !== next.className) {
|
|
50
53
|
return false;
|
|
@@ -98,7 +101,8 @@ function SlotColumn({
|
|
|
98
101
|
motionRecipe,
|
|
99
102
|
slotHeight,
|
|
100
103
|
textStyle,
|
|
101
|
-
className
|
|
104
|
+
className,
|
|
105
|
+
shadow = false
|
|
102
106
|
}) {
|
|
103
107
|
// cumulative positions let the reel move across digit wraparound without jumps
|
|
104
108
|
const spinInDistance = Math.max(digit, 1);
|
|
@@ -108,12 +112,14 @@ function SlotColumn({
|
|
|
108
112
|
const cumulativeRef = useRef(digit);
|
|
109
113
|
const previousDigitRef = useRef(digit);
|
|
110
114
|
const initialRef = useRef(true);
|
|
115
|
+
const drivenTargetRef = useRef(null);
|
|
111
116
|
const exitStateRef = useRef({
|
|
112
117
|
digit,
|
|
113
118
|
direction,
|
|
114
119
|
motionRecipe,
|
|
115
120
|
target: digit
|
|
116
121
|
});
|
|
122
|
+
const shadowOptions = shadow !== null && typeof shadow === "object" ? shadow : shadow ? {} : undefined;
|
|
117
123
|
if (digit !== previousDigitRef.current) {
|
|
118
124
|
const previousDigit = previousDigitRef.current;
|
|
119
125
|
let digitDelta;
|
|
@@ -147,6 +153,7 @@ function SlotColumn({
|
|
|
147
153
|
if (initialRef.current) {
|
|
148
154
|
initialRef.current = false;
|
|
149
155
|
if (!animateIn) {
|
|
156
|
+
drivenTargetRef.current = cumulativeRef.current;
|
|
150
157
|
return;
|
|
151
158
|
}
|
|
152
159
|
}
|
|
@@ -165,22 +172,38 @@ function SlotColumn({
|
|
|
165
172
|
motionRecipe,
|
|
166
173
|
target
|
|
167
174
|
};
|
|
175
|
+
|
|
176
|
+
// A direction change can rerender every column even when this column's
|
|
177
|
+
// digit is unchanged. Keep the idle reel untouched in that case.
|
|
178
|
+
if (drivenTargetRef.current === target) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
drivenTargetRef.current = target;
|
|
168
182
|
current.value = motionRecipe.driveNumber(target, delayMs);
|
|
169
183
|
}, [animateIn, current, delayMs, digit, direction, motionRecipe]);
|
|
184
|
+
const reel = /*#__PURE__*/_jsx(SlotReel, {
|
|
185
|
+
current: current,
|
|
186
|
+
slotHeight: slotHeight,
|
|
187
|
+
textStyle: textStyle,
|
|
188
|
+
className: className
|
|
189
|
+
});
|
|
170
190
|
return /*#__PURE__*/_jsxs(View, {
|
|
171
|
-
style: slotFrameStyle,
|
|
191
|
+
style: [slotFrameStyle, {
|
|
192
|
+
height: slotHeight
|
|
193
|
+
}],
|
|
172
194
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
173
195
|
style: [textStyle, slotProbeStyle, {
|
|
174
196
|
lineHeight: slotHeight
|
|
175
197
|
}],
|
|
176
198
|
className: className,
|
|
177
199
|
children: "0"
|
|
178
|
-
}), /*#__PURE__*/_jsx(
|
|
179
|
-
current: current,
|
|
200
|
+
}), shadowOptions ? /*#__PURE__*/_jsx(SlotShadow, {
|
|
180
201
|
slotHeight: slotHeight,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
202
|
+
viewportHeight: slotHeight,
|
|
203
|
+
color: shadowOptions.color,
|
|
204
|
+
size: shadowOptions.size,
|
|
205
|
+
children: reel
|
|
206
|
+
}) : reel]
|
|
184
207
|
});
|
|
185
208
|
}
|
|
186
209
|
// render text prefixes beside reusable digit reels
|
|
@@ -191,15 +214,48 @@ export const SlotsRun = /*#__PURE__*/React.memo(({
|
|
|
191
214
|
fontSize,
|
|
192
215
|
textStyle,
|
|
193
216
|
staggerMs,
|
|
194
|
-
className
|
|
217
|
+
className,
|
|
218
|
+
leading,
|
|
219
|
+
leadingKey,
|
|
220
|
+
leadingGap = 0,
|
|
221
|
+
ready = true,
|
|
222
|
+
shadow = false
|
|
195
223
|
}) => {
|
|
224
|
+
const hasDisplayedRef = useRef(false);
|
|
225
|
+
const displayedValueRef = useRef(value);
|
|
226
|
+
const displayedLeadingRef = useRef(leading);
|
|
227
|
+
const displayedLeadingKeyRef = useRef(leadingKey);
|
|
228
|
+
const displayedLeadingGapRef = useRef(leadingGap);
|
|
229
|
+
const shouldDisplayTarget = ready || !hasDisplayedRef.current;
|
|
230
|
+
const visibleValue = shouldDisplayTarget ? value : displayedValueRef.current;
|
|
231
|
+
const visibleLeading = shouldDisplayTarget ? leading : displayedLeadingRef.current;
|
|
232
|
+
const visibleLeadingKey = shouldDisplayTarget ? leadingKey : displayedLeadingKeyRef.current;
|
|
233
|
+
const visibleLeadingGap = shouldDisplayTarget ? leadingGap : displayedLeadingGapRef.current;
|
|
234
|
+
if (shouldDisplayTarget) {
|
|
235
|
+
hasDisplayedRef.current = true;
|
|
236
|
+
displayedValueRef.current = value;
|
|
237
|
+
displayedLeadingRef.current = leading;
|
|
238
|
+
displayedLeadingKeyRef.current = leadingKey;
|
|
239
|
+
displayedLeadingGapRef.current = leadingGap;
|
|
240
|
+
}
|
|
241
|
+
const {
|
|
242
|
+
elementEnterTransition,
|
|
243
|
+
elementExitTransition,
|
|
244
|
+
isLeadingChange,
|
|
245
|
+
isLeadingSwap
|
|
246
|
+
} = useLeadingAnimation({
|
|
247
|
+
leading: visibleLeading,
|
|
248
|
+
leadingKey: visibleLeadingKey,
|
|
249
|
+
leadingGap: visibleLeadingGap,
|
|
250
|
+
motionRecipe
|
|
251
|
+
});
|
|
196
252
|
// numeric lane identity decides which columns stay mounted as values change
|
|
197
253
|
const {
|
|
198
254
|
units,
|
|
199
255
|
direction,
|
|
200
256
|
leadLength
|
|
201
|
-
} = useNumericLanes(
|
|
202
|
-
const lastValueRef = useRef(
|
|
257
|
+
} = useNumericLanes(visibleValue);
|
|
258
|
+
const lastValueRef = useRef(visibleValue);
|
|
203
259
|
const hasAnimatedRef = useRef(false);
|
|
204
260
|
// derive one stable row height so every reel position shares the same baseline
|
|
205
261
|
const slotHeight = useMemo(() => {
|
|
@@ -208,45 +264,58 @@ export const SlotsRun = /*#__PURE__*/React.memo(({
|
|
|
208
264
|
const resolvedFontSize = typeof flattenedStyle?.fontSize === "number" ? flattenedStyle.fontSize : fontSize;
|
|
209
265
|
return Math.max(12, Math.ceil(resolvedLineHeight ?? (resolvedFontSize ?? 16) * 1.18));
|
|
210
266
|
}, [fontSize, textStyle]);
|
|
211
|
-
if (
|
|
267
|
+
if (visibleValue !== lastValueRef.current || isLeadingChange) {
|
|
212
268
|
hasAnimatedRef.current = true;
|
|
213
|
-
lastValueRef.current =
|
|
269
|
+
lastValueRef.current = visibleValue;
|
|
214
270
|
}
|
|
215
271
|
const digitCount = units.filter(isAsciiDigit).length;
|
|
216
272
|
let digitIndex = 0;
|
|
217
273
|
const hasAnimated = hasAnimatedRef.current;
|
|
218
|
-
return /*#__PURE__*/
|
|
274
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
219
275
|
style: [rowStyle, rowAlignStyles[align]],
|
|
220
|
-
children:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
276
|
+
children: [/*#__PURE__*/_jsx(LeadingElement, {
|
|
277
|
+
leading: visibleLeading,
|
|
278
|
+
leadingKey: visibleLeadingKey,
|
|
279
|
+
leadingGap: visibleLeadingGap,
|
|
280
|
+
enterTransition: hasAnimated ? motionRecipe.enterTransition : undefined,
|
|
281
|
+
elementEnterTransition: isLeadingSwap ? elementEnterTransition : undefined,
|
|
282
|
+
exitTransition: motionRecipe.exitTransition,
|
|
283
|
+
elementExitTransition: elementExitTransition
|
|
284
|
+
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
285
|
+
layout: isLeadingChange ? motionRecipe.layoutTransition : undefined,
|
|
286
|
+
style: rowStyle,
|
|
287
|
+
children: units.map((unit, index) => {
|
|
288
|
+
const inLead = index < leadLength;
|
|
289
|
+
const laneKey = inLead ? `lead:${index}` : `slot:${units.length - 1 - index}`;
|
|
290
|
+
if (inLead || !isAsciiDigit(unit)) {
|
|
291
|
+
return /*#__PURE__*/_jsx(Animated.Text, {
|
|
292
|
+
layout: hasAnimated ? motionRecipe.layoutTransition : undefined,
|
|
293
|
+
exiting: !inLead ? motionRecipe.exitTransition : undefined,
|
|
294
|
+
style: textStyle,
|
|
295
|
+
className: className,
|
|
296
|
+
children: unit
|
|
297
|
+
}, laneKey);
|
|
298
|
+
}
|
|
299
|
+
const delayMs = (digitCount - 1 - digitIndex) * staggerMs;
|
|
300
|
+
digitIndex += 1;
|
|
301
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
225
302
|
layout: hasAnimated ? motionRecipe.layoutTransition : undefined,
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
303
|
+
entering: hasAnimated ? motionRecipe.enterTransition : undefined,
|
|
304
|
+
exiting: motionRecipe.exitTransition,
|
|
305
|
+
children: /*#__PURE__*/_jsx(SlotColumn, {
|
|
306
|
+
digit: Number(unit),
|
|
307
|
+
direction: direction,
|
|
308
|
+
delayMs: delayMs,
|
|
309
|
+
animateIn: hasAnimated,
|
|
310
|
+
motionRecipe: motionRecipe,
|
|
311
|
+
slotHeight: slotHeight,
|
|
312
|
+
textStyle: textStyle,
|
|
313
|
+
className: className,
|
|
314
|
+
shadow: shadow
|
|
315
|
+
})
|
|
230
316
|
}, laneKey);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
digitIndex += 1;
|
|
234
|
-
return /*#__PURE__*/_jsx(Animated.View, {
|
|
235
|
-
layout: hasAnimated ? motionRecipe.layoutTransition : undefined,
|
|
236
|
-
entering: hasAnimated ? motionRecipe.enterTransition : undefined,
|
|
237
|
-
exiting: motionRecipe.exitTransition,
|
|
238
|
-
children: /*#__PURE__*/_jsx(SlotColumn, {
|
|
239
|
-
digit: Number(unit),
|
|
240
|
-
direction: direction,
|
|
241
|
-
delayMs: delayMs,
|
|
242
|
-
animateIn: hasAnimated,
|
|
243
|
-
motionRecipe: motionRecipe,
|
|
244
|
-
slotHeight: slotHeight,
|
|
245
|
-
textStyle: textStyle,
|
|
246
|
-
className: className
|
|
247
|
-
})
|
|
248
|
-
}, laneKey);
|
|
249
|
-
})
|
|
317
|
+
})
|
|
318
|
+
})]
|
|
250
319
|
});
|
|
251
320
|
});
|
|
252
321
|
SlotsRun.displayName = "SlotsRun";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useMemo","useRef","StyleSheet","Text","View","Animated","useAnimatedStyle","useSharedValue","useNumericLanes","isAsciiDigit","jsx","_jsx","jsxs","_jsxs","rowStyle","flexDirection","alignItems","alignSelf","rowAlignStyles","left","center","right","slotFrameStyle","position","overflow","slotProbeStyle","opacity","slotDigitStyle","textAlign","REEL_MIN","REEL_MAX","REEL_POSITIONS","Array","from","length","_","index","mod","value","divisor","equalStyleValue","isArray","every","areSlotReelPropsEqual","previous","next","current","slotHeight","className","previousStyle","flatten","textStyle","nextStyle","previousKeys","Object","keys","nextKeys","key","SlotReel","memo","animatedStyle","transform","translateY","pointerEvents","style","top","children","map","numberOfLines","height","lineHeight","SlotColumn","digit","direction","delayMs","animateIn","motionRecipe","spinInDistance","Math","max","initialDirection","initialValue","cumulativeRef","previousDigitRef","initialRef","exitStateRef","target","previousDigit","digitDelta","exitState","spinOutDistance","exitDirection","driveNumber","shift","trunc","SlotsRun","align","fontSize","staggerMs","units","leadLength","lastValueRef","hasAnimatedRef","flattenedStyle","resolvedLineHeight","undefined","resolvedFontSize","ceil","digitCount","filter","digitIndex","hasAnimated","unit","inLead","laneKey","layout","layoutTransition","exiting","exitTransition","entering","enterTransition","Number","displayName"],"sourceRoot":"../../../src","sources":["view/slots-run.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useMemo","useRef","StyleSheet","Text","View","Animated","useAnimatedStyle","useSharedValue","useLeadingAnimation","useNumericLanes","isAsciiDigit","LeadingElement","SlotShadow","jsx","_jsx","jsxs","_jsxs","rowStyle","flexDirection","alignItems","alignSelf","rowAlignStyles","left","center","right","slotFrameStyle","position","overflow","slotProbeStyle","opacity","slotDigitStyle","textAlign","REEL_MIN","REEL_MAX","REEL_POSITIONS","Array","from","length","_","index","mod","value","divisor","equalStyleValue","isArray","every","areSlotReelPropsEqual","previous","next","current","slotHeight","className","previousStyle","flatten","textStyle","nextStyle","previousKeys","Object","keys","nextKeys","key","SlotReel","memo","animatedStyle","transform","translateY","pointerEvents","style","top","children","map","numberOfLines","height","lineHeight","SlotColumn","digit","direction","delayMs","animateIn","motionRecipe","shadow","spinInDistance","Math","max","initialDirection","initialValue","cumulativeRef","previousDigitRef","initialRef","drivenTargetRef","exitStateRef","target","shadowOptions","undefined","previousDigit","digitDelta","exitState","spinOutDistance","exitDirection","driveNumber","shift","trunc","reel","viewportHeight","color","size","SlotsRun","align","fontSize","staggerMs","leading","leadingKey","leadingGap","ready","hasDisplayedRef","displayedValueRef","displayedLeadingRef","displayedLeadingKeyRef","displayedLeadingGapRef","shouldDisplayTarget","visibleValue","visibleLeading","visibleLeadingKey","visibleLeadingGap","elementEnterTransition","elementExitTransition","isLeadingChange","isLeadingSwap","units","leadLength","lastValueRef","hasAnimatedRef","flattenedStyle","resolvedLineHeight","resolvedFontSize","ceil","digitCount","filter","digitIndex","hasAnimated","enterTransition","exitTransition","layout","layoutTransition","unit","inLead","laneKey","exiting","entering","Number","displayName"],"sourceRoot":"../../../src","sources":["view/slots-run.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import React, { useId,
|
|
4
|
-
import { useSharedValue } from "react-native-reanimated";
|
|
3
|
+
import React, { useId, useRef } from "react";
|
|
5
4
|
import { useTextGlyphs } from "../hooks/use-text-glyphs.js";
|
|
6
|
-
import {
|
|
5
|
+
import { useLeadingAnimation } from "../hooks/use-leading-animation.js";
|
|
7
6
|
import { GlyphRun } from "./glyph-run.js";
|
|
8
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
8
|
// connect text identity, leading transitions, and glyph layout into one run
|
|
@@ -39,34 +38,24 @@ export const TextRun = /*#__PURE__*/React.memo(({
|
|
|
39
38
|
displayedLeadingGapRef.current = leadingGap;
|
|
40
39
|
}
|
|
41
40
|
const lastValueRef = useRef(visibleValue);
|
|
42
|
-
const lastLeadingPresenceRef = useRef(Boolean(visibleLeading));
|
|
43
|
-
const lastLeadingKeyRef = useRef(visibleLeadingKey);
|
|
44
41
|
const hasAnimatedRef = useRef(false);
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const elementEnterTransition = useMemo(() => createLeadingEnterTransition({
|
|
54
|
-
durationMs: motionRecipe.durationMs,
|
|
55
|
-
easing: motionRecipe.easing
|
|
56
|
-
}), [motionRecipe.durationMs, motionRecipe.easing]);
|
|
57
|
-
const elementExitTransition = useMemo(() => createLeadingExitTransition({
|
|
58
|
-
durationMs: motionRecipe.durationMs,
|
|
59
|
-
easing: motionRecipe.easing,
|
|
42
|
+
const {
|
|
43
|
+
elementEnterTransition,
|
|
44
|
+
elementExitTransition,
|
|
45
|
+
isLeadingChange,
|
|
46
|
+
isLeadingSwap
|
|
47
|
+
} = useLeadingAnimation({
|
|
48
|
+
leading: visibleLeading,
|
|
49
|
+
leadingKey: visibleLeadingKey,
|
|
60
50
|
leadingGap: visibleLeadingGap,
|
|
61
|
-
|
|
62
|
-
})
|
|
51
|
+
motionRecipe
|
|
52
|
+
});
|
|
53
|
+
const glyphs = useTextGlyphs(visibleValue, scopeId, visibleLeading, visibleLeadingKey);
|
|
63
54
|
|
|
64
55
|
// mark the first value as settled and later changes as eligible for motion
|
|
65
|
-
if (visibleValue !== lastValueRef.current ||
|
|
56
|
+
if (visibleValue !== lastValueRef.current || isLeadingChange) {
|
|
66
57
|
hasAnimatedRef.current = true;
|
|
67
58
|
lastValueRef.current = visibleValue;
|
|
68
|
-
lastLeadingPresenceRef.current = Boolean(visibleLeading);
|
|
69
|
-
lastLeadingKeyRef.current = visibleLeadingKey;
|
|
70
59
|
}
|
|
71
60
|
const hasAnimated = hasAnimatedRef.current;
|
|
72
61
|
return /*#__PURE__*/_jsx(GlyphRun, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useId","
|
|
1
|
+
{"version":3,"names":["React","useId","useRef","useTextGlyphs","useLeadingAnimation","GlyphRun","jsx","_jsx","TextRun","memo","value","motionRecipe","align","leading","leadingLayoutGroup","leadingKey","leadingGap","ready","textStyle","className","scopeId","hasDisplayedRef","displayedValueRef","displayedLeadingRef","displayedLeadingKeyRef","displayedLeadingGapRef","shouldDisplayTarget","current","visibleValue","visibleLeading","visibleLeadingKey","visibleLeadingGap","lastValueRef","hasAnimatedRef","elementEnterTransition","elementExitTransition","isLeadingChange","isLeadingSwap","glyphs","hasAnimated","layoutTransition","undefined","leadingLayoutTransition","enterTransition","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":"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","ignoreList":[]}
|