@multiplatform.one/components 7.7.2 → 7.7.4

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 (143) hide show
  1. package/dist/cjs/SheetModal/index.native.js +49 -25
  2. package/dist/cjs/SheetModal/index.native.js.map +1 -1
  3. package/dist/esm/Accordion/index.native.js.map +1 -1
  4. package/dist/esm/AnimateHeight/index.native.js.map +1 -1
  5. package/dist/esm/Avatar/getInitials.native.js.map +1 -1
  6. package/dist/esm/Avatar/index.native.js.map +1 -1
  7. package/dist/esm/Badge/index.native.js.map +1 -1
  8. package/dist/esm/Button.native.js.map +1 -1
  9. package/dist/esm/Carousel/index.native.js.map +1 -1
  10. package/dist/esm/Chip/index.native.js.map +1 -1
  11. package/dist/esm/ContextMenu/index.native.js.map +1 -1
  12. package/dist/esm/CopyField/index.native.js.map +1 -1
  13. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  14. package/dist/esm/DropdownMenu/index.native.js.map +1 -1
  15. package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
  16. package/dist/esm/Heading.native.js.map +1 -1
  17. package/dist/esm/Meter/index.native.js.map +1 -1
  18. package/dist/esm/Meter/meter.native.js.map +1 -1
  19. package/dist/esm/Pagination.native.js.map +1 -1
  20. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  21. package/dist/esm/Quote/index.native.js.map +1 -1
  22. package/dist/esm/Separator/index.native.js.map +1 -1
  23. package/dist/esm/SheetModal/detents.native.js.map +1 -1
  24. package/dist/esm/SheetModal/index.native.js +49 -25
  25. package/dist/esm/SheetModal/index.native.js.map +1 -1
  26. package/dist/esm/Skeleton/index.native.js.map +1 -1
  27. package/dist/esm/SkipLink/index.native.js.map +1 -1
  28. package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
  29. package/dist/esm/SortableList/index.native.js.map +1 -1
  30. package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
  31. package/dist/esm/Tabs/index.native.js.map +1 -1
  32. package/dist/esm/Text.native.js.map +1 -1
  33. package/dist/esm/Toast/index.native.js.map +1 -1
  34. package/dist/esm/Toast/store.native.js.map +1 -1
  35. package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
  36. package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
  37. package/dist/esm/TreeSelect/index.native.js.map +1 -1
  38. package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
  39. package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
  40. package/dist/esm/Video/VideoFrame.native.js.map +1 -1
  41. package/dist/esm/Video/types.native.js.map +1 -1
  42. package/dist/esm/Wheel/index.native.js.map +1 -1
  43. package/dist/esm/Wizard/index.native.js.map +1 -1
  44. package/dist/esm/actions/ActionBar.native.js.map +1 -1
  45. package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
  46. package/dist/esm/actions/devWarn.native.js.map +1 -1
  47. package/dist/esm/actions/index.native.js.map +1 -1
  48. package/dist/esm/actions/severity.native.js.map +1 -1
  49. package/dist/esm/charts/Axis.native.js.map +1 -1
  50. package/dist/esm/charts/BarChart.native.js.map +1 -1
  51. package/dist/esm/charts/ChartSurface.native.js.map +1 -1
  52. package/dist/esm/charts/LineChart.native.js.map +1 -1
  53. package/dist/esm/charts/PieChart.native.js.map +1 -1
  54. package/dist/esm/charts/Sparkline.native.js.map +1 -1
  55. package/dist/esm/charts/accessibility.native.js.map +1 -1
  56. package/dist/esm/charts/composeChart.native.js.map +1 -1
  57. package/dist/esm/charts/index.native.js.map +1 -1
  58. package/dist/esm/charts/math.native.js.map +1 -1
  59. package/dist/esm/charts/series.native.js.map +1 -1
  60. package/dist/esm/charts/svg.native.js.map +1 -1
  61. package/dist/esm/charts/types.native.js.map +1 -1
  62. package/dist/esm/charts/useChartTheme.native.js.map +1 -1
  63. package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
  64. package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
  65. package/dist/esm/code/Highlighter/index.native.js.map +1 -1
  66. package/dist/esm/code/Pre/index.native.js.map +1 -1
  67. package/dist/esm/code/index.native.js.map +1 -1
  68. package/dist/esm/componentColors.native.js.map +1 -1
  69. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  70. package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
  71. package/dist/esm/feedback/copy.native.js.map +1 -1
  72. package/dist/esm/feedback/index.native.js.map +1 -1
  73. package/dist/esm/feedback/notify.native.js.map +1 -1
  74. package/dist/esm/feedback/route.native.js.map +1 -1
  75. package/dist/esm/feedback/store.native.js.map +1 -1
  76. package/dist/esm/hooks/index.native.js.map +1 -1
  77. package/dist/esm/hooks/useClipboard.native.js.map +1 -1
  78. package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
  79. package/dist/esm/icons/CheckRegular.native.js.map +1 -1
  80. package/dist/esm/icons/MinusRegular.native.js.map +1 -1
  81. package/dist/esm/icons/index.native.js.map +1 -1
  82. package/dist/esm/icons/lucide.native.js.map +1 -1
  83. package/dist/esm/icons/themed.native.js.map +1 -1
  84. package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
  85. package/dist/esm/images/Image/shared.native.js.map +1 -1
  86. package/dist/esm/images/Image/types.native.js.map +1 -1
  87. package/dist/esm/images/index.native.js.map +1 -1
  88. package/dist/esm/index.native.js.map +1 -1
  89. package/dist/esm/knobImmuneExports.native.js.map +1 -1
  90. package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
  91. package/dist/esm/layouts/Debug/index.native.js.map +1 -1
  92. package/dist/esm/layouts/EmptyState.native.js.map +1 -1
  93. package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
  94. package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
  95. package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
  96. package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
  97. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  98. package/dist/esm/layouts/attachments.native.js.map +1 -1
  99. package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
  100. package/dist/esm/layouts/index.native.js.map +1 -1
  101. package/dist/esm/layouts/page.native.js.map +1 -1
  102. package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
  103. package/dist/esm/layouts/sidebar.native.js.map +1 -1
  104. package/dist/esm/layouts/tags.native.js.map +1 -1
  105. package/dist/esm/layouts/timeline.native.js.map +1 -1
  106. package/dist/esm/layouts/toolbar.native.js.map +1 -1
  107. package/dist/esm/shared/actionScan.native.js.map +1 -1
  108. package/dist/esm/shared/i18n.native.js.map +1 -1
  109. package/dist/esm/shared/t.native.js.map +1 -1
  110. package/dist/esm/shared/textRidesText.native.js.map +1 -1
  111. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
  112. package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
  113. package/dist/esm/surfaces.native.js.map +1 -1
  114. package/dist/esm/tamagui.native.js.map +1 -1
  115. package/dist/esm/testSetup.native.js.map +1 -1
  116. package/dist/esm/utils/setTinted.native.js.map +1 -1
  117. package/dist/esm/utils/unwrapText.native.js.map +1 -1
  118. package/dist/esm/views/Calendar.native.js.map +1 -1
  119. package/dist/esm/views/Dashboard.native.js.map +1 -1
  120. package/dist/esm/views/Gantt.native.js.map +1 -1
  121. package/dist/esm/views/ImageGrid.native.js.map +1 -1
  122. package/dist/esm/views/List.native.js.map +1 -1
  123. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  124. package/dist/esm/views/TreeView.native.js.map +1 -1
  125. package/dist/esm/views/calendarMath.native.js.map +1 -1
  126. package/dist/esm/views/ganttMath.native.js.map +1 -1
  127. package/dist/esm/views/index.native.js.map +1 -1
  128. package/dist/esm/views/kanbanDnd.native.js.map +1 -1
  129. package/dist/esm/views/treeViewDnd.native.js.map +1 -1
  130. package/dist/esm/views/treeViewLayout.native.js.map +1 -1
  131. package/dist/esm/views/treeViewMotion.native.js.map +1 -1
  132. package/dist/jsx/SheetModal/index.native.js +49 -25
  133. package/dist/jsx/SheetModal/index.native.js.map +1 -1
  134. package/dist/jsx/code/CodeBlock/index.native.js +1 -1
  135. package/dist/jsx/code/index.native.js +1 -1
  136. package/dist/jsx/feedback/NotifyHost.native.js +1 -1
  137. package/dist/jsx/index.native.js +1 -1
  138. package/dist/jsx/layouts/AsyncBoundary.native.js +1 -1
  139. package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
  140. package/package.json +9 -9
  141. package/src/SheetModal/SheetModal.native.spec.tsx +138 -0
  142. package/src/SheetModal/index.native.tsx +59 -26
  143. package/types/SheetModal/index.native.d.ts.map +1 -1
