react-native-laminar 1.0.2 → 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 (66) hide show
  1. package/README.md +38 -1
  2. package/lib/commonjs/declarations.d.js +4 -0
  3. package/lib/commonjs/declarations.d.js.map +1 -0
  4. package/lib/commonjs/index.js +9 -2
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/view/glyph-run.js +16 -2
  7. package/lib/commonjs/view/glyph-run.js.map +1 -1
  8. package/lib/commonjs/view/morph-viewport.js +29 -3
  9. package/lib/commonjs/view/morph-viewport.js.map +1 -1
  10. package/lib/commonjs/view/number-lane.js +4 -1
  11. package/lib/commonjs/view/number-lane.js.map +1 -1
  12. package/lib/commonjs/view/number-run.js +17 -3
  13. package/lib/commonjs/view/number-run.js.map +1 -1
  14. package/lib/commonjs/view/text-run.js +6 -2
  15. package/lib/commonjs/view/text-run.js.map +1 -1
  16. package/lib/module/declarations.d.js +4 -0
  17. package/lib/module/declarations.d.js.map +1 -0
  18. package/lib/module/index.js +9 -2
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/module/view/glyph-run.js +16 -2
  21. package/lib/module/view/glyph-run.js.map +1 -1
  22. package/lib/module/view/morph-viewport.js +29 -3
  23. package/lib/module/view/morph-viewport.js.map +1 -1
  24. package/lib/module/view/number-lane.js +4 -1
  25. package/lib/module/view/number-lane.js.map +1 -1
  26. package/lib/module/view/number-run.js +17 -3
  27. package/lib/module/view/number-run.js.map +1 -1
  28. package/lib/module/view/text-run.js +6 -2
  29. package/lib/module/view/text-run.js.map +1 -1
  30. package/lib/typescript/commonjs/index.d.ts +1 -1
  31. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/types.d.ts +3 -0
  33. package/lib/typescript/commonjs/types.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/view/glyph-run.d.ts +4 -2
  35. package/lib/typescript/commonjs/view/glyph-run.d.ts.map +1 -1
  36. package/lib/typescript/commonjs/view/morph-viewport.d.ts +3 -1
  37. package/lib/typescript/commonjs/view/morph-viewport.d.ts.map +1 -1
  38. package/lib/typescript/commonjs/view/number-lane.d.ts +2 -1
  39. package/lib/typescript/commonjs/view/number-lane.d.ts.map +1 -1
  40. package/lib/typescript/commonjs/view/number-run.d.ts +4 -2
  41. package/lib/typescript/commonjs/view/number-run.d.ts.map +1 -1
  42. package/lib/typescript/commonjs/view/text-run.d.ts +4 -2
  43. package/lib/typescript/commonjs/view/text-run.d.ts.map +1 -1
  44. package/lib/typescript/module/index.d.ts +1 -1
  45. package/lib/typescript/module/index.d.ts.map +1 -1
  46. package/lib/typescript/module/types.d.ts +3 -0
  47. package/lib/typescript/module/types.d.ts.map +1 -1
  48. package/lib/typescript/module/view/glyph-run.d.ts +4 -2
  49. package/lib/typescript/module/view/glyph-run.d.ts.map +1 -1
  50. package/lib/typescript/module/view/morph-viewport.d.ts +3 -1
  51. package/lib/typescript/module/view/morph-viewport.d.ts.map +1 -1
  52. package/lib/typescript/module/view/number-lane.d.ts +2 -1
  53. package/lib/typescript/module/view/number-lane.d.ts.map +1 -1
  54. package/lib/typescript/module/view/number-run.d.ts +4 -2
  55. package/lib/typescript/module/view/number-run.d.ts.map +1 -1
  56. package/lib/typescript/module/view/text-run.d.ts +4 -2
  57. package/lib/typescript/module/view/text-run.d.ts.map +1 -1
  58. package/package.json +1 -1
  59. package/src/declarations.d.ts +7 -0
  60. package/src/index.tsx +8 -0
  61. package/src/types.ts +3 -0
  62. package/src/view/glyph-run.tsx +13 -2
  63. package/src/view/morph-viewport.tsx +25 -3
  64. package/src/view/number-lane.tsx +4 -1
  65. package/src/view/number-run.tsx +13 -2
  66. package/src/view/text-run.tsx +6 -2
