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