react-native-gesture-image-viewer 3.0.0-beta.1 → 3.0.0-beta.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 (54) hide show
  1. package/lib/module/GestureViewer.js +9 -1
  2. package/lib/module/GestureViewer.js.map +1 -1
  3. package/lib/module/GestureViewerManager.js +32 -10
  4. package/lib/module/GestureViewerManager.js.map +1 -1
  5. package/lib/module/index.js.map +1 -1
  6. package/lib/module/itemDimensions.js +86 -0
  7. package/lib/module/itemDimensions.js.map +1 -0
  8. package/lib/module/useGestureViewer.js +127 -10
  9. package/lib/module/useGestureViewer.js.map +1 -1
  10. package/lib/module/useGestureViewerManagerBridge.js +11 -2
  11. package/lib/module/useGestureViewerManagerBridge.js.map +1 -1
  12. package/lib/module/useGestureViewerPaging.js +1 -1
  13. package/lib/module/useGestureViewerPaging.js.map +1 -1
  14. package/lib/module/useWebClickHandler.js.map +1 -1
  15. package/lib/module/useWebClickHandler.web.js +9 -1
  16. package/lib/module/useWebClickHandler.web.js.map +1 -1
  17. package/lib/module/utils/index.js +27 -7
  18. package/lib/module/utils/index.js.map +1 -1
  19. package/lib/module/utils/tapZoom.js +47 -14
  20. package/lib/module/utils/tapZoom.js.map +1 -1
  21. package/lib/typescript/src/GestureViewer.d.ts.map +1 -1
  22. package/lib/typescript/src/GestureViewerManager.d.ts +12 -1
  23. package/lib/typescript/src/GestureViewerManager.d.ts.map +1 -1
  24. package/lib/typescript/src/index.d.ts +1 -1
  25. package/lib/typescript/src/index.d.ts.map +1 -1
  26. package/lib/typescript/src/itemDimensions.d.ts +26 -0
  27. package/lib/typescript/src/itemDimensions.d.ts.map +1 -0
  28. package/lib/typescript/src/types.d.ts +28 -0
  29. package/lib/typescript/src/types.d.ts.map +1 -1
  30. package/lib/typescript/src/useGestureViewer.d.ts +3 -2
  31. package/lib/typescript/src/useGestureViewer.d.ts.map +1 -1
  32. package/lib/typescript/src/useGestureViewerManagerBridge.d.ts +3 -1
  33. package/lib/typescript/src/useGestureViewerManagerBridge.d.ts.map +1 -1
  34. package/lib/typescript/src/useWebClickHandler.d.ts +2 -0
  35. package/lib/typescript/src/useWebClickHandler.d.ts.map +1 -1
  36. package/lib/typescript/src/useWebClickHandler.web.d.ts +4 -2
  37. package/lib/typescript/src/useWebClickHandler.web.d.ts.map +1 -1
  38. package/lib/typescript/src/utils/index.d.ts +4 -2
  39. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  40. package/lib/typescript/src/utils/tapZoom.d.ts +17 -1
  41. package/lib/typescript/src/utils/tapZoom.d.ts.map +1 -1
  42. package/package.json +1 -1
  43. package/src/GestureViewer.tsx +17 -2
  44. package/src/GestureViewerManager.ts +47 -15
  45. package/src/index.tsx +4 -0
  46. package/src/itemDimensions.ts +162 -0
  47. package/src/types.ts +38 -0
  48. package/src/useGestureViewer.ts +184 -13
  49. package/src/useGestureViewerManagerBridge.ts +24 -2
  50. package/src/useGestureViewerPaging.ts +1 -1
  51. package/src/useWebClickHandler.ts +2 -0
  52. package/src/useWebClickHandler.web.ts +12 -0
  53. package/src/utils/index.ts +55 -22
  54. package/src/utils/tapZoom.ts +55 -15
