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
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","View","Animated","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","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","onVisibleLayout","measurement","children","resolvedViewportStyle","style","accessibilityElementsHidden","collapsable","importantForAccessibility","pointerEvents","onLayout","displayName"],"sourceRoot":"../../../src","sources":["view/morph-viewport.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAEtC,SAASC,IAAI,QAAQ,cAAc;AACnC,OAAOC,QAAQ,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C,MAAMC,UAAU,GAAG;EACjBC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE;AACb,CAAU;AAEV,MAAMC,aAAa,GAAG;EACpBD,SAAS,EAAE;AACb,CAAU;AAEV,MAAME,oBAA+B,GAAG;EACtCH,QAAQ,EAAE,UAAU;EACpBI,IAAI,EAAE,CAAC;EACPC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE,CAAC;EACVL,SAAS,EAAE,YAAY;EACvBM,UAAU,EAAE;AACd,CAAC;AAED,MAAMC,oBAA+B,GAAG;EACtCC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,sBAAiC,GAAG;EACxCD,QAAQ,EAAE;AACZ,CAAC;AAED,MAAME,sBAAiC,GAAG;EACxCC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,gBAAiD,GAAG;EACxDT,IAAI,EAAE;IAAEH,SAAS,EAAE;EAAa,CAAC;EACjCa,MAAM,EAAE;IAAEb,SAAS,EAAE;EAAS,CAAC;EAC/Bc,KAAK,EAAE;IAAEd,SAAS,EAAE;EAAW;AACjC,CAAC;AAED,MAAMe,mBAAoD,GAAG;EAC3DZ,IAAI,EAAE;IAAEa,UAAU,EAAE;EAAa,CAAC;EAClCH,MAAM,EAAE;IAAEG,UAAU,EAAE;EAAS,CAAC;EAChCF,KAAK,EAAE;IAAEE,UAAU,EAAE;EAAW;AAClC,CAAC;AAaD;AACA,OAAO,MAAMC,aAAa,gBAAG7B,KAAK,CAAC8B,IAAI,CACrC,CAAC;EACCC,QAAQ;EACRC,YAAY;EACZC,KAAK;EACLC,cAAc;EACdC,kBAAkB;EAClBC,eAAe;EACfC,WAAW;EACXC;AACkB,CAAC,KAAK;EACxB;EACA,MAAMC,qBAAqB,GAAGtC,OAAO,CACnC,MAAM,CACJY,aAAa,EACbc,mBAAmB,CAACM,KAAK,CAAC,EAC1BD,YAAY,GAAGb,oBAAoB,GAAGE,sBAAsB,CAC7D,EACD,CAACY,KAAK,EAAED,YAAY,CACtB,CAAC;;EAED;EACA,oBACE3B,IAAA,CAACH,IAAI;IAACsC,KAAK,EAAE,CAAC9B,UAAU,EAAEc,gBAAgB,CAACS,KAAK,CAAC,EAAEC,cAAc,CAAE;IAAAI,QAAA,EAChEP,QAAQ,gBACPtB,KAAA,CAAAF,SAAA;MAAA+B,QAAA,gBACEjC,IAAA,CAACH,IAAI;QACHuC,2BAA2B;QAC3BC,WAAW,EAAE,KAAM;QACnBC,yBAAyB,EAAC,qBAAqB;QAC/CC,aAAa,EAAC,MAAM;QACpBJ,KAAK,EAAE1B,oBAAqB;QAAAwB,QAAA,EAE3BD;MAAW,CACR,CAAC,eACPhC,IAAA,CAACF,QAAQ,CAACD,IAAI;QACZ2C,QAAQ,EAAET,eAAgB;QAC1BI,KAAK,EAAE,CAACD,qBAAqB,EAAEJ,kBAAkB,CAAE;QAAAG,QAAA,EAElDA;MAAQ,CACI,CAAC;IAAA,CAChB,CAAC,gBAEHjC,IAAA,CAACH,IAAI;MAACsC,KAAK,EAAE,CAACD,qBAAqB,EAAEjB,sBAAsB,CAAE;MAAAgB,QAAA,EAC1DA;IAAQ,CACL;EACP,CACG,CAAC;AAEX,CACF,CAAC;AAEDT,aAAa,CAACiB,WAAW,GAAG,eAAe","ignoreList":[]}
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(value);
41
- const lastValueRef = useRef(value);
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 (value !== lastValueRef.current) {
80
+ if (visibleValue !== lastValueRef.current || isLeadingChange) {
46
81
  hasAnimatedRef.current = true;
47
- lastValueRef.current = value;
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__*/_jsx(View, {
88
+ return /*#__PURE__*/_jsxs(View, {
54
89
  style: [rowStyle, rowAlignStyles[align]],
55
- children: units.map((unit, index) => {
56
- const inLead = index < leadLength;
57
- const laneKey = inLead ? `lead:${index}` : `lane:${units.length - 1 - index}`;
58
- return /*#__PURE__*/_jsx(NumberLane, {
59
- unit: unit,
60
- tokenKey: laneKeys[index],
61
- isLead: inLead,
62
- hasAnimated: hasAnimated,
63
- delayMs: index * staggerMs,
64
- direction: direction,
65
- travelDistance: travelDistance,
66
- motionRecipe: motionRecipe,
67
- textStyle: textStyle,
68
- className: className
69
- }, laneKey);
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","current","travelDistance","Math","max","round","hasAnimated","style","children","map","unit","index","inLead","laneKey","length","tokenKey","isLead","delayMs","displayName"],"sourceRoot":"../../../src","sources":["view/number-run.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAC9C,SAAyCC,IAAI,QAAQ,cAAc;AACnE,SAASC,eAAe,QAAQ,+BAA4B;AAE5D,SAASC,UAAU,QAAQ,kBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE3C,MAAMC,QAAQ,GAAG;EACfC,aAAa,EAAE,KAAK;EACpBC,UAAU,EAAE,QAAQ;EACpBC,SAAS,EAAE;AACb,CAAU;AAEV,MAAMC,cAAc,GAAG;EACrBC,IAAI,EAAE;IAAEF,SAAS,EAAE;EAAa,CAAC;EACjCG,MAAM,EAAE;IAAEH,SAAS,EAAE;EAAS,CAAC;EAC/BI,KAAK,EAAE;IAAEJ,SAAS,EAAE;EAAW;AACjC,CAAU;AAYV;AACA,OAAO,MAAMK,SAAS,gBAAGhB,KAAK,CAACiB,IAAI,CACjC,CAAC;EACCC,KAAK;EACLC,YAAY;EACZC,KAAK;EACLC,QAAQ;EACRC,SAAS;EACTC,SAAS;EACTC;AACwB,CAAC,KAAK;EAC9B;EACA,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAGxB,eAAe,CAACc,KAAK,CAAC;EACzE,MAAMW,YAAY,GAAG3B,MAAM,CAACgB,KAAK,CAAC;EAClC,MAAMY,cAAc,GAAG5B,MAAM,CAAC,KAAK,CAAC;;EAEpC;EACA,IAAIgB,KAAK,KAAKW,YAAY,CAACE,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BF,YAAY,CAACE,OAAO,GAAGb,KAAK;EAC9B;;EAEA;EACA,MAAMc,cAAc,GAAG/B,OAAO,CAC5B,MAAMgC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAAC,CAACd,QAAQ,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,EACrD,CAACA,QAAQ,CACX,CAAC;EACD,MAAMe,WAAW,GAAGN,cAAc,CAACC,OAAO;EAE1C,oBACExB,IAAA,CAACJ,IAAI;IAACkC,KAAK,EAAE,CAAC7B,QAAQ,EAAEI,cAAc,CAACQ,KAAK,CAAC,CAAE;IAAAkB,QAAA,EAC5Cb,KAAK,CAACc,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MAC1B,MAAMC,MAAM,GAAGD,KAAK,GAAGb,UAAU;MACjC,MAAMe,OAAO,GAAGD,MAAM,GAClB,QAAQD,KAAK,EAAE,GACf,QAAQhB,KAAK,CAACmB,MAAM,GAAG,CAAC,GAAGH,KAAK,EAAE;MAEtC,oBACElC,IAAA,CAACF,UAAU;QAETmC,IAAI,EAAEA,IAAK;QACXK,QAAQ,EAAEnB,QAAQ,CAACe,KAAK,CAAE;QAC1BK,MAAM,EAAEJ,MAAO;QACfN,WAAW,EAAEA,WAAY;QACzBW,OAAO,EAAEN,KAAK,GAAGlB,SAAU;QAC3BI,SAAS,EAAEA,SAAU;QACrBK,cAAc,EAAEA,cAAe;QAC/Bb,YAAY,EAAEA,YAAa;QAC3BG,SAAS,EAAEA,SAAU;QACrBE,SAAS,EAAEA;MAAU,GAVhBmB,OAWN,CAAC;IAEN,CAAC;EAAC,CACE,CAAC;AAEX,CACF,CAAC;AAED3B,SAAS,CAACgC,WAAW,GAAG,WAAW","ignoreList":[]}
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":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,uCAAuC;AAC9D,SAASC,cAAc,QAAQ,sBAAsB;AACrD,SAASC,UAAU,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1C,MAAMC,oBAAoB,GAAG,SAAS;AACtC;AACA,MAAMC,yBAAyB,GAAG,IAAI;AAEtC,MAAMC,gBAAgB,GAAIC,KAAa,IAAK;EAC1C,MAAMC,KAAK,GAAGD,KAAK,CAACE,IAAI,CAAC,CAAC;EAE1B,IAAID,KAAK,CAACE,UAAU,CAAC,GAAG,CAAC,EAAE;IACzB,MAAMC,GAAG,GAAGH,KAAK,CAACI,KAAK,CAAC,CAAC,CAAC;IAC1B,MAAMC,QAAQ,GACZF,GAAG,CAACG,MAAM,KAAK,CAAC,IAAIH,GAAG,CAACG,MAAM,KAAK,CAAC,GAChCH,GAAG,CACAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CACXG,KAAK,CAAC,EAAE,CAAC,CACTC,GAAG,CAAEC,OAAO,IAAKA,OAAO,GAAGA,OAAO,CAAC,CACnCC,IAAI,CAAC,EAAE,CAAC,GACXP,GAAG,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IAErB,IAAIC,QAAQ,CAACC,MAAM,KAAK,CAAC,IAAI,cAAc,CAACK,IAAI,CAACN,QAAQ,CAAC,EAAE;MAC1D,OAAO,QAAQO,MAAM,CAACC,QAAQ,CAACR,QAAQ,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAKQ,MAAM,CAACC,QAAQ,CAC1ER,QAAQ,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EACpB,EACF,CAAC,KAAKQ,MAAM,CAACC,QAAQ,CAACR,QAAQ,CAACD,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM;IACvD;EACF;EAEA,MAAMU,QAAQ,GAAGd,KAAK,CAACe,KAAK,CAAC,kBAAkB,CAAC;EAChD,IAAI,CAACf,KAAK,CAACE,UAAU,CAAC,MAAM,CAAC,IAAIF,KAAK,CAACE,UAAU,CAAC,OAAO,CAAC,KAAKY,QAAQ,EAAE;IACvE,MAAME,GAAG,GAAGF,QAAQ,CAACV,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACI,GAAG,CAAEC,OAAO,IAAK;MAChD,IAAIA,OAAO,CAACQ,QAAQ,CAAC,GAAG,CAAC,EAAE;QACzB,OAAOC,IAAI,CAACC,KAAK,CAAEP,MAAM,CAACQ,UAAU,CAACX,OAAO,CAAC,GAAG,GAAG,GAAI,GAAG,CAAC;MAC7D;MAEA,OAAOG,MAAM,CAACQ,UAAU,CAACX,OAAO,CAAC;IACnC,CAAC,CAAC;IAEF,IAAIO,GAAG,CAACV,MAAM,KAAK,CAAC,IAAIU,GAAG,CAACK,KAAK,CAACT,MAAM,CAACU,QAAQ,CAAC,EAAE;MAClD,OAAO,QAAQN,GAAG,CAACN,IAAI,CAAC,IAAI,CAAC,MAAM;IACrC;EACF;;EAEA;EACA,OAAO,wBAAwB;AACjC,CAAC;AAUD;AACA;AACA,OAAO,MAAMa,UAAU,gBAAGjC,KAAK,CAACkC,IAAI,CAAC,SAASD,UAAUA,CAAC;EACvDE,UAAU;EACVC,cAAc;EACd3B,KAAK,GAAGH,oBAAoB;EAC5B+B,IAAI;EACJC;AACe,CAAC,EAAE;EAClB,MAAMC,QAAQ,GAAGX,IAAI,CAACY,GAAG,CACvBZ,IAAI,CAACa,GAAG,CAAC,CAAC,EAAEJ,IAAI,IAAIF,UAAU,GAAG5B,yBAAyB,CAAC,EAC3D6B,cAAc,GAAG,CACnB,CAAC;EACD,MAAMM,SAAS,GAAGlC,gBAAgB,CAACC,KAAK,CAAC;EACzC,MAAMkC,SAAS,GAAGJ,QAAQ,GAAGH,cAAc;EAE3C,oBACE/B,IAAA,CAACJ,UAAU;IACT2C,aAAa,EAAC,MAAM;IACpBC,KAAK,EAAEC,MAAM,CAACC,SAAU;IACxBC,WAAW,eACT3C,IAAA,CAACH,cAAc;MACb+C,MAAM,EAAE,CAACP,SAAS,EAAEjC,KAAK,EAAEA,KAAK,EAAEiC,SAAS,CAAE;MAC7CQ,SAAS,EAAE,CAAC,CAAC,EAAEP,SAAS,EAAE,CAAC,GAAGA,SAAS,EAAE,CAAC,CAAE;MAC5CQ,KAAK,EAAE;QAAEC,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAE;MACtBC,GAAG,EAAE;QAAEF,CAAC,EAAE,CAAC;QAAEC,CAAC,EAAE;MAAE,CAAE;MACpBR,KAAK,EAAEC,MAAM,CAACS;IAAK,CACpB,CACF;IAAAjB,QAAA,EAEAA;EAAQ,CACC,CAAC;AAEjB,CAAC,CAAC;AAEFL,UAAU,CAACuB,WAAW,GAAG,YAAY;AAErC,MAAMV,MAAM,GAAG3C,UAAU,CAACsD,MAAM,CAAC;EAC/BV,SAAS,EAAE5C,UAAU,CAACuD,kBAAkB;EACxCH,IAAI,EAAEpD,UAAU,CAACuD;AACnB,CAAC,CAAC","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 thirty-text reel
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(SlotReel, {
179
- current: current,
200
+ }), shadowOptions ? /*#__PURE__*/_jsx(SlotShadow, {
180
201
  slotHeight: slotHeight,
181
- textStyle: textStyle,
182
- className: className
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(value);
202
- const lastValueRef = useRef(value);
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 (value !== lastValueRef.current) {
267
+ if (visibleValue !== lastValueRef.current || isLeadingChange) {
212
268
  hasAnimatedRef.current = true;
213
- lastValueRef.current = value;
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__*/_jsx(View, {
274
+ return /*#__PURE__*/_jsxs(View, {
219
275
  style: [rowStyle, rowAlignStyles[align]],
220
- children: units.map((unit, index) => {
221
- const inLead = index < leadLength;
222
- const laneKey = inLead ? `lead:${index}` : `slot:${units.length - 1 - index}`;
223
- if (inLead || !isAsciiDigit(unit)) {
224
- return /*#__PURE__*/_jsx(Animated.Text, {
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
- exiting: !inLead ? motionRecipe.exitTransition : undefined,
227
- style: textStyle,
228
- className: className,
229
- children: unit
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
- const delayMs = (digitCount - 1 - digitIndex) * staggerMs;
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, useLayoutEffect, useMemo, useRef } from "react";
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 { createLeadingEnterTransition, createLeadingExitTransition } from "../motion/entry-exit-builders.js";
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 isLeadingSwap = Boolean(visibleLeading) && lastLeadingPresenceRef.current && visibleLeadingKey !== lastLeadingKeyRef.current;
46
- const isLeadingChange = Boolean(visibleLeading) !== lastLeadingPresenceRef.current || Boolean(visibleLeading) && visibleLeadingKey !== lastLeadingKeyRef.current;
47
- // update the worklet flag after commit so render never writes a shared value
48
- const leadingSwapProgress = useSharedValue(0);
49
- useLayoutEffect(() => {
50
- leadingSwapProgress.value = isLeadingSwap ? 1 : 0;
51
- }, [isLeadingSwap, leadingSwapProgress]);
52
- const glyphs = useTextGlyphs(visibleValue, scopeId, visibleLeading, visibleLeadingKey);
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
- scale: leadingSwapProgress
62
- }), [visibleLeadingGap, leadingSwapProgress, motionRecipe.durationMs, motionRecipe.easing]);
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 || Boolean(visibleLeading) !== lastLeadingPresenceRef.current || visibleLeadingKey !== lastLeadingKeyRef.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","useLayoutEffect","useMemo","useRef","useSharedValue","useTextGlyphs","createLeadingEnterTransition","createLeadingExitTransition","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","lastLeadingPresenceRef","Boolean","lastLeadingKeyRef","hasAnimatedRef","isLeadingSwap","isLeadingChange","leadingSwapProgress","glyphs","elementEnterTransition","durationMs","easing","elementExitTransition","scale","hasAnimated","layoutTransition","undefined","leadingLayoutTransition","enterTransition","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":"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","ignoreList":[]}
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":[]}