@@ -27,7 +27,8 @@ export const NumberLane = /*#__PURE__*/React.memo(({
27
27
  direction,
28
28
  travelDistance,
29
29
  motionRecipe,
30
- textStyle
30
+ textStyle,
31
+ className
31
32
  }) => {
32
33
  const usesDigitTravel = isAsciiDigit(unit);
33
34
  const verticalOffset = direction > 0 ? travelDistance : direction < 0 ? -travelDistance : 0;
@@ -56,6 +57,7 @@ export const NumberLane = /*#__PURE__*/React.memo(({
56
57
  if (isLead) {
57
58
  return /*#__PURE__*/_jsx(Text, {
58
59
  style: textStyle,
60
+ className: className,
59
61
  children: unit
60
62
  });
61
63
  }
@@ -71,6 +73,7 @@ export const NumberLane = /*#__PURE__*/React.memo(({
71
73
  entering: hasAnimated ? enterTransition : undefined,
72
74
  exiting: exitTransition,
73
75
  style: [textStyle, laneTokenStyle],
76
+ className: className,
74
77
  children: unit
75
78
  }, `token:${tokenKey}`)]
76
79
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","Text","Animated","isAsciiDigit","createShiftTransition","jsx","_jsx","jsxs","_jsxs","laneStyle","position","alignSelf","laneProbeStyle","opacity","laneTokenStyle","top","left","NumberLane","memo","unit","tokenKey","isLead","hasAnimated","delayMs","direction","travelDistance","motionRecipe","textStyle","usesDigitTravel","verticalOffset","enterTransition","durationMs","easing","fromOpacity","toOpacity","fromTranslateY","toTranslateY","fromScale","toScale","exitTransition","style","children","View","layout","layoutTransition","entering","undefined","exiting","displayName"],"sourceRoot":"../../../src","sources":["view/number-lane.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Text","Animated","isAsciiDigit","createShiftTransition","jsx","_jsx","jsxs","_jsxs","laneStyle","position","alignSelf","laneProbeStyle","opacity","laneTokenStyle","top","left","NumberLane","memo","unit","tokenKey","isLead","hasAnimated","delayMs","direction","travelDistance","motionRecipe","textStyle","className","usesDigitTravel","verticalOffset","enterTransition","durationMs","easing","fromOpacity","toOpacity","fromTranslateY","toTranslateY","fromScale","toScale","exitTransition","style","children","View","layout","layoutTransition","entering","undefined","exiting","displayName"],"sourceRoot":"../../../src","sources":["view/number-lane.tsx"],"mappings":"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","ignoreList":[]}
@@ -10,12 +10,25 @@ 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
- staggerMs
30
+ staggerMs,
31
+ className
19
32
  }) => {
20
33
  const {
21
34
  units,
@@ -34,7 +47,7 @@ export const NumberRun = /*#__PURE__*/React.memo(({
34
47
  const travelDistance = useMemo(() => Math.max(8, Math.round((fontSize ?? 16) * 0.4)), [fontSize]);
35
48
  const hasAnimated = hasAnimatedRef.current;
36
49
  return /*#__PURE__*/_jsx(View, {
37
- style: rowStyle,
50
+ style: [rowStyle, rowAlignStyles[align]],
38
51
  children: units.map((unit, index) => {
39
52
  const inLead = index < leadLength;
40
53
  const laneKey = inLead ? `lead:${index}` : `lane:${units.length - 1 - index}`;
@@ -47,7 +60,8 @@ export const NumberRun = /*#__PURE__*/React.memo(({
47
60
  direction: direction,
48
61
  travelDistance: travelDistance,
49
62
  motionRecipe: motionRecipe,
50
- textStyle: textStyle
63
+ textStyle: textStyle,
64
+ className: className
51
65
  }, laneKey);
52
66
  })
53
67
  });
@@ -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","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;AAUV,OAAO,MAAMC,SAAS,gBAAGZ,KAAK,CAACa,IAAI,CACjC,CAAC;EACCC,KAAK;EACLC,YAAY;EACZC,QAAQ;EACRC,SAAS;EACTC;AACwB,CAAC,KAAK;EAC9B,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAW,CAAC,GAAGlB,eAAe,CAACU,KAAK,CAAC;EACzE,MAAMS,YAAY,GAAGrB,MAAM,CAACY,KAAK,CAAC;EAClC,MAAMU,cAAc,GAAGtB,MAAM,CAAC,KAAK,CAAC;;EAEpC;EACA,IAAIY,KAAK,KAAKS,YAAY,CAACE,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BF,YAAY,CAACE,OAAO,GAAGX,KAAK;EAC9B;EAEA,MAAMY,cAAc,GAAGzB,OAAO,CAC5B,MAAM0B,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAAC,CAACb,QAAQ,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,EACrD,CAACA,QAAQ,CACX,CAAC;EACD,MAAMc,WAAW,GAAGN,cAAc,CAACC,OAAO;EAE1C,oBACElB,IAAA,CAACJ,IAAI;IAAC4B,KAAK,EAAEvB,QAAS;IAAAwB,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,oBACE5B,IAAA,CAACF,UAAU;QAET6B,IAAI,EAAEA,IAAK;QACXK,QAAQ,EAAEnB,QAAQ,CAACe,KAAK,CAAE;QAC1BK,MAAM,EAAEJ,MAAO;QACfN,WAAW,EAAEA,WAAY;QACzBW,OAAO,EAAEN,KAAK,GAAGjB,SAAU;QAC3BG,SAAS,EAAEA,SAAU;QACrBK,cAAc,EAAEA,cAAe;QAC/BX,YAAY,EAAEA,YAAa;QAC3BE,SAAS,EAAEA;MAAU,GAThBoB,OAUN,CAAC;IAEN,CAAC;EAAC,CACE,CAAC;AAEX,CACF,CAAC;AAEDzB,SAAS,CAAC8B,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,7 +7,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export const TextRun = /*#__PURE__*/React.memo(({
8
8
  value,
9
9
  motionRecipe,
10
- textStyle
10
+ align,
11
+ textStyle,
12
+ className
11
13
  }) => {
12
14
  // namespace ids per instance so repeated strings do not collide
13
15
  const scopeId = useId();
@@ -23,7 +25,9 @@ export const TextRun = /*#__PURE__*/React.memo(({
23
25
  layoutTransition: motionRecipe.layoutTransition,
24
26
  enterTransition: hasAnimatedRef.current ? motionRecipe.enterTransition : undefined,
25
27
  exitTransition: motionRecipe.exitTransition,
26
- textStyle: textStyle
28
+ align: align,
29
+ textStyle: textStyle,
30
+ className: className
27
31
  });
28
32
  });
29
33
  TextRun.displayName = "TextRun";
@@ -1 +1 @@
1
- {"version":3,"names":["React","useId","useRef","useTextGlyphs","GlyphRun","jsx","_jsx","TextRun","memo","value","motionRecipe","textStyle","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;AAQvC,OAAO,MAAMC,OAAO,gBAAGP,KAAK,CAACQ,IAAI,CAC/B,CAAC;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAwB,CAAC,KAAK;EACpD;EACA,MAAMC,OAAO,GAAGX,KAAK,CAAC,CAAC;EACvB,MAAMY,MAAM,GAAGV,aAAa,CAACM,KAAK,EAAEG,OAAO,CAAC;EAC5C,MAAME,YAAY,GAAGZ,MAAM,CAACO,KAAK,CAAC;EAClC,MAAMM,cAAc,GAAGb,MAAM,CAAC,KAAK,CAAC;EAEpC,IAAIO,KAAK,KAAKK,YAAY,CAACE,OAAO,EAAE;IAClCD,cAAc,CAACC,OAAO,GAAG,IAAI;IAC7BF,YAAY,CAACE,OAAO,GAAGP,KAAK;EAC9B;EAEA,oBACEH,IAAA,CAACF,QAAQ;IACPS,MAAM,EAAEA,MAAO;IACfI,gBAAgB,EAAEP,YAAY,CAACO,gBAAiB;IAChDC,eAAe,EACbH,cAAc,CAACC,OAAO,GAAGN,YAAY,CAACQ,eAAe,GAAGC,SACzD;IACDC,cAAc,EAAEV,YAAY,CAACU,cAAe;IAC5CT,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN,CACF,CAAC;AAEDJ,OAAO,CAACc,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,yDAyEhB,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,8 @@ export type MorphingTextProps = {
29
30
  readonly variant?: MorphContentVariant;
30
31
  readonly fontSize?: number;
31
32
  readonly color?: string;
33
+ readonly align?: LaminarAlign;
34
+ readonly className?: string;
32
35
  readonly style?: StyleProp<TextStyle>;
33
36
  readonly containerStyle?: StyleProp<ViewStyle>;
34
37
  readonly fontStyle?: StyleProp<TextStyle>;
@@ -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,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,14 @@
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, }: 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>;
12
+ className?: string;
11
13
  }>) => React.JSX.Element>;
12
14
  //# sourceMappingURL=glyph-run.d.ts.map
@@ -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,wGAOhB,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;CAClC,CAAC,uBAgBH,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"}
@@ -11,7 +11,8 @@ type NumberLaneProps = {
11
11
  readonly travelDistance: number;
12
12
  readonly motionRecipe: MotionRecipe;
13
13
  readonly textStyle?: StyleProp<TextStyle>;
14
+ readonly className?: string;
14
15
  };
15
- export declare const NumberLane: React.MemoExoticComponent<({ unit, tokenKey, isLead, hasAnimated, delayMs, direction, travelDistance, motionRecipe, textStyle, }: NumberLaneProps) => React.JSX.Element>;
16
+ export declare const NumberLane: React.MemoExoticComponent<({ unit, tokenKey, isLead, hasAnimated, delayMs, direction, travelDistance, motionRecipe, textStyle, className, }: NumberLaneProps) => React.JSX.Element>;
16
17
  export {};
17
18
  //# sourceMappingURL=number-lane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-lane.d.ts","sourceRoot":"","sources":["../../../../src/view/number-lane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAiBnE,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,UAAU,oIAWlB,eAAe,uBAgFnB,CAAC"}
1
+ {"version":3,"file":"number-lane.d.ts","sourceRoot":"","sources":["../../../../src/view/number-lane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAiBnE,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,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,UAAU,+IAYlB,eAAe,uBAiFnB,CAAC"}
@@ -1,13 +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;
11
+ readonly className?: string;
10
12
  };
11
- export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, fontSize, textStyle, staggerMs, }: Readonly<NumberRunProps>) => React.JSX.Element>;
13
+ export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, align, fontSize, textStyle, staggerMs, className, }: Readonly<NumberRunProps>) => React.JSX.Element>;
12
14
  export {};
13
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;CAC5B,CAAC;AAEF,eAAO,MAAM,SAAS,uFAOjB,QAAQ,CAAC,cAAc,CAAC,uBA2C5B,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,11 +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>;
9
+ readonly className?: string;
8
10
  };
9
- export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, textStyle }: TextRunProps) => React.JSX.Element>;
11
+ export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, textStyle, className }: TextRunProps) => React.JSX.Element>;
10
12
  export {};
