react-native-laminar 1.1.0 → 1.2.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 (52) hide show
  1. package/README.md +38 -1
  2. package/lib/commonjs/index.js +4 -0
  3. package/lib/commonjs/index.js.map +1 -1
  4. package/lib/commonjs/view/glyph-run.js +13 -1
  5. package/lib/commonjs/view/glyph-run.js.map +1 -1
  6. package/lib/commonjs/view/morph-viewport.js +29 -3
  7. package/lib/commonjs/view/morph-viewport.js.map +1 -1
  8. package/lib/commonjs/view/number-run.js +13 -1
  9. package/lib/commonjs/view/number-run.js.map +1 -1
  10. package/lib/commonjs/view/text-run.js +2 -0
  11. package/lib/commonjs/view/text-run.js.map +1 -1
  12. package/lib/module/index.js +4 -0
  13. package/lib/module/index.js.map +1 -1
  14. package/lib/module/view/glyph-run.js +13 -1
  15. package/lib/module/view/glyph-run.js.map +1 -1
  16. package/lib/module/view/morph-viewport.js +29 -3
  17. package/lib/module/view/morph-viewport.js.map +1 -1
  18. package/lib/module/view/number-run.js +13 -1
  19. package/lib/module/view/number-run.js.map +1 -1
  20. package/lib/module/view/text-run.js +2 -0
  21. package/lib/module/view/text-run.js.map +1 -1
  22. package/lib/typescript/commonjs/index.d.ts +1 -1
  23. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  24. package/lib/typescript/commonjs/types.d.ts +2 -0
  25. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  26. package/lib/typescript/commonjs/view/glyph-run.d.ts +3 -2
  27. package/lib/typescript/commonjs/view/glyph-run.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/view/morph-viewport.d.ts +3 -1
  29. package/lib/typescript/commonjs/view/morph-viewport.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/view/number-run.d.ts +3 -2
  31. package/lib/typescript/commonjs/view/number-run.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/view/text-run.d.ts +3 -2
  33. package/lib/typescript/commonjs/view/text-run.d.ts.map +1 -1
  34. package/lib/typescript/module/index.d.ts +1 -1
  35. package/lib/typescript/module/index.d.ts.map +1 -1
  36. package/lib/typescript/module/types.d.ts +2 -0
  37. package/lib/typescript/module/types.d.ts.map +1 -1
  38. package/lib/typescript/module/view/glyph-run.d.ts +3 -2
  39. package/lib/typescript/module/view/glyph-run.d.ts.map +1 -1
  40. package/lib/typescript/module/view/morph-viewport.d.ts +3 -1
  41. package/lib/typescript/module/view/morph-viewport.d.ts.map +1 -1
  42. package/lib/typescript/module/view/number-run.d.ts +3 -2
  43. package/lib/typescript/module/view/number-run.d.ts.map +1 -1
  44. package/lib/typescript/module/view/text-run.d.ts +3 -2
  45. package/lib/typescript/module/view/text-run.d.ts.map +1 -1
  46. package/package.json +1 -1
  47. package/src/index.tsx +5 -0
  48. package/src/types.ts +2 -0
  49. package/src/view/glyph-run.tsx +10 -2
  50. package/src/view/morph-viewport.tsx +25 -3
  51. package/src/view/number-run.tsx +10 -2
  52. package/src/view/text-run.tsx +4 -2
