react-native-laminar 1.4.1 → 1.4.3

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 (36) hide show
  1. package/README.md +66 -0
  2. package/lib/commonjs/hooks/use-inline-auto-width.js +105 -18
  3. package/lib/commonjs/hooks/use-inline-auto-width.js.map +1 -1
  4. package/lib/commonjs/index.js +5 -1
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/view/morph-viewport.js +2 -0
  7. package/lib/commonjs/view/morph-viewport.js.map +1 -1
  8. package/lib/commonjs/view/text-run.js +30 -12
  9. package/lib/commonjs/view/text-run.js.map +1 -1
  10. package/lib/module/hooks/use-inline-auto-width.js +106 -19
  11. package/lib/module/hooks/use-inline-auto-width.js.map +1 -1
  12. package/lib/module/index.js +5 -1
  13. package/lib/module/index.js.map +1 -1
  14. package/lib/module/view/morph-viewport.js +2 -0
  15. package/lib/module/view/morph-viewport.js.map +1 -1
  16. package/lib/module/view/text-run.js +30 -12
  17. package/lib/module/view/text-run.js.map +1 -1
  18. package/lib/typescript/commonjs/hooks/use-inline-auto-width.d.ts +2 -0
  19. package/lib/typescript/commonjs/hooks/use-inline-auto-width.d.ts.map +1 -1
  20. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  21. package/lib/typescript/commonjs/view/morph-viewport.d.ts +3 -2
  22. package/lib/typescript/commonjs/view/morph-viewport.d.ts.map +1 -1
  23. package/lib/typescript/commonjs/view/text-run.d.ts +2 -1
  24. package/lib/typescript/commonjs/view/text-run.d.ts.map +1 -1
  25. package/lib/typescript/module/hooks/use-inline-auto-width.d.ts +2 -0
  26. package/lib/typescript/module/hooks/use-inline-auto-width.d.ts.map +1 -1
  27. package/lib/typescript/module/index.d.ts.map +1 -1
  28. package/lib/typescript/module/view/morph-viewport.d.ts +3 -2
  29. package/lib/typescript/module/view/morph-viewport.d.ts.map +1 -1
  30. package/lib/typescript/module/view/text-run.d.ts +2 -1
  31. package/lib/typescript/module/view/text-run.d.ts.map +1 -1
  32. package/package.json +1 -1
  33. package/src/hooks/use-inline-auto-width.ts +160 -18
  34. package/src/index.tsx +10 -1
  35. package/src/view/morph-viewport.tsx +7 -2
  36. package/src/view/text-run.tsx +49 -15
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { useCallback, useEffect, useRef, useState } from "react";
3
+ import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
4
4
  import { useAnimatedStyle, useSharedValue } from "react-native-reanimated";
5
5
  const WIDTH_CACHE_LIMIT = 64;
6
6
 