11
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;CAC3C,CAAC;AAEF,eAAO,MAAM,OAAO,iEACmB,YAAY,uBAwBlD,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,yDAyEhB,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,8 @@ export type MorphingTextProps = {
29
30
  readonly variant?: MorphContentVariant;
30
31
  readonly fontSize?: number;
31
32
  readonly color?: string;
33
+ readonly align?: LaminarAlign;
34
+ readonly className?: string;
32
35
  readonly style?: StyleProp<TextStyle>;
33
36
  readonly containerStyle?: StyleProp<ViewStyle>;
34
37
  readonly fontStyle?: StyleProp<TextStyle>;
@@ -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,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,14 @@
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, }: 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>;
12
+ className?: string;
11
13
  }>) => React.JSX.Element>;
12
14
  //# sourceMappingURL=glyph-run.d.ts.map
@@ -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,wGAOhB,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;CAClC,CAAC,uBAgBH,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"}
@@ -11,7 +11,8 @@ type NumberLaneProps = {
11
11
  readonly travelDistance: number;
12
12
  readonly motionRecipe: MotionRecipe;
13
13
  readonly textStyle?: StyleProp<TextStyle>;
14
+ readonly className?: string;
14
15
  };
15
- export declare const NumberLane: React.MemoExoticComponent<({ unit, tokenKey, isLead, hasAnimated, delayMs, direction, travelDistance, motionRecipe, textStyle, }: NumberLaneProps) => React.JSX.Element>;
16
+ export declare const NumberLane: React.MemoExoticComponent<({ unit, tokenKey, isLead, hasAnimated, delayMs, direction, travelDistance, motionRecipe, textStyle, className, }: NumberLaneProps) => React.JSX.Element>;
16
17
  export {};
