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":["useRef","StyleSheet","View","withDelay","withTiming","runOnJS","runOnUI","computeAbsolutePositionWorklet","getRelativePosition","defaultSnapbackDelay","defaultSnapbackDuration","DraxSnapbackTargetPreset","DraxViewDragStatus","DraxViewReceiveStatus","isPosition","isDraggable","jsx","_jsx","hoverResetStyle","margin","marginHorizontal","marginVertical","marginTop","marginBottom","marginLeft","marginRight","position","left","top","right","undefined","bottom","useCallbackDispatch","deps","getViewEntry","spatialIndexSV","scrollOffsetsSV","draggedIdSV","dragPhaseSV","hoverPositionSV","grabOffsetSV","startPositionSV","setHoverContent","hoverReadySV","onProviderDragStart","onProviderDrag","onProviderDragEnd","droppedItemsRef","currentMonitorIdsRef","buildDraggedViewData","draggedId","absolutePosition","entry","startPos","value","grabOffset","dragTranslation","x","y","measurements","width","height","id","parentId","payload","props","dragPayload","dragTranslationRatio","dragOffset","grabOffsetRatio","hoverPosition","buildReceiverViewData","receiverId","idx","spatialIndex","entries","offsets","absPos","absMeasurements","_transformDetected","relativePosition","relativePositionRatio","receiverPayload","receiveOffset","receiveOffsetRatio","handleDragStart","_grabOffset","draggedEntry","dragged","onDragStart","dragAbsolutePosition","hoverStylesRef","current","hoverStyle","flattenOrNull","hoverDraggingStyle","hoverDraggingWithReceiverStyle","hoverDraggingWithoutReceiverStyle","hoverDragReleasedStyle","noHover","renderFn","renderHoverContent","renderContent","content","viewState","dragStatus","Dragging","receiveStatus","Inactive","trackingStatus","dragging","receiving","hover","children","dimensions","dims","viewStyle","style","handleReceiverChange","oldReceiverId","newReceiverId","monitorIds","newMonitorIds","prevMonitorIds","length","hasOnDragOver","onDragOver","receiverEntry","hasOnReceiveDragOver","onReceiveDragOver","hasOnDrag","onDrag","draggedPayload","baseEventData","acceptedReceiverId","newReceiverEntry","acceptsDrag","capacity","droppedSet","get","count","size","dynamicCallback","dynamicReceptiveCallback","accepted","targetId","targetMeasurements","_receiverIdSV","_rejectedReceiverIdSV","_rejectedId","receiverIdSV","rejectedReceiverIdSV","oldReceiverEntry","oldReceiverData","onDragExit","receiver","onReceiveDragExit","cancelled","newReceiverData","onDragEnter","onReceiveDragEnter","receiverData","prevWasEmpty","monitorId","monitorEntry","monitorOffset","monitorOffsetRatio","monitorEventData","isNew","includes","onMonitorDragStart","onMonitorDragEnter","onMonitorDragOver","prevMonitorId","onMonitorDragExit","handleDragEnd","finalMonitorIds","_hoverReadySV","_dragPhaseSV","_draggedIdSV","_hoverPositionSV","snapTarget","Default","receiverAbsPos","draggedDims","receiverDims","dragDropResponse","onDragDrop","receiveDropResponse","onReceiveDragDrop","has","set","Set","add","dragEndResponse","onDragEnd","monitorIdsToUse","monitorDropResponse","onMonitorDragDrop","monitorEndResponse","onMonitorDragEnd","performSnapback","hoverClearDeferredRef","target","animateSnap","snapDelay","snapDuration","snapAnimator","snapEventData","onSnapComplete","onSnapEnd","onReceiveSnapEnd","None","toValue","delay","duration","finishedCallback","finished","s","flatten"],"sourceRoot":"../../../src","sources":["hooks/useCallbackDispatch.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,240 @@
1
+ "use strict";
2
+
3
+ import { Platform } from 'react-native';
4
+ import { runOnJS } from 'react-native-worklets';
5
+ import { useDraxPanGesture } from "../compat/index.js";
6
+ import { computeAbsolutePositionWorklet, hitTestWorklet } from "../math.js";
7
+ import { useDraxContext } from "./useDraxContext.js";
8
+
9
+ /**
10
+ * Creates a Pan gesture for a draggable DraxView.
11
+ * Hit-testing runs entirely on the UI thread — zero runOnJS per frame
12
+ * unless the receiver changes.
13
+ *
14
+ * On RNGH v3, `enabledSV` and `longPressDelaySV` are SharedValues that
15
+ * reconfigure the native gesture handler on the UI thread — zero JS bridge.
16
+ * On RNGH v2, they are mirrored to plain values with gesture recreation on change.
17
+ */
18
+ export const useDragGesture = (id, viewSpatialIndexSV, enabledSV, longPressDelaySV, lockDragXPosition, lockDragYPosition, dragBoundsSV, dragActivationFailOffset, scrollHorizontal) => {
19
+ const {
20
+ draggedIdSV,
21
+ receiverIdSV,
22
+ rejectedReceiverIdSV,
23
+ dragPhaseSV,
24
+ hoverPositionSV,
25
+ dragAbsolutePositionSV,
26
+ spatialIndexSV,
27
+ scrollOffsetsSV,
28
+ grabOffsetSV,
29
+ startPositionSV,
30
+ rootOffsetSV,
31
+ handleDragStart,
32
+ handleReceiverChange,
33
+ handleDragEnd
34
+ } = useDraxContext();
35
+
36
+ // On web, RNGH defaults touch-action to 'none' which blocks native scroll.
37
+ // Allow the scroll direction so users can scroll before long-press activates.
38
+ // SortableContainer freezes the scroll container when drag starts.
39
+ //
40
+ // Priority: lockDragYPosition (explicit axis lock → pan-x) > scrollHorizontal
41
+ // (hint from SortableItem for horizontal lists without axis lock) > default pan-y.
42
+ const touchAction = Platform.OS === 'web' ? lockDragYPosition || scrollHorizontal ? 'pan-x' : 'pan-y' : undefined;
43
+ const failOffset = dragActivationFailOffset !== undefined ? [-dragActivationFailOffset, dragActivationFailOffset] : undefined;
44
+ const gesture = useDraxPanGesture({
45
+ enabledSV,
46
+ longPressDelaySV,
47
+ maxPointers: 1,
48
+ shouldCancelWhenOutside: false,
49
+ touchAction,
50
+ failOffsetX: failOffset,
51
+ failOffsetY: failOffset,
52
+ onActivate: event => {
53
+ 'worklet';
54
+
55
+ // Convert screen-absolute touch to root-view-relative
56
+ const rootOffset = rootOffsetSV.value;
57
+ const rootRelX = event.absoluteX - rootOffset.x;
58
+ const rootRelY = event.absoluteY - rootOffset.y;
59
+
60
+ // Derive the view's visual position from the gesture event.
61
+ // event.x/y = touch relative to the view's bounds (accounts for transforms).
62
+ // This is more accurate than the spatial index for sortable items where
63
+ // permanent shifts move views via CSS transform without updating layout.
64
+ const viewAbsPos = {
65
+ x: rootRelX - event.x,
66
+ y: rootRelY - event.y
67
+ };
68
+
69
+ // Grab offset = touch position within the view
70
+ const grabOffset = {
71
+ x: event.x,
72
+ y: event.y
73
+ };
74
+
75
+ // Store shared state (all positions in root-relative space).
76
+ // DO NOT set dragPhaseSV here — it's set by HoverLayer's useLayoutEffect
77
+ // AFTER hover content is committed to the DOM. This prevents the grab blink
78
+ // (item going invisible before hover is visible).
79
+ draggedIdSV.value = id;
80
+ grabOffsetSV.value = grabOffset;
81
+ startPositionSV.value = {
82
+ x: rootRelX,
83
+ y: rootRelY
84
+ };
85
+ dragAbsolutePositionSV.value = {
86
+ x: rootRelX,
87
+ y: rootRelY
88
+ };
89
+
90
+ // Compute initial hover position (root-relative)
91
+ let hoverX = lockDragXPosition ? viewAbsPos.x : rootRelX - grabOffset.x;
92
+ let hoverY = lockDragYPosition ? viewAbsPos.y : rootRelY - grabOffset.y;
93
+
94
+ // Clamp to drag bounds if specified
95
+ if (dragBoundsSV?.value) {
96
+ const b = dragBoundsSV.value;
97
+ const entries = spatialIndexSV.value;
98
+ const viewEntry = entries[viewSpatialIndexSV.value];
99
+ const vw = viewEntry ? viewEntry.width : 0;
100
+ const vh = viewEntry ? viewEntry.height : 0;
101
+ hoverX = Math.max(b.x, Math.min(b.x + b.width - vw, hoverX));
102
+ hoverY = Math.max(b.y, Math.min(b.y + b.height - vh, hoverY));
103
+ }
104
+ hoverPositionSV.value = {
105
+ x: hoverX,
106
+ y: hoverY
107
+ };
108
+
109
+ // Reset receiver and rejection cache
110
+ receiverIdSV.value = '';
111
+ rejectedReceiverIdSV.value = '';
112
+
113
+ // Bounce to JS for callback dispatch + hover content setup
114
+ runOnJS(handleDragStart)(id, {
115
+ x: rootRelX,
116
+ y: rootRelY
117
+ }, grabOffset);
118
+ },
119
+ onUpdate: event => {
120
+ 'worklet';
121
+
122
+ // Convert screen-absolute touch to root-view-relative
123
+ const rootOffset = rootOffsetSV.value;
124
+ const rootRelX = event.absoluteX - rootOffset.x;
125
+ const rootRelY = event.absoluteY - rootOffset.y;
126
+ const rootRelPos = {
127
+ x: rootRelX,
128
+ y: rootRelY
129
+ };
130
+ dragAbsolutePositionSV.value = rootRelPos;
131
+
132
+ // Compute hover position (root-relative)
133
+ const grabOffset = grabOffsetSV.value;
134
+
135
+ // Read current spatial index
136
+ const spatialIndex = viewSpatialIndexSV.value;
137
+ const entries = spatialIndexSV.value;
138
+ const viewAbsPos = computeAbsolutePositionWorklet(spatialIndex, entries, scrollOffsetsSV.value);
139
+ let hoverX = lockDragXPosition ? viewAbsPos.x : rootRelX - grabOffset.x;
140
+ let hoverY = lockDragYPosition ? viewAbsPos.y : rootRelY - grabOffset.y;
141
+
142
+ // Clamp to drag bounds if specified
143
+ if (dragBoundsSV?.value) {
144
+ const b = dragBoundsSV.value;
145
+ const viewEntry = entries[spatialIndex];
146
+ const vw = viewEntry ? viewEntry.width : 0;
147
+ const vh = viewEntry ? viewEntry.height : 0;
148
+ hoverX = Math.max(b.x, Math.min(b.x + b.width - vw, hoverX));
149
+ hoverY = Math.max(b.y, Math.min(b.y + b.height - vh, hoverY));
150
+ }
151
+ hoverPositionSV.value = {
152
+ x: hoverX,
153
+ y: hoverY
154
+ };
155
+
156
+ // Hit-test at the center of the hover view (not at the raw finger position)
157
+ // so that receiving activates when the dragged item visually overlaps the receiver.
158
+ const viewEntry = entries[spatialIndex];
159
+ const hitTestPos = {
160
+ x: hoverX + (viewEntry ? viewEntry.width / 2 : 0),
161
+ y: hoverY + (viewEntry ? viewEntry.height / 2 : 0)
162
+ };
163
+ dragAbsolutePositionSV.value = hitTestPos;
164
+ const result = hitTestWorklet(hitTestPos, entries, scrollOffsetsSV.value, id, viewEntry ? {
165
+ width: viewEntry.width,
166
+ height: viewEntry.height
167
+ } : undefined);
168
+
169
+ // Skip the rejected receiver — don't set it in receiverIdSV and don't
170
+ // send it to JS. This prevents the reject → clear → re-detect → reject loop.
171
+ let candidateReceiverId = result.receiverId;
172
+ if (candidateReceiverId === rejectedReceiverIdSV.value) {
173
+ candidateReceiverId = '';
174
+ }
175
+
176
+ // Clear rejection cache once drag leaves the rejected receiver's bounds
177
+ if (result.receiverId !== rejectedReceiverIdSV.value && rejectedReceiverIdSV.value !== '') {
178
+ rejectedReceiverIdSV.value = '';
179
+ }
180
+
181
+ // Always bounce to JS for callback dispatch.
182
+ // handleReceiverChange safely handles same-receiver calls (skips exit/enter)
183
+ // and dispatches continuous callbacks (onDrag, onDragOver, onReceiveDragOver)
184
+ // plus monitor position updates for slot detection.
185
+ const oldReceiver = receiverIdSV.value;
186
+ const receiverChanged = candidateReceiverId !== oldReceiver;
187
+ if (receiverChanged) {
188
+ receiverIdSV.value = candidateReceiverId;
189
+ }
190
+ runOnJS(handleReceiverChange)(oldReceiver, candidateReceiverId, hitTestPos, result.monitorIds);
191
+ },
192
+ onDeactivate: _event => {
193
+ 'worklet';
194
+
195
+ const currentDraggedId = draggedIdSV.value;
196
+ const currentReceiverId = receiverIdSV.value;
197
+
198
+ // Run final hit-test to capture current monitors.
199
+ // Monitor IDs are only updated on receiver changes, so if no receiver
200
+ // change happened during the drag, monitors would be empty in handleDragEnd.
201
+ const deactivateEntries = spatialIndexSV.value;
202
+ const viewEntryFinal = deactivateEntries[viewSpatialIndexSV.value];
203
+ const finalDims = viewEntryFinal ? {
204
+ width: viewEntryFinal.width,
205
+ height: viewEntryFinal.height
206
+ } : undefined;
207
+ const finalHitResult = hitTestWorklet(dragAbsolutePositionSV.value, deactivateEntries, scrollOffsetsSV.value, id, finalDims);
208
+
209
+ // Set phase and clear receiver on UI thread so useAnimatedStyle
210
+ // re-evaluates immediately (receiver style clears instantly).
211
+ dragPhaseSV.value = 'releasing';
212
+ receiverIdSV.value = '';
213
+
214
+ // Bounce to JS for end callbacks + snap animation
215
+ runOnJS(handleDragEnd)(currentDraggedId, currentReceiverId, false, finalHitResult.monitorIds);
216
+ },
217
+ onFinalize: (_event, didSucceed) => {
218
+ 'worklet';
219
+
220
+ // If gesture was cancelled (not ended normally).
221
+ // Check draggedIdSV (set in onActivate) instead of dragPhaseSV
222
+ // because phase is now set later in handleDragStart via runOnUI.
223
+ if (!didSucceed && draggedIdSV.value !== '') {
224
+ const currentDraggedId = draggedIdSV.value;
225
+ const currentReceiverId = receiverIdSV.value;
226
+ const viewEntryCancel = spatialIndexSV.value[viewSpatialIndexSV.value];
227
+ const cancelDims = viewEntryCancel ? {
228
+ width: viewEntryCancel.width,
229
+ height: viewEntryCancel.height
230
+ } : undefined;
231
+ const finalHitResult = hitTestWorklet(dragAbsolutePositionSV.value, spatialIndexSV.value, scrollOffsetsSV.value, id, cancelDims);
232
+ dragPhaseSV.value = 'releasing';
233
+ receiverIdSV.value = '';
234
+ runOnJS(handleDragEnd)(currentDraggedId, currentReceiverId, true, finalHitResult.monitorIds);
235
+ }
236
+ }
237
+ });
238
+ return gesture;
239
+ };
240
+ //# sourceMappingURL=useDragGesture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","runOnJS","useDraxPanGesture","computeAbsolutePositionWorklet","hitTestWorklet","useDraxContext","useDragGesture","id","viewSpatialIndexSV","enabledSV","longPressDelaySV","lockDragXPosition","lockDragYPosition","dragBoundsSV","dragActivationFailOffset","scrollHorizontal","draggedIdSV","receiverIdSV","rejectedReceiverIdSV","dragPhaseSV","hoverPositionSV","dragAbsolutePositionSV","spatialIndexSV","scrollOffsetsSV","grabOffsetSV","startPositionSV","rootOffsetSV","handleDragStart","handleReceiverChange","handleDragEnd","touchAction","OS","undefined","failOffset","gesture","maxPointers","shouldCancelWhenOutside","failOffsetX","failOffsetY","onActivate","event","rootOffset","value","rootRelX","absoluteX","x","rootRelY","absoluteY","y","viewAbsPos","grabOffset","hoverX","hoverY","b","entries","viewEntry","vw","width","vh","height","Math","max","min","onUpdate","rootRelPos","spatialIndex","hitTestPos","result","candidateReceiverId","receiverId","oldReceiver","receiverChanged","monitorIds","onDeactivate","_event","currentDraggedId","currentReceiverId","deactivateEntries","viewEntryFinal","finalDims","finalHitResult","onFinalize","didSucceed","viewEntryCancel","cancelDims"],"sourceRoot":"../../../src","sources":["hooks/useDragGesture.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ import { use } from 'react';
4
+ import { DraxContext } from "../DraxContext.js";
5
+ export const useDraxContext = () => {
6
+ const drax = use(DraxContext);
7
+ if (!drax) {
8
+ throw Error('No DraxProvider found');
9
+ }
10
+ return drax;
11
+ };
12
+ //# sourceMappingURL=useDraxContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["use","DraxContext","useDraxContext","drax","Error"],"sourceRoot":"../../../src","sources":["hooks/useDraxContext.ts"],"mappings":";;AAAA,SAASA,GAAG,QAAQ,OAAO;AAE3B,SAASC,WAAW,QAAQ,mBAAgB;AAE5C,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMC,IAAI,GAAGH,GAAG,CAACC,WAAW,CAAC;EAC7B,IAAI,CAACE,IAAI,EAAE;IACT,MAAMC,KAAK,CAAC,uBAAuB,CAAC;EACtC;EACA,OAAOD,IAAI;AACb,CAAC","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import { useState } from 'react';
4
+ import { generateRandomId } from "../math.js";
5
+
6
+ // Return explicitId, or a consistent randomly generated identifier if explicitId is falsy.
7
+ export const useDraxId = explicitId => {
8
+ // A generated unique identifier for this view, for use if id prop is not specified.
9
+ const [randomId] = useState(generateRandomId);
10
+ // We use || rather than ?? for the return value in case explicitId is an empty string.
11
+ return explicitId || randomId;
12
+ };
13
+ //# sourceMappingURL=useDraxId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","generateRandomId","useDraxId","explicitId","randomId"],"sourceRoot":"../../../src","sources":["hooks/useDraxId.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAEhC,SAASC,gBAAgB,QAAQ,YAAS;;AAE1C;AACA,OAAO,MAAMC,SAAS,GAAIC,UAAmB,IAAK;EAChD;EACA,MAAM,CAACC,QAAQ,CAAC,GAAGJ,QAAQ,CAACC,gBAAgB,CAAC;EAC7C;EACA,OAAOE,UAAU,IAAIC,QAAQ;AAC/B,CAAC","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ import { useDraxContext } from "./useDraxContext.js";
4
+
5
+ /**
6
+ * Imperative methods for controlling and querying the Drax provider.
7
+ *
8
+ * Must be called within a `<DraxProvider>`.
9
+ */
10
+ export const useDraxMethods = () => {
11
+ const ctx = useDraxContext();
12
+
13
+ /**
14
+ * Trigger re-measurement of all registered views.
15
+ * Useful after dynamic layout changes where onLayout may not fire
16
+ * (e.g., orientation changes, animated layout transitions).
17
+ */
18
+ const requestPositionUpdate = () => {
19
+ // Re-measuring is done by reading each view's measure function from
20
+ // the spatial index. For now, this triggers a spatial index refresh
21
+ // by writing the current value back — views that are still mounted
22
+ // will re-measure on the next layout pass.
23
+ const current = ctx.spatialIndexSV.value;
24
+ ctx.spatialIndexSV.value = [...current];
25
+ };
26
+
27
+ /**
28
+ * Get the set of dragged item IDs currently dropped on a specific receiver.
29
+ * Returns an empty Set if no items have been dropped on the receiver.
30
+ */
31
+ const getDroppedItems = receiverId => {
32
+ if (receiverId) {
33
+ return ctx.droppedItemsRef.current.get(receiverId) ?? new Set();
34
+ }
35
+ return new Map(ctx.droppedItemsRef.current);
36
+ };
37
+
38
+ /**
39
+ * Clear all tracked dropped items for a specific receiver,
40
+ * or clear all dropped items if no receiverId is provided.
41
+ * Call this when items are programmatically removed from a drop zone.
42
+ */
43
+ const clearDroppedItems = receiverId => {
44
+ if (receiverId) {
45
+ ctx.droppedItemsRef.current.delete(receiverId);
46
+ } else {
47
+ ctx.droppedItemsRef.current.clear();
48
+ }
49
+ };
50
+
51
+ /**
52
+ * Check if a drag is currently active.
53
+ */
54
+ const isDragging = () => {
55
+ return ctx.draggedIdSV.value !== '';
56
+ };
57
+
58
+ /**
59
+ * Get the ID of the currently dragged view, or undefined if no drag is active.
60
+ */
61
+ const getDraggedId = () => {
62
+ const id = ctx.draggedIdSV.value;
63
+ return id || undefined;
64
+ };
65
+ return {
66
+ requestPositionUpdate,
67
+ getDroppedItems,
68
+ clearDroppedItems,
69
+ isDragging,
70
+ getDraggedId
71
+ };
72
+ };
73
+ //# sourceMappingURL=useDraxMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useDraxContext","useDraxMethods","ctx","requestPositionUpdate","current","spatialIndexSV","value","getDroppedItems","receiverId","droppedItemsRef","get","Set","Map","clearDroppedItems","delete","clear","isDragging","draggedIdSV","getDraggedId","id","undefined"],"sourceRoot":"../../../src","sources":["hooks/useDraxMethods.ts"],"mappings":";;AAAA,SAASA,cAAc,QAAQ,qBAAkB;;AAEjD;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAClC,MAAMC,GAAG,GAAGF,cAAc,CAAC,CAAC;;EAE5B;AACF;AACA;AACA;AACA;EACE,MAAMG,qBAAqB,GAAGA,CAAA,KAAM;IAClC;IACA;IACA;IACA;IACA,MAAMC,OAAO,GAAGF,GAAG,CAACG,cAAc,CAACC,KAAK;IACxCJ,GAAG,CAACG,cAAc,CAACC,KAAK,GAAG,CAAC,GAAGF,OAAO,CAAC;EACzC,CAAC;;EAED;AACF;AACA;AACA;EACE,MAAMG,eAAe,GAAIC,UAAmB,IAA6C;IACvF,IAAIA,UAAU,EAAE;MACd,OAAON,GAAG,CAACO,eAAe,CAACL,OAAO,CAACM,GAAG,CAACF,UAAU,CAAC,IAAI,IAAIG,GAAG,CAAC,CAAC;IACjE;IACA,OAAO,IAAIC,GAAG,CAACV,GAAG,CAACO,eAAe,CAACL,OAAO,CAAC;EAC7C,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,MAAMS,iBAAiB,GAAIL,UAAmB,IAAK;IACjD,IAAIA,UAAU,EAAE;MACdN,GAAG,CAACO,eAAe,CAACL,OAAO,CAACU,MAAM,CAACN,UAAU,CAAC;IAChD,CAAC,MAAM;MACLN,GAAG,CAACO,eAAe,CAACL,OAAO,CAACW,KAAK,CAAC,CAAC;IACrC;EACF,CAAC;;EAED;AACF;AACA;EACE,MAAMC,UAAU,GAAGA,CAAA,KAAe;IAChC,OAAOd,GAAG,CAACe,WAAW,CAACX,KAAK,KAAK,EAAE;EACrC,CAAC;;EAED;AACF;AACA;EACE,MAAMY,YAAY,GAAGA,CAAA,KAA0B;IAC7C,MAAMC,EAAE,GAAGjB,GAAG,CAACe,WAAW,CAACX,KAAK;IAChC,OAAOa,EAAE,IAAIC,SAAS;EACxB,CAAC;EAED,OAAO;IACLjB,qBAAqB;IACrBI,eAAe;IACfM,iBAAiB;IACjBG,UAAU;IACVE;EACF,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useEffect, useRef } from 'react';
4
+ import { runOnUI, useSharedValue } from 'react-native-reanimated';
5
+ import { defaultAutoScrollIntervalLength } from "../params.js";
6
+ import { useDraxId } from "./useDraxId.js";
7
+
8
+ // FlatList is invariant in its type parameter — `any` is the only valid union constraint
9
+
10
+ export const useDraxScrollHandler = ({
11
+ idProp,
12
+ onContentSizeChangeProp,
13
+ onScrollProp,
14
+ externalRef,
15
+ doScroll
16
+ }) => {
17
+ const scrollRef = useRef(null);
18
+ const id = useDraxId(idProp);
19
+ const containerMeasurementsRef = useRef(undefined);
20
+ const scrollIntervalRef = useRef(undefined);
21
+ const contentSizeRef = useRef(undefined);
22
+ const scrollPosition = useSharedValue({
23
+ x: 0,
24
+ y: 0
25
+ });
26
+ const onMeasureContainer = measurements => {
27
+ containerMeasurementsRef.current = measurements;
28
+ };
29
+ const onContentSizeChange = (width, height) => {
30
+ contentSizeRef.current = {
31
+ x: width,
32
+ y: height
33
+ };
34
+ return onContentSizeChangeProp?.(width, height);
35
+ };
36
+ const onScroll = event => {
37
+ onScrollProp?.(event);
38
+ runOnUI((_scrollPos, _event) => {
39
+ 'worklet';
40
+
41
+ _scrollPos.value = {
42
+ x: _event.contentOffset.x,
43
+ y: _event.contentOffset.y
44
+ };
45
+ })(scrollPosition, event.nativeEvent);
46
+ };
47
+ const setScrollRefs = instance => {
48
+ if (instance) {
49
+ scrollRef.current = instance;
50
+ if (externalRef) {
51
+ if (typeof externalRef === 'function') {
52
+ externalRef(instance);
53
+ } else {
54
+ externalRef.current = instance;
55
+ }
56
+ }
57
+ }
58
+ };
59
+ const startScroll = useCallback(() => {
60
+ if (scrollIntervalRef.current) {
61
+ return;
62
+ }
63
+ doScroll.current();
64
+ scrollIntervalRef.current = setInterval(() => doScroll.current(), defaultAutoScrollIntervalLength);
65
+ }, [doScroll]);
66
+ const stopScroll = useCallback(() => {
67
+ if (scrollIntervalRef.current) {
68
+ clearInterval(scrollIntervalRef.current);
69
+ scrollIntervalRef.current = undefined;
70
+ }
71
+ }, []);
72
+ useEffect(() => {
73
+ if (scrollIntervalRef.current) {
74
+ stopScroll();
75
+ startScroll();
76
+ }
77
+ }, [stopScroll, startScroll]);
78
+
79
+ // Clean up interval on unmount
80
+ useEffect(() => {
81
+ return () => stopScroll();
82
+ }, [stopScroll]);
83
+ return {
84
+ id,
85
+ containerMeasurementsRef,
86
+ contentSizeRef,
87
+ onContentSizeChange,
88
+ onMeasureContainer,
89
+ onScroll,
90
+ scrollRef,
91
+ scrollPosition,
92
+ setScrollRefs,
93
+ startScroll,
94
+ stopScroll
95
+ };
96
+ };
97
+ //# sourceMappingURL=useDraxScrollHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","runOnUI","useSharedValue","defaultAutoScrollIntervalLength","useDraxId","useDraxScrollHandler","idProp","onContentSizeChangeProp","onScrollProp","externalRef","doScroll","scrollRef","id","containerMeasurementsRef","undefined","scrollIntervalRef","contentSizeRef","scrollPosition","x","y","onMeasureContainer","measurements","current","onContentSizeChange","width","height","onScroll","event","_scrollPos","_event","value","contentOffset","nativeEvent","setScrollRefs","instance","startScroll","setInterval","stopScroll","clearInterval"],"sourceRoot":"../../../src","sources":["hooks/useDraxScrollHandler.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ import { useCallback, useRef } from 'react';
4
+ /**
5
+ * Board-level coordinator for cross-container sortable drag.
6
+ *
7
+ * Maintains a registry of columns (each with their own useSortableList)
8
+ * and tracks cross-container transfer state. The actual monitor callbacks
9
+ * are handled by SortableBoardContainer.
10
+ */
11
+ export const useSortableBoard = options => {
12
+ const {
13
+ keyExtractor,
14
+ onTransfer
15
+ } = options;
16
+ const columnsRef = useRef(new Map());
17
+ const transferStateRef = useRef(undefined);
18
+ const registerColumn = useCallback((id, internal) => {
19
+ columnsRef.current.set(id, internal);
20
+ }, []);
21
+ const unregisterColumn = useCallback(id => {
22
+ columnsRef.current.delete(id);
23
+ }, []);
24
+ const internal = {
25
+ keyExtractor,
26
+ onTransfer,
27
+ columns: columnsRef.current,
28
+ registerColumn,
29
+ unregisterColumn,
30
+ transferState: transferStateRef
31
+ // finalizeTransfer is set by SortableBoardContainer (needs DraxContext access)
32
+ };
33
+ return {
34
+ _internal: internal
35
+ };
36
+ };
37
+ //# sourceMappingURL=useSortableBoard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useRef","useSortableBoard","options","keyExtractor","onTransfer","columnsRef","Map","transferStateRef","undefined","registerColumn","id","internal","current","set","unregisterColumn","delete","columns","transferState","_internal"],"sourceRoot":"../../../src","sources":["hooks/useSortableBoard.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,MAAM,QAAQ,OAAO;AAS3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAC3BC,OAAuC,IACR;EAC/B,MAAM;IAAEC,YAAY;IAAEC;EAAW,CAAC,GAAGF,OAAO;EAE5C,MAAMG,UAAU,GAAGL,MAAM,CAA6C,IAAIM,GAAG,CAAC,CAAC,CAAC;EAChF,MAAMC,gBAAgB,GAAGP,MAAM,CAAyCQ,SAAS,CAAC;EAElF,MAAMC,cAAc,GAAGV,WAAW,CAAC,CAACW,EAAU,EAAEC,QAAuC,KAAK;IAC1FN,UAAU,CAACO,OAAO,CAACC,GAAG,CAACH,EAAE,EAAEC,QAAQ,CAAC;EACtC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMG,gBAAgB,GAAGf,WAAW,CAAEW,EAAU,IAAK;IACnDL,UAAU,CAACO,OAAO,CAACG,MAAM,CAACL,EAAE,CAAC;EAC/B,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,QAAsC,GAAG;IAC7CR,YAAY;IACZC,UAAU;IACVY,OAAO,EAAEX,UAAU,CAACO,OAAO;IAC3BH,cAAc;IACdK,gBAAgB;IAChBG,aAAa,EAAEV;IACf;EACF,CAAC;EAED,OAAO;IAAEW,SAAS,EAAEP;EAAS,CAAC;AAChC,CAAC","ignoreList":[]}