package/README.md CHANGED
@@ -86,6 +86,31 @@ export default function Counter() {
86
86
  </Pressable>
87
87
  ```
88
88
 
89
+ ### Centered text in a fixed-width container
90
+
91
+ Use `align` when the parent owns the width and Laminar should place the animated row inside that space.
92
+
93
+ ```tsx
94
+ <Pressable
95
+ style={{
96
+ width: "100%",
97
+ height: 50,
98
+ alignItems: "center",
99
+ justifyContent: "center",
100
+ borderRadius: 25,
101
+ backgroundColor: "#000000",
102
+ }}
103
+ >
104
+ <Laminar
105
+ text={isFinished ? "Continue and Finish" : "Continue"}
106
+ align="center"
107
+ autoSize={false}
108
+ containerStyle={{ width: "100%" }}
109
+ style={{ color: "#ffffff", fontSize: 24, fontWeight: "700" }}
110
+ />
111
+ </Pressable>
112
+ ```
113
+
89
114
  `autoSize` (default `true`) animates the outer container width toward the measured final text width. The button grows and shrinks without layout feedback loops.
90
115
 
91
116
  ### Standalone word without auto-sizing
@@ -93,6 +118,7 @@ export default function Counter() {
93
118
  ```tsx
94
119
  <Laminar
95
120
  text={word}
121
+ align="center"
96
122
  autoSize={false}
97
123
  fontSize={40}
98
124
  style={{ color: "#000000" }}
@@ -111,6 +137,7 @@ type LaminarProps = {
111
137
  variant?: "text" | "number";
112
138
  fontSize?: number;
113
139
  color?: string;
140
+ align?: "left" | "center" | "right";
114
141
  style?: StyleProp<TextStyle>;
115
142
  containerStyle?: StyleProp<ViewStyle>;
116
143
  fontStyle?: StyleProp<TextStyle>;
@@ -128,8 +155,9 @@ type LaminarProps = {
128
155
  | `variant` | `"text"` | `"text"` uses LCS glyph reconciliation. `"number"` uses right-aligned digit lanes. |
129
156
  | `fontSize` | Undefined | Convenience prop merged into the text style. |
130
157
  | `color` | Undefined | Convenience prop merged into the text style. |
158
+ | `align` | `"left"` | Visual alignment for Laminar's viewport and animated glyph row. |
131
159
  | `style` | Undefined | Text style applied after `fontSize` and `color`. |
132
- | `containerStyle` | Undefined | Style for the outer viewport shell. Use for placement and alignment. |
160
+ | `containerStyle` | Undefined | Advanced style override for the outer viewport shell. |
133
161
  | `fontStyle` | Undefined | Additional text style merged before `style`. |
134
162
  | `animationDuration` | Preset default | Duration override in milliseconds. |
135
163
  | `animationPreset` | `"default"` for text, `"snappy"` for number | Named motion recipe. |
@@ -176,6 +204,15 @@ type LaminarProps = {
176
204
  - Standalone centered words → `autoSize={false}`
177
205
  - Fixed-width counters → `autoSize={false}`
178
206
 
207
+ **Use `align` for visual alignment.**
208
+
209
+ ```tsx
210
+ <Laminar text={word} align="center" autoSize={false} />
211
+ <Laminar text={price} variant="number" align="right" autoSize={false} />
212
+ ```
213
+
214
+ Use `containerStyle` only when you need lower-level control over the outer viewport.
215
+
179
216
  **Match formatting across renders for numbers.**
180
217
 
181
218
  Switching between `$1,234` and `1234` mid-session breaks lane alignment. Keep the format consistent.
@@ -20,6 +20,7 @@ const Laminar = exports.Laminar = /*#__PURE__*/_react.default.memo(function Lami
20
20
  variant = "text",
21
21
  fontSize,
22
22
  color,
23
+ align = "left",
23
24
  className,
24
25
  style,
25
26
  containerStyle,
@@ -64,6 +65,7 @@ const Laminar = exports.Laminar = /*#__PURE__*/_react.default.memo(function Lami
64
65
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_morphViewport.MorphViewport, {
65
66
  autoSize: autoSize,
66
67
  clipToBounds: clipToBounds,
68
+ align: align,
67
69
  containerStyle: containerStyle,
68
70
  animatedWidthStyle: animatedWidthStyle,
69
71
  measurement: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
@@ -75,6 +77,7 @@ const Laminar = exports.Laminar = /*#__PURE__*/_react.default.memo(function Lami
75
77
  children: variant === "number" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_numberRun.NumberRun, {
76
78
  value: resolvedValue,
77
79
  motionRecipe: motionRecipe,
80
+ align: align,
78
81
  fontSize: fontSize,
79
82
  textStyle: textStyle,
80
83
  staggerMs: staggerMs,
@@ -82,6 +85,7 @@ const Laminar = exports.Laminar = /*#__PURE__*/_react.default.memo(function Lami
82
85
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_textRun.TextRun, {
83
86
  value: resolvedValue,
84
87
  motionRecipe: motionRecipe,
88
+ align: align,
85
89
  textStyle: textStyle,
86
90
  className: className
87
91
  })
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_useInlineAutoWidth","_useMorphMotion","_useMorphTextStyle","_displayUnits","_morphViewport","_numberRun","_textRun","_jsxRuntime","e","__esModule","default","Laminar","exports","React","memo","text","variant","fontSize","color","className","style","containerStyle","fontStyle","animationDuration","animationPreset","stagger","autoSize","clipToBounds","resolvedValue","String","motionRecipe","staggerMs","useMorphMotion","textStyle","useMorphTextStyle","captureLayout","animatedWidthStyle","useInlineAutoWidth","enabled","driveToWidth","driveNumber","measuredValue","useMemo","splitDisplayUnits","map","normalizeDisplayUnit","join","jsx","MorphViewport","measurement","Text","numberOfLines","onLayout","children","NumberRun","value","TextRun","MorphingText","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_useInlineAutoWidth","_useMorphMotion","_useMorphTextStyle","_displayUnits","_morphViewport","_numberRun","_textRun","_jsxRuntime","e","__esModule","default","Laminar","exports","React","memo","text","variant","fontSize","color","align","className","style","containerStyle","fontStyle","animationDuration","animationPreset","stagger","autoSize","clipToBounds","resolvedValue","String","motionRecipe","staggerMs","useMorphMotion","textStyle","useMorphTextStyle","captureLayout","animatedWidthStyle","useInlineAutoWidth","enabled","driveToWidth","driveNumber","measuredValue","useMemo","splitDisplayUnits","map","normalizeDisplayUnit","join","jsx","MorphViewport","measurement","Text","numberOfLines","onLayout","children","NumberRun","value","TextRun","MorphingText","_default"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -14,15 +14,27 @@ const rowStyle = {
14
14
  alignItems: "center",
15
15
  alignSelf: "flex-start"
16
16
  };
17
+ const rowAlignStyles = {
18
+ left: {
19
+ alignSelf: "flex-start"
20
+ },
21
+ center: {
22
+ alignSelf: "center"
23
+ },
24
+ right: {
25
+ alignSelf: "flex-end"
26
+ }
27
+ };
17
28
  const GlyphRun = exports.GlyphRun = /*#__PURE__*/_react.default.memo(({
18
29
  glyphs,
19
30
  layoutTransition,
20
31
  enterTransition,
21
32
  exitTransition,
33
+ align,
22
34
  textStyle,
23
35
  className
24
36
  }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
25
- style: rowStyle,
37
+ style: [rowStyle, rowAlignStyles[align]],
26
38
  children: glyphs.map(glyph => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.Text, {
27
39
  layout: layoutTransition,
28
40
  entering: enterTransition,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeReanimated","_jsxRuntime","e","__esModule","default","rowStyle","flexDirection","alignItems","alignSelf","GlyphRun","exports","React","memo","glyphs","layoutTransition","enterTransition","exitTransition","textStyle","className","jsx","View","style","children","map","glyph","Text","layout","entering","exiting","value","id","displayName"],"sourceRoot":"../../../src","sources":["view/glyph-run.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA+C,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAO/C,MAAMG,QAAQ,GAAG;EACfC,aAAa,EAAE,KAAK;EACpBC,UAAU,EAAE,QAAQ;EACpBC,SAAS,EAAE;AACb,CAAU;AAEH,MAAMC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,gBAAGE,cAAK,CAACC,IAAI,CAChC,CAAC;EACCC,MAAM;EACNC,gBAAgB;EAChBC,eAAe;EACfC,cAAc;EACdC,SAAS;EACTC;AAQD,CAAC,kBACE,IAAAjB,WAAA,CAAAkB,GAAA,EAACpB,YAAA,CAAAqB,IAAI;EAACC,KAAK,EAAEhB,QAAS;EAAAiB,QAAA,EAEnBT,MAAM,CAACU,GAAG,CAAEC,KAAK,iBAChB,IAAAvB,WAAA,CAAAkB,GAAA,EAACnB,sBAAA,CAAAI,OAAQ,CAACqB,IAAI;IAEZC,MAAM,EAAEZ,gBAAiB;IACzBa,QAAQ,EAAEZ,eAAgB;IAC1Ba,OAAO,EAAEZ,cAAe;IACxBK,KAAK,EAAEJ,SAAU;IACjBC,SAAS,EAAEA,SAAU;IAAAI,QAAA,EAEpBE,KAAK,CAACK;EAAK,GAPPL,KAAK,CAACM,EAQE,CAChB;AAAC,CACE,CAEZ,CAAC;AAEDrB,QAAQ,CAACsB,WAAW,GAAG,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeReanimated","_jsxRuntime","e","__esModule","default","rowStyle","flexDirection","alignItems","alignSelf","rowAlignStyles","left","center","right","GlyphRun","exports","React","memo","glyphs","layoutTransition","enterTransition","exitTransition","align","textStyle","className","jsx","View","style","children","map","glyph","Text","layout","entering","exiting","value","id","displayName"],"sourceRoot":"../../../src","sources":["view/glyph-run.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,sBAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA+C,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAO/C,MAAMG,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;AAEH,MAAMK,QAAQ,GAAAC,OAAA,CAAAD,QAAA,gBAAGE,cAAK,CAACC,IAAI,CAChC,CAAC;EACCC,MAAM;EACNC,gBAAgB;EAChBC,eAAe;EACfC,cAAc;EACdC,KAAK;EACLC,SAAS;EACTC;AASD,CAAC,kBACE,IAAAtB,WAAA,CAAAuB,GAAA,EAACzB,YAAA,CAAA0B,IAAI;EAACC,KAAK,EAAE,CAACrB,QAAQ,EAAEI,cAAc,CAACY,KAAK,CAAC,CAAE;EAAAM,QAAA,EAE5CV,MAAM,CAACW,GAAG,CAAEC,KAAK,iBAChB,IAAA5B,WAAA,CAAAuB,GAAA,EAACxB,sBAAA,CAAAI,OAAQ,CAAC0B,IAAI;IAEZC,MAAM,EAAEb,gBAAiB;IACzBc,QAAQ,EAAEb,eAAgB;IAC1Bc,OAAO,EAAEb,cAAe;IACxBM,KAAK,EAAEJ,SAAU;IACjBC,SAAS,EAAEA,SAAU;IAAAI,QAAA,EAEpBE,KAAK,CAACK;EAAK,GAPPL,KAAK,CAACM,EAQE,CAChB;AAAC,CACE,CAEZ,CAAC;AAEDtB,QAAQ,CAACuB,WAAW,GAAG,UAAU","ignoreList":[]}
@@ -31,17 +31,43 @@ const clippedViewportStyle = {
31
31
  const unclippedViewportStyle = {
32
32
  overflow: "visible"
33
33
  };
34
+ const fullWidthViewportStyle = {
35
+ width: "100%"
36
+ };
37
+ const shellAlignStyles = {
38
+ left: {
39
+ alignSelf: "flex-start"
40
+ },
41
+ center: {
42
+ alignSelf: "center"
43
+ },
44
+ right: {
45
+ alignSelf: "flex-end"
46
+ }
47
+ };
48
+ const viewportAlignStyles = {
49
+ left: {
50
+ alignItems: "flex-start"
51
+ },
52
+ center: {
53
+ alignItems: "center"
54
+ },
55
+ right: {
56
+ alignItems: "flex-end"
57
+ }
58
+ };
34
59
  const MorphViewport = exports.MorphViewport = /*#__PURE__*/_react.default.memo(({
35
60
  autoSize,
36
61
  clipToBounds,
62
+ align,
37
63
  containerStyle,
38
64
  animatedWidthStyle,
39
65
  measurement,
40
66
  children
41
67
  }) => {
42
- const resolvedViewportStyle = (0, _react.useMemo)(() => [viewportStyle, clipToBounds ? clippedViewportStyle : unclippedViewportStyle], [clipToBounds]);
68
+ const resolvedViewportStyle = (0, _react.useMemo)(() => [viewportStyle, viewportAlignStyles[align], clipToBounds ? clippedViewportStyle : unclippedViewportStyle], [align, clipToBounds]);
43
69
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
44
- style: [shellStyle, containerStyle],
70
+ style: [shellStyle, shellAlignStyles[align], containerStyle],
45
71
  children: autoSize ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
46
72
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
47
73
  accessibilityElementsHidden: true,
@@ -55,7 +81,7 @@ const MorphViewport = exports.MorphViewport = /*#__PURE__*/_react.default.memo((
55
81
  children: children
56
82
  })]
57
83
  }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
58
- style: resolvedViewportStyle,
84
+ style: [resolvedViewportStyle, fullWidthViewportStyle],
59
85
  children: children
60
86
  })
61
87
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","shellStyle","position","alignSelf","viewportStyle","measuredContentStyle","left","top","opacity","flexShrink","clippedViewportStyle","overflow","unclippedViewportStyle","MorphViewport","exports","React","memo","autoSize","clipToBounds","containerStyle","animatedWidthStyle","measurement","children","resolvedViewportStyle","useMemo","jsx","View","style","jsxs","Fragment","accessibilityElementsHidden","collapsable","importantForAccessibility","pointerEvents","displayName"],"sourceRoot":"../../../src","sources":["view/morph-viewport.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_interopRequireDefault","_jsxRuntime","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","shellStyle","position","alignSelf","viewportStyle","measuredContentStyle","left","top","opacity","flexShrink","clippedViewportStyle","overflow","unclippedViewportStyle","fullWidthViewportStyle","width","shellAlignStyles","center","right","viewportAlignStyles","alignItems","MorphViewport","exports","React","memo","autoSize","clipToBounds","align","containerStyle","animatedWidthStyle","measurement","children","resolvedViewportStyle","useMemo","jsx","View","style","jsxs","Fragment","accessibilityElementsHidden","collapsable","importantForAccessibility","pointerEvents","displayName"],"sourceRoot":"../../../src","sources":["view/morph-viewport.tsx"],"mappings":"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","ignoreList":[]}
@@ -15,9 +15,21 @@ const rowStyle = {
15
15
  alignItems: "center",
16
16
  alignSelf: "flex-start"
17
17
  };
18
+ const rowAlignStyles = {
19
+ left: {
20
+ alignSelf: "flex-start"
21
+ },
22
+ center: {
23
+ alignSelf: "center"
24
+ },
25
+ right: {
26
+ alignSelf: "flex-end"
27
+ }
28
+ };
18
29
  const NumberRun = exports.NumberRun = /*#__PURE__*/_react.default.memo(({
19
30
  value,
20
31
  motionRecipe,
32
+ align,
21
33
  fontSize,
22
34
  textStyle,
23
35
  staggerMs,
@@ -40,7 +52,7 @@ const NumberRun = exports.NumberRun = /*#__PURE__*/_react.default.memo(({
40
52
  const travelDistance = (0, _react.useMemo)(() => Math.max(8, Math.round((fontSize ?? 16) * 0.4)), [fontSize]);
41
53
  const hasAnimated = hasAnimatedRef.current;
42
54
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
43
- style: rowStyle,
55
+ style: [rowStyle, rowAlignStyles[align]],
44
56
  children: units.map((unit, index) => {
45
57
  const inLead = index < leadLength;
46
58
  const laneKey = inLead ? `lead:${index}` : `lane:${units.length - 1 - index}`;
@@ -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","NumberRun","exports","React","memo","value","motionRecipe","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","_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":[]}
@@ -12,6 +12,7 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
12
12
  const TextRun = exports.TextRun = /*#__PURE__*/_react.default.memo(({
13
13
  value,
14
14
  motionRecipe,
15
+ align,
15
16
  textStyle,
16
17
  className
17
18
  }) => {
@@ -29,6 +30,7 @@ const TextRun = exports.TextRun = /*#__PURE__*/_react.default.memo(({
29
30
  layoutTransition: motionRecipe.layoutTransition,
30
31
  enterTransition: hasAnimatedRef.current ? motionRecipe.enterTransition : undefined,
31
32
  exitTransition: motionRecipe.exitTransition,
33
+ align: align,
32
34
  textStyle: textStyle,
33
35
  className: className
34
36
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_useTextGlyphs","_glyphRun","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TextRun","exports","React","memo","value","motionRecipe","textStyle","className","scopeId","useId","glyphs","useTextGlyphs","lastValueRef","useRef","hasAnimatedRef","current","jsx","GlyphRun","layoutTransition","enterTransition","undefined","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AAAuC,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAShC,MAAMkB,OAAO,GAAAC,OAAA,CAAAD,OAAA,gBAAGE,cAAK,CAACC,IAAI,CAC/B,CAAC;EAAEC,KAAK;EAAEC,YAAY;EAAEC,SAAS;EAAEC;AAAwB,CAAC,KAAK;EAC/D;EACA,MAAMC,OAAO,GAAG,IAAAC,YAAK,EAAC,CAAC;EACvB,MAAMC,MAAM,GAAG,IAAAC,4BAAa,EAACP,KAAK,EAAEI,OAAO,CAAC;EAC5C,MAAMI,YAAY,GAAG,IAAAC,aAAM,EAACT,KAAK,CAAC;EAClC,MAAMU,cAAc,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;EAEpC,IAAIT,KAAK,KAAKQ,YAAY,CAACG,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BH,YAAY,CAACG,OAAO,GAAGX,KAAK;EAC9B;EAEA,oBACE,IAAAxB,WAAA,CAAAoC,GAAA,EAACrC,SAAA,CAAAsC,QAAQ;IACPP,MAAM,EAAEA,MAAO;IACfQ,gBAAgB,EAAEb,YAAY,CAACa,gBAAiB;IAChDC,eAAe,EACbL,cAAc,CAACC,OAAO,GAAGV,YAAY,CAACc,eAAe,GAAGC,SACzD;IACDC,cAAc,EAAEhB,YAAY,CAACgB,cAAe;IAC5Cf,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN,CACF,CAAC;AAEDP,OAAO,CAACsB,WAAW,GAAG,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_useTextGlyphs","_glyphRun","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TextRun","exports","React","memo","value","motionRecipe","align","textStyle","className","scopeId","useId","glyphs","useTextGlyphs","lastValueRef","useRef","hasAnimatedRef","current","jsx","GlyphRun","layoutTransition","enterTransition","undefined","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AAAuC,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAUhC,MAAMkB,OAAO,GAAAC,OAAA,CAAAD,OAAA,gBAAGE,cAAK,CAACC,IAAI,CAC/B,CAAC;EAAEC,KAAK;EAAEC,YAAY;EAAEC,KAAK;EAAEC,SAAS;EAAEC;AAAwB,CAAC,KAAK;EACtE;EACA,MAAMC,OAAO,GAAG,IAAAC,YAAK,EAAC,CAAC;EACvB,MAAMC,MAAM,GAAG,IAAAC,4BAAa,EAACR,KAAK,EAAEK,OAAO,CAAC;EAC5C,MAAMI,YAAY,GAAG,IAAAC,aAAM,EAACV,KAAK,CAAC;EAClC,MAAMW,cAAc,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;EAEpC,IAAIV,KAAK,KAAKS,YAAY,CAACG,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BH,YAAY,CAACG,OAAO,GAAGZ,KAAK;EAC9B;EAEA,oBACE,IAAAxB,WAAA,CAAAqC,GAAA,EAACtC,SAAA,CAAAuC,QAAQ;IACPP,MAAM,EAAEA,MAAO;IACfQ,gBAAgB,EAAEd,YAAY,CAACc,gBAAiB;IAChDC,eAAe,EACbL,cAAc,CAACC,OAAO,GAAGX,YAAY,CAACe,eAAe,GAAGC,SACzD;IACDC,cAAc,EAAEjB,YAAY,CAACiB,cAAe;IAC5ChB,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN,CACF,CAAC;AAEDR,OAAO,CAACuB,WAAW,GAAG,SAAS","ignoreList":[]}
@@ -15,6 +15,7 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
15
15
  variant = "text",
16
16
  fontSize,
17
17
  color,
18
+ align = "left",
18
19
  className,
19
20
  style,
20
21
  containerStyle,
@@ -59,6 +60,7 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
59
60
  return /*#__PURE__*/_jsx(MorphViewport, {
60
61
  autoSize: autoSize,
61
62
  clipToBounds: clipToBounds,
63
+ align: align,
62
64
  containerStyle: containerStyle,
63
65
  animatedWidthStyle: animatedWidthStyle,
64
66
  measurement: /*#__PURE__*/_jsx(Text, {
@@ -70,6 +72,7 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
70
72
  children: variant === "number" ? /*#__PURE__*/_jsx(NumberRun, {
71
73
  value: resolvedValue,
72
74
  motionRecipe: motionRecipe,
75
+ align: align,
73
76
  fontSize: fontSize,
74
77
  textStyle: textStyle,
75
78
  staggerMs: staggerMs,
@@ -77,6 +80,7 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
77
80
  }) : /*#__PURE__*/_jsx(TextRun, {
78
81
  value: resolvedValue,
79
82
  motionRecipe: motionRecipe,
83
+ align: align,
80
84
  textStyle: textStyle,
81
85
  className: className
82
86
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","Text","useInlineAutoWidth","useMorphMotion","useMorphTextStyle","normalizeDisplayUnit","splitDisplayUnits","MorphViewport","NumberRun","TextRun","jsx","_jsx","Laminar","memo","text","variant","fontSize","color","className","style","containerStyle","fontStyle","animationDuration","animationPreset","stagger","autoSize","clipToBounds","resolvedValue","String","motionRecipe","staggerMs","textStyle","captureLayout","animatedWidthStyle","enabled","driveToWidth","driveNumber","measuredValue","useMemo","map","join","measurement","numberOfLines","onLayout","children","value","MorphingText"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,kBAAkB,QAAQ,kCAA+B;AAClE,SAASC,cAAc,QAAQ,6BAA0B;AACzD,SAASC,iBAAiB,QAAQ,iCAA8B;AAChE,SACEC,oBAAoB,EACpBC,iBAAiB,QACZ,0BAAuB;AAE9B,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,SAAS,QAAQ,sBAAmB;AAC7C,SAASC,OAAO,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1C,OAAO,MAAMC,OAAO,gBAAGZ,KAAK,CAACa,IAAI,CAAC,SAASD,OAAOA,CAAC;EAC/CE,IAAI;EACJC,OAAO,GAAG,MAAM;EAChBC,QAAQ;EACRC,KAAK;EACLC,SAAS;EACTC,KAAK;EACLC,cAAc;EACdC,SAAS;EACTC,iBAAiB;EACjBC,eAAe;EACfC,OAAO,GAAG,IAAI;EACdC,QAAQ,GAAG,IAAI;EACfC,YAAY,GAAG;AACY,CAAC,EAAE;EAC9B,MAAMC,aAAa,GAAGC,MAAM,CAACd,IAAI,IAAI,EAAE,CAAC;EACxC,MAAM;IAAEe,YAAY;IAAEC;EAAU,CAAC,GAAG3B,cAAc,CAAC;IACjDY,OAAO;IACPQ,eAAe;IACfD,iBAAiB;IACjBE;EACF,CAAC,CAAC;EACF,MAAM;IAAEO;EAAU,CAAC,GAAG3B,iBAAiB,CAAC;IACtCY,QAAQ;IACRC,KAAK;IACLI,SAAS;IACTF;EACF,CAAC,CAAC;EAEF,MAAM;IAAEa,aAAa;IAAEC;EAAmB,CAAC,GAAG/B,kBAAkB,CAAC;IAC/DgC,OAAO,EAAET,QAAQ;IACjBU,YAAY,EAAEN,YAAY,CAACO;EAC7B,CAAC,CAAC;EACF,MAAMC,aAAa,GAAGrC,KAAK,CAACsC,OAAO,CAAC,MAAM;IACxC,IAAI,CAACb,QAAQ,EAAE;MACb,OAAO,EAAE;IACX;IAEA,OAAOnB,iBAAiB,CAACqB,aAAa,CAAC,CAACY,GAAG,CAAClC,oBAAoB,CAAC,CAACmC,IAAI,CAAC,EAAE,CAAC;EAC5E,CAAC,EAAE,CAACf,QAAQ,EAAEE,aAAa,CAAC,CAAC;EAE7B,oBACEhB,IAAA,CAACJ,aAAa;IACZkB,QAAQ,EAAEA,QAAS;IACnBC,YAAY,EAAEA,YAAa;IAC3BN,cAAc,EAAEA,cAAe;IAC/Ba,kBAAkB,EAAEA,kBAAmB;IACvCQ,WAAW,eACT9B,IAAA,CAACV,IAAI;MACHyC,aAAa,EAAE,CAAE;MACjBC,QAAQ,EAAEX,aAAc;MACxBb,KAAK,EAAEY,SAAU;MAAAa,QAAA,EAEhBP;IAAa,CACV,CACP;IAAAO,QAAA,EAEA7B,OAAO,KAAK,QAAQ,gBACnBJ,IAAA,CAACH,SAAS;MACRqC,KAAK,EAAElB,aAAc;MACrBE,YAAY,EAAEA,YAAa;MAC3Bb,QAAQ,EAAEA,QAAS;MACnBe,SAAS,EAAEA,SAAU;MACrBD,SAAS,EAAEA,SAAU;MACrBZ,SAAS,EAAEA;IAAU,CACtB,CAAC,gBAEFP,IAAA,CAACF,OAAO;MACNoC,KAAK,EAAElB,aAAc;MACrBE,YAAY,EAAEA,YAAa;MAC3BE,SAAS,EAAEA,SAAU;MACrBb,SAAS,EAAEA;IAAU,CACtB;EACJ,CACY,CAAC;AAElB,CAAC,CAAC;AAEJ,OAAO,MAAM4B,YAAY,GAAGlC,OAAO;AAEnC,eAAeA,OAAO","ignoreList":[]}
1
+ {"version":3,"names":["React","Text","useInlineAutoWidth","useMorphMotion","useMorphTextStyle","normalizeDisplayUnit","splitDisplayUnits","MorphViewport","NumberRun","TextRun","jsx","_jsx","Laminar","memo","text","variant","fontSize","color","align","className","style","containerStyle","fontStyle","animationDuration","animationPreset","stagger","autoSize","clipToBounds","resolvedValue","String","motionRecipe","staggerMs","textStyle","captureLayout","animatedWidthStyle","enabled","driveToWidth","driveNumber","measuredValue","useMemo","map","join","measurement","numberOfLines","onLayout","children","value","MorphingText"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,IAAI,QAAQ,cAAc;AACnC,SAASC,kBAAkB,QAAQ,kCAA+B;AAClE,SAASC,cAAc,QAAQ,6BAA0B;AACzD,SAASC,iBAAiB,QAAQ,iCAA8B;AAChE,SACEC,oBAAoB,EACpBC,iBAAiB,QACZ,0BAAuB;AAE9B,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,SAAS,QAAQ,sBAAmB;AAC7C,SAASC,OAAO,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1C,OAAO,MAAMC,OAAO,gBAAGZ,KAAK,CAACa,IAAI,CAAC,SAASD,OAAOA,CAAC;EAC/CE,IAAI;EACJC,OAAO,GAAG,MAAM;EAChBC,QAAQ;EACRC,KAAK;EACLC,KAAK,GAAG,MAAM;EACdC,SAAS;EACTC,KAAK;EACLC,cAAc;EACdC,SAAS;EACTC,iBAAiB;EACjBC,eAAe;EACfC,OAAO,GAAG,IAAI;EACdC,QAAQ,GAAG,IAAI;EACfC,YAAY,GAAG;AACY,CAAC,EAAE;EAC9B,MAAMC,aAAa,GAAGC,MAAM,CAACf,IAAI,IAAI,EAAE,CAAC;EACxC,MAAM;IAAEgB,YAAY;IAAEC;EAAU,CAAC,GAAG5B,cAAc,CAAC;IACjDY,OAAO;IACPS,eAAe;IACfD,iBAAiB;IACjBE;EACF,CAAC,CAAC;EACF,MAAM;IAAEO;EAAU,CAAC,GAAG5B,iBAAiB,CAAC;IACtCY,QAAQ;IACRC,KAAK;IACLK,SAAS;IACTF;EACF,CAAC,CAAC;EAEF,MAAM;IAAEa,aAAa;IAAEC;EAAmB,CAAC,GAAGhC,kBAAkB,CAAC;IAC/DiC,OAAO,EAAET,QAAQ;IACjBU,YAAY,EAAEN,YAAY,CAACO;EAC7B,CAAC,CAAC;EACF,MAAMC,aAAa,GAAGtC,KAAK,CAACuC,OAAO,CAAC,MAAM;IACxC,IAAI,CAACb,QAAQ,EAAE;MACb,OAAO,EAAE;IACX;IAEA,OAAOpB,iBAAiB,CAACsB,aAAa,CAAC,CAACY,GAAG,CAACnC,oBAAoB,CAAC,CAACoC,IAAI,CAAC,EAAE,CAAC;EAC5E,CAAC,EAAE,CAACf,QAAQ,EAAEE,aAAa,CAAC,CAAC;EAE7B,oBACEjB,IAAA,CAACJ,aAAa;IACZmB,QAAQ,EAAEA,QAAS;IACnBC,YAAY,EAAEA,YAAa;IAC3BT,KAAK,EAAEA,KAAM;IACbG,cAAc,EAAEA,cAAe;IAC/Ba,kBAAkB,EAAEA,kBAAmB;IACvCQ,WAAW,eACT/B,IAAA,CAACV,IAAI;MACH0C,aAAa,EAAE,CAAE;MACjBC,QAAQ,EAAEX,aAAc;MACxBb,KAAK,EAAEY,SAAU;MAAAa,QAAA,EAEhBP;IAAa,CACV,CACP;IAAAO,QAAA,EAEA9B,OAAO,KAAK,QAAQ,gBACnBJ,IAAA,CAACH,SAAS;MACRsC,KAAK,EAAElB,aAAc;MACrBE,YAAY,EAAEA,YAAa;MAC3BZ,KAAK,EAAEA,KAAM;MACbF,QAAQ,EAAEA,QAAS;MACnBgB,SAAS,EAAEA,SAAU;MACrBD,SAAS,EAAEA,SAAU;MACrBZ,SAAS,EAAEA;IAAU,CACtB,CAAC,gBAEFR,IAAA,CAACF,OAAO;MACNqC,KAAK,EAAElB,aAAc;MACrBE,YAAY,EAAEA,YAAa;MAC3BZ,KAAK,EAAEA,KAAM;MACbc,SAAS,EAAEA,SAAU;MACrBb,SAAS,EAAEA;IAAU,CACtB;EACJ,CACY,CAAC;AAElB,CAAC,CAAC;AAEJ,OAAO,MAAM4B,YAAY,GAAGnC,OAAO;AAEnC,eAAeA,OAAO","ignoreList":[]}
@@ -9,15 +9,27 @@ const rowStyle = {
9
9
  alignItems: "center",
10
10
  alignSelf: "flex-start"
11
11
  };
12
+ const rowAlignStyles = {
13
+ left: {
14
+ alignSelf: "flex-start"
15
+ },
16
+ center: {
17
+ alignSelf: "center"
18
+ },
19
+ right: {
20
+ alignSelf: "flex-end"
21
+ }
22
+ };
12
23
  export const GlyphRun = /*#__PURE__*/React.memo(({
13
24
  glyphs,
14
25
  layoutTransition,
15
26
  enterTransition,
16
27
  exitTransition,
28
+ align,
17
29
  textStyle,
18
30
  className
19
31
  }) => /*#__PURE__*/_jsx(View, {
20
- style: rowStyle,
32
+ style: [rowStyle, rowAlignStyles[align]],
21
33
  children: glyphs.map(glyph => /*#__PURE__*/_jsx(Animated.Text, {
22
34
  layout: layoutTransition,
23
35
  entering: enterTransition,
@@ -1 +1 @@
1
- {"version":3,"names":["React","View","Animated","jsx","_jsx","rowStyle","flexDirection","alignItems","alignSelf","GlyphRun","memo","glyphs","layoutTransition","enterTransition","exitTransition","textStyle","className","style","children","map","glyph","Text","layout","entering","exiting","value","id","displayName"],"sourceRoot":"../../../src","sources":["view/glyph-run.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAyCC,IAAI,QAAQ,cAAc;AACnE,OAAOC,QAAQ,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO/C,MAAMC,QAAQ,GAAG;EACfC,aAAa,EAAE,KAAK;EACpBC,UAAU,EAAE,QAAQ;EACpBC,SAAS,EAAE;AACb,CAAU;AAEV,OAAO,MAAMC,QAAQ,gBAAGT,KAAK,CAACU,IAAI,CAChC,CAAC;EACCC,MAAM;EACNC,gBAAgB;EAChBC,eAAe;EACfC,cAAc;EACdC,SAAS;EACTC;AAQD,CAAC,kBACEZ,IAAA,CAACH,IAAI;EAACgB,KAAK,EAAEZ,QAAS;EAAAa,QAAA,EAEnBP,MAAM,CAACQ,GAAG,CAAEC,KAAK,iBAChBhB,IAAA,CAACF,QAAQ,CAACmB,IAAI;IAEZC,MAAM,EAAEV,gBAAiB;IACzBW,QAAQ,EAAEV,eAAgB;IAC1BW,OAAO,EAAEV,cAAe;IACxBG,KAAK,EAAEF,SAAU;IACjBC,SAAS,EAAEA,SAAU;IAAAE,QAAA,EAEpBE,KAAK,CAACK;EAAK,GAPPL,KAAK,CAACM,EAQE,CAChB;AAAC,CACE,CAEZ,CAAC;AAEDjB,QAAQ,CAACkB,WAAW,GAAG,UAAU","ignoreList":[]}
1
+ {"version":3,"names":["React","View","Animated","jsx","_jsx","rowStyle","flexDirection","alignItems","alignSelf","rowAlignStyles","left","center","right","GlyphRun","memo","glyphs","layoutTransition","enterTransition","exitTransition","align","textStyle","className","style","children","map","glyph","Text","layout","entering","exiting","value","id","displayName"],"sourceRoot":"../../../src","sources":["view/glyph-run.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAyCC,IAAI,QAAQ,cAAc;AACnE,OAAOC,QAAQ,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAO/C,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;AAEV,OAAO,MAAMK,QAAQ,gBAAGb,KAAK,CAACc,IAAI,CAChC,CAAC;EACCC,MAAM;EACNC,gBAAgB;EAChBC,eAAe;EACfC,cAAc;EACdC,KAAK;EACLC,SAAS;EACTC;AASD,CAAC,kBACEjB,IAAA,CAACH,IAAI;EAACqB,KAAK,EAAE,CAACjB,QAAQ,EAAEI,cAAc,CAACU,KAAK,CAAC,CAAE;EAAAI,QAAA,EAE5CR,MAAM,CAACS,GAAG,CAAEC,KAAK,iBAChBrB,IAAA,CAACF,QAAQ,CAACwB,IAAI;IAEZC,MAAM,EAAEX,gBAAiB;IACzBY,QAAQ,EAAEX,eAAgB;IAC1BY,OAAO,EAAEX,cAAe;IACxBI,KAAK,EAAEF,SAAU;IACjBC,SAAS,EAAEA,SAAU;IAAAE,QAAA,EAEpBE,KAAK,CAACK;EAAK,GAPPL,KAAK,CAACM,EAQE,CAChB;AAAC,CACE,CAEZ,CAAC;AAEDlB,QAAQ,CAACmB,WAAW,GAAG,UAAU","ignoreList":[]}
@@ -25,17 +25,43 @@ const clippedViewportStyle = {
25
25
  const unclippedViewportStyle = {
26
26
  overflow: "visible"
27
27
  };
28
+ const fullWidthViewportStyle = {
29
+ width: "100%"
30
+ };
31
+ const shellAlignStyles = {
32
+ left: {
33
+ alignSelf: "flex-start"
34
+ },
35
+ center: {
36
+ alignSelf: "center"
37
+ },
38
+ right: {
39
+ alignSelf: "flex-end"
40
+ }
41
+ };
42
+ const viewportAlignStyles = {
43
+ left: {
44
+ alignItems: "flex-start"
45
+ },
46
+ center: {
47
+ alignItems: "center"
48
+ },
49
+ right: {
50
+ alignItems: "flex-end"
51
+ }
52
+ };
28
53
  export const MorphViewport = /*#__PURE__*/React.memo(({
29
54
  autoSize,
30
55
  clipToBounds,
56
+ align,
31
57
  containerStyle,
32
58
  animatedWidthStyle,
33
59
  measurement,
34
60
  children
35
61
  }) => {
36
- const resolvedViewportStyle = useMemo(() => [viewportStyle, clipToBounds ? clippedViewportStyle : unclippedViewportStyle], [clipToBounds]);
62
+ const resolvedViewportStyle = useMemo(() => [viewportStyle, viewportAlignStyles[align], clipToBounds ? clippedViewportStyle : unclippedViewportStyle], [align, clipToBounds]);
37
63
  return /*#__PURE__*/_jsx(View, {
38
- style: [shellStyle, containerStyle],
64
+ style: [shellStyle, shellAlignStyles[align], containerStyle],
39
65
  children: autoSize ? /*#__PURE__*/_jsxs(_Fragment, {
40
66
  children: [/*#__PURE__*/_jsx(View, {
41
67
  accessibilityElementsHidden: true,
@@ -49,7 +75,7 @@ export const MorphViewport = /*#__PURE__*/React.memo(({
49
75
  children: children
50
76
  })]
51
77
  }) : /*#__PURE__*/_jsx(View, {
52
- style: resolvedViewportStyle,
78
+ style: [resolvedViewportStyle, fullWidthViewportStyle],
53
79
  children: children
54
80
  })
55
81
  });
@@ -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","MorphViewport","memo","autoSize","clipToBounds","containerStyle","animatedWidthStyle","measurement","children","resolvedViewportStyle","style","accessibilityElementsHidden","collapsable","importantForAccessibility","pointerEvents","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;AAE/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;AAWD,OAAO,MAAME,aAAa,gBAAGtB,KAAK,CAACuB,IAAI,CACrC,CAAC;EACCC,QAAQ;EACRC,YAAY;EACZC,cAAc;EACdC,kBAAkB;EAClBC,WAAW;EACXC;AACkB,CAAC,KAAK;EACxB,MAAMC,qBAAqB,GAAG7B,OAAO,CACnC,MAAM,CACJY,aAAa,EACbY,YAAY,GAAGN,oBAAoB,GAAGE,sBAAsB,CAC7D,EACD,CAACI,YAAY,CACf,CAAC;EAED,oBACEpB,IAAA,CAACH,IAAI;IAAC6B,KAAK,EAAE,CAACrB,UAAU,EAAEgB,cAAc,CAAE;IAAAG,QAAA,EACvCL,QAAQ,gBACPf,KAAA,CAAAF,SAAA;MAAAsB,QAAA,gBACExB,IAAA,CAACH,IAAI;QACH8B,2BAA2B;QAC3BC,WAAW,EAAE,KAAM;QACnBC,yBAAyB,EAAC,qBAAqB;QAC/CC,aAAa,EAAC,MAAM;QACpBJ,KAAK,EAAEjB,oBAAqB;QAAAe,QAAA,EAE3BD;MAAW,CACR,CAAC,eACPvB,IAAA,CAACF,QAAQ,CAACD,IAAI;QAAC6B,KAAK,EAAE,CAACD,qBAAqB,EAAEH,kBAAkB,CAAE;QAAAE,QAAA,EAC/DA;MAAQ,CACI,CAAC;IAAA,CAChB,CAAC,gBAEHxB,IAAA,CAACH,IAAI;MAAC6B,KAAK,EAAED,qBAAsB;MAAAD,QAAA,EAAEA;IAAQ,CAAO;EACrD,CACG,CAAC;AAEX,CACF,CAAC;AAEDP,aAAa,CAACc,WAAW,GAAG,eAAe","ignoreList":[]}
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","measurement","children","resolvedViewportStyle","style","accessibilityElementsHidden","collapsable","importantForAccessibility","pointerEvents","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;AAYD,OAAO,MAAMC,aAAa,gBAAG7B,KAAK,CAAC8B,IAAI,CACrC,CAAC;EACCC,QAAQ;EACRC,YAAY;EACZC,KAAK;EACLC,cAAc;EACdC,kBAAkB;EAClBC,WAAW;EACXC;AACkB,CAAC,KAAK;EACxB,MAAMC,qBAAqB,GAAGrC,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,oBACE3B,IAAA,CAACH,IAAI;IAACqC,KAAK,EAAE,CAAC7B,UAAU,EAAEc,gBAAgB,CAACS,KAAK,CAAC,EAAEC,cAAc,CAAE;IAAAG,QAAA,EAChEN,QAAQ,gBACPtB,KAAA,CAAAF,SAAA;MAAA8B,QAAA,gBACEhC,IAAA,CAACH,IAAI;QACHsC,2BAA2B;QAC3BC,WAAW,EAAE,KAAM;QACnBC,yBAAyB,EAAC,qBAAqB;QAC/CC,aAAa,EAAC,MAAM;QACpBJ,KAAK,EAAEzB,oBAAqB;QAAAuB,QAAA,EAE3BD;MAAW,CACR,CAAC,eACP/B,IAAA,CAACF,QAAQ,CAACD,IAAI;QAACqC,KAAK,EAAE,CAACD,qBAAqB,EAAEH,kBAAkB,CAAE;QAAAE,QAAA,EAC/DA;MAAQ,CACI,CAAC;IAAA,CAChB,CAAC,gBAEHhC,IAAA,CAACH,IAAI;MAACqC,KAAK,EAAE,CAACD,qBAAqB,EAAEhB,sBAAsB,CAAE;MAAAe,QAAA,EAC1DA;IAAQ,CACL;EACP,CACG,CAAC;AAEX,CACF,CAAC;AAEDR,aAAa,CAACe,WAAW,GAAG,eAAe","ignoreList":[]}
@@ -10,9 +10,21 @@ const rowStyle = {
10
10
  alignItems: "center",
11
11
  alignSelf: "flex-start"
12
12
  };
13
+ const rowAlignStyles = {
14
+ left: {
15
+ alignSelf: "flex-start"
16
+ },
17
+ center: {
18
+ alignSelf: "center"
19
+ },
20
+ right: {
21
+ alignSelf: "flex-end"
22
+ }
23
+ };
13
24
  export const NumberRun = /*#__PURE__*/React.memo(({
14
25
  value,
15
26
  motionRecipe,
27
+ align,
16
28
  fontSize,
17
29
  textStyle,
18
30
  staggerMs,
@@ -35,7 +47,7 @@ export const NumberRun = /*#__PURE__*/React.memo(({
35
47
  const travelDistance = useMemo(() => Math.max(8, Math.round((fontSize ?? 16) * 0.4)), [fontSize]);
36
48
  const hasAnimated = hasAnimatedRef.current;
37
49
  return /*#__PURE__*/_jsx(View, {
38
- style: rowStyle,
50
+ style: [rowStyle, rowAlignStyles[align]],
39
51
  children: units.map((unit, index) => {
40
52
  const inLead = index < leadLength;
41
53
  const laneKey = inLead ? `lead:${index}` : `lane:${units.length - 1 - index}`;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","useRef","View","useNumericLanes","NumberLane","jsx","_jsx","rowStyle","flexDirection","alignItems","alignSelf","NumberRun","memo","value","motionRecipe","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;AAWV,OAAO,MAAMC,SAAS,gBAAGZ,KAAK,CAACa,IAAI,CACjC,CAAC;EACCC,KAAK;EACLC,YAAY;EACZC,QAAQ;EACRC,SAAS;EACTC,SAAS;EACTC;AACwB,CAAC,KAAK;EAC9B,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAGnB,eAAe,CAACU,KAAK,CAAC;EACzE,MAAMU,YAAY,GAAGtB,MAAM,CAACY,KAAK,CAAC;EAClC,MAAMW,cAAc,GAAGvB,MAAM,CAAC,KAAK,CAAC;;EAEpC;EACA,IAAIY,KAAK,KAAKU,YAAY,CAACE,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BF,YAAY,CAACE,OAAO,GAAGZ,KAAK;EAC9B;EAEA,MAAMa,cAAc,GAAG1B,OAAO,CAC5B,MAAM2B,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,oBACEnB,IAAA,CAACJ,IAAI;IAAC6B,KAAK,EAAExB,QAAS;IAAAyB,QAAA,EACnBb,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,oBACE7B,IAAA,CAACF,UAAU;QAET8B,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/BZ,YAAY,EAAEA,YAAa;QAC3BE,SAAS,EAAEA,SAAU;QACrBE,SAAS,EAAEA;MAAU,GAVhBmB,OAWN,CAAC;IAEN,CAAC;EAAC,CACE,CAAC;AAEX,CACF,CAAC;AAED1B,SAAS,CAAC+B,WAAW,GAAG,WAAW","ignoreList":[]}
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,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,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,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":[]}
@@ -7,6 +7,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export const TextRun = /*#__PURE__*/React.memo(({
8
8
  value,
9
9
  motionRecipe,
10
+ align,
10
11
  textStyle,
11
12
  className
12
13
  }) => {
@@ -24,6 +25,7 @@ export const TextRun = /*#__PURE__*/React.memo(({
24
25
  layoutTransition: motionRecipe.layoutTransition,
25
26
  enterTransition: hasAnimatedRef.current ? motionRecipe.enterTransition : undefined,
26
27
  exitTransition: motionRecipe.exitTransition,
28
+ align: align,
27
29
  textStyle: textStyle,
28
30
  className: className
29
31
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","useId","useRef","useTextGlyphs","GlyphRun","jsx","_jsx","TextRun","memo","value","motionRecipe","textStyle","className","scopeId","glyphs","lastValueRef","hasAnimatedRef","current","layoutTransition","enterTransition","undefined","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,KAAK,EAAEC,MAAM,QAAQ,OAAO;AAE5C,SAASC,aAAa,QAAQ,6BAA0B;AAExD,SAASC,QAAQ,QAAQ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASvC,OAAO,MAAMC,OAAO,gBAAGP,KAAK,CAACQ,IAAI,CAC/B,CAAC;EAAEC,KAAK;EAAEC,YAAY;EAAEC,SAAS;EAAEC;AAAwB,CAAC,KAAK;EAC/D;EACA,MAAMC,OAAO,GAAGZ,KAAK,CAAC,CAAC;EACvB,MAAMa,MAAM,GAAGX,aAAa,CAACM,KAAK,EAAEI,OAAO,CAAC;EAC5C,MAAME,YAAY,GAAGb,MAAM,CAACO,KAAK,CAAC;EAClC,MAAMO,cAAc,GAAGd,MAAM,CAAC,KAAK,CAAC;EAEpC,IAAIO,KAAK,KAAKM,YAAY,CAACE,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BF,YAAY,CAACE,OAAO,GAAGR,KAAK;EAC9B;EAEA,oBACEH,IAAA,CAACF,QAAQ;IACPU,MAAM,EAAEA,MAAO;IACfI,gBAAgB,EAAER,YAAY,CAACQ,gBAAiB;IAChDC,eAAe,EACbH,cAAc,CAACC,OAAO,GAAGP,YAAY,CAACS,eAAe,GAAGC,SACzD;IACDC,cAAc,EAAEX,YAAY,CAACW,cAAe;IAC5CV,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN,CACF,CAAC;AAEDL,OAAO,CAACe,WAAW,GAAG,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["React","useId","useRef","useTextGlyphs","GlyphRun","jsx","_jsx","TextRun","memo","value","motionRecipe","align","textStyle","className","scopeId","glyphs","lastValueRef","hasAnimatedRef","current","layoutTransition","enterTransition","undefined","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,KAAK,EAAEC,MAAM,QAAQ,OAAO;AAE5C,SAASC,aAAa,QAAQ,6BAA0B;AAExD,SAASC,QAAQ,QAAQ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAUvC,OAAO,MAAMC,OAAO,gBAAGP,KAAK,CAACQ,IAAI,CAC/B,CAAC;EAAEC,KAAK;EAAEC,YAAY;EAAEC,KAAK;EAAEC,SAAS;EAAEC;AAAwB,CAAC,KAAK;EACtE;EACA,MAAMC,OAAO,GAAGb,KAAK,CAAC,CAAC;EACvB,MAAMc,MAAM,GAAGZ,aAAa,CAACM,KAAK,EAAEK,OAAO,CAAC;EAC5C,MAAME,YAAY,GAAGd,MAAM,CAACO,KAAK,CAAC;EAClC,MAAMQ,cAAc,GAAGf,MAAM,CAAC,KAAK,CAAC;EAEpC,IAAIO,KAAK,KAAKO,YAAY,CAACE,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BF,YAAY,CAACE,OAAO,GAAGT,KAAK;EAC9B;EAEA,oBACEH,IAAA,CAACF,QAAQ;IACPW,MAAM,EAAEA,MAAO;IACfI,gBAAgB,EAAET,YAAY,CAACS,gBAAiB;IAChDC,eAAe,EACbH,cAAc,CAACC,OAAO,GAAGR,YAAY,CAACU,eAAe,GAAGC,SACzD;IACDC,cAAc,EAAEZ,YAAY,CAACY,cAAe;IAC5CX,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN,CACF,CAAC;AAEDN,OAAO,CAACgB,WAAW,GAAG,SAAS","ignoreList":[]}
@@ -3,5 +3,5 @@ import type { MorphingTextProps } from "./types";
3
3
  export declare const Laminar: React.NamedExoticComponent<Readonly<MorphingTextProps>>;
4
4
  export declare const MorphingText: React.NamedExoticComponent<Readonly<MorphingTextProps>>;
5
5
  export default Laminar;
6
- export type { LaminarProps, MorphAnimationPresetName, MorphContentVariant, MorphingTextProps, } from "./types";
6
+ export type { LaminarAlign, LaminarProps, MorphAnimationPresetName, MorphContentVariant, MorphingTextProps, } from "./types";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD,eAAO,MAAM,OAAO,yDA4EhB,CAAC;AAEL,eAAO,MAAM,YAAY,yDAAU,CAAC;AAEpC,eAAe,OAAO,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD,eAAO,MAAM,OAAO,yDAgFhB,CAAC;AAEL,eAAO,MAAM,YAAY,yDAAU,CAAC;AAEpC,eAAe,OAAO,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
@@ -2,6 +2,7 @@ import type { StyleProp, TextStyle, ViewStyle } from "react-native";
2
2
  import type { ComplexAnimationBuilder, EntryExitAnimationFunction, WithTimingConfig } from "react-native-reanimated";
3
3
  export type MorphAnimationPresetName = "default" | "smooth" | "snappy" | "bouncy";
4
4
  export type MorphContentVariant = "text" | "number";
5
+ export type LaminarAlign = "left" | "center" | "right";
5
6
  type CubicBezierTuple = readonly [number, number, number, number];
6
7
  export type MorphAnimationPreset = {
7
8
  readonly duration: number;
@@ -29,6 +30,7 @@ export type MorphingTextProps = {
29
30
  readonly variant?: MorphContentVariant;
30
31
  readonly fontSize?: number;
31
32
  readonly color?: string;
33
+ readonly align?: LaminarAlign;
32
34
  readonly className?: string;
33
35
  readonly style?: StyleProp<TextStyle>;
34
36
  readonly containerStyle?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpD,KAAK,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,0BAA0B,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,0BAA0B,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvD,KAAK,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,0BAA0B,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,0BAA0B,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
2
  import { type StyleProp, type TextStyle } from "react-native";
3
3
  import type { ComplexAnimationBuilder, EntryExitAnimationFunction } from "react-native-reanimated";
4
- import type { GlyphToken } from "../types";
5
- export declare const GlyphRun: React.MemoExoticComponent<({ glyphs, layoutTransition, enterTransition, exitTransition, textStyle, className, }: Readonly<{
4
+ import type { GlyphToken, LaminarAlign } from "../types";
5
+ export declare const GlyphRun: React.MemoExoticComponent<({ glyphs, layoutTransition, enterTransition, exitTransition, align, textStyle, className, }: Readonly<{
6
6
  glyphs: readonly GlyphToken[];
7
7
  layoutTransition: ComplexAnimationBuilder;
8
8
  enterTransition?: EntryExitAnimationFunction;
9
9
  exitTransition?: EntryExitAnimationFunction;
10
+ align: LaminarAlign;
10
11
  textStyle?: StyleProp<TextStyle>;
11
12
  className?: string;
12
13
  }>) => React.JSX.Element>;
@@ -1 +1 @@
1
- {"version":3,"file":"glyph-run.d.ts","sourceRoot":"","sources":["../../../../src/view/glyph-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAQ3C,eAAO,MAAM,QAAQ,mHAQhB,QAAQ,CAAC;IACV,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,uBAiBH,CAAC"}
1
+ {"version":3,"file":"glyph-run.d.ts","sourceRoot":"","sources":["../../../../src/view/glyph-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAczD,eAAO,MAAM,QAAQ,0HAShB,QAAQ,CAAC;IACV,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,uBAiBH,CAAC"}
@@ -1,14 +1,16 @@
1
1
  import React from "react";
2
2
  import type { StyleProp, ViewStyle } from "react-native";
3
3
  import Animated from "react-native-reanimated";
4
+ import type { LaminarAlign } from "../types";
4
5
  type MorphViewportProps = {
5
6
  readonly autoSize: boolean;
6
7
  readonly clipToBounds: boolean;
8
+ readonly align: LaminarAlign;
7
9
  readonly containerStyle?: StyleProp<ViewStyle>;
8
10
  readonly animatedWidthStyle?: React.ComponentProps<typeof Animated.View>["style"];
9
11
  readonly measurement?: React.ReactNode;
10
12
  readonly children: React.ReactNode;
11
13
  };
12
- export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, containerStyle, animatedWidthStyle, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
14
+ export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, align, containerStyle, animatedWidthStyle, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
13
15
  export {};
14
16
  //# sourceMappingURL=morph-viewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"morph-viewport.d.ts","sourceRoot":"","sources":["../../../../src/view/morph-viewport.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AA4B/C,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,aAAa,qHAQrB,kBAAkB,uBAgCtB,CAAC"}
1
+ {"version":3,"file":"morph-viewport.d.ts","sourceRoot":"","sources":["../../../../src/view/morph-viewport.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4C7C,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,aAAa,4HASrB,kBAAkB,uBAmCtB,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import React from "react";
2
2
  import { type StyleProp, type TextStyle } from "react-native";
3
- import type { MotionRecipe } from "../types";
3
+ import type { LaminarAlign, MotionRecipe } from "../types";
4
4
  type NumberRunProps = {
5
5
  readonly value: string;
6
6
  readonly motionRecipe: MotionRecipe;
7
+ readonly align: LaminarAlign;
7
8
  readonly fontSize?: number;
8
9
  readonly textStyle?: StyleProp<TextStyle>;
9
10
  readonly staggerMs: number;
10
11
  readonly className?: string;
11
12
  };
12
- export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, fontSize, textStyle, staggerMs, className, }: Readonly<NumberRunProps>) => React.JSX.Element>;
13
+ export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, align, fontSize, textStyle, staggerMs, className, }: Readonly<NumberRunProps>) => React.JSX.Element>;
13
14
  export {};
14
15
  //# sourceMappingURL=number-run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-run.d.ts","sourceRoot":"","sources":["../../../../src/view/number-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAS7C,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,SAAS,kGAQjB,QAAQ,CAAC,cAAc,CAAC,uBA4C5B,CAAC"}
1
+ {"version":3,"file":"number-run.d.ts","sourceRoot":"","sources":["../../../../src/view/number-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAe3D,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,SAAS,yGASjB,QAAQ,CAAC,cAAc,CAAC,uBA4C5B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
2
  import type { StyleProp, TextStyle } from "react-native";
3
- import type { MotionRecipe } from "../types";
3
+ import type { LaminarAlign, MotionRecipe } from "../types";
4
4
  type TextRunProps = {
5
5
  readonly value: string;
6
6
  readonly motionRecipe: MotionRecipe;
7
+ readonly align: LaminarAlign;
7
8
  readonly textStyle?: StyleProp<TextStyle>;
8
9
  readonly className?: string;
9
10
  };
10
- export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, textStyle, className }: TextRunProps) => React.JSX.Element>;
11
+ export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, textStyle, className }: TextRunProps) => React.JSX.Element>;
11
12
  export {};
12
13
  //# sourceMappingURL=text-run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-run.d.ts","sourceRoot":"","sources":["../../../../src/view/text-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,OAAO,4EAC8B,YAAY,uBAyB7D,CAAC"}
1
+ {"version":3,"file":"text-run.d.ts","sourceRoot":"","sources":["../../../../src/view/text-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG3D,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,OAAO,mFACqC,YAAY,uBA0BpE,CAAC"}
@@ -3,5 +3,5 @@ import type { MorphingTextProps } from "./types";
3
3
  export declare const Laminar: React.NamedExoticComponent<Readonly<MorphingTextProps>>;
4
4
  export declare const MorphingText: React.NamedExoticComponent<Readonly<MorphingTextProps>>;
5
5
  export default Laminar;
6
- export type { LaminarProps, MorphAnimationPresetName, MorphContentVariant, MorphingTextProps, } from "./types";
6
+ export type { LaminarAlign, LaminarProps, MorphAnimationPresetName, MorphContentVariant, MorphingTextProps, } from "./types";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD,eAAO,MAAM,OAAO,yDA4EhB,CAAC;AAEL,eAAO,MAAM,YAAY,yDAAU,CAAC;AAEpC,eAAe,OAAO,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD,eAAO,MAAM,OAAO,yDAgFhB,CAAC;AAEL,eAAO,MAAM,YAAY,yDAAU,CAAC;AAEpC,eAAe,OAAO,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
@@ -2,6 +2,7 @@ import type { StyleProp, TextStyle, ViewStyle } from "react-native";
2
2
  import type { ComplexAnimationBuilder, EntryExitAnimationFunction, WithTimingConfig } from "react-native-reanimated";
3
3
  export type MorphAnimationPresetName = "default" | "smooth" | "snappy" | "bouncy";
4
4
  export type MorphContentVariant = "text" | "number";
5
+ export type LaminarAlign = "left" | "center" | "right";
5
6
  type CubicBezierTuple = readonly [number, number, number, number];
6
7
  export type MorphAnimationPreset = {
7
8
  readonly duration: number;
@@ -29,6 +30,7 @@ export type MorphingTextProps = {
29
30
  readonly variant?: MorphContentVariant;
30
31
  readonly fontSize?: number;
31
32
  readonly color?: string;
33
+ readonly align?: LaminarAlign;
32
34
  readonly className?: string;
33
35
  readonly style?: StyleProp<TextStyle>;
34
36
  readonly containerStyle?: StyleProp<ViewStyle>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEpD,KAAK,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,0BAA0B,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,0BAA0B,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,MAAM,wBAAwB,GAChC,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,CAAC;AACpD,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvD,KAAK,gBAAgB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAElE,MAAM,MAAM,oBAAoB,GAC5B;IACE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;CACjC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE9C,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,0BAA0B,CAAC;IACrD,QAAQ,CAAC,cAAc,EAAE,0BAA0B,CAAC;IACpD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,iBAAiB,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
2
  import { type StyleProp, type TextStyle } from "react-native";
3
3
  import type { ComplexAnimationBuilder, EntryExitAnimationFunction } from "react-native-reanimated";
4
- import type { GlyphToken } from "../types";
5
- export declare const GlyphRun: React.MemoExoticComponent<({ glyphs, layoutTransition, enterTransition, exitTransition, textStyle, className, }: Readonly<{
4
+ import type { GlyphToken, LaminarAlign } from "../types";
5
+ export declare const GlyphRun: React.MemoExoticComponent<({ glyphs, layoutTransition, enterTransition, exitTransition, align, textStyle, className, }: Readonly<{
6
6
  glyphs: readonly GlyphToken[];
7
7
  layoutTransition: ComplexAnimationBuilder;
8
8
  enterTransition?: EntryExitAnimationFunction;
9
9
  exitTransition?: EntryExitAnimationFunction;
10
+ align: LaminarAlign;
10
11
  textStyle?: StyleProp<TextStyle>;
11
12
  className?: string;
12
13
  }>) => React.JSX.Element>;
@@ -1 +1 @@
1
- {"version":3,"file":"glyph-run.d.ts","sourceRoot":"","sources":["../../../../src/view/glyph-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAQ3C,eAAO,MAAM,QAAQ,mHAQhB,QAAQ,CAAC;IACV,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,uBAiBH,CAAC"}
1
+ {"version":3,"file":"glyph-run.d.ts","sourceRoot":"","sources":["../../../../src/view/glyph-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EACV,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAczD,eAAO,MAAM,QAAQ,0HAShB,QAAQ,CAAC;IACV,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,eAAe,CAAC,EAAE,0BAA0B,CAAC;IAC7C,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAC5C,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,uBAiBH,CAAC"}
@@ -1,14 +1,16 @@
1
1
  import React from "react";
2
2
  import type { StyleProp, ViewStyle } from "react-native";
3
3
  import Animated from "react-native-reanimated";
4
+ import type { LaminarAlign } from "../types";
4
5
  type MorphViewportProps = {
5
6
  readonly autoSize: boolean;
6
7
  readonly clipToBounds: boolean;
8
+ readonly align: LaminarAlign;
7
9
  readonly containerStyle?: StyleProp<ViewStyle>;
8
10
  readonly animatedWidthStyle?: React.ComponentProps<typeof Animated.View>["style"];
9
11
  readonly measurement?: React.ReactNode;
10
12
  readonly children: React.ReactNode;
11
13
  };
12
- export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, containerStyle, animatedWidthStyle, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
14
+ export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, align, containerStyle, animatedWidthStyle, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
13
15
  export {};
14
16
  //# sourceMappingURL=morph-viewport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"morph-viewport.d.ts","sourceRoot":"","sources":["../../../../src/view/morph-viewport.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AA4B/C,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,aAAa,qHAQrB,kBAAkB,uBAgCtB,CAAC"}
1
+ {"version":3,"file":"morph-viewport.d.ts","sourceRoot":"","sources":["../../../../src/view/morph-viewport.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,QAAQ,MAAM,yBAAyB,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4C7C,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,aAAa,4HASrB,kBAAkB,uBAmCtB,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import React from "react";
2
2
  import { type StyleProp, type TextStyle } from "react-native";
3
- import type { MotionRecipe } from "../types";
3
+ import type { LaminarAlign, MotionRecipe } from "../types";
4
4
  type NumberRunProps = {
5
5
  readonly value: string;
6
6
  readonly motionRecipe: MotionRecipe;
7
+ readonly align: LaminarAlign;
7
8
  readonly fontSize?: number;
8
9
  readonly textStyle?: StyleProp<TextStyle>;
9
10
  readonly staggerMs: number;
10
11
  readonly className?: string;
11
12
  };
12
- export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, fontSize, textStyle, staggerMs, className, }: Readonly<NumberRunProps>) => React.JSX.Element>;
13
+ export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, align, fontSize, textStyle, staggerMs, className, }: Readonly<NumberRunProps>) => React.JSX.Element>;
13
14
  export {};
14
15
  //# sourceMappingURL=number-run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-run.d.ts","sourceRoot":"","sources":["../../../../src/view/number-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAS7C,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,SAAS,kGAQjB,QAAQ,CAAC,cAAc,CAAC,uBA4C5B,CAAC"}
1
+ {"version":3,"file":"number-run.d.ts","sourceRoot":"","sources":["../../../../src/view/number-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAQ,MAAM,cAAc,CAAC;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAe3D,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,SAAS,yGASjB,QAAQ,CAAC,cAAc,CAAC,uBA4C5B,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
2
  import type { StyleProp, TextStyle } from "react-native";
3
- import type { MotionRecipe } from "../types";
3
+ import type { LaminarAlign, MotionRecipe } from "../types";
4
4
  type TextRunProps = {
5
5
  readonly value: string;
6
6
  readonly motionRecipe: MotionRecipe;
7
+ readonly align: LaminarAlign;
7
8
  readonly textStyle?: StyleProp<TextStyle>;
8
9
  readonly className?: string;
9
10
  };
10
- export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, textStyle, className }: TextRunProps) => React.JSX.Element>;
11
+ export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, textStyle, className }: TextRunProps) => React.JSX.Element>;
11
12
  export {};
12
13
  //# sourceMappingURL=text-run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-run.d.ts","sourceRoot":"","sources":["../../../../src/view/text-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,OAAO,4EAC8B,YAAY,uBAyB7D,CAAC"}
1
+ {"version":3,"file":"text-run.d.ts","sourceRoot":"","sources":["../../../../src/view/text-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG3D,KAAK,YAAY,GAAG;IAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,OAAO,mFACqC,YAAY,uBA0BpE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-laminar",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "A React Native component for morphing text and numbers with character-level identity.",
5
5
  "keywords": [
6
6
  "react-native",
package/src/index.tsx CHANGED
@@ -17,6 +17,7 @@ export const Laminar = React.memo(function Laminar({
17
17
  variant = "text",
18
18
  fontSize,
19
19
  color,
20
+ align = "left",
20
21
  className,
21
22
  style,
22
23
  containerStyle,
@@ -57,6 +58,7 @@ export const Laminar = React.memo(function Laminar({
57
58
  <MorphViewport
58
59
  autoSize={autoSize}
59
60
  clipToBounds={clipToBounds}
61
+ align={align}
60
62
  containerStyle={containerStyle}
61
63
  animatedWidthStyle={animatedWidthStyle}
62
64
  measurement={
@@ -73,6 +75,7 @@ export const Laminar = React.memo(function Laminar({
73
75
  <NumberRun
74
76
  value={resolvedValue}
75
77
  motionRecipe={motionRecipe}
78
+ align={align}
76
79
  fontSize={fontSize}
77
80
  textStyle={textStyle}
78
81
  staggerMs={staggerMs}
@@ -82,6 +85,7 @@ export const Laminar = React.memo(function Laminar({
82
85
  <TextRun
83
86
  value={resolvedValue}
84
87
  motionRecipe={motionRecipe}
88
+ align={align}
85
89
  textStyle={textStyle}
86
90
  className={className}
87
91
  />
@@ -94,6 +98,7 @@ export const MorphingText = Laminar;
94
98
 
95
99
  export default Laminar;
96
100
  export type {
101
+ LaminarAlign,
97
102
  LaminarProps,
98
103
  MorphAnimationPresetName,
99
104
  MorphContentVariant,
package/src/types.ts CHANGED
@@ -12,6 +12,7 @@ export type MorphAnimationPresetName =
12
12
  | "bouncy";
13
13
 
14
14
  export type MorphContentVariant = "text" | "number";
15
+ export type LaminarAlign = "left" | "center" | "right";
15
16
 
16
17
  type CubicBezierTuple = readonly [number, number, number, number];
17
18
 
@@ -47,6 +48,7 @@ export type MorphingTextProps = {
47
48
  readonly variant?: MorphContentVariant;
48
49
  readonly fontSize?: number;
49
50
  readonly color?: string;
51
+ readonly align?: LaminarAlign;
50
52
  readonly className?: string;
51
53
  readonly style?: StyleProp<TextStyle>;
52
54
  readonly containerStyle?: StyleProp<ViewStyle>;
@@ -5,7 +5,7 @@ import type {
5
5
  ComplexAnimationBuilder,
6
6
  EntryExitAnimationFunction,
7
7
  } from "react-native-reanimated";
8
- import type { GlyphToken } from "../types";
8
+ import type { GlyphToken, LaminarAlign } from "../types";
9
9
 
10
10
  const rowStyle = {
11
11
  flexDirection: "row",
@@ -13,12 +13,19 @@ const rowStyle = {
13
13
  alignSelf: "flex-start",
14
14
  } as const;
15
15
 
16
+ const rowAlignStyles = {
17
+ left: { alignSelf: "flex-start" },
18
+ center: { alignSelf: "center" },
19
+ right: { alignSelf: "flex-end" },
20
+ } as const;
21
+
16
22
  export const GlyphRun = React.memo(
17
23
  ({
18
24
  glyphs,
19
25
  layoutTransition,
20
26
  enterTransition,
21
27
  exitTransition,
28
+ align,
22
29
  textStyle,
23
30
  className,
24
31
  }: Readonly<{
@@ -26,10 +33,11 @@ export const GlyphRun = React.memo(
26
33
  layoutTransition: ComplexAnimationBuilder;
27
34
  enterTransition?: EntryExitAnimationFunction;
28
35
  exitTransition?: EntryExitAnimationFunction;
36
+ align: LaminarAlign;
29
37
  textStyle?: StyleProp<TextStyle>;
30
38
  className?: string;
31
39
  }>) => (
32
- <View style={rowStyle}>
40
+ <View style={[rowStyle, rowAlignStyles[align]]}>
33
41
  {/* glyph ids decide what swaps, layout handles the row reflow */}
34
42
  {glyphs.map((glyph) => (
35
43
  <Animated.Text
@@ -2,6 +2,7 @@ import React, { useMemo } from "react";
2
2
  import type { StyleProp, ViewStyle } from "react-native";
3
3
  import { View } from "react-native";
4
4
  import Animated from "react-native-reanimated";
5
+ import type { LaminarAlign } from "../types";
5
6
 
6
7
  const shellStyle = {
7
8
  position: "relative",
@@ -29,9 +30,26 @@ const unclippedViewportStyle: ViewStyle = {
29
30
  overflow: "visible",
30
31
  };
31
32
 
33
+ const fullWidthViewportStyle: ViewStyle = {
34
+ width: "100%",
35
+ };
36
+
37
+ const shellAlignStyles: Record<LaminarAlign, ViewStyle> = {
38
+ left: { alignSelf: "flex-start" },
39
+ center: { alignSelf: "center" },
40
+ right: { alignSelf: "flex-end" },
41
+ };
42
+
43
+ const viewportAlignStyles: Record<LaminarAlign, ViewStyle> = {
44
+ left: { alignItems: "flex-start" },
45
+ center: { alignItems: "center" },
46
+ right: { alignItems: "flex-end" },
47
+ };
48
+
32
49
  type MorphViewportProps = {
33
50
  readonly autoSize: boolean;
34
51
  readonly clipToBounds: boolean;
52
+ readonly align: LaminarAlign;
35
53
  readonly containerStyle?: StyleProp<ViewStyle>;
36
54
  readonly animatedWidthStyle?: React.ComponentProps<typeof Animated.View>["style"];
37
55
  readonly measurement?: React.ReactNode;
@@ -42,6 +60,7 @@ export const MorphViewport = React.memo(
42
60
  ({
43
61
  autoSize,
44
62
  clipToBounds,
63
+ align,
45
64
  containerStyle,
46
65
  animatedWidthStyle,
47
66
  measurement,
@@ -50,13 +69,14 @@ export const MorphViewport = React.memo(
50
69
  const resolvedViewportStyle = useMemo(
51
70
  () => [
52
71
  viewportStyle,
72
+ viewportAlignStyles[align],
53
73
  clipToBounds ? clippedViewportStyle : unclippedViewportStyle,
54
74
  ],
55
- [clipToBounds]
75
+ [align, clipToBounds]
56
76
  );
57
77
 
58
78
  return (
59
- <View style={[shellStyle, containerStyle]}>
79
+ <View style={[shellStyle, shellAlignStyles[align], containerStyle]}>
60
80
  {autoSize ? (
61
81
  <>
62
82
  <View
@@ -73,7 +93,9 @@ export const MorphViewport = React.memo(
73
93
  </Animated.View>
74
94
  </>
75
95
  ) : (
76
- <View style={resolvedViewportStyle}>{children}</View>
96
+ <View style={[resolvedViewportStyle, fullWidthViewportStyle]}>
97
+ {children}
98
+ </View>
77
99
  )}
78
100
  </View>
79
101
  );
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo, useRef } from "react";
2
2
  import { type StyleProp, type TextStyle, View } from "react-native";
3
3
  import { useNumericLanes } from "../hooks/use-numeric-lanes";
4
- import type { MotionRecipe } from "../types";
4
+ import type { LaminarAlign, MotionRecipe } from "../types";
5
5
  import { NumberLane } from "./number-lane";
6
6
 
7
7
  const rowStyle = {
@@ -10,9 +10,16 @@ const rowStyle = {
10
10
  alignSelf: "flex-start",
11
11
  } as const;
12
12
 
13
+ const rowAlignStyles = {
14
+ left: { alignSelf: "flex-start" },
15
+ center: { alignSelf: "center" },
16
+ right: { alignSelf: "flex-end" },
17
+ } as const;
18
+
13
19
  type NumberRunProps = {
14
20
  readonly value: string;
15
21
  readonly motionRecipe: MotionRecipe;
22
+ readonly align: LaminarAlign;
16
23
  readonly fontSize?: number;
17
24
  readonly textStyle?: StyleProp<TextStyle>;
18
25
  readonly staggerMs: number;
@@ -23,6 +30,7 @@ export const NumberRun = React.memo(
23
30
  ({
24
31
  value,
25
32
  motionRecipe,
33
+ align,
26
34
  fontSize,
27
35
  textStyle,
28
36
  staggerMs,
@@ -45,7 +53,7 @@ export const NumberRun = React.memo(
45
53
  const hasAnimated = hasAnimatedRef.current;
46
54
 
47
55
  return (
48
- <View style={rowStyle}>
56
+ <View style={[rowStyle, rowAlignStyles[align]]}>
49
57
  {units.map((unit, index) => {
50
58
  const inLead = index < leadLength;
51
59
  const laneKey = inLead
@@ -1,18 +1,19 @@
1
1
  import React, { useId, useRef } from "react";
2
2
  import type { StyleProp, TextStyle } from "react-native";
3
3
  import { useTextGlyphs } from "../hooks/use-text-glyphs";
4
- import type { MotionRecipe } from "../types";
4
+ import type { LaminarAlign, MotionRecipe } from "../types";
5
5
  import { GlyphRun } from "./glyph-run";
6
6
 
7
7
  type TextRunProps = {
8
8
  readonly value: string;
9
9
  readonly motionRecipe: MotionRecipe;
10
+ readonly align: LaminarAlign;
10
11
  readonly textStyle?: StyleProp<TextStyle>;
11
12
  readonly className?: string;
12
13
  };
13
14
 
14
15
  export const TextRun = React.memo(
15
- ({ value, motionRecipe, textStyle, className }: TextRunProps) => {
16
+ ({ value, motionRecipe, align, textStyle, className }: TextRunProps) => {
16
17
  // namespace ids per instance so repeated strings do not collide
17
18
  const scopeId = useId();
18
19
  const glyphs = useTextGlyphs(value, scopeId);
@@ -32,6 +33,7 @@ export const TextRun = React.memo(
32
33
  hasAnimatedRef.current ? motionRecipe.enterTransition : undefined
33
34
  }
34
35
  exitTransition={motionRecipe.exitTransition}
36
+ align={align}
35
37
  textStyle={textStyle}
36
38
  className={className}
37
39
  />