17
18
  //# sourceMappingURL=number-lane.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"number-lane.d.ts","sourceRoot":"","sources":["../../../../src/view/number-lane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAiBnE,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,UAAU,oIAWlB,eAAe,uBAgFnB,CAAC"}
1
+ {"version":3,"file":"number-lane.d.ts","sourceRoot":"","sources":["../../../../src/view/number-lane.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAQ,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAIpE,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAiBnE,KAAK,eAAe,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,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,UAAU,+IAYlB,eAAe,uBAiFnB,CAAC"}
@@ -1,13 +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;
11
+ readonly className?: string;
10
12
  };
11
- export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, fontSize, textStyle, staggerMs, }: Readonly<NumberRunProps>) => React.JSX.Element>;
13
+ export declare const NumberRun: React.MemoExoticComponent<({ value, motionRecipe, align, fontSize, textStyle, staggerMs, className, }: Readonly<NumberRunProps>) => React.JSX.Element>;
12
14
  export {};
13
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;CAC5B,CAAC;AAEF,eAAO,MAAM,SAAS,uFAOjB,QAAQ,CAAC,cAAc,CAAC,uBA2C5B,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,11 +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>;
9
+ readonly className?: string;
8
10
  };
9
- export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, textStyle }: TextRunProps) => React.JSX.Element>;
11
+ export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, textStyle, className }: TextRunProps) => React.JSX.Element>;
10
12
  export {};
