@terreno/ui 0.10.0 → 0.11.1

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 (74) hide show
  1. package/dist/Banner.js +7 -5
  2. package/dist/Banner.js.map +1 -1
  3. package/dist/Common.d.ts +3 -1
  4. package/dist/Common.js.map +1 -1
  5. package/dist/TextFieldNumberActionSheet.d.ts +1 -1
  6. package/dist/Toast.d.ts +1 -1
  7. package/dist/Toast.js +2 -2
  8. package/dist/Toast.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/package.json +2 -1
  11. package/src/ActionSheet.test.tsx +262 -3
  12. package/src/AddressField.test.tsx +50 -0
  13. package/src/Banner.test.tsx +65 -0
  14. package/src/Banner.tsx +7 -5
  15. package/src/Box.test.tsx +218 -0
  16. package/src/Button.test.tsx +71 -0
  17. package/src/Common.ts +3 -1
  18. package/src/ConsentFormScreen.test.tsx +167 -0
  19. package/src/ConsentNavigator.test.tsx +206 -0
  20. package/src/DecimalRangeActionSheet.test.tsx +53 -2
  21. package/src/EmailField.test.tsx +81 -0
  22. package/src/EmojiSelector.test.tsx +262 -1
  23. package/src/HeightActionSheet.test.tsx +57 -2
  24. package/src/InfoModalIcon.test.tsx +16 -0
  25. package/src/InfoTooltipButton.test.tsx +53 -1
  26. package/src/MobileAddressAutoComplete.test.tsx +137 -7
  27. package/src/Modal.test.tsx +188 -0
  28. package/src/NumberPickerActionSheet.test.tsx +59 -2
  29. package/src/Page.test.tsx +162 -1
  30. package/src/Pagination.test.tsx +16 -0
  31. package/src/PhoneNumberField.test.tsx +46 -9
  32. package/src/PickerSelect.test.tsx +230 -0
  33. package/src/SegmentedControl.test.tsx +38 -0
  34. package/src/SelectBadge.test.tsx +52 -1
  35. package/src/SideDrawer.test.tsx +69 -0
  36. package/src/Signature.test.tsx +42 -5
  37. package/src/SignatureField.test.tsx +35 -0
  38. package/src/Slider.test.tsx +59 -0
  39. package/src/Spinner.test.tsx +6 -0
  40. package/src/SplitPage.test.tsx +228 -2
  41. package/src/TapToEdit.test.tsx +171 -1
  42. package/src/TerrenoProvider.test.tsx +42 -2
  43. package/src/TextFieldNumberActionSheet.tsx +1 -1
  44. package/src/Theme.test.tsx +118 -28
  45. package/src/Toast.test.tsx +95 -2
  46. package/src/Toast.tsx +3 -3
  47. package/src/Tooltip.test.tsx +204 -1
  48. package/src/UnifiedAddressAutoComplete.test.tsx +38 -19
  49. package/src/UserInactivity.test.tsx +73 -1
  50. package/src/Utilities.test.tsx +190 -2
  51. package/src/WebAddressAutocomplete.test.tsx +148 -1
  52. package/src/__snapshots__/ActionSheet.test.tsx.snap +1736 -0
  53. package/src/__snapshots__/Button.test.tsx.snap +68 -0
  54. package/src/__snapshots__/EmojiSelector.test.tsx.snap +1363 -0
  55. package/src/__snapshots__/InfoTooltipButton.test.tsx.snap +72 -3
  56. package/src/__snapshots__/MobileAddressAutoComplete.test.tsx.snap +60 -9
  57. package/src/__snapshots__/Modal.test.tsx.snap +181 -0
  58. package/src/__snapshots__/Page.test.tsx.snap +48 -2
  59. package/src/__snapshots__/PhoneNumberField.test.tsx.snap +0 -93
  60. package/src/__snapshots__/PickerSelect.test.tsx.snap +706 -0
  61. package/src/__snapshots__/SideDrawer.test.tsx.snap +533 -1399
  62. package/src/__snapshots__/Signature.test.tsx.snap +0 -3
  63. package/src/__snapshots__/SplitPage.test.tsx.snap +970 -0
  64. package/src/__snapshots__/UnifiedAddressAutoComplete.test.tsx.snap +220 -4
  65. package/src/__snapshots__/WebAddressAutocomplete.test.tsx.snap +93 -0
  66. package/src/bunSetup.ts +204 -121
  67. package/src/index.tsx +2 -2
  68. package/src/table/TableHeaderCell.test.tsx +142 -0
  69. package/src/table/TableRow.test.tsx +33 -0
  70. package/src/table/__snapshots__/TableRow.test.tsx.snap +403 -0
  71. package/src/table/tableContext.test.tsx +96 -0
  72. package/src/test-utils.tsx +1 -1
  73. package/src/useConsentForms.test.ts +130 -0
  74. package/src/useSubmitConsent.test.ts +64 -0
