react-native-drax 0.11.0-alpha.2 → 1.1.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.
Files changed (246) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +390 -227
  3. package/lib/module/DebugOverlay.js +121 -0
  4. package/lib/module/DebugOverlay.js.map +1 -0
  5. package/lib/module/Drax.js +36 -0
  6. package/lib/module/Drax.js.map +1 -0
  7. package/lib/module/DraxContext.js +6 -0
  8. package/lib/module/DraxContext.js.map +1 -0
  9. package/lib/module/DraxHandle.js +47 -0
  10. package/lib/module/DraxHandle.js.map +1 -0
  11. package/lib/module/DraxHandleContext.js +11 -0
  12. package/lib/module/DraxHandleContext.js.map +1 -0
  13. package/lib/module/DraxList.js +108 -0
  14. package/lib/module/DraxList.js.map +1 -0
  15. package/lib/module/DraxProvider.js +203 -0
  16. package/lib/module/DraxProvider.js.map +1 -0
  17. package/lib/module/DraxScrollView.js +167 -0
  18. package/lib/module/DraxScrollView.js.map +1 -0
  19. package/lib/module/DraxSubprovider.js +21 -0
  20. package/lib/module/DraxSubprovider.js.map +1 -0
  21. package/lib/module/DraxView.js +348 -0
  22. package/lib/module/DraxView.js.map +1 -0
  23. package/lib/module/HoverLayer.js +152 -0
  24. package/lib/module/HoverLayer.js.map +1 -0
  25. package/lib/module/SortableBoardContainer.js +386 -0
  26. package/lib/module/SortableBoardContainer.js.map +1 -0
  27. package/lib/module/SortableBoardContext.js +6 -0
  28. package/lib/module/SortableBoardContext.js.map +1 -0
  29. package/lib/module/SortableContainer.js +571 -0
  30. package/lib/module/SortableContainer.js.map +1 -0
  31. package/lib/module/SortableItem.js +226 -0
  32. package/lib/module/SortableItem.js.map +1 -0
  33. package/lib/module/SortableItemContext.js +38 -0
  34. package/lib/module/SortableItemContext.js.map +1 -0
  35. package/lib/module/compat/detectVersion.js +19 -0
  36. package/lib/module/compat/detectVersion.js.map +1 -0
  37. package/lib/module/compat/index.js +5 -0
  38. package/lib/module/compat/index.js.map +1 -0
  39. package/lib/module/compat/types.js +4 -0
  40. package/lib/module/compat/types.js.map +1 -0
  41. package/lib/module/compat/useDraxPanGesture.js +94 -0
  42. package/lib/module/compat/useDraxPanGesture.js.map +1 -0
  43. package/lib/module/hooks/index.js +5 -0
  44. package/lib/module/hooks/index.js.map +1 -0
  45. package/lib/module/hooks/useCallbackDispatch.js +688 -0
  46. package/lib/module/hooks/useCallbackDispatch.js.map +1 -0
  47. package/lib/module/hooks/useDragGesture.js +240 -0
  48. package/lib/module/hooks/useDragGesture.js.map +1 -0
  49. package/lib/module/hooks/useDraxContext.js +12 -0
  50. package/lib/module/hooks/useDraxContext.js.map +1 -0
  51. package/lib/module/hooks/useDraxId.js +13 -0
  52. package/lib/module/hooks/useDraxId.js.map +1 -0
  53. package/lib/module/hooks/useDraxMethods.js +73 -0
  54. package/lib/module/hooks/useDraxMethods.js.map +1 -0
  55. package/lib/module/hooks/useDraxScrollHandler.js +97 -0
  56. package/lib/module/hooks/useDraxScrollHandler.js.map +1 -0
  57. package/lib/module/hooks/useSortableBoard.js +37 -0
  58. package/lib/module/hooks/useSortableBoard.js.map +1 -0
  59. package/lib/module/hooks/useSortableList.js +988 -0
  60. package/lib/module/hooks/useSortableList.js.map +1 -0
  61. package/lib/module/hooks/useSpatialIndex.js +283 -0
  62. package/lib/module/hooks/useSpatialIndex.js.map +1 -0
  63. package/lib/module/hooks/useViewStyles.js +158 -0
  64. package/lib/module/hooks/useViewStyles.js.map +1 -0
  65. package/lib/module/hooks/useWebScrollFreeze.js +52 -0
  66. package/lib/module/hooks/useWebScrollFreeze.js.map +1 -0
  67. package/lib/module/index.js +37 -0
  68. package/lib/module/index.js.map +1 -0
  69. package/lib/module/math.js +294 -0
  70. package/lib/module/math.js.map +1 -0
  71. package/lib/module/package.json +1 -0
  72. package/lib/module/params.js +88 -0
  73. package/lib/module/params.js.map +1 -0
  74. package/lib/module/types.js +215 -0
  75. package/lib/module/types.js.map +1 -0
  76. package/lib/typescript/package.json +1 -0
  77. package/lib/typescript/src/DebugOverlay.d.ts +17 -0
  78. package/lib/typescript/src/DebugOverlay.d.ts.map +1 -0
  79. package/lib/typescript/src/Drax.d.ts +28 -0
  80. package/lib/typescript/src/Drax.d.ts.map +1 -0
  81. package/lib/typescript/src/DraxContext.d.ts +3 -0
  82. package/lib/typescript/src/DraxContext.d.ts.map +1 -0
  83. package/lib/typescript/src/DraxHandle.d.ts +25 -0
  84. package/lib/typescript/src/DraxHandle.d.ts.map +1 -0
  85. package/lib/typescript/src/DraxHandleContext.d.ts +12 -0
  86. package/lib/typescript/src/DraxHandleContext.d.ts.map +1 -0
  87. package/lib/typescript/src/DraxList.d.ts +66 -0
  88. package/lib/typescript/src/DraxList.d.ts.map +1 -0
  89. package/lib/typescript/src/DraxProvider.d.ts +4 -0
  90. package/lib/typescript/src/DraxProvider.d.ts.map +1 -0
  91. package/lib/typescript/src/DraxScrollView.d.ts +7 -0
  92. package/lib/typescript/src/DraxScrollView.d.ts.map +1 -0
  93. package/lib/typescript/src/DraxSubprovider.d.ts +4 -0
  94. package/lib/typescript/src/DraxSubprovider.d.ts.map +1 -0
  95. package/lib/typescript/src/DraxView.d.ts +4 -0
  96. package/lib/typescript/src/DraxView.d.ts.map +1 -0
  97. package/lib/typescript/src/HoverLayer.d.ts +38 -0
  98. package/lib/typescript/src/HoverLayer.d.ts.map +1 -0
  99. package/lib/typescript/src/SortableBoardContainer.d.ts +11 -0
  100. package/lib/typescript/src/SortableBoardContainer.d.ts.map +1 -0
  101. package/lib/typescript/src/SortableBoardContext.d.ts +4 -0
  102. package/lib/typescript/src/SortableBoardContext.d.ts.map +1 -0
  103. package/lib/typescript/src/SortableContainer.d.ts +13 -0
  104. package/lib/typescript/src/SortableContainer.d.ts.map +1 -0
  105. package/lib/typescript/src/SortableItem.d.ts +14 -0
  106. package/lib/typescript/src/SortableItem.d.ts.map +1 -0
  107. package/lib/typescript/src/SortableItemContext.d.ts +37 -0
  108. package/lib/typescript/src/SortableItemContext.d.ts.map +1 -0
  109. package/lib/typescript/src/compat/detectVersion.d.ts +2 -0
  110. package/lib/typescript/src/compat/detectVersion.d.ts.map +1 -0
  111. package/lib/typescript/src/compat/index.d.ts +4 -0
  112. package/lib/typescript/src/compat/index.d.ts.map +1 -0
  113. package/lib/typescript/src/compat/types.d.ts +33 -0
  114. package/lib/typescript/src/compat/types.d.ts.map +1 -0
  115. package/lib/typescript/src/compat/useDraxPanGesture.d.ts +8 -0
  116. package/lib/typescript/src/compat/useDraxPanGesture.d.ts.map +1 -0
  117. package/lib/typescript/src/hooks/index.d.ts +3 -0
  118. package/lib/typescript/src/hooks/index.d.ts.map +1 -0
  119. package/lib/typescript/src/hooks/useCallbackDispatch.d.ts +40 -0
  120. package/lib/typescript/src/hooks/useCallbackDispatch.d.ts.map +1 -0
  121. package/lib/typescript/src/hooks/useDragGesture.d.ts +17 -0
  122. package/lib/typescript/src/hooks/useDragGesture.d.ts.map +1 -0
  123. package/lib/typescript/src/hooks/useDraxContext.d.ts +2 -0
  124. package/lib/typescript/src/hooks/useDraxContext.d.ts.map +1 -0
  125. package/{build → lib/typescript/src}/hooks/useDraxId.d.ts +1 -0
  126. package/lib/typescript/src/hooks/useDraxId.d.ts.map +1 -0
  127. package/lib/typescript/src/hooks/useDraxMethods.d.ts +13 -0
  128. package/lib/typescript/src/hooks/useDraxMethods.d.ts.map +1 -0
  129. package/lib/typescript/src/hooks/useDraxScrollHandler.d.ts +27 -0
  130. package/lib/typescript/src/hooks/useDraxScrollHandler.d.ts.map +1 -0
  131. package/lib/typescript/src/hooks/useSortableBoard.d.ts +10 -0
  132. package/lib/typescript/src/hooks/useSortableBoard.d.ts.map +1 -0
  133. package/lib/typescript/src/hooks/useSortableList.d.ts +11 -0
  134. package/lib/typescript/src/hooks/useSortableList.d.ts.map +1 -0
  135. package/lib/typescript/src/hooks/useSpatialIndex.d.ts +22 -0
  136. package/lib/typescript/src/hooks/useSpatialIndex.d.ts.map +1 -0
  137. package/lib/typescript/src/hooks/useViewStyles.d.ts +183 -0
  138. package/lib/typescript/src/hooks/useViewStyles.d.ts.map +1 -0
  139. package/lib/typescript/src/hooks/useWebScrollFreeze.d.ts +14 -0
  140. package/lib/typescript/src/hooks/useWebScrollFreeze.d.ts.map +1 -0
  141. package/lib/typescript/src/index.d.ts +25 -0
  142. package/lib/typescript/src/index.d.ts.map +1 -0
  143. package/lib/typescript/src/math.d.ts +76 -0
  144. package/lib/typescript/src/math.d.ts.map +1 -0
  145. package/{build → lib/typescript/src}/params.d.ts +13 -9
  146. package/lib/typescript/src/params.d.ts.map +1 -0
  147. package/lib/typescript/src/types.d.ts +756 -0
  148. package/lib/typescript/src/types.d.ts.map +1 -0
  149. package/package.json +164 -34
  150. package/src/DebugOverlay.tsx +140 -0
  151. package/src/Drax.ts +33 -0
  152. package/src/DraxContext.ts +8 -0
  153. package/src/DraxHandle.tsx +52 -0
  154. package/src/DraxHandleContext.ts +15 -0
  155. package/src/DraxList.tsx +181 -0
  156. package/src/DraxProvider.tsx +224 -0
  157. package/src/DraxScrollView.tsx +180 -0
  158. package/src/DraxSubprovider.tsx +22 -0
  159. package/src/DraxView.tsx +430 -0
  160. package/src/HoverLayer.tsx +167 -0
  161. package/src/SortableBoardContainer.tsx +439 -0
  162. package/src/SortableBoardContext.ts +6 -0
  163. package/src/SortableContainer.tsx +650 -0
  164. package/src/SortableItem.tsx +264 -0
  165. package/src/SortableItemContext.ts +46 -0
  166. package/src/compat/detectVersion.ts +17 -0
  167. package/src/compat/index.ts +7 -0
  168. package/src/compat/types.ts +35 -0
  169. package/src/compat/useDraxPanGesture.ts +112 -0
  170. package/src/hooks/index.ts +2 -0
  171. package/src/hooks/useCallbackDispatch.tsx +830 -0
  172. package/src/hooks/useDragGesture.ts +273 -0
  173. package/src/hooks/useDraxContext.ts +11 -0
  174. package/src/hooks/useDraxId.ts +11 -0
  175. package/src/hooks/useDraxMethods.ts +71 -0
  176. package/src/hooks/useDraxScrollHandler.ts +121 -0
  177. package/src/hooks/useSortableBoard.ts +44 -0
  178. package/src/hooks/useSortableList.ts +1063 -0
  179. package/src/hooks/useSpatialIndex.ts +336 -0
  180. package/src/hooks/useViewStyles.ts +180 -0
  181. package/src/hooks/useWebScrollFreeze.ts +60 -0
  182. package/src/index.ts +111 -0
  183. package/src/math.ts +333 -0
  184. package/src/params.ts +74 -0
  185. package/src/types.ts +933 -0
  186. package/.editorconfig +0 -15
  187. package/.eslintrc.js +0 -4
  188. package/.prettierrc +0 -16
  189. package/CHANGELOG.md +0 -270
  190. package/CODE-OF-CONDUCT.md +0 -85
  191. package/CONTRIBUTING.md +0 -15
  192. package/FUNDING.yml +0 -4
  193. package/build/AllHoverViews.d.ts +0 -0
  194. package/build/AllHoverViews.js +0 -30
  195. package/build/DraxContext.d.ts +0 -2
  196. package/build/DraxContext.js +0 -6
  197. package/build/DraxList.d.ts +0 -8
  198. package/build/DraxList.js +0 -512
  199. package/build/DraxListItem.d.ts +0 -7
  200. package/build/DraxListItem.js +0 -121
  201. package/build/DraxProvider.d.ts +0 -2
  202. package/build/DraxProvider.js +0 -704
  203. package/build/DraxScrollView.d.ts +0 -6
  204. package/build/DraxScrollView.js +0 -136
  205. package/build/DraxSubprovider.d.ts +0 -3
  206. package/build/DraxSubprovider.js +0 -18
  207. package/build/DraxView.d.ts +0 -8
  208. package/build/DraxView.js +0 -93
  209. package/build/HoverView.d.ts +0 -8
  210. package/build/HoverView.js +0 -40
  211. package/build/PanGestureDetector.d.ts +0 -3
  212. package/build/PanGestureDetector.js +0 -49
  213. package/build/hooks/index.d.ts +0 -4
  214. package/build/hooks/index.js +0 -11
  215. package/build/hooks/useContent.d.ts +0 -23
  216. package/build/hooks/useContent.js +0 -212
  217. package/build/hooks/useDraxContext.d.ts +0 -1
  218. package/build/hooks/useDraxContext.js +0 -13
  219. package/build/hooks/useDraxId.js +0 -13
  220. package/build/hooks/useDraxProtocol.d.ts +0 -5
  221. package/build/hooks/useDraxProtocol.js +0 -32
  222. package/build/hooks/useDraxRegistry.d.ts +0 -78
  223. package/build/hooks/useDraxRegistry.js +0 -714
  224. package/build/hooks/useDraxScrollHandler.d.ts +0 -25
  225. package/build/hooks/useDraxScrollHandler.js +0 -89
  226. package/build/hooks/useDraxState.d.ts +0 -10
  227. package/build/hooks/useDraxState.js +0 -132
  228. package/build/hooks/useMeasurements.d.ts +0 -9
  229. package/build/hooks/useMeasurements.js +0 -119
  230. package/build/hooks/useStatus.d.ts +0 -11
  231. package/build/hooks/useStatus.js +0 -96
  232. package/build/index.d.ts +0 -9
  233. package/build/index.js +0 -33
  234. package/build/math.d.ts +0 -22
  235. package/build/math.js +0 -68
  236. package/build/params.js +0 -27
  237. package/build/transform.d.ts +0 -11
  238. package/build/transform.js +0 -59
  239. package/build/types.d.ts +0 -807
  240. package/build/types.js +0 -46
  241. package/docs/concept.md +0 -79
  242. package/docs/images/color-drag-drop.gif +0 -0
  243. package/docs/images/deck-cards.gif +0 -0
  244. package/docs/images/drag-drop-events.jpg +0 -0
  245. package/docs/images/knight-moves.gif +0 -0
  246. package/docs/images/reorderable-list.gif +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useLayoutEffect","useRef","useState","useSharedValue","runOnUI","defaultAutoScrollBackThreshold","defaultAutoScrollForwardThreshold","defaultAutoScrollJumpRatio","defaultListItemLongPressDelay","packGrid","DraxSnapbackTargetPreset","useDraxId","useStableKeyExtractor","_item","index","useSortableList","options","data","rawData","keyExtractor","onReorder","horizontal","numColumns","reorderStrategy","longPressDelay","lockToMainAxis","autoScrollJumpRatio","autoScrollBackThreshold","autoScrollForwardThreshold","animationConfig","getItemSpan","inactiveItemStyle","itemEntering","itemExiting","onDragStart","onDragPositionChange","onDragEnd","id","fixedKeys","Set","draggedItem","undefined","dropTargetPositionSV","x","y","dropTargetVisibleSV","shiftsRef","instantClearSV","shiftsValidSV","originalIndexes","setOriginalIndexes","stableData","setStableData","rawDataRef","current","itemMeasurements","Map","containerMeasurementsRef","contentSizeRef","scrollPosition","draggedDisplayIndexRef","dragStartIndexRef","pendingOrderRef","committedOrderRef","committedShiftsRef","committedKeyOrderRef","phantomRef","ghostShiftsRef","skipShiftsInvalidationRef","prev","isIdentity","length","every","v","i","Array","keys","committedKeys","matches","item","value","getMeasurementByOriginalIndex","originalIndex","key","get","getMeasForOrigIdx","getSpanForOrigIdx","origIdx","colSpan","rowSpan","deriveGridGeometry","firstOrigIdx","startMeas","origPacking","displayIdx","cellWidth","cellHeight","span","meas","width","height","firstSpan","colGap","positions","j","pi","pj","col","mi","mj","colDiff","Math","abs","xDiff","rowGap","row","rowDiff","yDiff","max","startX","startY","applyShifts","shifts","ghosts","Object","computeItemGap","meas0","meas1","firstRowEnd","min","lastInRow0","firstInRow1","computeShiftsForOrder","order","skipIndex","phantom","measurements","map","missingShiftIdx","findIndex","m","gap","targetPositions","cursor","displaySlot","atDisplayIndex","set","geo","packing","gp","cursorY","colXPositions","c","colMeas","push","rowStart","rowHeight","newShifts","currentMeas","target","dx","dy","computeShifts","moveDraggedItem","toDisplayIndex","fromIdx","targetOrigIdx","targetItem","targetKey","has","newOrder","temp","removed","splice","commitVisualOrder","pending","finalShifts","pendingShiftFlushRef","flushVisualOrder","currentRawData","setDraggedItem","resetDraggedItem","initPendingOrder","committed","cancelDrag","setPhantomSlot","clearPhantomSlot","ejectDraggedItem","dragIdx","reinjectDraggedItem","displayIndex","getPhantomSnapTarget","containerMeasurements","Default","phantomPos","getSlotFromPosition","contentPos","missingIdx","itemCount","firstMeas","size","boundary","pos","cellCol","floor","cellRow","cellOwner","r","owner","minDist","Infinity","nearest","cx","cy","dist","targetRow","totalRows","ceil","rowEnd","firstMeasWidth","targetCol","colX","colBoundary","getSnapbackTarget","some","targetPos","snapFirstOrigIdx","snapStartMeas","di","onScroll","event","_event","contentOffset","nativeEvent","onContentSizeChange","internal","onItemSnapEnd","stableKeyExtractor","_internal"],"sourceRoot":"../../../src","sources":["hooks/useSortableList.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+