@@ -15,10 +15,14 @@ function RenderWindowSlotView({
15
15
  isActive,
16
16
  pageStride,
17
17
  renderItem,
18
+ setItemDimensions,
18
19
  slot,
19
20
  visualPage,
20
21
  width
21
22
  }) {
23
+ const registerItemDimensions = dimensions => {
24
+ setItemDimensions(slot.logicalIndex, slot.item, dimensions);
25
+ };
22
26
  const slotAnimatedStyle = useAnimatedStyle(() => ({
23
27
  transform: [{
24
28
  translateX: (slot.virtualIndex - visualPage.get()) * pageStride
@@ -37,7 +41,8 @@ function RenderWindowSlotView({
37
41
  width
38
42
  }],
39
43
  children: renderItem(slot.item, slot.logicalIndex, {
40
- isActive
44
+ isActive,
45
+ setItemDimensions: registerItemDimensions
41
46
  })
42
47
  })
43
48
  })
@@ -75,6 +80,7 @@ export function GestureViewer({
75
80
  pageStride,
76
81
  renderWindowSlots,
77
82
  visualPage,
83
+ setItemDimensions,
78
84
  zoomGesture,
79
85
  zoomPinchGesture
80
86
  } = useGestureViewer({
@@ -123,6 +129,7 @@ export function GestureViewer({
123
129
  isActive: slot.virtualIndex === centerVirtualIndex,
124
130
  pageStride: pageStride,
125
131
  renderItem: renderItem,
132
+ setItemDimensions: setItemDimensions,
126
133
  slot: slot,
127
134
  visualPage: visualPage,
128
135
  width: width
@@ -154,6 +161,7 @@ const styles = StyleSheet.create({
154
161
  },
155
162
  slot: {
156
163
  left: 0,
164
+ overflow: 'hidden',
157
165
  position: 'absolute',
158
166
  top: 0
159
167
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","StyleSheet","useWindowDimensions","View","GestureDetector","GestureHandlerRootView","Animated","useAnimatedStyle","composeGestureViewerGestures","registry","getWebContentProps","useGestureViewer","jsx","_jsx","jsxs","_jsxs","RenderWindowSlotView","animatedStyle","height","isActive","pageStride","renderItem","slot","visualPage","width","slotAnimatedStyle","transform","translateX","virtualIndex","get","style","styles","children","page","item","logicalIndex","GestureViewer","id","data","renderContainer","customWidth","customHeight","backdropStyle","backdropStyleProps","containerStyle","initialIndex","pageSpacing","windowSize","enableLoop","props","screenWidth","screenHeight","centerVirtualIndex","dismissGesture","handleDismiss","horizontalPagingGesture","onWebClick","renderWindowSlots","zoomGesture","zoomPinchGesture","gesture","createManager","deleteManager","control","dismiss","webContentProps","viewer","container","background","content","map","slotKey","create","absoluteFill","backgroundColor","overflow","alignItems","justifyContent","flex","left","position","top"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useMemo","StyleSheet","useWindowDimensions","View","GestureDetector","GestureHandlerRootView","Animated","useAnimatedStyle","composeGestureViewerGestures","registry","getWebContentProps","useGestureViewer","jsx","_jsx","jsxs","_jsxs","RenderWindowSlotView","animatedStyle","height","isActive","pageStride","renderItem","setItemDimensions","slot","visualPage","width","registerItemDimensions","dimensions","logicalIndex","item","slotAnimatedStyle","transform","translateX","virtualIndex","get","style","styles","children","page","GestureViewer","id","data","renderContainer","customWidth","customHeight","backdropStyle","backdropStyleProps","containerStyle","initialIndex","pageSpacing","windowSize","enableLoop","props","screenWidth","screenHeight","centerVirtualIndex","dismissGesture","handleDismiss","horizontalPagingGesture","onWebClick","renderWindowSlots","zoomGesture","zoomPinchGesture","gesture","createManager","deleteManager","control","dismiss","webContentProps","viewer","container","background","content","map","slotKey","create","absoluteFill","backgroundColor","overflow","alignItems","justifyContent","flex","left","position","top"],"sourceRoot":"../../src","sources":["GestureViewer.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { withTiming } from 'react-native-reanimated';
4
- import { createBoundsConstraint } from "./utils/index.js";
4
+ import { clampTranslationToBounds } from "./utils/index.js";
5
5
  const DEFAULT_STATE_READER = () => ({
6
6
  currentIndex: 0,
7
7
  totalCount: 0
@@ -16,6 +16,8 @@ class GestureViewerManager {
16
16
  rotation = null;
17
17
  translateX = null;
18
18
  translateY = null;
19
+ contentWidth = null;
20
+ contentHeight = null;
19
21
  listeners = new Set();
20
22
  eventListeners = new Map();
21
23
  eventListenerPresenceSubscribers = new Set();
@@ -102,11 +104,20 @@ class GestureViewerManager {
102
104
  setStateReader(reader) {
103
105
  this.stateReader = reader ?? DEFAULT_STATE_READER;
104
106
  }
105
- setZoomSharedValues(scale, translateX, translateY, maxZoomScale) {
107
+ setZoomSharedValues({
108
+ scale,
109
+ translateX,
110
+ translateY,
111
+ maxZoomScale,
112
+ contentWidth,
113
+ contentHeight
114
+ }) {
106
115
  this.scale = scale;
107
116
  this.translateX = translateX;
108
117
  this.translateY = translateY;
109
118
  this.maxZoomScale = maxZoomScale;
119
+ this.contentWidth = contentWidth ?? null;
120
+ this.contentHeight = contentHeight ?? null;
110
121
  }
111
122
  notifyStateChange() {
112
123
  this.notifyListeners();
@@ -141,10 +152,7 @@ class GestureViewerManager {
141
152
  const {
142
153
  translateX,
143
154
  translateY
144
- } = createBoundsConstraint({
145
- width: this.width,
146
- height: this.height
147
- })({
155
+ } = this.clampZoomTranslationToBounds({
148
156
  translateX: this.translateX.get(),
149
157
  translateY: this.translateY.get(),
150
158
  scale: nextScale
@@ -166,10 +174,7 @@ class GestureViewerManager {
166
174
  const {
167
175
  translateX,
168
176
  translateY
169
- } = createBoundsConstraint({
170
- width: this.width,
171
- height: this.height
172
- })({
177
+ } = this.clampZoomTranslationToBounds({
173
178
  translateX: this.translateX.get(),
174
179
  translateY: this.translateY.get(),
175
180
  scale: nextScale
@@ -207,14 +212,31 @@ class GestureViewerManager {
207
212
  this.listeners.clear();
208
213
  this.navigationAdapter = null;
209
214
  this.stateReader = DEFAULT_STATE_READER;
215
+ this.width = 0;
216
+ this.height = 0;
210
217
  this.maxZoomScale = 2;
211
218
  this.scale = null;
212
219
  this.translateX = null;
213
220
  this.translateY = null;
214
221
  this.rotation = null;
222
+ this.contentWidth = null;
223
+ this.contentHeight = null;
215
224
  this.eventListeners.clear();
216
225
  this.eventListenerPresenceSubscribers.clear();
217
226
  }
227
+ clampZoomTranslationToBounds = ({
228
+ scale,
229
+ translateX,
230
+ translateY
231
+ }) => clampTranslationToBounds({
232
+ contentHeight: this.contentHeight?.get(),
233
+ contentWidth: this.contentWidth?.get(),
234
+ height: this.height,
235
+ scale,
236
+ translateX,
237
+ translateY,
238
+ width: this.width
239
+ });
218
240
  }
219
241
  export default GestureViewerManager;
220
242
  //# sourceMappingURL=GestureViewerManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["withTiming","createBoundsConstraint","DEFAULT_STATE_READER","currentIndex","totalCount","GestureViewerManager","width","height","maxZoomScale","navigationAdapter","stateReader","scale","rotation","translateX","translateY","listeners","Set","eventListeners","Map","eventListenerPresenceSubscribers","notifyListeners","state","getState","forEach","listener","subscribe","add","delete","addEventListener","eventType","callback","has","set","get","notifyEventListenerPresence","size","subscribeToEventListenerPresence","notifyEventListenerPresenceSubscriber","hasEventListeners","emitEvent","data","emitZoomChange","previousScale","emitRotationChange","previousRotation","emitTap","setWidth","setHeight","setNavigationAdapter","adapter","setStateReader","reader","setZoomSharedValues","notifyStateChange","setRotation","rotate","angle","clockwise","MAX_ANGLE","currentRotation","undefined","nextAngle","Math","floor","zoomIn","multiplier","nextScale","min","zoomOut","max","resetZoom","goToIndex","index","options","goToPrevious","goToNext","cleanUp","clear"],"sourceRoot":"../../src","sources":["GestureViewerManager.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["withTiming","clampTranslationToBounds","DEFAULT_STATE_READER","currentIndex","totalCount","GestureViewerManager","width","height","maxZoomScale","navigationAdapter","stateReader","scale","rotation","translateX","translateY","contentWidth","contentHeight","listeners","Set","eventListeners","Map","eventListenerPresenceSubscribers","notifyListeners","state","getState","forEach","listener","subscribe","add","delete","addEventListener","eventType","callback","has","set","get","notifyEventListenerPresence","size","subscribeToEventListenerPresence","notifyEventListenerPresenceSubscriber","hasEventListeners","emitEvent","data","emitZoomChange","previousScale","emitRotationChange","previousRotation","emitTap","setWidth","setHeight","setNavigationAdapter","adapter","setStateReader","reader","setZoomSharedValues","notifyStateChange","setRotation","rotate","angle","clockwise","MAX_ANGLE","currentRotation","undefined","nextAngle","Math","floor","zoomIn","multiplier","nextScale","min","clampZoomTranslationToBounds","zoomOut","max","resetZoom","goToIndex","index","options","goToPrevious","goToNext","cleanUp","clear"],"sourceRoot":"../../src","sources":["GestureViewerManager.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["GestureTrigger","GestureViewer","useGestureViewerController","useGestureViewerEvent","useGestureViewerState"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AACA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SAASC,aAAa,QAAQ,oBAAiB;AAW/C,SAASC,0BAA0B,QAAQ,iCAA8B;AACzE,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,qBAAqB,QAAQ,4BAAyB","ignoreList":[]}
1
+ {"version":3,"names":["GestureTrigger","GestureViewer","useGestureViewerController","useGestureViewerEvent","useGestureViewerState"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AACA,SAASA,cAAc,QAAQ,qBAAkB;AACjD,SAASC,aAAa,QAAQ,oBAAiB;AAe/C,SAASC,0BAA0B,QAAQ,iCAA8B;AACzE,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,qBAAqB,QAAQ,4BAAyB","ignoreList":[]}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+
3
+ export const isValidItemDimensions = dimensions => {
4
+ return dimensions !== null && dimensions !== undefined && Number.isFinite(dimensions.width) && Number.isFinite(dimensions.height) && dimensions.width > 0 && dimensions.height > 0;
5
+ };
6
+ const resolveItemKey = (getItemKey, item, index) => {
7
+ const itemKey = getItemKey?.(item, index);
8
+ if (typeof itemKey === 'string') {
9
+ return itemKey;
10
+ }
11
+ return typeof itemKey === 'number' && Number.isFinite(itemKey) ? itemKey : undefined;
12
+ };
13
+ const doesEntryMatchItem = (entry, item, itemKey) => {
14
+ if (itemKey !== undefined && entry.itemKey !== undefined) {
15
+ return entry.itemKey === itemKey;
16
+ }
17
+ return Object.is(entry.item, item);
18
+ };
19
+ export const pruneItemDimensionsRegistry = (registry, dataLength) => {
20
+ for (const index of registry.keys()) {
21
+ if (index < 0 || index >= dataLength) {
22
+ registry.delete(index);
23
+ }
24
+ }
25
+ };
26
+ export const resolveItemDimensions = ({
27
+ registry,
28
+ data,
29
+ index,
30
+ getItemDimensions,
31
+ getItemKey
32
+ }) => {
33
+ if (index < 0 || index >= data.length) {
34
+ return undefined;
35
+ }
36
+
37
+ // `as ItemT` restores the viewer's dense-list invariant, which TypeScript cannot infer from
38
+ // generic indexed access when `noUncheckedIndexedAccess` is enabled.
39
+ const item = data[index];
40
+ const registered = registry.get(index);
41
+ const itemKey = registered ? resolveItemKey(getItemKey, item, index) : undefined;
42
+ if (registered && doesEntryMatchItem(registered, item, itemKey) && isValidItemDimensions(registered.dimensions)) {
43
+ return registered.dimensions;
44
+ }
45
+ const resolved = getItemDimensions?.(item, index);
46
+ if (isValidItemDimensions(resolved)) {
47
+ return resolved;
48
+ }
49
+ return undefined;
50
+ };
51
+ export const registerItemDimensions = ({
52
+ registry,
53
+ data,
54
+ index,
55
+ item,
56
+ dimensions,
57
+ getItemKey
58
+ }) => {
59
+ if (index < 0 || index >= data.length || !isValidItemDimensions(dimensions)) {
60
+ return 'ignored';
61
+ }
62
+
63
+ // `as ItemT` restores the viewer's dense-list invariant, which TypeScript cannot infer from
64
+ // generic indexed access when `noUncheckedIndexedAccess` is enabled.
65
+ const currentItem = data[index];
66
+ const currentItemKey = resolveItemKey(getItemKey, currentItem, index);
67
+ const reportedItemKey = Object.is(currentItem, item) ? currentItemKey : resolveItemKey(getItemKey, item, index);
68
+ const hasMatchingKey = currentItemKey !== undefined && reportedItemKey !== undefined && currentItemKey === reportedItemKey;
69
+ if (!Object.is(currentItem, item) && !hasMatchingKey) {
70
+ return 'ignored';
71
+ }
72
+ const registered = registry.get(index);
73
+ if (registered && doesEntryMatchItem(registered, currentItem, currentItemKey) && registered.dimensions.width === dimensions.width && registered.dimensions.height === dimensions.height) {
74
+ return 'unchanged';
75
+ }
76
+ registry.set(index, {
77
+ dimensions: {
78
+ height: dimensions.height,
79
+ width: dimensions.width
80
+ },
81
+ item: currentItem,
82
+ itemKey: currentItemKey
83
+ });
84
+ return 'updated';
85
+ };
86
+ //# sourceMappingURL=itemDimensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isValidItemDimensions","dimensions","undefined","Number","isFinite","width","height","resolveItemKey","getItemKey","item","index","itemKey","doesEntryMatchItem","entry","Object","is","pruneItemDimensionsRegistry","registry","dataLength","keys","delete","resolveItemDimensions","data","getItemDimensions","length","registered","get","resolved","registerItemDimensions","currentItem","currentItemKey","reportedItemKey","hasMatchingKey","set"],"sourceRoot":"../../src","sources":["itemDimensions.ts"],"mappings":"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","ignoreList":[]}
@@ -9,13 +9,14 @@ import { PAGE_SPRING_CONFIG, SWIPE_THRESHOLD_RATIO, SWIPE_VELOCITY_THRESHOLD } f
9
9
  import { normalizeHorizontalSwipeThreshold } from "./gestureViewerPaging.js";
10
10
  import { registry } from "./GestureViewerRegistry.js";
11
11
  import { resolveGestureViewerRenderWindow } from "./gestureViewerRenderWindow.js";
12
+ import { pruneItemDimensionsRegistry, registerItemDimensions, resolveItemDimensions } from "./itemDimensions.js";
12
13
  import { enableNativeTapGestures } from './platformTapGestures';
13
14
  import { getLogicalIndex, getPageStride, getVirtualIndexForLogicalIndex, normalizePageSpacing, clampIndex, resolveNavigation, shouldRunNavigationDuringTransition } from "./renderWindow.js";
14
15
  import { useGestureViewerManagerBridge } from "./useGestureViewerManagerBridge.js";
15
16
  import { useGestureViewerPaging } from "./useGestureViewerPaging.js";
16
17
  import { useWebClickHandler } from './useWebClickHandler';
17
18
  import { useWebSingleTapTimer } from './useWebSingleTapTimer';
18
- import { createBoundsConstraint } from "./utils/index.js";
19
+ import { clampTranslationToBounds, resolveGeometrySyncTranslationMode } from "./utils/index.js";
19
20
  import { getDismissDistance, shouldDismissByDirection } from "./utils/dismiss.js";
20
21
  import { applyTapZoomAtPoint } from "./utils/tapZoom.js";
21
22
  import { calculateFocalPointTranslation, shouldAcceptFocalPoint } from "./utils/zoom.js";
@@ -23,6 +24,16 @@ const NATIVE_TAP_MAX_DISTANCE = 10;
23
24
  const isValidTriggerRect = rect => {
24
25
  return !!rect && rect.width > 0 && rect.height > 0;
25
26
  };
27
+ function fitItemDimensions(dimensions, viewport) {
28
+ if (!dimensions) {
29
+ return viewport;
30
+ }
31
+ const fit = Math.min(viewport.width / dimensions.width, viewport.height / dimensions.height);
32
+ return {
33
+ height: dimensions.height * fit,
34
+ width: dimensions.width * fit
35
+ };
36
+ }
26
37
  export const useGestureViewer = ({
27
38
  data,
28
39
  initialIndex = 0,
@@ -43,7 +54,9 @@ export const useGestureViewer = ({
43
54
  onDismissStart,
44
55
  triggerAnimation,
45
56
  autoPlay = false,
46
- autoPlayInterval = 3000
57
+ autoPlayInterval = 3000,
58
+ getItemDimensions,
59
+ getItemKey
47
60
  }) => {
48
61
  const {
49
62
  width: screenWidth,
@@ -76,12 +89,21 @@ export const useGestureViewer = ({
76
89
  const onAnimationCompleteRef = useRef(triggerAnimation?.onAnimationComplete);
77
90
  const onSingleTapRef = useRef(onSingleTap);
78
91
  const dataRef = useRef(data);
92
+ const getItemDimensionsRef = useRef(getItemDimensions);
93
+ const getItemKeyRef = useRef(getItemKey);
79
94
  const dataLengthRef = useRef(dataLength);
80
95
  const enableLoopRef = useRef(enableLoop);
81
96
  const managerRef = useRef(null);
82
97
  const isZoomedRef = useRef(isZoomed);
83
98
  const isRotatedRef = useRef(isRotated);
84
99
  const isPinchingRef = useRef(isPinching);
100
+ const itemDimensionsRef = useRef(new Map());
101
+ const viewportRef = useRef({
102
+ height,
103
+ width
104
+ });
105
+ const activeGeometryRef = useRef(null);
106
+ const activeGeometryIndexRef = useRef(null);
85
107
  const initialTranslateY = useSharedValue(0);
86
108
  const initialTranslateX = useSharedValue(0);
87
109
  const startScale = useSharedValue(1);
@@ -89,6 +111,8 @@ export const useGestureViewer = ({
89
111
  const translateX = useSharedValue(0);
90
112
  const scale = useSharedValue(1);
91
113
  const rotation = useSharedValue(0);
114
+ const contentWidth = useSharedValue(width);
115
+ const contentHeight = useSharedValue(height);
92
116
  const triggerScale = useSharedValue(1);
93
117
  const triggerTranslateX = useSharedValue(0);
94
118
  const triggerTranslateY = useSharedValue(0);
@@ -130,10 +154,85 @@ export const useGestureViewer = ({
130
154
  isTriggerOpening,
131
155
  windowSize
132
156
  });
133
- const constrainTranslation = useMemo(() => createBoundsConstraint({
134
- height,
135
- width
136
- }), [width, height]);
157
+ const syncActiveContentDimensions = useCallback((index = pendingIndexRef.current) => {
158
+ const viewport = viewportRef.current;
159
+ const fitted = fitItemDimensions(resolveItemDimensions({
160
+ data: dataRef.current,
161
+ getItemKey: getItemKeyRef.current,
162
+ getItemDimensions: getItemDimensionsRef.current,
163
+ index,
164
+ registry: itemDimensionsRef.current
165
+ }), viewport);
166
+ const nextGeometry = {
167
+ contentHeight: fitted.height,
168
+ contentWidth: fitted.width,
169
+ height: viewport.height,
170
+ width: viewport.width
171
+ };
172
+ const previousGeometry = activeGeometryRef.current;
173
+ const previousGeometryIndex = activeGeometryIndexRef.current;
174
+ activeGeometryIndexRef.current = index;
175
+ const currentScale = scale.get();
176
+ const translationMode = resolveGeometrySyncTranslationMode(previousGeometryIndex, index, currentScale);
177
+ if (translationMode === 'reset') {
178
+ // Complete the page-owned reset before the next item's geometry can reuse the old offset.
179
+ translateX.set(0);
180
+ translateY.set(0);
181
+ }
182
+ if (previousGeometry?.contentHeight === nextGeometry.contentHeight && previousGeometry.contentWidth === nextGeometry.contentWidth && previousGeometry.height === nextGeometry.height && previousGeometry.width === nextGeometry.width) {
183
+ return;
184
+ }
185
+ activeGeometryRef.current = nextGeometry;
186
+ if (contentWidth.get() !== fitted.width) {
187
+ contentWidth.set(fitted.width);
188
+ }
189
+ if (contentHeight.get() !== fitted.height) {
190
+ contentHeight.set(fitted.height);
191
+ }
192
+ if (translationMode !== 'constrain') {
193
+ return;
194
+ }
195
+ const constrained = clampTranslationToBounds({
196
+ contentHeight: fitted.height,
197
+ contentWidth: fitted.width,
198
+ height: viewport.height,
199
+ width: viewport.width,
200
+ scale: currentScale,
201
+ translateX: translateX.get(),
202
+ translateY: translateY.get()
203
+ });
204
+ translateX.set(withTiming(constrained.translateX));
205
+ translateY.set(withTiming(constrained.translateY));
206
+ }, [contentHeight, contentWidth, scale, translateX, translateY]);
207
+ const setItemDimensions = useCallback((index, item, dimensions) => {
208
+ if (registerItemDimensions({
209
+ data: dataRef.current,
210
+ dimensions,
211
+ getItemKey: getItemKeyRef.current,
212
+ index,
213
+ item,
214
+ registry: itemDimensionsRef.current
215
+ }) === 'updated' && index === pendingIndexRef.current) {
216
+ syncActiveContentDimensions(index);
217
+ }
218
+ }, [syncActiveContentDimensions]);
219
+ const constrainTranslation = useCallback(({
220
+ scale: targetScale,
221
+ translateX: targetX,
222
+ translateY: targetY
223
+ }) => {
224
+ 'worklet';
225
+
226
+ return clampTranslationToBounds({
227
+ contentHeight: contentHeight.get(),
228
+ contentWidth: contentWidth.get(),
229
+ height,
230
+ scale: targetScale,
231
+ translateX: targetX,
232
+ translateY: targetY,
233
+ width
234
+ });
235
+ }, [contentHeight, contentWidth, height, width]);
137
236
  const resetTransformState = useCallback(() => {
138
237
  translateX.set(withTiming(0));
139
238
  translateY.set(withTiming(0));
@@ -162,9 +261,10 @@ export const useGestureViewer = ({
162
261
  const commitCurrentIndex = useCallback(nextIndex => {
163
262
  pendingIndexRef.current = nextIndex;
164
263
  currentIndexRef.current = nextIndex;
264
+ syncActiveContentDimensions(nextIndex);
165
265
  setCurrentIndex(nextIndex);
166
266
  managerRef.current?.notifyStateChange();
167
- }, []);
267
+ }, [syncActiveContentDimensions]);
168
268
  const commitVirtualIndexOnly = useCallback(nextVirtualIndex => {
169
269
  const nextLogicalIndex = getLogicalIndex(nextVirtualIndex, dataLengthRef.current, enableLoopRef.current);
170
270
  if (nextLogicalIndex === null) {
@@ -248,6 +348,8 @@ export const useGestureViewer = ({
248
348
  navigateByDirection(-1);
249
349
  }, [navigateByDirection]);
250
350
  useGestureViewerManagerBridge({
351
+ contentHeight,
352
+ contentWidth,
251
353
  currentIndexRef,
252
354
  dataLengthRef,
253
355
  goToIndex: navigateToIndex,
@@ -303,9 +405,19 @@ export const useGestureViewer = ({
303
405
  }
304
406
  });
305
407
  }, [id]);
306
- useEffect(() => {
408
+ useLayoutEffect(() => {
307
409
  dataRef.current = data;
308
- }, [data]);
410
+ getItemDimensionsRef.current = getItemDimensions;
411
+ getItemKeyRef.current = getItemKey;
412
+ viewportRef.current = {
413
+ height,
414
+ width
415
+ };
416
+ syncActiveContentDimensions();
417
+ }, [data, dataLength, getItemDimensions, getItemKey, height, syncActiveContentDimensions, width]);
418
+ useEffect(() => {
419
+ pruneItemDimensionsRegistry(itemDimensionsRef.current, dataLength);
420
+ }, [dataLength]);
309
421
  useEffect(() => {
310
422
  isZoomedRef.current = isZoomed;
311
423
  }, [isZoomed]);
@@ -594,6 +706,8 @@ export const useGestureViewer = ({
594
706
  return;
595
707
  }
596
708
  applyTapZoomAtPoint({
709
+ contentHeight: contentHeight.get(),
710
+ contentWidth: contentWidth.get(),
597
711
  x: event.x,
598
712
  y: event.y,
599
713
  width,
@@ -603,7 +717,7 @@ export const useGestureViewer = ({
603
717
  translateX,
604
718
  translateY
605
719
  });
606
- }), [enableDoubleTapZoom, height, maxZoomScale, nativeInteractionHadMultipleTouches, pageTransitionLocked, scale, suppressNativeTap, translateX, translateY, width]);
720
+ }), [contentHeight, contentWidth, enableDoubleTapZoom, height, maxZoomScale, nativeInteractionHadMultipleTouches, pageTransitionLocked, scale, suppressNativeTap, translateX, translateY, width]);
607
721
  const tapGesture = useMemo(() => Gesture.Exclusive(doubleTapGesture, singleTapGesture), [doubleTapGesture, singleTapGesture]);
608
722
  const zoomPinchGesture = useMemo(() => Gesture.Pinch().enabled(enablePinchZoom).onTouchesDown(event => {
609
723
  if (event.numberOfTouches === 2) {
@@ -779,6 +893,8 @@ export const useGestureViewer = ({
779
893
  const zoomGesture = useMemo(() => Gesture.Exclusive(zoomPanGesture, tapGesture), [zoomPanGesture, tapGesture]);
780
894
  const onWebClick = useWebClickHandler({
781
895
  clearPendingWebSingleTap,
896
+ contentHeight,
897
+ contentWidth,
782
898
  emitSingleTap,
783
899
  enableDoubleTapZoom,
784
900
  getCurrentTapTarget,
@@ -838,6 +954,7 @@ export const useGestureViewer = ({
838
954
  pageStride,
839
955
  renderWindowSlots,
840
956
  visualPage,
957
+ setItemDimensions,
841
958
  zoomGesture,
842
959
  zoomPinchGesture
843
960
  };