@@ -11,10 +11,19 @@ export const useInlineAutoWidth = ({
11
11
  measurementKey
12
12
  }) => {
13
13
  const widthValue = useSharedValue(0);
14
+ const hasBootstrappedWidth = useSharedValue(false);
14
15
  const measuredWidthRef = useRef(null);
15
16
  const bootstrappedRef = useRef(false);
16
17
  const widthCacheRef = useRef(new Map());
17
- const [hasBootstrappedWidth, setHasBootstrappedWidth] = useState(false);
18
+ const hasCapturedVisibleLayoutRef = useRef(false);
19
+ const initialMeasurementKeyRef = useRef(null);
20
+ const firstProbeRef = useRef(null);
21
+ const latestProbeRef = useRef(null);
22
+ const bootstrapTimerRef = useRef(null);
23
+ const [readyMeasurementKey, setReadyMeasurementKey] = useState(null);
24
+ const markMeasurementReady = useCallback(key => {
25
+ setReadyMeasurementKey(currentKey => currentKey === key ? currentKey : key);
26
+ }, []);
18
27
 
19
28
  // the first measurement establishes the shell without animating from zero
20
29
  const applyWidth = useCallback(nextWidth => {
@@ -25,11 +34,62 @@ export const useInlineAutoWidth = ({
25
34
  if (!bootstrappedRef.current) {
26
35
  bootstrappedRef.current = true;
27
36
  widthValue.value = nextWidth;
28
- setHasBootstrappedWidth(true);
37
+ hasBootstrappedWidth.value = true;
29
38
  return;
30
39
  }
31
40
  widthValue.value = driveToWidth(nextWidth);
32
41
  }, [driveToWidth, widthValue]);
42
+ const bootstrapFromProbe = useCallback(() => {
43
+ bootstrapTimerRef.current = null;
44
+ if (hasCapturedVisibleLayoutRef.current) {
45
+ return;
46
+ }
47
+ const firstProbe = firstProbeRef.current;
48
+ if (!firstProbe) {
49
+ return;
50
+ }
51
+
52
+ // The visible layout did not arrive in time, so use the first probe as a
53
+ // safe fallback. A later probe can still animate from this baseline.
54
+ hasCapturedVisibleLayoutRef.current = true;
55
+ initialMeasurementKeyRef.current = firstProbe.key;
56
+ applyWidth(firstProbe.width);
57
+ const latestProbe = latestProbeRef.current;
58
+ if (latestProbe && latestProbe.key !== firstProbe.key) {
59
+ // The target width is already cached. Defer its animation until the
60
+ // ready render so the shell and the new glyph row start together.
61
+ markMeasurementReady(latestProbe.key);
62
+ } else {
63
+ markMeasurementReady(firstProbe.key);
64
+ }
65
+ }, [applyWidth, markMeasurementReady]);
66
+ const captureVisibleLayout = useCallback(event => {
67
+ if (!enabled || hasCapturedVisibleLayoutRef.current) {
68
+ return;
69
+ }
70
+ if (bootstrapTimerRef.current !== null) {
71
+ clearTimeout(bootstrapTimerRef.current);
72
+ bootstrapTimerRef.current = null;
73
+ }
74
+ hasCapturedVisibleLayoutRef.current = true;
75
+ // bootstrap from the visible tree so the first explicit width matches
76
+ // the geometry that was already painted to the user
77
+ const nextWidth = Math.max(0, event.nativeEvent.layout.width);
78
+ // retain the visible width for the initial key so a later cache hit does
79
+ // not reintroduce the probe-to-visible mismatch
80
+ widthCacheRef.current.delete(measurementKey);
81
+ widthCacheRef.current.set(measurementKey, nextWidth);
82
+ const firstProbe = firstProbeRef.current;
83
+ if (firstProbe && firstProbe.key !== measurementKey) {
84
+ initialMeasurementKeyRef.current = firstProbe.key;
85
+ applyWidth(firstProbe.width);
86
+ markMeasurementReady(measurementKey);
87
+ return;
88
+ }
89
+ initialMeasurementKeyRef.current = measurementKey;
90
+ applyWidth(nextWidth);
91
+ markMeasurementReady(measurementKey);
92
+ }, [applyWidth, enabled, markMeasurementReady, measurementKey]);
33
93
  const captureLayout = useCallback(event => {
34
94
  if (!enabled) {
35
95
  return;
@@ -37,36 +97,63 @@ export const useInlineAutoWidth = ({
37
97
 
38
98
  // round up so fractional native measurements cannot clip the final glyph
39
99
  const nextWidth = Math.max(0, Math.ceil(event.nativeEvent.layout.width));
40
-
41
- // delete before setting so a repeated key moves to the most recent position
42
- widthCacheRef.current.delete(measurementKey);
43
- if (widthCacheRef.current.size >= WIDTH_CACHE_LIMIT) {
44
- // map insertion order gives the lru entry at the front
45
- const oldestKey = widthCacheRef.current.keys().next().value;
46
- if (oldestKey !== undefined) {
47
- widthCacheRef.current.delete(oldestKey);
100
+ const isInitialMeasurement = initialMeasurementKeyRef.current === measurementKey;
101
+ if (!isInitialMeasurement) {
102
+ // delete before setting so a repeated key moves to the most recent position
103
+ widthCacheRef.current.delete(measurementKey);
104
+ if (widthCacheRef.current.size >= WIDTH_CACHE_LIMIT) {
105
+ // map insertion order gives the lru entry at the front
106
+ const oldestKey = widthCacheRef.current.keys().next().value;
107
+ if (oldestKey !== undefined) {
108
+ widthCacheRef.current.delete(oldestKey);
109
+ }
48
110
  }
111
+ widthCacheRef.current.set(measurementKey, nextWidth);
49
112
  }
50
- widthCacheRef.current.set(measurementKey, nextWidth);
51
- applyWidth(nextWidth);
52
- }, [applyWidth, enabled, measurementKey]);
113
+ const probe = {
114
+ key: measurementKey,
115
+ width: nextWidth
116
+ };
117
+ if (!firstProbeRef.current) {
118
+ firstProbeRef.current = probe;
119
+ }
120
+ latestProbeRef.current = probe;
121
+ if (!hasCapturedVisibleLayoutRef.current && bootstrapTimerRef.current === null) {
122
+ bootstrapTimerRef.current = setTimeout(bootstrapFromProbe, 0);
123
+ }
124
+
125
+ // Do not let the initial probe override the visible first frame.
126
+ if (hasCapturedVisibleLayoutRef.current && !isInitialMeasurement) {
127
+ // captureLayout only records the target. The cache effect applies the
128
+ // animation during the render that releases the new glyph row.
129
+ markMeasurementReady(measurementKey);
130
+ }
131
+ }, [applyWidth, bootstrapFromProbe, enabled, markMeasurementReady, measurementKey]);
53
132
  const cachedWidth = widthCacheRef.current.get(measurementKey);
54
133
 
55
134
  // a cached width can restore the shell before the hidden probe renders again
56
- useEffect(() => {
57
- if (enabled && cachedWidth !== undefined) {
135
+ useLayoutEffect(() => {
136
+ if (enabled && cachedWidth !== undefined && hasCapturedVisibleLayoutRef.current) {
58
137
  // promote cache hits so active states stay available longer
59
138
  widthCacheRef.current.delete(measurementKey);
60
139
  widthCacheRef.current.set(measurementKey, cachedWidth);
61
140
  applyWidth(cachedWidth);
141
+ markMeasurementReady(measurementKey);
142
+ }
143
+ }, [applyWidth, cachedWidth, enabled, markMeasurementReady, measurementKey]);
144
+ useEffect(() => () => {
145
+ if (bootstrapTimerRef.current !== null) {
146
+ clearTimeout(bootstrapTimerRef.current);
62
147
  }
63
- }, [applyWidth, cachedWidth, enabled, measurementKey]);
64
- const animatedWidthStyle = useAnimatedStyle(() => enabled && hasBootstrappedWidth ? {
148
+ }, []);
149
+ const animatedWidthStyle = useAnimatedStyle(() => enabled && hasBootstrappedWidth.value ? {
65
150
  width: widthValue.value
66
- } : {}, [enabled, hasBootstrappedWidth]);
151
+ } : {}, [enabled]);
67
152
  return {
68
153
  captureLayout,
154
+ captureVisibleLayout,
69
155
  animatedWidthStyle,
156
+ isReady: !enabled || cachedWidth !== undefined || readyMeasurementKey === measurementKey,
70
157
  shouldMeasure: enabled && cachedWidth === undefined
71
158
  };
72
159
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useRef","useState","useAnimatedStyle","useSharedValue","WIDTH_CACHE_LIMIT","useInlineAutoWidth","enabled","driveToWidth","measurementKey","widthValue","measuredWidthRef","bootstrappedRef","widthCacheRef","Map","hasBootstrappedWidth","setHasBootstrappedWidth","applyWidth","nextWidth","current","value","captureLayout","event","Math","max","ceil","nativeEvent","layout","width","delete","size","oldestKey","keys","next","undefined","set","cachedWidth","get","animatedWidthStyle","shouldMeasure"],"sourceRoot":"../../../src","sources":["hooks/use-inline-auto-width.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useLayoutEffect","useRef","useState","useAnimatedStyle","useSharedValue","WIDTH_CACHE_LIMIT","useInlineAutoWidth","enabled","driveToWidth","measurementKey","widthValue","hasBootstrappedWidth","measuredWidthRef","bootstrappedRef","widthCacheRef","Map","hasCapturedVisibleLayoutRef","initialMeasurementKeyRef","firstProbeRef","latestProbeRef","bootstrapTimerRef","readyMeasurementKey","setReadyMeasurementKey","markMeasurementReady","key","currentKey","applyWidth","nextWidth","current","value","bootstrapFromProbe","firstProbe","width","latestProbe","captureVisibleLayout","event","clearTimeout","Math","max","nativeEvent","layout","delete","set","captureLayout","ceil","isInitialMeasurement","size","oldestKey","keys","next","undefined","probe","setTimeout","cachedWidth","get","animatedWidthStyle","isReady","shouldMeasure"],"sourceRoot":"../../../src","sources":["hooks/use-inline-auto-width.ts"],"mappings":"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","ignoreList":[]}
@@ -62,7 +62,9 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
62
62
  }, [leadingGap, resolvedLeading, resolvedLeadingKey, resolvedValue, textStyle, variant]);
63
63
  const {
64
64
  captureLayout,
65
+ captureVisibleLayout,
65
66
  animatedWidthStyle,
67
+ isReady: isAutoSizeReady,
66
68
  shouldMeasure
67
69
  } = useInlineAutoWidth({
68
70
  enabled: autoSize,
@@ -82,6 +84,7 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
82
84
  align: align,
83
85
  containerStyle: containerStyle,
84
86
  animatedWidthStyle: animatedWidthStyle,
87
+ onVisibleLayout: autoSize ? captureVisibleLayout : undefined,
85
88
  measurement: shouldMeasure ? /*#__PURE__*/_jsxs(View, {
86
89
  onLayout: captureLayout,
87
90
  style: {
@@ -99,7 +102,7 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
99
102
  style: textStyle,
100
103
  children: normalizeDisplayUnit(unit)
101
104
  }, `${unit}-${index}`))]
102
- }) : undefined,
105
+ }, measurementKey) : undefined,
103
106
  children: variant === "slots" ? /*#__PURE__*/_jsx(SlotsRun, {
104
107
  value: resolvedValue,
105
108
  motionRecipe: motionRecipe,
@@ -123,6 +126,7 @@ export const Laminar = /*#__PURE__*/React.memo(function Laminar({
123
126
  leading: resolvedLeading,
124
127
  leadingKey: resolvedLeadingKey,
125
128
  leadingGap: leadingGap,
129
+ ready: !autoSize || isAutoSizeReady,
126
130
  textStyle: textStyle,
127
131
  className: className
128
132
  })
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","Text","View","useInlineAutoWidth","useMorphMotion","useMorphTextStyle","normalizeDisplayUnit","splitDisplayUnits","MorphViewport","NumberRun","SlotsRun","TextRun","jsx","_jsx","jsxs","_jsxs","Laminar","memo","text","variant","fontSize","color","align","className","leading","leadingKey","leadingGap","style","containerStyle","fontStyle","animationDuration","animationPreset","stagger","autoSize","clipToBounds","resolvedValue","String","leadingMap","isLeadingMap","undefined","resolvedLeading","resolvedLeadingKey","motionRecipe","staggerMs","textStyle","measurementKey","useMemo","flattenedStyle","flatten","JSON","stringify","fontFamily","fontWeight","fontVariant","letterSpacing","lineHeight","textTransform","Boolean","captureLayout","animatedWidthStyle","shouldMeasure","enabled","driveToWidth","driveNumber","measuredValue","map","join","measurement","onLayout","flexDirection","alignSelf","children","alignItems","justifyContent","marginRight","unit","index","value","isValidElement","Array","isArray"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","Text","View","useInlineAutoWidth","useMorphMotion","useMorphTextStyle","normalizeDisplayUnit","splitDisplayUnits","MorphViewport","NumberRun","SlotsRun","TextRun","jsx","_jsx","jsxs","_jsxs","Laminar","memo","text","variant","fontSize","color","align","className","leading","leadingKey","leadingGap","style","containerStyle","fontStyle","animationDuration","animationPreset","stagger","autoSize","clipToBounds","resolvedValue","String","leadingMap","isLeadingMap","undefined","resolvedLeading","resolvedLeadingKey","motionRecipe","staggerMs","textStyle","measurementKey","useMemo","flattenedStyle","flatten","JSON","stringify","fontFamily","fontWeight","fontVariant","letterSpacing","lineHeight","textTransform","Boolean","captureLayout","captureVisibleLayout","animatedWidthStyle","isReady","isAutoSizeReady","shouldMeasure","enabled","driveToWidth","driveNumber","measuredValue","map","join","onVisibleLayout","measurement","onLayout","flexDirection","alignSelf","children","alignItems","justifyContent","marginRight","unit","index","value","ready","isValidElement","Array","isArray"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -57,6 +57,7 @@ export const MorphViewport = /*#__PURE__*/React.memo(({
57
57
  align,
58
58
  containerStyle,
59
59
  animatedWidthStyle,
60
+ onVisibleLayout,
60
61
  measurement,
61
62
  children
62
63
  }) => {
@@ -75,6 +76,7 @@ export const MorphViewport = /*#__PURE__*/React.memo(({
75
76
  style: measuredContentStyle,
76
77
  children: measurement
77
78
  }), /*#__PURE__*/_jsx(Animated.View, {
79
+ onLayout: onVisibleLayout,
78
80
  style: [resolvedViewportStyle, animatedWidthStyle],
79
81
  children: children
80
82
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["React","useMemo","View","Animated","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","shellStyle","position","alignSelf","viewportStyle","measuredContentStyle","left","top","opacity","flexShrink","clippedViewportStyle","overflow","unclippedViewportStyle","fullWidthViewportStyle","width","shellAlignStyles","center","right","viewportAlignStyles","alignItems","MorphViewport","memo","autoSize","clipToBounds","align","containerStyle","animatedWidthStyle","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;AACA,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;EACA,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;EACA,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":[]}
1
+ {"version":3,"names":["React","useMemo","View","Animated","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","shellStyle","position","alignSelf","viewportStyle","measuredContentStyle","left","top","opacity","flexShrink","clippedViewportStyle","overflow","unclippedViewportStyle","fullWidthViewportStyle","width","shellAlignStyles","center","right","viewportAlignStyles","alignItems","MorphViewport","memo","autoSize","clipToBounds","align","containerStyle","animatedWidthStyle","onVisibleLayout","measurement","children","resolvedViewportStyle","style","accessibilityElementsHidden","collapsable","importantForAccessibility","pointerEvents","onLayout","displayName"],"sourceRoot":"../../../src","sources":["view/morph-viewport.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAEtC,SAASC,IAAI,QAAQ,cAAc;AACnC,OAAOC,QAAQ,MAAM,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAG/C,MAAMC,UAAU,GAAG;EACjBC,QAAQ,EAAE,UAAU;EACpBC,SAAS,EAAE;AACb,CAAU;AAEV,MAAMC,aAAa,GAAG;EACpBD,SAAS,EAAE;AACb,CAAU;AAEV,MAAME,oBAA+B,GAAG;EACtCH,QAAQ,EAAE,UAAU;EACpBI,IAAI,EAAE,CAAC;EACPC,GAAG,EAAE,CAAC;EACNC,OAAO,EAAE,CAAC;EACVL,SAAS,EAAE,YAAY;EACvBM,UAAU,EAAE;AACd,CAAC;AAED,MAAMC,oBAA+B,GAAG;EACtCC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,sBAAiC,GAAG;EACxCD,QAAQ,EAAE;AACZ,CAAC;AAED,MAAME,sBAAiC,GAAG;EACxCC,KAAK,EAAE;AACT,CAAC;AAED,MAAMC,gBAAiD,GAAG;EACxDT,IAAI,EAAE;IAAEH,SAAS,EAAE;EAAa,CAAC;EACjCa,MAAM,EAAE;IAAEb,SAAS,EAAE;EAAS,CAAC;EAC/Bc,KAAK,EAAE;IAAEd,SAAS,EAAE;EAAW;AACjC,CAAC;AAED,MAAMe,mBAAoD,GAAG;EAC3DZ,IAAI,EAAE;IAAEa,UAAU,EAAE;EAAa,CAAC;EAClCH,MAAM,EAAE;IAAEG,UAAU,EAAE;EAAS,CAAC;EAChCF,KAAK,EAAE;IAAEE,UAAU,EAAE;EAAW;AAClC,CAAC;AAaD;AACA,OAAO,MAAMC,aAAa,gBAAG7B,KAAK,CAAC8B,IAAI,CACrC,CAAC;EACCC,QAAQ;EACRC,YAAY;EACZC,KAAK;EACLC,cAAc;EACdC,kBAAkB;EAClBC,eAAe;EACfC,WAAW;EACXC;AACkB,CAAC,KAAK;EACxB;EACA,MAAMC,qBAAqB,GAAGtC,OAAO,CACnC,MAAM,CACJY,aAAa,EACbc,mBAAmB,CAACM,KAAK,CAAC,EAC1BD,YAAY,GAAGb,oBAAoB,GAAGE,sBAAsB,CAC7D,EACD,CAACY,KAAK,EAAED,YAAY,CACtB,CAAC;;EAED;EACA,oBACE3B,IAAA,CAACH,IAAI;IAACsC,KAAK,EAAE,CAAC9B,UAAU,EAAEc,gBAAgB,CAACS,KAAK,CAAC,EAAEC,cAAc,CAAE;IAAAI,QAAA,EAChEP,QAAQ,gBACPtB,KAAA,CAAAF,SAAA;MAAA+B,QAAA,gBACEjC,IAAA,CAACH,IAAI;QACHuC,2BAA2B;QAC3BC,WAAW,EAAE,KAAM;QACnBC,yBAAyB,EAAC,qBAAqB;QAC/CC,aAAa,EAAC,MAAM;QACpBJ,KAAK,EAAE1B,oBAAqB;QAAAwB,QAAA,EAE3BD;MAAW,CACR,CAAC,eACPhC,IAAA,CAACF,QAAQ,CAACD,IAAI;QACZ2C,QAAQ,EAAET,eAAgB;QAC1BI,KAAK,EAAE,CAACD,qBAAqB,EAAEJ,kBAAkB,CAAE;QAAAG,QAAA,EAElDA;MAAQ,CACI,CAAC;IAAA,CAChB,CAAC,gBAEHjC,IAAA,CAACH,IAAI;MAACsC,KAAK,EAAE,CAACD,qBAAqB,EAAEjB,sBAAsB,CAAE;MAAAgB,QAAA,EAC1DA;IAAQ,CACL;EACP,CACG,CAAC;AAEX,CACF,CAAC;AAEDT,aAAa,CAACiB,WAAW,GAAG,eAAe","ignoreList":[]}
@@ -14,22 +14,40 @@ export const TextRun = /*#__PURE__*/React.memo(({
14
14
  leading,
15
15
  leadingKey,
16
16
  leadingGap = 0,
17
+ ready = true,
17
18
  textStyle,
18
19
  className
19
20
  }) => {
20
21
  // namespace ids per instance so repeated strings do not collide
21
22
  const scopeId = useId();
22
- const lastValueRef = useRef(value);
23
- const lastLeadingPresenceRef = useRef(Boolean(leading));
24
- const lastLeadingKeyRef = useRef(leadingKey);
23
+ const hasDisplayedRef = useRef(false);
24
+ const displayedValueRef = useRef(value);
25
+ const displayedLeadingRef = useRef(leading);
26
+ const displayedLeadingKeyRef = useRef(leadingKey);
27
+ const displayedLeadingGapRef = useRef(leadingGap);
28
+ const shouldDisplayTarget = ready || !hasDisplayedRef.current;
29
+ const visibleValue = shouldDisplayTarget ? value : displayedValueRef.current;
30
+ const visibleLeading = shouldDisplayTarget ? leading : displayedLeadingRef.current;
31
+ const visibleLeadingKey = shouldDisplayTarget ? leadingKey : displayedLeadingKeyRef.current;
32
+ const visibleLeadingGap = shouldDisplayTarget ? leadingGap : displayedLeadingGapRef.current;
33
+ if (shouldDisplayTarget) {
34
+ hasDisplayedRef.current = true;
35
+ displayedValueRef.current = value;
36
+ displayedLeadingRef.current = leading;
37
+ displayedLeadingKeyRef.current = leadingKey;
38
+ displayedLeadingGapRef.current = leadingGap;
39
+ }
40
+ const lastValueRef = useRef(visibleValue);
41
+ const lastLeadingPresenceRef = useRef(Boolean(visibleLeading));
42
+ const lastLeadingKeyRef = useRef(visibleLeadingKey);
25
43
  const hasAnimatedRef = useRef(false);
26
- const isLeadingSwap = Boolean(leading) && lastLeadingPresenceRef.current && leadingKey !== lastLeadingKeyRef.current;
44
+ const isLeadingSwap = Boolean(visibleLeading) && lastLeadingPresenceRef.current && visibleLeadingKey !== lastLeadingKeyRef.current;
27
45
  // update the worklet flag after commit so render never writes a shared value
28
46
  const leadingSwapProgress = useSharedValue(0);
29
47
  useLayoutEffect(() => {
30
48
  leadingSwapProgress.value = isLeadingSwap ? 1 : 0;
31
49
  }, [isLeadingSwap, leadingSwapProgress]);
32
- const glyphs = useTextGlyphs(value, scopeId, leading, leadingKey);
50
+ const glyphs = useTextGlyphs(visibleValue, scopeId, visibleLeading, visibleLeadingKey);
33
51
  const elementEnterTransition = useMemo(() => createLeadingEnterTransition({
34
52
  durationMs: motionRecipe.durationMs,
35
53
  easing: motionRecipe.easing
@@ -37,16 +55,16 @@ export const TextRun = /*#__PURE__*/React.memo(({
37
55
  const elementExitTransition = useMemo(() => createLeadingExitTransition({
38
56
  durationMs: motionRecipe.durationMs,
39
57
  easing: motionRecipe.easing,
40
- leadingGap,
58
+ leadingGap: visibleLeadingGap,
41
59
  scale: leadingSwapProgress
42
- }), [leadingGap, leadingSwapProgress, motionRecipe.durationMs, motionRecipe.easing]);
60
+ }), [visibleLeadingGap, leadingSwapProgress, motionRecipe.durationMs, motionRecipe.easing]);
43
61
 
44
62
  // mark the first value as settled and later changes as eligible for motion
45
- if (value !== lastValueRef.current || Boolean(leading) !== lastLeadingPresenceRef.current || leadingKey !== lastLeadingKeyRef.current) {
63
+ if (visibleValue !== lastValueRef.current || Boolean(visibleLeading) !== lastLeadingPresenceRef.current || visibleLeadingKey !== lastLeadingKeyRef.current) {
46
64
  hasAnimatedRef.current = true;
47
- lastValueRef.current = value;
48
- lastLeadingPresenceRef.current = Boolean(leading);
49
- lastLeadingKeyRef.current = leadingKey;
65
+ lastValueRef.current = visibleValue;
66
+ lastLeadingPresenceRef.current = Boolean(visibleLeading);
67
+ lastLeadingKeyRef.current = visibleLeadingKey;
50
68
  }
51
69
  const hasAnimated = hasAnimatedRef.current;
52
70
  return /*#__PURE__*/_jsx(GlyphRun, {
@@ -56,7 +74,7 @@ export const TextRun = /*#__PURE__*/React.memo(({
56
74
  elementEnterTransition: isLeadingSwap ? elementEnterTransition : undefined,
57
75
  exitTransition: motionRecipe.exitTransition,
58
76
  elementExitTransition: elementExitTransition,
59
- leadingGap: leadingGap,
77
+ leadingGap: visibleLeadingGap,
60
78
  align: align,
61
79
  textStyle: textStyle,
62
80
  className: className
@@ -1 +1 @@
1
- {"version":3,"names":["React","useId","useLayoutEffect","useMemo","useRef","useSharedValue","useTextGlyphs","createLeadingEnterTransition","createLeadingExitTransition","GlyphRun","jsx","_jsx","TextRun","memo","value","motionRecipe","align","leading","leadingKey","leadingGap","textStyle","className","scopeId","lastValueRef","lastLeadingPresenceRef","Boolean","lastLeadingKeyRef","hasAnimatedRef","isLeadingSwap","current","leadingSwapProgress","glyphs","elementEnterTransition","durationMs","easing","elementExitTransition","scale","hasAnimated","layoutTransition","undefined","enterTransition","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useId","useLayoutEffect","useMemo","useRef","useSharedValue","useTextGlyphs","createLeadingEnterTransition","createLeadingExitTransition","GlyphRun","jsx","_jsx","TextRun","memo","value","motionRecipe","align","leading","leadingKey","leadingGap","ready","textStyle","className","scopeId","hasDisplayedRef","displayedValueRef","displayedLeadingRef","displayedLeadingKeyRef","displayedLeadingGapRef","shouldDisplayTarget","current","visibleValue","visibleLeading","visibleLeadingKey","visibleLeadingGap","lastValueRef","lastLeadingPresenceRef","Boolean","lastLeadingKeyRef","hasAnimatedRef","isLeadingSwap","leadingSwapProgress","glyphs","elementEnterTransition","durationMs","easing","elementExitTransition","scale","hasAnimated","layoutTransition","undefined","enterTransition","exitTransition","displayName"],"sourceRoot":"../../../src","sources":["view/text-run.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,11 +6,13 @@ type Params = {
6
6
  };
7
7
  export declare const useInlineAutoWidth: ({ enabled, driveToWidth, measurementKey, }: Params) => {
8
8
  captureLayout: (event: LayoutChangeEvent) => void;
9
+ captureVisibleLayout: (event: LayoutChangeEvent) => void;
9
10
  animatedWidthStyle: {
10
11
  width: number;
11
12
  } | {
12
13
  width?: undefined;
13
14
  };
15
+ isReady: boolean;
14
16
  shouldMeasure: boolean;
15
17
  };
16
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"use-inline-auto-width.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-inline-auto-width.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAKF,eAAO,MAAM,kBAAkB,GAAI,4CAIhC,MAAM;2BA6BG,iBAAiB;;;;;;;CAqD5B,CAAC"}
1
+ {"version":3,"file":"use-inline-auto-width.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-inline-auto-width.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAUF,eAAO,MAAM,kBAAkB,GAAI,4CAIhC,MAAM;2BAyGG,iBAAiB;kCAlCjB,iBAAiB;;;;;;;;CA8I5B,CAAC"}
@@ -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,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAOpE,eAAO,MAAM,OAAO,yDAqJhB,CAAC;AAcL,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,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,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAOpE,eAAO,MAAM,OAAO,yDA8JhB,CAAC;AAcL,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { StyleProp, ViewStyle } from "react-native";
2
+ import type { LayoutChangeEvent, StyleProp, ViewStyle } from "react-native";
3
3
  import Animated from "react-native-reanimated";
4
4
  import type { LaminarAlign } from "../types";
5
5
  type MorphViewportProps = {
@@ -8,9 +8,10 @@ type MorphViewportProps = {
8
8
  readonly align: LaminarAlign;
9
9
  readonly containerStyle?: StyleProp<ViewStyle>;
10
10
  readonly animatedWidthStyle?: React.ComponentProps<typeof Animated.View>["style"];
11
+ readonly onVisibleLayout?: (event: LayoutChangeEvent) => void;
11
12
  readonly measurement?: React.ReactNode;
12
13
  readonly children: React.ReactNode;
13
14
  };
14
- export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, align, containerStyle, animatedWidthStyle, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
15
+ export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, align, containerStyle, animatedWidthStyle, onVisibleLayout, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
15
16
  export {};
16
17
  //# 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;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;AAGF,eAAO,MAAM,aAAa,4HASrB,kBAAkB,uBAqCtB,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,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5E,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,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAGF,eAAO,MAAM,aAAa,6IAUrB,kBAAkB,uBAwCtB,CAAC"}
@@ -9,9 +9,10 @@ type TextRunProps = {
9
9
  readonly leading?: ReactNode;
10
10
  readonly leadingKey?: string | number;
11
11
  readonly leadingGap?: number;
12
+ readonly ready?: boolean;
12
13
  readonly textStyle?: StyleProp<TextStyle>;
13
14
  readonly className?: string;
14
15
  };
15
- export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, leading, leadingKey, leadingGap, textStyle, className, }: TextRunProps) => React.JSX.Element>;
16
+ export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, leading, leadingKey, leadingGap, ready, textStyle, className, }: TextRunProps) => React.JSX.Element>;
16
17
  export {};
17
18
  //# 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,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzD,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,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAGF,eAAO,MAAM,OAAO,qHAUf,YAAY,uBA8EhB,CAAC"}
1
+ {"version":3,"file":"text-run.d.ts","sourceRoot":"","sources":["../../../../src/view/text-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzD,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,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAGF,eAAO,MAAM,OAAO,4HAWf,YAAY,uBA8GhB,CAAC"}
@@ -6,11 +6,13 @@ type Params = {
6
6
  };
7
7
  export declare const useInlineAutoWidth: ({ enabled, driveToWidth, measurementKey, }: Params) => {
8
8
  captureLayout: (event: LayoutChangeEvent) => void;
9
+ captureVisibleLayout: (event: LayoutChangeEvent) => void;
9
10
  animatedWidthStyle: {
10
11
  width: number;
11
12
  } | {
12
13
  width?: undefined;
13
14
  };
15
+ isReady: boolean;
14
16
  shouldMeasure: boolean;
15
17
  };
16
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"use-inline-auto-width.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-inline-auto-width.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAKF,eAAO,MAAM,kBAAkB,GAAI,4CAIhC,MAAM;2BA6BG,iBAAiB;;;;;;;CAqD5B,CAAC"}
1
+ {"version":3,"file":"use-inline-auto-width.d.ts","sourceRoot":"","sources":["../../../../src/hooks/use-inline-auto-width.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,KAAK,MAAM,GAAG;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAUF,eAAO,MAAM,kBAAkB,GAAI,4CAIhC,MAAM;2BAyGG,iBAAiB;kCAlCjB,iBAAiB;;;;;;;;CA8I5B,CAAC"}
@@ -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,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAOpE,eAAO,MAAM,OAAO,yDAqJhB,CAAC;AAcL,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,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,EAAqB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAOpE,eAAO,MAAM,OAAO,yDA8JhB,CAAC;AAcL,YAAY,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,SAAS,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { StyleProp, ViewStyle } from "react-native";
2
+ import type { LayoutChangeEvent, StyleProp, ViewStyle } from "react-native";
3
3
  import Animated from "react-native-reanimated";
4
4
  import type { LaminarAlign } from "../types";
5
5
  type MorphViewportProps = {
@@ -8,9 +8,10 @@ type MorphViewportProps = {
8
8
  readonly align: LaminarAlign;
9
9
  readonly containerStyle?: StyleProp<ViewStyle>;
10
10
  readonly animatedWidthStyle?: React.ComponentProps<typeof Animated.View>["style"];
11
+ readonly onVisibleLayout?: (event: LayoutChangeEvent) => void;
11
12
  readonly measurement?: React.ReactNode;
12
13
  readonly children: React.ReactNode;
13
14
  };
14
- export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, align, containerStyle, animatedWidthStyle, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
15
+ export declare const MorphViewport: React.MemoExoticComponent<({ autoSize, clipToBounds, align, containerStyle, animatedWidthStyle, onVisibleLayout, measurement, children, }: MorphViewportProps) => React.JSX.Element>;
15
16
  export {};
16
17
  //# 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;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;AAGF,eAAO,MAAM,aAAa,4HASrB,kBAAkB,uBAqCtB,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,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5E,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,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CACpC,CAAC;AAGF,eAAO,MAAM,aAAa,6IAUrB,kBAAkB,uBAwCtB,CAAC"}
@@ -9,9 +9,10 @@ type TextRunProps = {
9
9
  readonly leading?: ReactNode;
10
10
  readonly leadingKey?: string | number;
11
11
  readonly leadingGap?: number;
12
+ readonly ready?: boolean;
12
13
  readonly textStyle?: StyleProp<TextStyle>;
13
14
  readonly className?: string;
14
15
  };
15
- export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, leading, leadingKey, leadingGap, textStyle, className, }: TextRunProps) => React.JSX.Element>;
16
+ export declare const TextRun: React.MemoExoticComponent<({ value, motionRecipe, align, leading, leadingKey, leadingGap, ready, textStyle, className, }: TextRunProps) => React.JSX.Element>;
16
17
  export {};
17
18
  //# 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,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzD,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,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAGF,eAAO,MAAM,OAAO,qHAUf,YAAY,uBA8EhB,CAAC"}
1
+ {"version":3,"file":"text-run.d.ts","sourceRoot":"","sources":["../../../../src/view/text-run.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkD,MAAM,OAAO,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzD,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,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAGF,eAAO,MAAM,OAAO,4HAWf,YAAY,uBA8GhB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-laminar",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "A React Native component for morphing text and numbers with character-level identity.",
5
5
  "keywords": [
6
6
  "react-native",