11
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;CAC3C,CAAC;AAEF,eAAO,MAAM,OAAO,iEACmB,YAAY,uBAwBlD,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.0.2",
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",
@@ -0,0 +1,7 @@
1
+ import "react-native";
2
+
3
+ declare module "react-native" {
4
+ interface TextProps {
5
+ className?: string;
6
+ }
7
+ }
package/src/index.tsx CHANGED
@@ -17,6 +17,8 @@ export const Laminar = React.memo(function Laminar({
17
17
  variant = "text",
18
18
  fontSize,
19
19
  color,
20
+ align = "left",
21
+ className,
20
22
  style,
21
23
  containerStyle,
22
24
  fontStyle,
@@ -56,6 +58,7 @@ export const Laminar = React.memo(function Laminar({
56
58
  <MorphViewport
57
59
  autoSize={autoSize}
58
60
  clipToBounds={clipToBounds}
61
+ align={align}
59
62
  containerStyle={containerStyle}
60
63
  animatedWidthStyle={animatedWidthStyle}
61
64
  measurement={
@@ -72,15 +75,19 @@ export const Laminar = React.memo(function Laminar({
72
75
  <NumberRun
73
76
  value={resolvedValue}
74
77
  motionRecipe={motionRecipe}
78
+ align={align}
75
79
  fontSize={fontSize}
76
80
  textStyle={textStyle}
77
81
  staggerMs={staggerMs}
82
+ className={className}
78
83
  />
79
84
  ) : (
80
85
  <TextRun
81
86
  value={resolvedValue}
82
87
  motionRecipe={motionRecipe}
88
+ align={align}
83
89
  textStyle={textStyle}
90
+ className={className}
84
91
  />
85
92
  )}
86
93
  </MorphViewport>
@@ -91,6 +98,7 @@ export const MorphingText = Laminar;
91
98
 
92
99
  export default Laminar;
93
100
  export type {
101
+ LaminarAlign,
94
102
  LaminarProps,
95
103
  MorphAnimationPresetName,
96
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,8 @@ export type MorphingTextProps = {
47
48
  readonly variant?: MorphContentVariant;
48
49
  readonly fontSize?: number;
49
50
  readonly color?: string;
51
+ readonly align?: LaminarAlign;
52
+ readonly className?: string;
50
53
  readonly style?: StyleProp<TextStyle>;
51
54
  readonly containerStyle?: StyleProp<ViewStyle>;
52
55
  readonly fontStyle?: StyleProp<TextStyle>;
@@ -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,21 +13,31 @@ 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,
30
+ className,
23
31
  }: Readonly<{
24
32
  glyphs: readonly GlyphToken[];
25
33
  layoutTransition: ComplexAnimationBuilder;
26
34
  enterTransition?: EntryExitAnimationFunction;
27
35
  exitTransition?: EntryExitAnimationFunction;
36
+ align: LaminarAlign;
28
37
  textStyle?: StyleProp<TextStyle>;
38
+ className?: string;
29
39
  }>) => (
30
- <View style={rowStyle}>
40
+ <View style={[rowStyle, rowAlignStyles[align]]}>
31
41
  {/* glyph ids decide what swaps, layout handles the row reflow */}
32
42
  {glyphs.map((glyph) => (
33
43
  <Animated.Text
@@ -36,6 +46,7 @@ export const GlyphRun = React.memo(
36
46
  entering={enterTransition}
37
47
  exiting={exitTransition}
38
48
  style={textStyle}
49
+ className={className}
39
50
  >
40
51
  {glyph.value}
41
52
  </Animated.Text>