3
+ import { useRef } from 'react';
4
+ import { useSharedValue } from 'react-native-reanimated';
5
+ /**
6
+ * Module-level helper to update spatial entry capabilities.
7
+ * Defined outside the hook so the worklet closure cannot capture
8
+ * any React refs from the hook scope — only the explicitly passed values.
9
+ */
10
+ function updateSpatialEntryCapabilities(spatialIndexSV, idx, draggable, receptive, monitoring, rejectOwnChildren, collisionAlgorithm) {
11
+ spatialIndexSV.modify(entries => {
12
+ 'worklet';
13
+
14
+ if (idx >= 0 && idx < entries.length && entries[idx]) {
15
+ entries[idx].receptive = receptive;
16
+ entries[idx].monitoring = monitoring;
17
+ entries[idx].draggable = draggable;
18
+ entries[idx].rejectOwnChildren = rejectOwnChildren;
19
+ entries[idx].collisionAlgorithm = collisionAlgorithm;
20
+ }
21
+ return entries;
22
+ });
23
+ }
24
+
25
+ /**
26
+ * Manages the spatial index (SharedValue<SpatialEntry[]>) and the JS-thread
27
+ * view registry (Map<string, ViewRegistryEntry>).
28
+ *
29
+ * The spatial index lives on the UI thread and is used by gesture worklets
30
+ * for hit-testing. The registry is JS-thread only and stores callbacks,
31
+ * props, and other data that worklets don't need.
32
+ */
33
+ export const useSpatialIndex = () => {
34
+ // ── SharedValues ───────────────────────────────────────────────────
35
+ const spatialIndexSV = useSharedValue([]);
36
+ const scrollOffsetsSV = useSharedValue([]);
37
+
38
+ // ── JS-thread registry ─────────────────────────────────────────────
39
+ const registryRef = useRef(new Map());
40
+ /** Local counter for deterministic index assignment (avoids race with async modify) */
41
+ const nextIndexRef = useRef(0);
42
+ /** Pending unregisters — deferred so re-registration can cancel them */
43
+ const pendingUnregistersRef = useRef(new Set());
44
+
45
+ /** Find the spatial index of a parent view, or -1 if not found */
46
+ const findParentSpatialIndex = parentId => {
47
+ if (!parentId) return -1;
48
+ const parent = registryRef.current.get(parentId);
49
+ return parent?.spatialIndex ?? -1;
50
+ };
51
+
52
+ /** Perform the actual removal of a view from spatial index and registry */
53
+ const performUnregister = id => {
54
+ const entry = registryRef.current.get(id);
55
+ if (!entry) return;
56
+ const removedIndex = entry.spatialIndex;
57
+
58
+ // Remove from spatial index
59
+ spatialIndexSV.modify(entries => {
60
+ 'worklet';
61
+
62
+ entries.splice(removedIndex, 1);
63
+ return entries;
64
+ });
65
+
66
+ // Remove from scroll offsets
67
+ scrollOffsetsSV.modify(offsets => {
68
+ 'worklet';
69
+
70
+ offsets.splice(removedIndex, 1);
71
+ return offsets;
72
+ });
73
+
74
+ // Remove from JS registry
75
+ registryRef.current.delete(id);
76
+ nextIndexRef.current -= 1;
77
+
78
+ // Update spatial indices for all entries after the removed one
79
+ for (const [, regEntry] of registryRef.current) {
80
+ if (regEntry.spatialIndex > removedIndex) {
81
+ regEntry.spatialIndex -= 1;
82
+ }
83
+ }
84
+
85
+ // Update parent indices in spatial index (entries that pointed to removed or later indices)
86
+ spatialIndexSV.modify(entries => {
87
+ 'worklet';
88
+
89
+ for (let i = 0; i < entries.length; i++) {
90
+ const e = entries[i];
91
+ if (!e) continue;
92
+ if (e.parentIndex === removedIndex) {
93
+ // Parent was removed — reparent to grandparent or root
94
+ e.parentIndex = -1;
95
+ } else if (e.parentIndex > removedIndex) {
96
+ e.parentIndex -= 1;
97
+ }
98
+ }
99
+ return entries;
100
+ });
101
+ };
102
+
103
+ /** Register a view (idempotent — re-registration preserves measurements) */
104
+ const registerView = payload => {
105
+ const {
106
+ id,
107
+ parentId,
108
+ scrollPosition,
109
+ props
110
+ } = payload;
111
+
112
+ // Cancel any pending unregister for this view
113
+ pendingUnregistersRef.current.delete(id);
114
+
115
+ // Determine capabilities from props
116
+ const draggable = isDraggable(props);
117
+ const receptive = isReceptive(props);
118
+ const monitoring = isMonitoring(props);
119
+
120
+ // If already registered, update in-place (preserves measurements)
121
+ const existing = registryRef.current.get(id);
122
+ if (existing) {
123
+ existing.parentId = parentId;
124
+ existing.scrollPosition = scrollPosition;
125
+ existing.props = props;
126
+ const idx = existing.spatialIndex;
127
+ updateSpatialEntryCapabilities(spatialIndexSV, idx, draggable, receptive, monitoring, props.rejectOwnChildren ?? false, props.collisionAlgorithm ?? 'center');
128
+ return;
129
+ }
130
+ const parentIndex = findParentSpatialIndex(parentId);
131
+
132
+ // Append to spatial index
133
+ const newEntry = {
134
+ id,
135
+ x: 0,
136
+ y: 0,
137
+ width: 0,
138
+ height: 0,
139
+ parentIndex,
140
+ receptive,
141
+ monitoring,
142
+ draggable,
143
+ rejectOwnChildren: props.rejectOwnChildren ?? false,
144
+ collisionAlgorithm: props.collisionAlgorithm ?? 'center'
145
+ };
146
+ const spatialIndex = nextIndexRef.current;
147
+ nextIndexRef.current += 1;
148
+ spatialIndexSV.modify(entries => {
149
+ 'worklet';
150
+
151
+ entries.push(newEntry);
152
+ return entries;
153
+ });
154
+
155
+ // Also extend scroll offsets array
156
+ scrollOffsetsSV.modify(offsets => {
157
+ 'worklet';
158
+
159
+ offsets.push({
160
+ x: 0,
161
+ y: 0
162
+ });
163
+ return offsets;
164
+ });
165
+
166
+ // Store in JS registry
167
+ registryRef.current.set(id, {
168
+ id,
169
+ parentId,
170
+ spatialIndex,
171
+ scrollPosition,
172
+ measurements: undefined,
173
+ props
174
+ });
175
+
176
+ // Fix up children that registered before this parent.
177
+ // React fires useEffect bottom-up, so children often register before their parent.
178
+ // Scan existing entries and update their parentIndex if they reference this view.
179
+ for (const [, childEntry] of registryRef.current) {
180
+ if (childEntry.parentId === id && childEntry.id !== id) {
181
+ const childIdx = childEntry.spatialIndex;
182
+ spatialIndexSV.modify(entries => {
183
+ 'worklet';
184
+
185
+ if (childIdx >= 0 && childIdx < entries.length && entries[childIdx] && entries[childIdx].parentIndex !== spatialIndex) {
186
+ entries[childIdx].parentIndex = spatialIndex;
187
+ }
188
+ return entries;
189
+ });
190
+ }
191
+ }
192
+ };
193
+
194
+ /**
195
+ * Unregister a view. Deferred via microtask so that if registerView is
196
+ * called for the same ID immediately after (useEffect cleanup → re-register),
197
+ * the removal is cancelled and measurements are preserved.
198
+ */
199
+ const unregisterView = id => {
200
+ pendingUnregistersRef.current.add(id);
201
+ queueMicrotask(() => {
202
+ if (!pendingUnregistersRef.current.has(id)) return;
203
+ pendingUnregistersRef.current.delete(id);
204
+ performUnregister(id);
205
+ });
206
+ };
207
+
208
+ /** Update measurements for a view (called on layout) */
209
+ const updateMeasurements = (id, measurements) => {
210
+ const entry = registryRef.current.get(id);
211
+ if (!entry) return;
212
+ entry.measurements = measurements;
213
+ const idx = entry.spatialIndex;
214
+ spatialIndexSV.modify(entries => {
215
+ 'worklet';
216
+
217
+ if (idx >= 0 && idx < entries.length && entries[idx]) {
218
+ entries[idx].x = measurements.x;
219
+ entries[idx].y = measurements.y;
220
+ entries[idx].width = measurements.width;
221
+ entries[idx].height = measurements.height;
222
+ }
223
+ return entries;
224
+ });
225
+ };
226
+
227
+ /** Update scroll offset for a scrollable view */
228
+ const updateScrollOffset = (id, offset) => {
229
+ const entry = registryRef.current.get(id);
230
+ if (!entry) return;
231
+ const idx = entry.spatialIndex;
232
+ scrollOffsetsSV.modify(offsets => {
233
+ 'worklet';
234
+
235
+ if (idx >= 0 && idx < offsets.length) {
236
+ offsets[idx] = offset;
237
+ }
238
+ return offsets;
239
+ });
240
+ };
241
+
242
+ /** Update view props (callbacks, capabilities, etc.) */
243
+ const updateViewProps = (id, props) => {
244
+ const entry = registryRef.current.get(id);
245
+ if (!entry) return;
246
+ entry.props = props;
247
+
248
+ // Update capabilities in spatial index
249
+ const draggable = isDraggable(props);
250
+ const receptive = isReceptive(props);
251
+ const monitoring = isMonitoring(props);
252
+ const idx = entry.spatialIndex;
253
+ updateSpatialEntryCapabilities(spatialIndexSV, idx, draggable, receptive, monitoring, props.rejectOwnChildren ?? false, props.collisionAlgorithm ?? 'center');
254
+ };
255
+
256
+ /** Get a view registry entry by id */
257
+ const getViewEntry = id => {
258
+ return registryRef.current.get(id);
259
+ };
260
+ return {
261
+ spatialIndexSV,
262
+ scrollOffsetsSV,
263
+ registerView,
264
+ unregisterView,
265
+ updateMeasurements,
266
+ updateScrollOffset,
267
+ updateViewProps,
268
+ getViewEntry
269
+ };
270
+ };
271
+
272
+ // ─── Helper functions ──────────────────────────────────────────────────────
273
+
274
+ export function isDraggable(props) {
275
+ return props.draggable ?? (props.dragPayload !== undefined || props.payload !== undefined || !!props.onDrag || !!props.onDragEnd || !!props.onDragEnter || !!props.onDragExit || !!props.onDragOver || !!props.onDragStart || !!props.onDragDrop);
276
+ }
277
+ function isReceptive(props) {
278
+ return props.receptive ?? (props.receiverPayload !== undefined || props.payload !== undefined || !!props.onReceiveDragEnter || !!props.onReceiveDragExit || !!props.onReceiveDragOver || !!props.onReceiveDragDrop);
279
+ }
280
+ function isMonitoring(props) {
281
+ return props.monitoring ?? (!!props.onMonitorDragStart || !!props.onMonitorDragEnter || !!props.onMonitorDragOver || !!props.onMonitorDragExit || !!props.onMonitorDragEnd || !!props.onMonitorDragDrop);
282
+ }
283
+ //# sourceMappingURL=useSpatialIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","useSharedValue","updateSpatialEntryCapabilities","spatialIndexSV","idx","draggable","receptive","monitoring","rejectOwnChildren","collisionAlgorithm","modify","entries","length","useSpatialIndex","scrollOffsetsSV","registryRef","Map","nextIndexRef","pendingUnregistersRef","Set","findParentSpatialIndex","parentId","parent","current","get","spatialIndex","performUnregister","id","entry","removedIndex","splice","offsets","delete","regEntry","i","e","parentIndex","registerView","payload","scrollPosition","props","isDraggable","isReceptive","isMonitoring","existing","newEntry","x","y","width","height","push","set","measurements","undefined","childEntry","childIdx","unregisterView","add","queueMicrotask","has","updateMeasurements","updateScrollOffset","offset","updateViewProps","getViewEntry","dragPayload","onDrag","onDragEnd","onDragEnter","onDragExit","onDragOver","onDragStart","onDragDrop","receiverPayload","onReceiveDragEnter","onReceiveDragExit","onReceiveDragOver","onReceiveDragDrop","onMonitorDragStart","onMonitorDragEnter","onMonitorDragOver","onMonitorDragExit","onMonitorDragEnd","onMonitorDragDrop"],"sourceRoot":"../../../src","sources":["hooks/useSpatialIndex.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet } from 'react-native';
4
+ import { useAnimatedStyle } from 'react-native-reanimated';
5
+ import { useDraxContext } from "./useDraxContext.js";
6
+
7
+ /**
8
+ * Provides animated styles for a DraxView.
9
+ *
10
+ * Key performance property: reads ONLY draggedIdSV, receiverIdSV, and dragPhaseSV.
11
+ * These change ~5 times per drag total (not per frame), so ALL views re-evaluate
12
+ * their styles only ~5 times per drag operation.
13
+ *
14
+ * hoverPositionSV is NOT read here — only HoverLayer reads it, ensuring only
15
+ * 1 component re-evaluates per frame during active drag.
16
+ */
17
+ export const useViewStyles = (id, styleProps) => {
18
+ const {
19
+ draggedIdSV,
20
+ receiverIdSV,
21
+ dragPhaseSV
22
+ } = useDraxContext();
23
+ const {
24
+ style,
25
+ dragInactiveStyle,
26
+ draggingStyle,
27
+ draggingWithReceiverStyle,
28
+ draggingWithoutReceiverStyle,
29
+ dragReleasedStyle,
30
+ receiverInactiveStyle,
31
+ receivingStyle,
32
+ otherDraggingStyle,
33
+ otherDraggingWithReceiverStyle,
34
+ otherDraggingWithoutReceiverStyle
35
+ } = styleProps;
36
+
37
+ // Flatten style props once (they don't change during a drag)
38
+ const flatDraggingStyle = flattenOrNull(draggingStyle);
39
+ const flatDraggingWithReceiverStyle = flattenOrNull(draggingWithReceiverStyle);
40
+ const flatDraggingWithoutReceiverStyle = flattenOrNull(draggingWithoutReceiverStyle);
41
+ const flatDragReleasedStyle = flattenOrNull(dragReleasedStyle);
42
+ const flatDragInactiveStyle = flattenOrNull(dragInactiveStyle);
43
+ const flatReceiverInactiveStyle = flattenOrNull(receiverInactiveStyle);
44
+ const flatReceivingStyle = flattenOrNull(receivingStyle);
45
+ const flatOtherDraggingStyle = flattenOrNull(otherDraggingStyle);
46
+ const flatOtherDraggingWithReceiverStyle = flattenOrNull(otherDraggingWithReceiverStyle);
47
+ const flatOtherDraggingWithoutReceiverStyle = flattenOrNull(otherDraggingWithoutReceiverStyle);
48
+
49
+ // Compute a reset style that restores all animated properties to their base
50
+ // style values (or neutral defaults if not in the base style). Reanimated does
51
+ // not auto-clear native style properties when they disappear from
52
+ // useAnimatedStyle, so we must always set them explicitly.
53
+ const flatBaseStyle = flattenOrNull(style);
54
+ const resetStyle = computeResetStyle(flatBaseStyle, flatDraggingStyle, flatDraggingWithReceiverStyle, flatDraggingWithoutReceiverStyle, flatDragReleasedStyle, flatDragInactiveStyle, flatReceiverInactiveStyle, flatReceivingStyle, flatOtherDraggingStyle, flatOtherDraggingWithReceiverStyle, flatOtherDraggingWithoutReceiverStyle);
55
+
56
+ /**
57
+ * The animated style. Re-evaluates only when draggedIdSV, receiverIdSV,
58
+ * or dragPhaseSV change (~5 times per drag).
59
+ *
60
+ * Always spreads resetStyle first so that every animated property is
61
+ * explicitly set, preventing stale native-side values from lingering.
62
+ */
63
+ const animatedDragStyle = useAnimatedStyle(() => {
64
+ const draggedId = draggedIdSV.value;
65
+ const receiverId = receiverIdSV.value;
66
+ const phase = dragPhaseSV.value;
67
+ const isMe = draggedId === id;
68
+ const amReceiving = receiverId === id;
69
+ const isDragging = phase !== 'idle';
70
+
71
+ // This view is being dragged
72
+ if (isMe && phase === 'dragging') {
73
+ return mergeStyles(resetStyle, flatDraggingStyle, amReceiving ? flatDraggingWithReceiverStyle : flatDraggingWithoutReceiverStyle);
74
+ }
75
+
76
+ // This view was just released
77
+ if (isMe && phase === 'releasing') {
78
+ return mergeStyles(resetStyle, flatDragReleasedStyle ?? flatDraggingStyle);
79
+ }
80
+
81
+ // This view is receiving a drag
82
+ if (amReceiving && isDragging) {
83
+ return mergeStyles(resetStyle, flatReceivingStyle);
84
+ }
85
+
86
+ // Another view is being dragged (not me, not receiving)
87
+ if (isDragging && !isMe) {
88
+ return mergeStyles(resetStyle, flatDragInactiveStyle, flatOtherDraggingStyle, amReceiving ? flatOtherDraggingWithReceiverStyle : flatOtherDraggingWithoutReceiverStyle);
89
+ }
90
+
91
+ // Idle state — combine inactive styles with reset base
92
+ return mergeStyles(resetStyle, flatDragInactiveStyle, flatReceiverInactiveStyle);
93
+ });
94
+ return {
95
+ style,
96
+ animatedDragStyle
97
+ };
98
+ };
99
+
100
+ // ─── Helpers ───────────────────────────────────────────────────────────────
101
+
102
+ function flattenOrNull(s) {
103
+ if (!s) return null;
104
+ return StyleSheet.flatten(s) ?? null;
105
+ }
106
+ function mergeStyles(...styles) {
107
+ 'worklet';
108
+
109
+ let result = {};
110
+ for (const s of styles) {
111
+ if (s) {
112
+ result = {
113
+ ...result,
114
+ ...s
115
+ };
116
+ }
117
+ }
118
+ return result;
119
+ }
120
+
121
+ /**
122
+ * Builds an object that explicitly resets every property found in any of the
123
+ * special style objects to its base-style value (or a neutral default if the
124
+ * base style doesn't define that property).
125
+ *
126
+ * This is necessary because Reanimated's native animation driver does not
127
+ * automatically remove style properties when they disappear from
128
+ * useAnimatedStyle. Without explicit resets, properties like borderWidth
129
+ * or opacity linger with their last animated value.
130
+ *
131
+ * Using base-style values as defaults prevents the animated style from
132
+ * overriding the regular `style` prop (e.g., blue borders set via React state).
133
+ */
134
+ function computeResetStyle(base, ...specials) {
135
+ const reset = {};
136
+ const baseMap = base ? Object.entries(base).reduce((acc, [k, v]) => {
137
+ acc[k] = v;
138
+ return acc;
139
+ }, {}) : {};
140
+ for (const s of specials) {
141
+ if (!s) continue;
142
+ for (const [key, value] of Object.entries(s)) {
143
+ if (key in reset) continue;
144
+ if (key in baseMap) {
145
+ // Use the base style's value so we don't override it
146
+ reset[key] = baseMap[key];
147
+ } else if (typeof value === 'number') {
148
+ // opacity defaults to 1; all other numeric properties default to 0
149
+ reset[key] = key === 'opacity' ? 1 : 0;
150
+ } else if (typeof value === 'string') {
151
+ reset[key] = 'transparent';
152
+ }
153
+ // Skip non-primitive values (transform arrays, etc.)
154
+ }
155
+ }
156
+ return reset;
157
+ }
158
+ //# sourceMappingURL=useViewStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","useAnimatedStyle","useDraxContext","useViewStyles","id","styleProps","draggedIdSV","receiverIdSV","dragPhaseSV","style","dragInactiveStyle","draggingStyle","draggingWithReceiverStyle","draggingWithoutReceiverStyle","dragReleasedStyle","receiverInactiveStyle","receivingStyle","otherDraggingStyle","otherDraggingWithReceiverStyle","otherDraggingWithoutReceiverStyle","flatDraggingStyle","flattenOrNull","flatDraggingWithReceiverStyle","flatDraggingWithoutReceiverStyle","flatDragReleasedStyle","flatDragInactiveStyle","flatReceiverInactiveStyle","flatReceivingStyle","flatOtherDraggingStyle","flatOtherDraggingWithReceiverStyle","flatOtherDraggingWithoutReceiverStyle","flatBaseStyle","resetStyle","computeResetStyle","animatedDragStyle","draggedId","value","receiverId","phase","isMe","amReceiving","isDragging","mergeStyles","s","flatten","styles","result","base","specials","reset","baseMap","Object","entries","reduce","acc","k","v","key"],"sourceRoot":"../../../src","sources":["hooks/useViewStyles.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ import { useRef } from 'react';
4
+ import { Platform } from 'react-native';
5
+
6
+ /** Minimal structural type for a DOM node with style.overflow (no DOM lib needed). */
7
+
8
+ /** Structural type for list refs that expose getScrollableNode() on web. */
9
+
10
+ /**
11
+ * On mobile web, RNGH sets touch-action:none on gesture views which blocks
12
+ * native scroll. We set touch-action:pan-y (via gesture config) to allow
13
+ * scroll before long-press. When drag activates, this hook freezes the
14
+ * scroll container (overflow:hidden) so scroll stops. On drag end, unfreeze.
15
+ *
16
+ * On native, this is a no-op.
17
+ */
18
+ export function useWebScrollFreeze(scrollRef) {
19
+ const frozenRef = useRef(false);
20
+ const savedOverflowRef = useRef('');
21
+ const getScrollNode = () => {
22
+ if (Platform.OS !== 'web') return null;
23
+ // Narrow cast: web scroll methods aren't in RN type defs but exist at runtime
24
+ const list = scrollRef.current;
25
+ if (!list) return null;
26
+ // FlatList.getScrollableNode() returns the underlying DOM scroll element.
27
+ // Some list components (FlashList) expose it on _listRef instead.
28
+ return list.getScrollableNode?.() ?? list._listRef?.getScrollableNode?.() ?? null;
29
+ };
30
+ const freeze = () => {
31
+ if (frozenRef.current) return;
32
+ const node = getScrollNode();
33
+ if (node?.style) {
34
+ savedOverflowRef.current = node.style.overflow;
35
+ node.style.overflow = 'hidden';
36
+ frozenRef.current = true;
37
+ }
38
+ };
39
+ const unfreeze = () => {
40
+ if (!frozenRef.current) return;
41
+ const node = getScrollNode();
42
+ if (node?.style) {
43
+ node.style.overflow = savedOverflowRef.current || 'auto';
44
+ frozenRef.current = false;
45
+ }
46
+ };
47
+ return {
48
+ freeze,
49
+ unfreeze
50
+ };
51
+ }
52
+ //# sourceMappingURL=useWebScrollFreeze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","Platform","useWebScrollFreeze","scrollRef","frozenRef","savedOverflowRef","getScrollNode","OS","list","current","getScrollableNode","_listRef","freeze","node","style","overflow","unfreeze"],"sourceRoot":"../../../src","sources":["hooks/useWebScrollFreeze.ts"],"mappings":";;AACA,SAASA,MAAM,QAAQ,OAAO;AAC9B,SAASC,QAAQ,QAAQ,cAAc;;AAEvC;;AAKA;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACC,SAAmC,EAAE;EACtE,MAAMC,SAAS,GAAGJ,MAAM,CAAC,KAAK,CAAC;EAC/B,MAAMK,gBAAgB,GAAGL,MAAM,CAAC,EAAE,CAAC;EAEnC,MAAMM,aAAa,GAAGA,CAAA,KAA4B;IAChD,IAAIL,QAAQ,CAACM,EAAE,KAAK,KAAK,EAAE,OAAO,IAAI;IACtC;IACA,MAAMC,IAAI,GAAGL,SAAS,CAACM,OAAmC;IAC1D,IAAI,CAACD,IAAI,EAAE,OAAO,IAAI;IACtB;IACA;IACA,OACEA,IAAI,CAACE,iBAAiB,GAAG,CAAC,IAAIF,IAAI,CAACG,QAAQ,EAAED,iBAAiB,GAAG,CAAC,IAAI,IAAI;EAE9E,CAAC;EAED,MAAME,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAIR,SAAS,CAACK,OAAO,EAAE;IACvB,MAAMI,IAAI,GAAGP,aAAa,CAAC,CAAC;IAC5B,IAAIO,IAAI,EAAEC,KAAK,EAAE;MACfT,gBAAgB,CAACI,OAAO,GAAGI,IAAI,CAACC,KAAK,CAACC,QAAQ;MAC9CF,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAG,QAAQ;MAC9BX,SAAS,CAACK,OAAO,GAAG,IAAI;IAC1B;EACF,CAAC;EAED,MAAMO,QAAQ,GAAGA,CAAA,KAAM;IACrB,IAAI,CAACZ,SAAS,CAACK,OAAO,EAAE;IACxB,MAAMI,IAAI,GAAGP,aAAa,CAAC,CAAC;IAC5B,IAAIO,IAAI,EAAEC,KAAK,EAAE;MACfD,IAAI,CAACC,KAAK,CAACC,QAAQ,GAAGV,gBAAgB,CAACI,OAAO,IAAI,MAAM;MACxDL,SAAS,CAACK,OAAO,GAAG,KAAK;IAC3B;EACF,CAAC;EAED,OAAO;IAAEG,MAAM;IAAEI;EAAS,CAAC;AAC7B","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ // ── Namespace ────────────────────────────────────────────────────────
4
+ export { Drax } from "./Drax.js";
5
+
6
+ // ── Public Components ────────────────────────────────────────────────
7
+ export { DraxHandle } from "./DraxHandle.js";
8
+ export { DraxList } from "./DraxList.js";
9
+ export { DraxProvider } from "./DraxProvider.js";
10
+ export { DraxScrollView } from "./DraxScrollView.js";
11
+ export { DraxView } from "./DraxView.js";
12
+
13
+ // Sortable (list-agnostic)
14
+ export { SortableContainer } from "./SortableContainer.js";
15
+ export { SortableItem } from "./SortableItem.js";
16
+
17
+ // Cross-container sortable (board)
18
+ export { SortableBoardContainer } from "./SortableBoardContainer.js";
19
+ // ── Public Hooks ─────────────────────────────────────────────────────
20
+ export { useDraxContext } from "./hooks/useDraxContext.js";
21
+ export { useDraxId } from "./hooks/useDraxId.js";
22
+ export { useDraxMethods } from "./hooks/useDraxMethods.js";
23
+ export { useItemContext } from "./SortableItemContext.js";
24
+ export { useSortableList } from "./hooks/useSortableList.js";
25
+ export { useSortableBoard } from "./hooks/useSortableBoard.js";
26
+
27
+ // ── Public Utilities ─────────────────────────────────────────────────
28
+ export { snapToAlignment, packGrid } from "./math.js";
29
+
30
+ // ── Public Types ─────────────────────────────────────────────────────
31
+
32
+ export {
33
+ // Enums
34
+ DraxViewDragStatus, DraxViewReceiveStatus, DraxSnapbackTargetPreset, AutoScrollDirection,
35
+ // Type guards
36
+ isPosition } from "./types.js";
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Drax","DraxHandle","DraxList","DraxProvider","DraxScrollView","DraxView","SortableContainer","SortableItem","SortableBoardContainer","useDraxContext","useDraxId","useDraxMethods","useItemContext","useSortableList","useSortableBoard","snapToAlignment","packGrid","DraxViewDragStatus","DraxViewReceiveStatus","DraxSnapbackTargetPreset","AutoScrollDirection","isPosition"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA,SAASA,IAAI,QAAQ,WAAQ;;AAE7B;AACA,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,QAAQ,QAAQ,eAAY;AACrC,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,QAAQ,QAAQ,eAAY;;AAErC;AACA,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,YAAY,QAAQ,mBAAgB;;AAE7C;AACA,SAASC,sBAAsB,QAAQ,6BAA0B;AAGjE;AACA,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,SAAS,QAAQ,sBAAmB;AAC7C,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,cAAc,QAAQ,0BAAuB;AACtD,SAASC,eAAe,QAAQ,4BAAyB;AACzD,SAASC,gBAAgB,QAAQ,6BAA0B;;AAE3D;AACA,SAASC,eAAe,EAAEC,QAAQ,QAAQ,WAAQ;;AAGlD;;AAuEA;AACE;AACAC,kBAAkB,EAClBC,qBAAqB,EACrBC,wBAAwB,EACxBC,mBAAmB;AAEnB;AACAC,UAAU,QACL,YAAS","ignoreList":[]}