@ankhorage/zora 25.5.0 → 25.6.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.
- package/CHANGELOG.md +6 -0
- package/README.md +2 -1
- package/dist/features/grid-view/adapters/inbound/GridView.d.ts +2 -7
- package/dist/features/grid-view/adapters/inbound/GridView.d.ts.map +1 -1
- package/dist/features/grid-view/adapters/inbound/GridView.js +309 -51
- package/dist/features/grid-view/adapters/inbound/GridView.js.map +1 -1
- package/dist/features/grid-view/adapters/inbound/TileGrid.d.ts +1 -1
- package/dist/features/grid-view/adapters/inbound/TileGrid.d.ts.map +1 -1
- package/dist/features/grid-view/adapters/inbound/TileGrid.js +11 -4
- package/dist/features/grid-view/adapters/inbound/TileGrid.js.map +1 -1
- package/dist/types/grid-view.d.ts +18 -1
- package/dist/types/grid-view.d.ts.map +1 -1
- package/dist/types/grid-view.js.map +1 -1
- package/package.json +1 -1
- package/src/features/grid-view/adapters/inbound/GridView.interaction.test.tsx +585 -0
- package/src/features/grid-view/adapters/inbound/GridView.test.tsx +74 -0
- package/src/features/grid-view/adapters/inbound/GridView.tsx +506 -77
- package/src/features/grid-view/adapters/inbound/TileGrid.tsx +26 -3
- package/src/features/time-grid/adapters/inbound/TimeGrid.test.tsx +35 -8
- package/src/types/grid-view.ts +27 -1
- package/web-dist/chunks/{Accordion-0my2z6qe.js → Accordion-ebghcyzj.js} +41 -1
- package/web-dist/chunks/{Accordion-d6azgz09.js → Accordion-f43jba23.js} +1 -1
- package/web-dist/chunks/Accordion-q8exgc3h.js +515 -0
- package/web-dist/chunks/{Accordion-7qfd4cb4.js → Accordion-szar8dt5.js} +1 -1
- package/web-dist/components/explorer/Explorer.js +2 -2
- package/web-dist/components/file-explorer/FileExplorer.js +2 -2
- package/web-dist/components/grid-line-overlay/GridLineOverlay.js +1 -1
- package/web-dist/components/grid-ruler/GridRuler.js +1 -1
- package/web-dist/components/grid-view/GridView.js +1 -1
- package/web-dist/components/media-explorer/MediaExplorer.js +2 -2
- package/web-dist/components/spatial-grid/SpatialGrid.js +1 -1
- package/web-dist/components/tile-grid/TileGrid.js +1 -1
- package/web-dist/components/time-grid/TimeGrid.js +2 -2
- package/web-dist/components/uploader/Uploader.js +2 -2
- package/web-dist/manifest.json +24 -24
- package/web-dist/chunks/Accordion-gxj5qbpr.js +0 -194
package/web-dist/manifest.json
CHANGED
|
@@ -1223,7 +1223,6 @@
|
|
|
1223
1223
|
"components/explorer/index.js",
|
|
1224
1224
|
"components/explorer/index.d.ts",
|
|
1225
1225
|
"chunks/Accordion-09qs8gt1.js",
|
|
1226
|
-
"chunks/Accordion-0my2z6qe.js",
|
|
1227
1226
|
"chunks/Accordion-184r2r82.js",
|
|
1228
1227
|
"chunks/Accordion-42jfy1a1.js",
|
|
1229
1228
|
"chunks/Accordion-59pa0677.js",
|
|
@@ -1236,11 +1235,12 @@
|
|
|
1236
1235
|
"chunks/Accordion-b96evb46.js",
|
|
1237
1236
|
"chunks/Accordion-bff0p3x4.js",
|
|
1238
1237
|
"chunks/Accordion-bfzeab9x.js",
|
|
1239
|
-
"chunks/Accordion-
|
|
1238
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
1239
|
+
"chunks/Accordion-f43jba23.js",
|
|
1240
1240
|
"chunks/Accordion-fre84yaq.js",
|
|
1241
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
1242
1241
|
"chunks/Accordion-n4et7etk.js",
|
|
1243
1242
|
"chunks/Accordion-nh0cs9hq.js",
|
|
1243
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
1244
1244
|
"chunks/Accordion-srjya6dz.js",
|
|
1245
1245
|
"chunks/Accordion-xgpzh4wq.js",
|
|
1246
1246
|
"chunks/Accordion-z5a0tx18.js"
|
|
@@ -1289,7 +1289,6 @@
|
|
|
1289
1289
|
"components/file-explorer/index.js",
|
|
1290
1290
|
"components/file-explorer/index.d.ts",
|
|
1291
1291
|
"chunks/Accordion-09qs8gt1.js",
|
|
1292
|
-
"chunks/Accordion-0my2z6qe.js",
|
|
1293
1292
|
"chunks/Accordion-184r2r82.js",
|
|
1294
1293
|
"chunks/Accordion-42jfy1a1.js",
|
|
1295
1294
|
"chunks/Accordion-59pa0677.js",
|
|
@@ -1302,11 +1301,12 @@
|
|
|
1302
1301
|
"chunks/Accordion-b96evb46.js",
|
|
1303
1302
|
"chunks/Accordion-bff0p3x4.js",
|
|
1304
1303
|
"chunks/Accordion-bfzeab9x.js",
|
|
1305
|
-
"chunks/Accordion-
|
|
1304
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
1305
|
+
"chunks/Accordion-f43jba23.js",
|
|
1306
1306
|
"chunks/Accordion-fre84yaq.js",
|
|
1307
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
1308
1307
|
"chunks/Accordion-n4et7etk.js",
|
|
1309
1308
|
"chunks/Accordion-nh0cs9hq.js",
|
|
1309
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
1310
1310
|
"chunks/Accordion-srjya6dz.js",
|
|
1311
1311
|
"chunks/Accordion-xgpzh4wq.js",
|
|
1312
1312
|
"chunks/Accordion-z5a0tx18.js"
|
|
@@ -1732,13 +1732,13 @@
|
|
|
1732
1732
|
"components/grid-line-overlay/GridLineOverlay.d.ts",
|
|
1733
1733
|
"components/grid-line-overlay/index.js",
|
|
1734
1734
|
"components/grid-line-overlay/index.d.ts",
|
|
1735
|
-
"chunks/Accordion-0my2z6qe.js",
|
|
1736
1735
|
"chunks/Accordion-42jfy1a1.js",
|
|
1737
1736
|
"chunks/Accordion-59pa0677.js",
|
|
1738
1737
|
"chunks/Accordion-6wrr910w.js",
|
|
1739
|
-
"chunks/Accordion-
|
|
1738
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
1740
1739
|
"chunks/Accordion-nh0cs9hq.js",
|
|
1741
1740
|
"chunks/Accordion-srjya6dz.js",
|
|
1741
|
+
"chunks/Accordion-szar8dt5.js",
|
|
1742
1742
|
"chunks/Accordion-xgpzh4wq.js"
|
|
1743
1743
|
],
|
|
1744
1744
|
"sourceKind": "public"
|
|
@@ -1752,13 +1752,13 @@
|
|
|
1752
1752
|
"components/grid-ruler/GridRuler.d.ts",
|
|
1753
1753
|
"components/grid-ruler/index.js",
|
|
1754
1754
|
"components/grid-ruler/index.d.ts",
|
|
1755
|
-
"chunks/Accordion-0my2z6qe.js",
|
|
1756
1755
|
"chunks/Accordion-42jfy1a1.js",
|
|
1757
1756
|
"chunks/Accordion-59pa0677.js",
|
|
1758
1757
|
"chunks/Accordion-6wrr910w.js",
|
|
1759
|
-
"chunks/Accordion-
|
|
1758
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
1760
1759
|
"chunks/Accordion-nh0cs9hq.js",
|
|
1761
1760
|
"chunks/Accordion-srjya6dz.js",
|
|
1761
|
+
"chunks/Accordion-szar8dt5.js",
|
|
1762
1762
|
"chunks/Accordion-xgpzh4wq.js"
|
|
1763
1763
|
],
|
|
1764
1764
|
"sourceKind": "public"
|
|
@@ -1772,9 +1772,9 @@
|
|
|
1772
1772
|
"components/grid-view/GridView.d.ts",
|
|
1773
1773
|
"components/grid-view/index.js",
|
|
1774
1774
|
"components/grid-view/index.d.ts",
|
|
1775
|
-
"chunks/Accordion-
|
|
1776
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
1775
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
1777
1776
|
"chunks/Accordion-nh0cs9hq.js",
|
|
1777
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
1778
1778
|
"chunks/Accordion-xgpzh4wq.js"
|
|
1779
1779
|
],
|
|
1780
1780
|
"sourceKind": "public"
|
|
@@ -2098,7 +2098,6 @@
|
|
|
2098
2098
|
"components/media-explorer/index.js",
|
|
2099
2099
|
"components/media-explorer/index.d.ts",
|
|
2100
2100
|
"chunks/Accordion-09qs8gt1.js",
|
|
2101
|
-
"chunks/Accordion-0my2z6qe.js",
|
|
2102
2101
|
"chunks/Accordion-184r2r82.js",
|
|
2103
2102
|
"chunks/Accordion-42jfy1a1.js",
|
|
2104
2103
|
"chunks/Accordion-59pa0677.js",
|
|
@@ -2111,11 +2110,12 @@
|
|
|
2111
2110
|
"chunks/Accordion-b96evb46.js",
|
|
2112
2111
|
"chunks/Accordion-bff0p3x4.js",
|
|
2113
2112
|
"chunks/Accordion-bfzeab9x.js",
|
|
2114
|
-
"chunks/Accordion-
|
|
2113
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
2114
|
+
"chunks/Accordion-f43jba23.js",
|
|
2115
2115
|
"chunks/Accordion-fre84yaq.js",
|
|
2116
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
2117
2116
|
"chunks/Accordion-n4et7etk.js",
|
|
2118
2117
|
"chunks/Accordion-nh0cs9hq.js",
|
|
2118
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
2119
2119
|
"chunks/Accordion-srjya6dz.js",
|
|
2120
2120
|
"chunks/Accordion-xgpzh4wq.js",
|
|
2121
2121
|
"chunks/Accordion-z5a0tx18.js"
|
|
@@ -3407,9 +3407,9 @@
|
|
|
3407
3407
|
"components/spatial-grid/SpatialGrid.d.ts",
|
|
3408
3408
|
"components/spatial-grid/index.js",
|
|
3409
3409
|
"components/spatial-grid/index.d.ts",
|
|
3410
|
-
"chunks/Accordion-
|
|
3411
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
3410
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
3412
3411
|
"chunks/Accordion-nh0cs9hq.js",
|
|
3412
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
3413
3413
|
"chunks/Accordion-xgpzh4wq.js"
|
|
3414
3414
|
],
|
|
3415
3415
|
"sourceKind": "public"
|
|
@@ -3663,9 +3663,9 @@
|
|
|
3663
3663
|
"components/tile-grid/TileGrid.d.ts",
|
|
3664
3664
|
"components/tile-grid/index.js",
|
|
3665
3665
|
"components/tile-grid/index.d.ts",
|
|
3666
|
-
"chunks/Accordion-
|
|
3667
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
3666
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
3668
3667
|
"chunks/Accordion-nh0cs9hq.js",
|
|
3668
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
3669
3669
|
"chunks/Accordion-xgpzh4wq.js"
|
|
3670
3670
|
],
|
|
3671
3671
|
"sourceKind": "public"
|
|
@@ -3679,9 +3679,9 @@
|
|
|
3679
3679
|
"components/time-grid/TimeGrid.d.ts",
|
|
3680
3680
|
"components/time-grid/index.js",
|
|
3681
3681
|
"components/time-grid/index.d.ts",
|
|
3682
|
-
"chunks/Accordion-
|
|
3683
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
3682
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
3684
3683
|
"chunks/Accordion-nh0cs9hq.js",
|
|
3684
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
3685
3685
|
"chunks/Accordion-xgpzh4wq.js"
|
|
3686
3686
|
],
|
|
3687
3687
|
"sourceKind": "public"
|
|
@@ -3926,7 +3926,6 @@
|
|
|
3926
3926
|
"chunks/Accordion-090y18cv.js",
|
|
3927
3927
|
"chunks/Accordion-09qs8gt1.js",
|
|
3928
3928
|
"chunks/Accordion-0gfsj9qh.js",
|
|
3929
|
-
"chunks/Accordion-0my2z6qe.js",
|
|
3930
3929
|
"chunks/Accordion-184r2r82.js",
|
|
3931
3930
|
"chunks/Accordion-2nesr9cv.js",
|
|
3932
3931
|
"chunks/Accordion-40tenzcg.js",
|
|
@@ -3946,16 +3945,17 @@
|
|
|
3946
3945
|
"chunks/Accordion-be2yhfqz.js",
|
|
3947
3946
|
"chunks/Accordion-bff0p3x4.js",
|
|
3948
3947
|
"chunks/Accordion-bfzeab9x.js",
|
|
3949
|
-
"chunks/Accordion-
|
|
3948
|
+
"chunks/Accordion-ebghcyzj.js",
|
|
3950
3949
|
"chunks/Accordion-eqvdv7tt.js",
|
|
3950
|
+
"chunks/Accordion-f43jba23.js",
|
|
3951
3951
|
"chunks/Accordion-fre84yaq.js",
|
|
3952
|
-
"chunks/Accordion-gxj5qbpr.js",
|
|
3953
3952
|
"chunks/Accordion-kjtcbe09.js",
|
|
3954
3953
|
"chunks/Accordion-n4et7etk.js",
|
|
3955
3954
|
"chunks/Accordion-n7y08rz5.js",
|
|
3956
3955
|
"chunks/Accordion-nh0cs9hq.js",
|
|
3957
3956
|
"chunks/Accordion-nnv76yff.js",
|
|
3958
3957
|
"chunks/Accordion-pvj5npzc.js",
|
|
3958
|
+
"chunks/Accordion-q8exgc3h.js",
|
|
3959
3959
|
"chunks/Accordion-srjya6dz.js",
|
|
3960
3960
|
"chunks/Accordion-wyxmd0n0.js",
|
|
3961
3961
|
"chunks/Accordion-xgpzh4wq.js",
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
'use client';
|
|
2
|
-
import {
|
|
3
|
-
getVisibleGridItems,
|
|
4
|
-
revealWorldRect,
|
|
5
|
-
worldToViewport
|
|
6
|
-
} from "./Accordion-0my2z6qe.js";
|
|
7
|
-
import {
|
|
8
|
-
require_cjs
|
|
9
|
-
} from "./Accordion-xgpzh4wq.js";
|
|
10
|
-
import {
|
|
11
|
-
__toESM
|
|
12
|
-
} from "./Accordion-nh0cs9hq.js";
|
|
13
|
-
|
|
14
|
-
// src/features/grid-view/adapters/inbound/GridView.tsx
|
|
15
|
-
var import_react_native = __toESM(require_cjs(), 1);
|
|
16
|
-
import React from "react";
|
|
17
|
-
import { jsx } from "react/jsx-runtime";
|
|
18
|
-
function GridView2({
|
|
19
|
-
items,
|
|
20
|
-
contentWidth,
|
|
21
|
-
contentHeight,
|
|
22
|
-
width,
|
|
23
|
-
height,
|
|
24
|
-
zoom = 1,
|
|
25
|
-
overscanPixels = 160,
|
|
26
|
-
focusedItemId,
|
|
27
|
-
revealPaddingPixels = 8,
|
|
28
|
-
interactionPolicy,
|
|
29
|
-
onViewportChange,
|
|
30
|
-
onVisibleItemIdsChange,
|
|
31
|
-
renderItem,
|
|
32
|
-
testID
|
|
33
|
-
}) {
|
|
34
|
-
const [scrollX, setScrollX] = React.useState(0);
|
|
35
|
-
const [scrollY, setScrollY] = React.useState(0);
|
|
36
|
-
const horizontalScrollRef = React.useRef(null);
|
|
37
|
-
const verticalScrollRef = React.useRef(null);
|
|
38
|
-
const scale = Math.max(0.01, zoom);
|
|
39
|
-
const viewport = React.useMemo(() => ({
|
|
40
|
-
width,
|
|
41
|
-
height,
|
|
42
|
-
offsetX: scrollX / scale,
|
|
43
|
-
offsetY: scrollY / scale,
|
|
44
|
-
pixelsPerUnitX: scale,
|
|
45
|
-
pixelsPerUnitY: scale
|
|
46
|
-
}), [height, scale, scrollX, scrollY, width]);
|
|
47
|
-
const visibleItems = React.useMemo(() => getVisibleGridItems(items, viewport, overscanPixels), [items, overscanPixels, viewport]);
|
|
48
|
-
const viewportVisibleIds = React.useMemo(() => getVisibleGridItems(visibleItems, viewport).map((item) => item.id), [viewport, visibleItems]);
|
|
49
|
-
const previousVisibleIdsRef = React.useRef([]);
|
|
50
|
-
React.useEffect(() => {
|
|
51
|
-
if (!onVisibleItemIdsChange)
|
|
52
|
-
return;
|
|
53
|
-
const previous = previousVisibleIdsRef.current;
|
|
54
|
-
if (previous.length === viewportVisibleIds.length && previous.every((id, index) => id === viewportVisibleIds.at(index))) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
previousVisibleIdsRef.current = viewportVisibleIds;
|
|
58
|
-
onVisibleItemIdsChange(viewportVisibleIds);
|
|
59
|
-
}, [onVisibleItemIdsChange, viewportVisibleIds]);
|
|
60
|
-
React.useEffect(() => {
|
|
61
|
-
onViewportChange?.(viewport);
|
|
62
|
-
}, [onViewportChange, viewport]);
|
|
63
|
-
const viewportRef = React.useRef(viewport);
|
|
64
|
-
React.useEffect(() => {
|
|
65
|
-
viewportRef.current = viewport;
|
|
66
|
-
}, [viewport]);
|
|
67
|
-
React.useEffect(() => {
|
|
68
|
-
const currentViewport = viewportRef.current;
|
|
69
|
-
const focusedItem = items.find((item) => item.id === focusedItemId);
|
|
70
|
-
if (!focusedItem)
|
|
71
|
-
return;
|
|
72
|
-
const revealed = revealWorldRect(currentViewport, focusedItem, revealPaddingPixels);
|
|
73
|
-
if (revealed.offsetX !== currentViewport.offsetX) {
|
|
74
|
-
horizontalScrollRef.current?.scrollTo({ x: revealed.offsetX * scale, animated: true });
|
|
75
|
-
}
|
|
76
|
-
if (revealed.offsetY !== currentViewport.offsetY) {
|
|
77
|
-
verticalScrollRef.current?.scrollTo({ y: revealed.offsetY * scale, animated: true });
|
|
78
|
-
}
|
|
79
|
-
}, [focusedItemId, height, items, revealPaddingPixels, scale, width]);
|
|
80
|
-
return /* @__PURE__ */ jsx(import_react_native.ScrollView, {
|
|
81
|
-
ref: horizontalScrollRef,
|
|
82
|
-
horizontal: true,
|
|
83
|
-
scrollEnabled: interactionPolicy !== "passive",
|
|
84
|
-
scrollEventThrottle: 32,
|
|
85
|
-
showsHorizontalScrollIndicator: true,
|
|
86
|
-
style: { width, height },
|
|
87
|
-
testID,
|
|
88
|
-
onScroll: (event) => setScrollX(event.nativeEvent.contentOffset.x),
|
|
89
|
-
children: /* @__PURE__ */ jsx(import_react_native.ScrollView, {
|
|
90
|
-
ref: verticalScrollRef,
|
|
91
|
-
scrollEnabled: interactionPolicy !== "passive",
|
|
92
|
-
scrollEventThrottle: 32,
|
|
93
|
-
showsVerticalScrollIndicator: true,
|
|
94
|
-
style: { width: contentWidth * scale, height },
|
|
95
|
-
onScroll: (event) => setScrollY(event.nativeEvent.contentOffset.y),
|
|
96
|
-
children: /* @__PURE__ */ jsx(import_react_native.View, {
|
|
97
|
-
style: { width: contentWidth * scale, height: contentHeight * scale },
|
|
98
|
-
children: visibleItems.map((item) => {
|
|
99
|
-
const position = worldToViewport({ x: item.x, y: item.y }, {
|
|
100
|
-
...viewport,
|
|
101
|
-
offsetX: 0,
|
|
102
|
-
offsetY: 0
|
|
103
|
-
});
|
|
104
|
-
return /* @__PURE__ */ jsx(import_react_native.View, {
|
|
105
|
-
style: {
|
|
106
|
-
position: "absolute",
|
|
107
|
-
left: position.x,
|
|
108
|
-
top: position.y,
|
|
109
|
-
width: item.width * scale,
|
|
110
|
-
height: item.height * scale
|
|
111
|
-
},
|
|
112
|
-
children: renderItem(item)
|
|
113
|
-
}, item.id);
|
|
114
|
-
})
|
|
115
|
-
})
|
|
116
|
-
})
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// src/features/grid-view/adapters/inbound/TileGrid.tsx
|
|
121
|
-
var import_react_native2 = __toESM(require_cjs(), 1);
|
|
122
|
-
import React2 from "react";
|
|
123
|
-
|
|
124
|
-
// src/features/grid-view/application/layoutTileGrid.ts
|
|
125
|
-
function layoutTileGrid(items, viewportWidth, tileSize, gap, zoom = 1) {
|
|
126
|
-
if (![viewportWidth, tileSize, gap, zoom].every(Number.isFinite) || viewportWidth < 0 || tileSize <= 0 || gap < 0 || zoom <= 0) {
|
|
127
|
-
throw new RangeError("Tile layout requires finite, nonnegative dimensions and positive scales.");
|
|
128
|
-
}
|
|
129
|
-
const columns = Math.max(1, Math.floor((viewportWidth / zoom + gap) / (tileSize + gap)));
|
|
130
|
-
const rows = Math.ceil(items.length / columns);
|
|
131
|
-
return {
|
|
132
|
-
columns,
|
|
133
|
-
width: columns * (tileSize + gap) - gap,
|
|
134
|
-
height: Math.max(0, rows * (tileSize + gap) - gap),
|
|
135
|
-
items: items.map((item, index) => ({
|
|
136
|
-
id: item.id,
|
|
137
|
-
x: index % columns * (tileSize + gap),
|
|
138
|
-
y: Math.floor(index / columns) * (tileSize + gap),
|
|
139
|
-
width: tileSize,
|
|
140
|
-
height: tileSize
|
|
141
|
-
}))
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// src/features/grid-view/adapters/inbound/TileGrid.tsx
|
|
146
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
147
|
-
function TileGrid2({
|
|
148
|
-
items,
|
|
149
|
-
width,
|
|
150
|
-
height = 440,
|
|
151
|
-
tileSize = 120,
|
|
152
|
-
gap = 12,
|
|
153
|
-
zoom = 1,
|
|
154
|
-
overscanPixels,
|
|
155
|
-
focusedItemId,
|
|
156
|
-
revealPaddingPixels,
|
|
157
|
-
onColumnsChange,
|
|
158
|
-
onVisibleItemIdsChange,
|
|
159
|
-
renderItem,
|
|
160
|
-
interactionPolicy,
|
|
161
|
-
testID
|
|
162
|
-
}) {
|
|
163
|
-
const [measuredWidth, setMeasuredWidth] = React2.useState(0);
|
|
164
|
-
const resolvedWidth = width ?? measuredWidth;
|
|
165
|
-
const layout = React2.useMemo(() => layoutTileGrid(items, resolvedWidth, tileSize, gap, zoom), [items, resolvedWidth, tileSize, gap, zoom]);
|
|
166
|
-
const itemLookup = React2.useMemo(() => new Map(items.map((item) => [item.id, item])), [items]);
|
|
167
|
-
React2.useEffect(() => {
|
|
168
|
-
if (resolvedWidth > 0)
|
|
169
|
-
onColumnsChange?.(layout.columns);
|
|
170
|
-
}, [layout.columns, onColumnsChange, resolvedWidth]);
|
|
171
|
-
return /* @__PURE__ */ jsx2(import_react_native2.View, {
|
|
172
|
-
onLayout: (event) => setMeasuredWidth(event.nativeEvent.layout.width),
|
|
173
|
-
style: { width, height, overflow: "hidden" },
|
|
174
|
-
testID,
|
|
175
|
-
children: resolvedWidth > 0 ? /* @__PURE__ */ jsx2(GridView2, {
|
|
176
|
-
contentHeight: layout.height,
|
|
177
|
-
contentWidth: Math.max(resolvedWidth / zoom, layout.width),
|
|
178
|
-
height,
|
|
179
|
-
focusedItemId,
|
|
180
|
-
interactionPolicy,
|
|
181
|
-
items: layout.items,
|
|
182
|
-
onVisibleItemIdsChange,
|
|
183
|
-
overscanPixels,
|
|
184
|
-
renderItem: (item) => {
|
|
185
|
-
const source = itemLookup.get(item.id);
|
|
186
|
-
return source ? renderItem(source) : null;
|
|
187
|
-
},
|
|
188
|
-
revealPaddingPixels,
|
|
189
|
-
width: resolvedWidth,
|
|
190
|
-
zoom
|
|
191
|
-
}) : null
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
export { GridView2, TileGrid2 };
|