package/src/index.tsx CHANGED
@@ -259,8 +259,8 @@ export interface LayoutRoot {
259
259
  * Set the root
260
260
  */
261
261
  root: Layout;
262
- modals?: any;
263
- overlays?: any;
262
+ modals?: Layout[];
263
+ overlays?: Layout[];
264
264
  }
265
265
  export interface ExternalComponent {
266
266
  /**
@@ -1,4 +1,6 @@
1
1
  import {describe, expect, it, mock} from "bun:test";
2
+ import {act, fireEvent, waitFor} from "@testing-library/react-native";
3
+
2
4
  import {Text} from "../Text";
3
5
  import {renderWithTheme} from "../test-utils";
4
6
  import {Table} from "./Table";
@@ -110,4 +112,144 @@ describe("TableHeaderCell", () => {
110
112
  // Sortable header with active sort indicator
111
113
  expect(toJSON()).toMatchSnapshot();
112
114
  });
115
+
116
+ it("calls onSortChange with 'desc' when unsorted sortable header is clicked", async () => {
117
+ const handleSort = mock((_direction: string | undefined) => {});
118
+ const {getByLabelText} = renderWithTheme(
119
+ <Table columns={[100]}>
120
+ <TableHeader>
121
+ <TableHeaderCell index={0} onSortChange={handleSort} sortable title="Sortable" />
122
+ </TableHeader>
123
+ <TableRow>
124
+ <TableText value="Data" />
125
+ </TableRow>
126
+ </Table>
127
+ );
128
+ await act(async () => {
129
+ fireEvent.press(getByLabelText("sort"));
130
+ });
131
+ await waitFor(() => expect(handleSort).toHaveBeenCalledWith("desc"));
132
+ });
133
+
134
+ it("calls onSortChange with 'asc' when desc-sorted header is clicked", async () => {
135
+ const handleSort = mock((_direction: string | undefined) => {});
136
+ const {getByLabelText} = renderWithTheme(
137
+ <Table columns={[100]} sort={{column: 0, direction: "desc"}}>
138
+ <TableHeader>
139
+ <TableHeaderCell index={0} onSortChange={handleSort} sortable title="Sortable" />
140
+ </TableHeader>
141
+ <TableRow>
142
+ <TableText value="Data" />
143
+ </TableRow>
144
+ </Table>
145
+ );
146
+ await act(async () => {
147
+ fireEvent.press(getByLabelText("sort"));
148
+ });
149
+ await waitFor(() => expect(handleSort).toHaveBeenCalledWith("asc"));
150
+ });
151
+
152
+ it("calls onSortChange with undefined when asc-sorted header is clicked", async () => {
153
+ const handleSort = mock((_direction: string | undefined) => {});
154
+ const {getByLabelText} = renderWithTheme(
155
+ <Table columns={[100]} sort={{column: 0, direction: "asc"}}>
156
+ <TableHeader>
157
+ <TableHeaderCell index={0} onSortChange={handleSort} sortable title="Sortable" />
158
+ </TableHeader>
159
+ <TableRow>
160
+ <TableText value="Data" />
161
+ </TableRow>
162
+ </Table>
163
+ );
164
+ await act(async () => {
165
+ fireEvent.press(getByLabelText("sort"));
166
+ });
167
+ await waitFor(() => expect(handleSort).toHaveBeenCalledWith(undefined));
168
+ });
169
+
170
+ it("warns when no width is defined for the column index", () => {
171
+ const originalWarn = console.warn;
172
+ const warnMock = mock(() => {});
173
+ console.warn = warnMock;
174
+ try {
175
+ renderWithTheme(
176
+ <Table columns={[100]}>
177
+ <TableHeader>
178
+ <TableHeaderCell index={5} title="Out of range" />
179
+ </TableHeader>
180
+ <TableRow>
181
+ <TableText value="Data" />
182
+ </TableRow>
183
+ </Table>
184
+ );
185
+ expect(warnMock).toHaveBeenCalled();
186
+ } finally {
187
+ console.warn = originalWarn;
188
+ }
189
+ });
190
+
191
+ it("warns when both children and title are provided", () => {
192
+ const originalWarn = console.warn;
193
+ const warnMock = mock(() => {});
194
+ console.warn = warnMock;
195
+ try {
196
+ renderWithTheme(
197
+ <Table columns={[100]}>
198
+ <TableHeader>
199
+ <TableHeaderCell index={0} title="Title">
200
+ <Text>Child</Text>
201
+ </TableHeaderCell>
202
+ </TableHeader>
203
+ <TableRow>
204
+ <TableText value="Data" />
205
+ </TableRow>
206
+ </Table>
207
+ );
208
+ expect(warnMock).toHaveBeenCalled();
209
+ } finally {
210
+ console.warn = originalWarn;
211
+ }
212
+ });
213
+
214
+ it("logs error when sortable is true but onSortChange is missing", () => {
215
+ const originalError = console.error;
216
+ const errorMock = mock(() => {});
217
+ console.error = errorMock;
218
+ try {
219
+ renderWithTheme(
220
+ <Table columns={[100]}>
221
+ <TableHeader>
222
+ <TableHeaderCell index={0} sortable title="Sortable" />
223
+ </TableHeader>
224
+ <TableRow>
225
+ <TableText value="Data" />
226
+ </TableRow>
227
+ </Table>
228
+ );
229
+ expect(errorMock).toHaveBeenCalled();
230
+ } finally {
231
+ console.error = originalError;
232
+ }
233
+ });
234
+
235
+ it("logs error when neither children nor title is provided", () => {
236
+ const originalError = console.error;
237
+ const errorMock = mock(() => {});
238
+ console.error = errorMock;
239
+ try {
240
+ renderWithTheme(
241
+ <Table columns={[100]}>
242
+ <TableHeader>
243
+ <TableHeaderCell index={0} />
244
+ </TableHeader>
245
+ <TableRow>
246
+ <TableText value="Data" />
247
+ </TableRow>
248
+ </Table>
249
+ );
250
+ expect(errorMock).toHaveBeenCalled();
251
+ } finally {
252
+ console.error = originalError;
253
+ }
254
+ });
113
255
  });
@@ -1,4 +1,5 @@
1
1
  import {describe, expect, it} from "bun:test";
2
+
2
3
  import {Text} from "../Text";
3
4
  import {renderWithTheme} from "../test-utils";
4
5
  import {Table} from "./Table";
@@ -80,4 +81,36 @@ describe("TableRow", () => {
80
81
  );
81
82
  expect(toJSON()).toMatchSnapshot();
82
83
  });
84
+
85
+ it("renders initially expanded drawer contents when expanded is true", () => {
86
+ const {queryByText} = renderWithTheme(
87
+ <Table columns={[100]}>
88
+ <TableHeader>
89
+ <TableHeaderCell index={0} title="Name" />
90
+ </TableHeader>
91
+ <TableRow drawerContents={<Text>Always visible</Text>} expanded>
92
+ <TableText value="Row" />
93
+ </TableRow>
94
+ </Table>
95
+ );
96
+ expect(queryByText("Always visible")).toBeTruthy();
97
+ });
98
+
99
+ it("renders a placeholder cell when sibling row has drawer contents", () => {
100
+ const {toJSON} = renderWithTheme(
101
+ <Table columns={[100]}>
102
+ <TableHeader>
103
+ <TableHeaderCell index={0} title="Name" />
104
+ </TableHeader>
105
+ <TableRow drawerContents={<Text>Drawer</Text>}>
106
+ <TableText value="Has drawer" />
107
+ </TableRow>
108
+ <TableRow>
109
+ <TableText value="No drawer" />
110
+ </TableRow>
111
+ </Table>
112
+ );
113
+ // Snapshot captures the blank placeholder cell for the row without drawer contents
114
+ expect(toJSON()).toMatchSnapshot();
115
+ });
83
116
  });
@@ -1389,3 +1389,406 @@ exports[`TableRow renders with custom color 1`] = `
1389
1389
  "type": "View",
1390
1390
  }
1391
1391
  `;
1392
+
1393
+ exports[`TableRow renders a placeholder cell when sibling row has drawer contents 1`] = `
1394
+ {
1395
+ "$$typeof": Symbol(react.test.json),
1396
+ "children": [
1397
+ {
1398
+ "$$typeof": Symbol(react.test.json),
1399
+ "children": [
1400
+ {
1401
+ "$$typeof": Symbol(react.test.json),
1402
+ "children": [
1403
+ {
1404
+ "$$typeof": Symbol(react.test.json),
1405
+ "children": [
1406
+ {
1407
+ "$$typeof": Symbol(react.test.json),
1408
+ "children": [
1409
+ {
1410
+ "$$typeof": Symbol(react.test.json),
1411
+ "children": [
1412
+ {
1413
+ "$$typeof": Symbol(react.test.json),
1414
+ "children": [
1415
+ {
1416
+ "$$typeof": Symbol(react.test.json),
1417
+ "children": null,
1418
+ "props": {
1419
+ "onPointerEnter": [Function: AsyncFunction],
1420
+ "onPointerLeave": [Function: AsyncFunction],
1421
+ "style": {
1422
+ "width": 32,
1423
+ },
1424
+ "testID": undefined,
1425
+ },
1426
+ "type": "View",
1427
+ },
1428
+ ],
1429
+ "props": {
1430
+ "onPointerEnter": [Function: AsyncFunction],
1431
+ "onPointerLeave": [Function: AsyncFunction],
1432
+ "style": {
1433
+ "justifyContent": "center",
1434
+ "marginRight": 8,
1435
+ "paddingBottom": 16,
1436
+ "paddingLeft": 12,
1437
+ "paddingRight": 12,
1438
+ "paddingTop": 16,
1439
+ },
1440
+ "testID": undefined,
1441
+ },
1442
+ "type": "View",
1443
+ },
1444
+ {
1445
+ "$$typeof": Symbol(react.test.json),
1446
+ "children": [
1447
+ {
1448
+ "$$typeof": Symbol(react.test.json),
1449
+ "children": [
1450
+ {
1451
+ "$$typeof": Symbol(react.test.json),
1452
+ "children": [
1453
+ "Name",
1454
+ ],
1455
+ "props": {
1456
+ "aria-label": "Table title: Name",
1457
+ "aria-role": "header",
1458
+ "ellipsizeMode": "tail",
1459
+ "numberOfLines": 3,
1460
+ "style": {
1461
+ "color": "#1C1C1C",
1462
+ "flexWrap": "wrap",
1463
+ "fontFamily": "text",
1464
+ "fontSize": 10,
1465
+ "fontWeight": "700",
1466
+ "lineHeight": 16,
1467
+ "overflow": "hidden",
1468
+ "textAlign": "left",
1469
+ "textTransform": "uppercase",
1470
+ },
1471
+ },
1472
+ "type": "Text",
1473
+ },
1474
+ ],
1475
+ "props": {
1476
+ "onPointerEnter": [Function: AsyncFunction],
1477
+ "onPointerLeave": [Function: AsyncFunction],
1478
+ "style": {
1479
+ "accessibilityHint": "changes sort alphabetical order",
1480
+ "accessibilityLabel": "sort",
1481
+ "alignItems": "center",
1482
+ "display": "flex",
1483
+ "flexDirection": "row",
1484
+ "flexGrow": 1,
1485
+ "flexShrink": 1,
1486
+ "justifyContent": "flex-start",
1487
+ },
1488
+ "testID": undefined,
1489
+ },
1490
+ "type": "View",
1491
+ },
1492
+ ],
1493
+ "props": {
1494
+ "onPointerEnter": [Function: AsyncFunction],
1495
+ "onPointerLeave": [Function: AsyncFunction],
1496
+ "style": {
1497
+ "justifyContent": "center",
1498
+ "marginRight": 8,
1499
+ "paddingBottom": 16,
1500
+ "paddingLeft": 12,
1501
+ "paddingRight": 12,
1502
+ "paddingTop": 16,
1503
+ "width": 100,
1504
+ },
1505
+ "testID": undefined,
1506
+ },
1507
+ "type": "View",
1508
+ },
1509
+ ],
1510
+ "props": {
1511
+ "onPointerEnter": [Function: AsyncFunction],
1512
+ "onPointerLeave": [Function: AsyncFunction],
1513
+ "style": {
1514
+ "display": "flex",
1515
+ "flexDirection": "row",
1516
+ "paddingBottom": 4,
1517
+ "paddingTop": 4,
1518
+ "width": "100%",
1519
+ },
1520
+ "testID": undefined,
1521
+ },
1522
+ "type": "View",
1523
+ },
1524
+ ],
1525
+ "props": {
1526
+ "onPointerEnter": [Function: AsyncFunction],
1527
+ "onPointerLeave": [Function: AsyncFunction],
1528
+ "style": {
1529
+ "backgroundColor": "#FFFFFF",
1530
+ "borderBottom": "2px solid #e0e0e0",
1531
+ "dangerouslySetInlineStyle": {
1532
+ "__style": {
1533
+ "borderBottom": "2px solid #e0e0e0",
1534
+ },
1535
+ },
1536
+ "width": "100%",
1537
+ },
1538
+ "testID": undefined,
1539
+ },
1540
+ "type": "View",
1541
+ },
1542
+ ],
1543
+ "props": {
1544
+ "onPointerEnter": [Function: AsyncFunction],
1545
+ "onPointerLeave": [Function: AsyncFunction],
1546
+ "style": {
1547
+ "backgroundColor": "#FFFFFF",
1548
+ "flex": undefined,
1549
+ },
1550
+ "testID": undefined,
1551
+ },
1552
+ "type": "View",
1553
+ },
1554
+ {
1555
+ "$$typeof": Symbol(react.test.json),
1556
+ "children": [
1557
+ {
1558
+ "$$typeof": Symbol(react.test.json),
1559
+ "children": [
1560
+ {
1561
+ "$$typeof": Symbol(react.test.json),
1562
+ "children": null,
1563
+ "props": {
1564
+ "onPointerEnter": [Function: AsyncFunction],
1565
+ "onPointerLeave": [Function: AsyncFunction],
1566
+ "style": {
1567
+ "justifyContent": "center",
1568
+ "marginRight": 8,
1569
+ "paddingBottom": 16,
1570
+ "paddingLeft": 12,
1571
+ "paddingRight": 12,
1572
+ "paddingTop": 16,
1573
+ },
1574
+ "testID": undefined,
1575
+ },
1576
+ "type": "View",
1577
+ },
1578
+ {
1579
+ "$$typeof": Symbol(react.test.json),
1580
+ "children": [
1581
+ {
1582
+ "$$typeof": Symbol(react.test.json),
1583
+ "children": [
1584
+ "Has drawer",
1585
+ ],
1586
+ "props": {
1587
+ "style": {
1588
+ "color": "#1C1C1C",
1589
+ "fontFamily": "text",
1590
+ "fontSize": 14,
1591
+ "textAlign": undefined,
1592
+ },
1593
+ },
1594
+ "type": "Text",
1595
+ },
1596
+ ],
1597
+ "props": {
1598
+ "onPointerEnter": [Function: AsyncFunction],
1599
+ "onPointerLeave": [Function: AsyncFunction],
1600
+ "style": {
1601
+ "justifyContent": "center",
1602
+ "marginRight": 8,
1603
+ "paddingBottom": 16,
1604
+ "paddingLeft": 12,
1605
+ "paddingRight": 12,
1606
+ "paddingTop": 16,
1607
+ "width": 100,
1608
+ },
1609
+ "testID": undefined,
1610
+ },
1611
+ "type": "View",
1612
+ },
1613
+ ],
1614
+ "props": {
1615
+ "onPointerEnter": [Function: AsyncFunction],
1616
+ "onPointerLeave": [Function: AsyncFunction],
1617
+ "style": {
1618
+ "display": "flex",
1619
+ "flexDirection": "row",
1620
+ "paddingBottom": 4,
1621
+ "paddingTop": 4,
1622
+ "width": "100%",
1623
+ },
1624
+ "testID": undefined,
1625
+ },
1626
+ "type": "View",
1627
+ },
1628
+ ],
1629
+ "props": {
1630
+ "onPointerEnter": [Function: AsyncFunction],
1631
+ "onPointerLeave": [Function: AsyncFunction],
1632
+ "style": {
1633
+ "backgroundColor": "#D9D9D9",
1634
+ "borderBottom": "1px solid #e0e0e0",
1635
+ "dangerouslySetInlineStyle": {
1636
+ "__style": {
1637
+ "borderBottom": "1px solid #e0e0e0",
1638
+ },
1639
+ },
1640
+ "width": "100%",
1641
+ },
1642
+ "testID": undefined,
1643
+ },
1644
+ "type": "View",
1645
+ },
1646
+ {
1647
+ "$$typeof": Symbol(react.test.json),
1648
+ "children": [
1649
+ {
1650
+ "$$typeof": Symbol(react.test.json),
1651
+ "children": [
1652
+ {
1653
+ "$$typeof": Symbol(react.test.json),
1654
+ "children": [
1655
+ {
1656
+ "$$typeof": Symbol(react.test.json),
1657
+ "children": null,
1658
+ "props": {
1659
+ "onPointerEnter": [Function: AsyncFunction],
1660
+ "onPointerLeave": [Function: AsyncFunction],
1661
+ "style": {
1662
+ "width": 32,
1663
+ },
1664
+ "testID": undefined,
1665
+ },
1666
+ "type": "View",
1667
+ },
1668
+ ],
1669
+ "props": {
1670
+ "onPointerEnter": [Function: AsyncFunction],
1671
+ "onPointerLeave": [Function: AsyncFunction],
1672
+ "style": {
1673
+ "justifyContent": "center",
1674
+ "marginRight": 8,
1675
+ "paddingBottom": 16,
1676
+ "paddingLeft": 12,
1677
+ "paddingRight": 12,
1678
+ "paddingTop": 16,
1679
+ },
1680
+ "testID": undefined,
1681
+ },
1682
+ "type": "View",
1683
+ },
1684
+ {
1685
+ "$$typeof": Symbol(react.test.json),
1686
+ "children": [
1687
+ {
1688
+ "$$typeof": Symbol(react.test.json),
1689
+ "children": [
1690
+ "No drawer",
1691
+ ],
1692
+ "props": {
1693
+ "style": {
1694
+ "color": "#1C1C1C",
1695
+ "fontFamily": "text",
1696
+ "fontSize": 14,
1697
+ "textAlign": undefined,
1698
+ },
1699
+ },
1700
+ "type": "Text",
1701
+ },
1702
+ ],
1703
+ "props": {
1704
+ "onPointerEnter": [Function: AsyncFunction],
1705
+ "onPointerLeave": [Function: AsyncFunction],
1706
+ "style": {
1707
+ "justifyContent": "center",
1708
+ "marginRight": 8,
1709
+ "paddingBottom": 16,
1710
+ "paddingLeft": 12,
1711
+ "paddingRight": 12,
1712
+ "paddingTop": 16,
1713
+ "width": 100,
1714
+ },
1715
+ "testID": undefined,
1716
+ },
1717
+ "type": "View",
1718
+ },
1719
+ ],
1720
+ "props": {
1721
+ "onPointerEnter": [Function: AsyncFunction],
1722
+ "onPointerLeave": [Function: AsyncFunction],
1723
+ "style": {
1724
+ "display": "flex",
1725
+ "flexDirection": "row",
1726
+ "paddingBottom": 4,
1727
+ "paddingTop": 4,
1728
+ "width": "100%",
1729
+ },
1730
+ "testID": undefined,
1731
+ },
1732
+ "type": "View",
1733
+ },
1734
+ ],
1735
+ "props": {
1736
+ "onPointerEnter": [Function: AsyncFunction],
1737
+ "onPointerLeave": [Function: AsyncFunction],
1738
+ "style": {
1739
+ "backgroundColor": "#FFFFFF",
1740
+ "borderBottom": "1px solid #e0e0e0",
1741
+ "dangerouslySetInlineStyle": {
1742
+ "__style": {
1743
+ "borderBottom": "1px solid #e0e0e0",
1744
+ },
1745
+ },
1746
+ "width": "100%",
1747
+ },
1748
+ "testID": undefined,
1749
+ },
1750
+ "type": "View",
1751
+ },
1752
+ ],
1753
+ "props": {
1754
+ "stickyHeaderIndices": [
1755
+ 0,
1756
+ ],
1757
+ "style": {
1758
+ "flex": 1,
1759
+ "maxHeight": undefined,
1760
+ "maxWidth": "100%",
1761
+ "width": 164,
1762
+ },
1763
+ },
1764
+ "type": "ScrollView",
1765
+ },
1766
+ ],
1767
+ "props": {
1768
+ "horizontal": true,
1769
+ "style": {
1770
+ "maxWidth": "100%",
1771
+ "width": 164,
1772
+ },
1773
+ },
1774
+ "type": "ScrollView",
1775
+ },
1776
+ ],
1777
+ "props": {
1778
+ "onPointerEnter": [Function: AsyncFunction],
1779
+ "onPointerLeave": [Function: AsyncFunction],
1780
+ "style": {
1781
+ "display": "flex",
1782
+ "flexGrow": 1,
1783
+ "flexShrink": 1,
1784
+ "maxWidth": "100%",
1785
+ "style": {
1786
+ "position": "relative",
1787
+ },
1788
+ "width": 164,
1789
+ },
1790
+ "testID": undefined,
1791
+ },
1792
+ "type": "View",
1793
+ }
1794
+ `;