@@ -62,19 +62,6 @@ export function SheetModal({
62
62
  if (backdropArmed) close();
63
63
  }, [backdropArmed, close]);
64
64
 
65
- useEffect(() => {
66
- if (!open) {
67
- setBackdropArmed(false);
68
- if (armTimerRef.current) {
69
- clearTimeout(armTimerRef.current);
70
- armTimerRef.current = null;
71
- }
72
- }
73
- return () => {
74
- if (armTimerRef.current) clearTimeout(armTimerRef.current);
75
- };
76
- }, [open]);
77
-
78
65
  // MPO-64: the sheet ends above the keyboard rather than running under it.
79
66
  const available = Math.max(0, windowHeight - keyboardInset);
80
67
  const maxHeight = Math.max(
@@ -127,11 +114,9 @@ export function SheetModal({
127
114
  travelRef.current = travel;
128
115
  detentsRef.current = detents;
129
116
 
130
- useEffect(() => {
131
- if (open) return;
132
- translateY.setValue(travelRef.current);
133
- restRef.current = travelRef.current;
134
- }, [open, translateY]);
117
+ // Async callbacks belong to one committed presentation, never its successor.
118
+ const presentationRef = useRef(0);
119
+ const activeRef = useRef(false);
135
120
 
136
121
  const settleTo = useCallback(
137
122
  (toValue: number, velocity = 0) => {
@@ -143,7 +128,10 @@ export function SheetModal({
143
128
  stiffness: 320,
144
129
  mass: 0.9,
145
130
  overshootClamping: true,
146
- useNativeDriver: true,
131
+ // MPO-256: JS driver. A native-driven Animated node inside a core RN
132
+ // Modal does not advance on the New Architecture, and the drag path
133
+ // already writes this value from JS.
134
+ useNativeDriver: false,
147
135
  }).start();
148
136
  },
149
137
  [translateY],
@@ -151,6 +139,8 @@ export function SheetModal({
151
139
 
152
140
  const dismiss = useCallback(
153
141
  (velocity = 0) => {
142
+ if (!activeRef.current) return;
143
+ const presentation = presentationRef.current;
154
144
  restRef.current = travelRef.current;
155
145
  Animated.spring(translateY, {
156
146
  toValue: travelRef.current,
@@ -159,9 +149,9 @@ export function SheetModal({
159
149
  stiffness: 400,
160
150
  mass: 0.9,
161
151
  overshootClamping: true,
162
- useNativeDriver: true,
152
+ useNativeDriver: false,
163
153
  }).start(({ finished }) => {
164
- if (finished) close();
154
+ if (finished && activeRef.current && presentation === presentationRef.current) close();
165
155
  });
166
156
  },
167
157
  [close, translateY],
@@ -207,9 +197,25 @@ export function SheetModal({
207
197
  [dismiss, settleTo, translateY],
208
198
  );
209
199
 
210
- const handleModalShow = useCallback(() => {
200
+ /*
201
+ * MPO-256 — the entrance runs from an effect on `open` as well as from
202
+ * `onShow`, whichever gets here first, guarded so the second is a no-op.
203
+ * Wired to `onShow` ALONE, the sheet stays parked at `travel` for good
204
+ * whenever that callback does not arrive: one sheet-height below the
205
+ * screen, every row in the accessibility tree and none of them reachable.
206
+ */
207
+ const enteredRef = useRef(false);
208
+ const enter = useCallback(() => {
209
+ if (!activeRef.current || enteredRef.current) return;
210
+ const presentation = presentationRef.current;
211
+ enteredRef.current = true;
211
212
  if (armTimerRef.current) clearTimeout(armTimerRef.current);
212
- armTimerRef.current = setTimeout(() => setBackdropArmed(true), 280);
213
+ armTimerRef.current = setTimeout(() => {
214
+ if (activeRef.current && presentation === presentationRef.current) {
215
+ armTimerRef.current = null;
216
+ setBackdropArmed(true);
217
+ }
218
+ }, 280);
213
219
  // MPO-62: the modal fades (backdrop dims IN PLACE); only the panel slides.
214
220
  // MPO-71: the sheet is already parked off-screen before the present, so
215
221
  // this setValue only normalises the start to exactly `travel` once the
@@ -221,10 +227,37 @@ export function SheetModal({
221
227
  toValue: 0,
222
228
  duration: 280,
223
229
  easing: Easing.out(Easing.cubic),
224
- useNativeDriver: true,
225
- }).start();
230
+ useNativeDriver: false,
231
+ }).start(({ finished }) => {
232
+ if (finished && activeRef.current && presentation === presentationRef.current)
233
+ translateY.setValue(0);
234
+ });
226
235
  }, [translateY]);
227
236
 
237
+ useEffect(() => {
238
+ presentationRef.current += 1;
239
+ activeRef.current = open;
240
+ if (open) {
241
+ enter();
242
+ } else {
243
+ setBackdropArmed(false);
244
+ const parked = travelRef.current || 10000;
245
+ translateY.setValue(parked);
246
+ restRef.current = parked;
247
+ }
248
+ return () => {
249
+ // Invalidate first: stopping an animation can synchronously finish it.
250
+ activeRef.current = false;
251
+ presentationRef.current += 1;
252
+ enteredRef.current = false;
253
+ if (armTimerRef.current) {
254
+ clearTimeout(armTimerRef.current);
255
+ armTimerRef.current = null;
256
+ }
257
+ translateY.stopAnimation();
258
+ };
259
+ }, [open, enter, translateY]);
260
+
228
261
  return (
229
262
  <Modal
230
263
  visible={open}
@@ -232,7 +265,7 @@ export function SheetModal({
232
265
  animationType="fade"
233
266
  statusBarTranslucent
234
267
  onRequestClose={close}
235
- onShow={handleModalShow}
268
+ onShow={enter}
236
269
  >
237
270
  <RNView style={{ flex: 1, justifyContent: "flex-end", paddingBottom: keyboardInset }}>
238
271
  <Pressable
@@ -1 +1 @@
1
- {"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/SheetModal/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU/C,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,UAAU,GACX,EAAE,eAAe,2CAgRjB"}
1
+ {"version":3,"file":"index.native.d.ts","sourceRoot":"","sources":["../../src/SheetModal/index.native.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAU/C,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,SAAS,EACT,UAAU,GACX,EAAE,eAAe,2CAiTjB"}