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.
- package/LICENSE.md +1 -1
- package/README.md +390 -227
- package/lib/module/DebugOverlay.js +121 -0
- package/lib/module/DebugOverlay.js.map +1 -0
- package/lib/module/Drax.js +36 -0
- package/lib/module/Drax.js.map +1 -0
- package/lib/module/DraxContext.js +6 -0
- package/lib/module/DraxContext.js.map +1 -0
- package/lib/module/DraxHandle.js +47 -0
- package/lib/module/DraxHandle.js.map +1 -0
- package/lib/module/DraxHandleContext.js +11 -0
- package/lib/module/DraxHandleContext.js.map +1 -0
- package/lib/module/DraxList.js +108 -0
- package/lib/module/DraxList.js.map +1 -0
- package/lib/module/DraxProvider.js +203 -0
- package/lib/module/DraxProvider.js.map +1 -0
- package/lib/module/DraxScrollView.js +167 -0
- package/lib/module/DraxScrollView.js.map +1 -0
- package/lib/module/DraxSubprovider.js +21 -0
- package/lib/module/DraxSubprovider.js.map +1 -0
- package/lib/module/DraxView.js +348 -0
- package/lib/module/DraxView.js.map +1 -0
- package/lib/module/HoverLayer.js +152 -0
- package/lib/module/HoverLayer.js.map +1 -0
- package/lib/module/SortableBoardContainer.js +386 -0
- package/lib/module/SortableBoardContainer.js.map +1 -0
- package/lib/module/SortableBoardContext.js +6 -0
- package/lib/module/SortableBoardContext.js.map +1 -0
- package/lib/module/SortableContainer.js +571 -0
- package/lib/module/SortableContainer.js.map +1 -0
- package/lib/module/SortableItem.js +226 -0
- package/lib/module/SortableItem.js.map +1 -0
- package/lib/module/SortableItemContext.js +38 -0
- package/lib/module/SortableItemContext.js.map +1 -0
- package/lib/module/compat/detectVersion.js +19 -0
- package/lib/module/compat/detectVersion.js.map +1 -0
- package/lib/module/compat/index.js +5 -0
- package/lib/module/compat/index.js.map +1 -0
- package/lib/module/compat/types.js +4 -0
- package/lib/module/compat/types.js.map +1 -0
- package/lib/module/compat/useDraxPanGesture.js +94 -0
- package/lib/module/compat/useDraxPanGesture.js.map +1 -0
- package/lib/module/hooks/index.js +5 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useCallbackDispatch.js +688 -0
- package/lib/module/hooks/useCallbackDispatch.js.map +1 -0
- package/lib/module/hooks/useDragGesture.js +240 -0
- package/lib/module/hooks/useDragGesture.js.map +1 -0
- package/lib/module/hooks/useDraxContext.js +12 -0
- package/lib/module/hooks/useDraxContext.js.map +1 -0
- package/lib/module/hooks/useDraxId.js +13 -0
- package/lib/module/hooks/useDraxId.js.map +1 -0
- package/lib/module/hooks/useDraxMethods.js +73 -0
- package/lib/module/hooks/useDraxMethods.js.map +1 -0
- package/lib/module/hooks/useDraxScrollHandler.js +97 -0
- package/lib/module/hooks/useDraxScrollHandler.js.map +1 -0
- package/lib/module/hooks/useSortableBoard.js +37 -0
- package/lib/module/hooks/useSortableBoard.js.map +1 -0
- package/lib/module/hooks/useSortableList.js +988 -0
- package/lib/module/hooks/useSortableList.js.map +1 -0
- package/lib/module/hooks/useSpatialIndex.js +283 -0
- package/lib/module/hooks/useSpatialIndex.js.map +1 -0
- package/lib/module/hooks/useViewStyles.js +158 -0
- package/lib/module/hooks/useViewStyles.js.map +1 -0
- package/lib/module/hooks/useWebScrollFreeze.js +52 -0
- package/lib/module/hooks/useWebScrollFreeze.js.map +1 -0
- package/lib/module/index.js +37 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/math.js +294 -0
- package/lib/module/math.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/params.js +88 -0
- package/lib/module/params.js.map +1 -0
- package/lib/module/types.js +215 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/DebugOverlay.d.ts +17 -0
- package/lib/typescript/src/DebugOverlay.d.ts.map +1 -0
- package/lib/typescript/src/Drax.d.ts +28 -0
- package/lib/typescript/src/Drax.d.ts.map +1 -0
- package/lib/typescript/src/DraxContext.d.ts +3 -0
- package/lib/typescript/src/DraxContext.d.ts.map +1 -0
- package/lib/typescript/src/DraxHandle.d.ts +25 -0
- package/lib/typescript/src/DraxHandle.d.ts.map +1 -0
- package/lib/typescript/src/DraxHandleContext.d.ts +12 -0
- package/lib/typescript/src/DraxHandleContext.d.ts.map +1 -0
- package/lib/typescript/src/DraxList.d.ts +66 -0
- package/lib/typescript/src/DraxList.d.ts.map +1 -0
- package/lib/typescript/src/DraxProvider.d.ts +4 -0
- package/lib/typescript/src/DraxProvider.d.ts.map +1 -0
- package/lib/typescript/src/DraxScrollView.d.ts +7 -0
- package/lib/typescript/src/DraxScrollView.d.ts.map +1 -0
- package/lib/typescript/src/DraxSubprovider.d.ts +4 -0
- package/lib/typescript/src/DraxSubprovider.d.ts.map +1 -0
- package/lib/typescript/src/DraxView.d.ts +4 -0
- package/lib/typescript/src/DraxView.d.ts.map +1 -0
- package/lib/typescript/src/HoverLayer.d.ts +38 -0
- package/lib/typescript/src/HoverLayer.d.ts.map +1 -0
- package/lib/typescript/src/SortableBoardContainer.d.ts +11 -0
- package/lib/typescript/src/SortableBoardContainer.d.ts.map +1 -0
- package/lib/typescript/src/SortableBoardContext.d.ts +4 -0
- package/lib/typescript/src/SortableBoardContext.d.ts.map +1 -0
- package/lib/typescript/src/SortableContainer.d.ts +13 -0
- package/lib/typescript/src/SortableContainer.d.ts.map +1 -0
- package/lib/typescript/src/SortableItem.d.ts +14 -0
- package/lib/typescript/src/SortableItem.d.ts.map +1 -0
- package/lib/typescript/src/SortableItemContext.d.ts +37 -0
- package/lib/typescript/src/SortableItemContext.d.ts.map +1 -0
- package/lib/typescript/src/compat/detectVersion.d.ts +2 -0
- package/lib/typescript/src/compat/detectVersion.d.ts.map +1 -0
- package/lib/typescript/src/compat/index.d.ts +4 -0
- package/lib/typescript/src/compat/index.d.ts.map +1 -0
- package/lib/typescript/src/compat/types.d.ts +33 -0
- package/lib/typescript/src/compat/types.d.ts.map +1 -0
- package/lib/typescript/src/compat/useDraxPanGesture.d.ts +8 -0
- package/lib/typescript/src/compat/useDraxPanGesture.d.ts.map +1 -0
- package/lib/typescript/src/hooks/index.d.ts +3 -0
- package/lib/typescript/src/hooks/index.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useCallbackDispatch.d.ts +40 -0
- package/lib/typescript/src/hooks/useCallbackDispatch.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useDragGesture.d.ts +17 -0
- package/lib/typescript/src/hooks/useDragGesture.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useDraxContext.d.ts +2 -0
- package/lib/typescript/src/hooks/useDraxContext.d.ts.map +1 -0
- package/{build → lib/typescript/src}/hooks/useDraxId.d.ts +1 -0
- package/lib/typescript/src/hooks/useDraxId.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useDraxMethods.d.ts +13 -0
- package/lib/typescript/src/hooks/useDraxMethods.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useDraxScrollHandler.d.ts +27 -0
- package/lib/typescript/src/hooks/useDraxScrollHandler.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useSortableBoard.d.ts +10 -0
- package/lib/typescript/src/hooks/useSortableBoard.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useSortableList.d.ts +11 -0
- package/lib/typescript/src/hooks/useSortableList.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useSpatialIndex.d.ts +22 -0
- package/lib/typescript/src/hooks/useSpatialIndex.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useViewStyles.d.ts +183 -0
- package/lib/typescript/src/hooks/useViewStyles.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useWebScrollFreeze.d.ts +14 -0
- package/lib/typescript/src/hooks/useWebScrollFreeze.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +25 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/math.d.ts +76 -0
- package/lib/typescript/src/math.d.ts.map +1 -0
- package/{build → lib/typescript/src}/params.d.ts +13 -9
- package/lib/typescript/src/params.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +756 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/package.json +164 -34
- package/src/DebugOverlay.tsx +140 -0
- package/src/Drax.ts +33 -0
- package/src/DraxContext.ts +8 -0
- package/src/DraxHandle.tsx +52 -0
- package/src/DraxHandleContext.ts +15 -0
- package/src/DraxList.tsx +181 -0
- package/src/DraxProvider.tsx +224 -0
- package/src/DraxScrollView.tsx +180 -0
- package/src/DraxSubprovider.tsx +22 -0
- package/src/DraxView.tsx +430 -0
- package/src/HoverLayer.tsx +167 -0
- package/src/SortableBoardContainer.tsx +439 -0
- package/src/SortableBoardContext.ts +6 -0
- package/src/SortableContainer.tsx +650 -0
- package/src/SortableItem.tsx +264 -0
- package/src/SortableItemContext.ts +46 -0
- package/src/compat/detectVersion.ts +17 -0
- package/src/compat/index.ts +7 -0
- package/src/compat/types.ts +35 -0
- package/src/compat/useDraxPanGesture.ts +112 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useCallbackDispatch.tsx +830 -0
- package/src/hooks/useDragGesture.ts +273 -0
- package/src/hooks/useDraxContext.ts +11 -0
- package/src/hooks/useDraxId.ts +11 -0
- package/src/hooks/useDraxMethods.ts +71 -0
- package/src/hooks/useDraxScrollHandler.ts +121 -0
- package/src/hooks/useSortableBoard.ts +44 -0
- package/src/hooks/useSortableList.ts +1063 -0
- package/src/hooks/useSpatialIndex.ts +336 -0
- package/src/hooks/useViewStyles.ts +180 -0
- package/src/hooks/useWebScrollFreeze.ts +60 -0
- package/src/index.ts +111 -0
- package/src/math.ts +333 -0
- package/src/params.ts +74 -0
- package/src/types.ts +933 -0
- package/.editorconfig +0 -15
- package/.eslintrc.js +0 -4
- package/.prettierrc +0 -16
- package/CHANGELOG.md +0 -270
- package/CODE-OF-CONDUCT.md +0 -85
- package/CONTRIBUTING.md +0 -15
- package/FUNDING.yml +0 -4
- package/build/AllHoverViews.d.ts +0 -0
- package/build/AllHoverViews.js +0 -30
- package/build/DraxContext.d.ts +0 -2
- package/build/DraxContext.js +0 -6
- package/build/DraxList.d.ts +0 -8
- package/build/DraxList.js +0 -512
- package/build/DraxListItem.d.ts +0 -7
- package/build/DraxListItem.js +0 -121
- package/build/DraxProvider.d.ts +0 -2
- package/build/DraxProvider.js +0 -704
- package/build/DraxScrollView.d.ts +0 -6
- package/build/DraxScrollView.js +0 -136
- package/build/DraxSubprovider.d.ts +0 -3
- package/build/DraxSubprovider.js +0 -18
- package/build/DraxView.d.ts +0 -8
- package/build/DraxView.js +0 -93
- package/build/HoverView.d.ts +0 -8
- package/build/HoverView.js +0 -40
- package/build/PanGestureDetector.d.ts +0 -3
- package/build/PanGestureDetector.js +0 -49
- package/build/hooks/index.d.ts +0 -4
- package/build/hooks/index.js +0 -11
- package/build/hooks/useContent.d.ts +0 -23
- package/build/hooks/useContent.js +0 -212
- package/build/hooks/useDraxContext.d.ts +0 -1
- package/build/hooks/useDraxContext.js +0 -13
- package/build/hooks/useDraxId.js +0 -13
- package/build/hooks/useDraxProtocol.d.ts +0 -5
- package/build/hooks/useDraxProtocol.js +0 -32
- package/build/hooks/useDraxRegistry.d.ts +0 -78
- package/build/hooks/useDraxRegistry.js +0 -714
- package/build/hooks/useDraxScrollHandler.d.ts +0 -25
- package/build/hooks/useDraxScrollHandler.js +0 -89
- package/build/hooks/useDraxState.d.ts +0 -10
- package/build/hooks/useDraxState.js +0 -132
- package/build/hooks/useMeasurements.d.ts +0 -9
- package/build/hooks/useMeasurements.js +0 -119
- package/build/hooks/useStatus.d.ts +0 -11
- package/build/hooks/useStatus.js +0 -96
- package/build/index.d.ts +0 -9
- package/build/index.js +0 -33
- package/build/math.d.ts +0 -22
- package/build/math.js +0 -68
- package/build/params.js +0 -27
- package/build/transform.d.ts +0 -11
- package/build/transform.js +0 -59
- package/build/types.d.ts +0 -807
- package/build/types.js +0 -46
- package/docs/concept.md +0 -79
- package/docs/images/color-drag-drop.gif +0 -0
- package/docs/images/deck-cards.gif +0 -0
- package/docs/images/drag-drop-events.jpg +0 -0
- package/docs/images/knight-moves.gif +0 -0
- 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":";;AACA,SAASA,MAAM,QAAQ,OAAO;AAE9B,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,SAAS,EAAEC,UAAU,QAAQ,yBAAyB;AAC/D,SAASC,OAAO,EAAEC,OAAO,QAAQ,uBAAuB;AAGxD,SAASC,8BAA8B,EAAEC,mBAAmB,QAAQ,YAAS;AAC7E,SACEC,oBAAoB,EACpBC,uBAAuB,QAClB,cAAW;AAalB,SACEC,wBAAwB,EACxBC,kBAAkB,EAClBC,qBAAqB,EACrBC,UAAU,QACL,aAAU;AACjB,SAASC,WAAW,QAAQ,sBAAmB;;AAE/C;AACA;AACA;AADA,SAAAC,GAAA,IAAAC,IAAA;AAEA,MAAMC,eAAe,GAAG;EACtBC,MAAM,EAAE,CAAC;EACTC,gBAAgB,EAAE,CAAC;EACnBC,cAAc,EAAE,CAAC;EACjBC,SAAS,EAAE,CAAC;EACZC,YAAY,EAAE,CAAC;EACfC,UAAU,EAAE,CAAC;EACbC,WAAW,EAAE,CAAC;EACdC,QAAQ,EAAE,UAAU;EACpBC,IAAI,EAAE,CAAC;EACPC,GAAG,EAAE,CAAC;EACNC,KAAK,EAAEC,SAAS;EAChBC,MAAM,EAAED;AACV,CAAU;AAyBV;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,mBAAmB,GAAIC,IAA0B,IAAK;EACjE,MAAM;IACJC,YAAY;IACZC,cAAc;IACdC,eAAe;IACfC,WAAW;IACXC,WAAW;IACXC,eAAe;IACfC,YAAY;IACZC,eAAe;IACfC,eAAe;IACfC,YAAY;IACZC,mBAAmB;IACnBC,cAAc;IACdC,iBAAiB;IACjBC;EACF,CAAC,GAAGd,IAAI;;EAER;EACA,MAAMe,oBAAoB,GAAGhD,MAAM,CAAW,EAAE,CAAC;;EAGjD;EACA,MAAMiD,oBAAoB,GAAGA,CAC3BC,SAAiB,EACjBC,gBAA0B,KACe;IACzC,MAAMC,KAAK,GAAGlB,YAAY,CAACgB,SAAS,CAAC;IACrC,IAAI,CAACE,KAAK,EAAE,OAAOtB,SAAS;IAE5B,MAAMuB,QAAQ,GAAGZ,eAAe,CAACa,KAAK;IACtC,MAAMC,UAAU,GAAGf,YAAY,CAACc,KAAK;IACrC,MAAME,eAAe,GAAG;MACtBC,CAAC,EAAEN,gBAAgB,CAACM,CAAC,GAAGJ,QAAQ,CAACI,CAAC;MAClCC,CAAC,EAAEP,gBAAgB,CAACO,CAAC,GAAGL,QAAQ,CAACK;IACnC,CAAC;IAED,MAAMC,YAAY,GAAGP,KAAK,CAACO,YAAY;IACvC;IACA,MAAMC,KAAK,GAAGD,YAAY,EAAEC,KAAK,IAAI,CAAC;IACtC,MAAMC,MAAM,GAAGF,YAAY,EAAEE,MAAM,IAAI,CAAC;IAExC,OAAO;MACLC,EAAE,EAAEZ,SAAS;MACba,QAAQ,EAAEX,KAAK,CAACW,QAAQ;MACxBC,OAAO,EAAEZ,KAAK,CAACa,KAAK,CAACC,WAAW,IAAId,KAAK,CAACa,KAAK,CAACD,OAAO;MACvDL,YAAY;MACZQ,oBAAoB,EAAE;QACpBV,CAAC,EAAED,eAAe,CAACC,CAAC,GAAGG,KAAK;QAC5BF,CAAC,EAAEF,eAAe,CAACE,CAAC,GAAGG;MACzB,CAAC;MACDO,UAAU,EAAE;QACVX,CAAC,EAAEN,gBAAgB,CAACM,CAAC,IAAIE,YAAY,EAAEF,CAAC,IAAI,CAAC,CAAC;QAC9CC,CAAC,EAAEP,gBAAgB,CAACO,CAAC,IAAIC,YAAY,EAAED,CAAC,IAAI,CAAC;MAC/C,CAAC;MACDH,UAAU;MACVc,eAAe,EAAE;QACfZ,CAAC,EAAEF,UAAU,CAACE,CAAC,GAAGG,KAAK;QACvBF,CAAC,EAAEH,UAAU,CAACG,CAAC,GAAGG;MACpB,CAAC;MACDS,aAAa,EAAE/B,eAAe,CAACe;IACjC,CAAC;EACH,CAAC;;EAED;EACA,MAAMiB,qBAAqB,GAAGA,CAC5BC,UAAkB,EAClBrB,gBAA0B,KACgB;IAC1C,MAAMC,KAAK,GAAGlB,YAAY,CAACsC,UAAU,CAAC;IACtC,IAAI,CAACpB,KAAK,EAAEO,YAAY,EAAE,OAAO7B,SAAS;;IAE1C;IACA,MAAM2C,GAAG,GAAGrB,KAAK,CAACsB,YAAY;IAC9B,MAAMC,OAAO,GAAGxC,cAAc,CAACmB,KAAK;IACpC,MAAMsB,OAAO,GAAGxC,eAAe,CAACkB,KAAK;IACrC,MAAMuB,MAAM,GAAGtE,8BAA8B,CAACkE,GAAG,EAAEE,OAAO,EAAEC,OAAO,CAAC;IACpE,MAAME,eAAqC,GAAG;MAC5C,GAAGD,MAAM;MACTjB,KAAK,EAAER,KAAK,CAACO,YAAY,CAACC,KAAK;MAC/BC,MAAM,EAAET,KAAK,CAACO,YAAY,CAACE,MAAM;MACjCkB,kBAAkB,EAAE;IACtB,CAAC;IAED,MAAM;MAAEC,gBAAgB;MAAEC;IAAsB,CAAC,GAAGzE,mBAAmB,CACrE2C,gBAAgB,EAChB2B,eACF,CAAC;IAED,OAAO;MACLhB,EAAE,EAAEU,UAAU;MACdT,QAAQ,EAAEX,KAAK,CAACW,QAAQ;MACxBC,OAAO,EAAEZ,KAAK,CAACa,KAAK,CAACiB,eAAe,IAAI9B,KAAK,CAACa,KAAK,CAACD,OAAO;MAC3DL,YAAY,EAAEP,KAAK,CAACO,YAAY;MAChCwB,aAAa,EAAEH,gBAAgB;MAC/BI,kBAAkB,EAAEH;IACtB,CAAC;EACH,CAAC;;EAED;EACA,MAAMI,eAAe,GAAGA,CACtBnC,SAAiB,EACjBC,gBAA0B,EAC1BmC,WAAqB,KAClB;IACH,MAAMC,YAAY,GAAGrD,YAAY,CAACgB,SAAS,CAAC;IAC5C,IAAI,CAACqC,YAAY,EAAE;IAEnB,MAAMC,OAAO,GAAGvC,oBAAoB,CAACC,SAAS,EAAEC,gBAAgB,CAAC;IACjE,IAAI,CAACqC,OAAO,EAAE;IAEd,MAAMnC,QAAQ,GAAGZ,eAAe,CAACa,KAAK;IACtC,MAAME,eAAe,GAAG;MACtBC,CAAC,EAAEN,gBAAgB,CAACM,CAAC,GAAGJ,QAAQ,CAACI,CAAC;MAClCC,CAAC,EAAEP,gBAAgB,CAACO,CAAC,GAAGL,QAAQ,CAACK;IACnC,CAAC;;IAED;IACA6B,YAAY,CAACtB,KAAK,CAACwB,WAAW,GAAG;MAC/BC,oBAAoB,EAAEvC,gBAAgB;MACtCK,eAAe;MACfgC;IACF,CAAC,CAAC;;IAEF;IACA;IACAvD,IAAI,CAAC0D,cAAc,CAACC,OAAO,GAAG;MAC5BC,UAAU,EAAEC,aAAa,CAACP,YAAY,CAACtB,KAAK,CAAC4B,UAAU,CAAC;MACxDE,kBAAkB,EAAED,aAAa,CAACP,YAAY,CAACtB,KAAK,CAAC8B,kBAAkB,CAAC;MACxEC,8BAA8B,EAAEF,aAAa,CAACP,YAAY,CAACtB,KAAK,CAAC+B,8BAA8B,CAAC;MAChGC,iCAAiC,EAAEH,aAAa,CAACP,YAAY,CAACtB,KAAK,CAACgC,iCAAiC,CAAC;MACtGC,sBAAsB,EAAEJ,aAAa,CAACP,YAAY,CAACtB,KAAK,CAACiC,sBAAsB;IACjF,CAAC;;IAED;IACA,IAAInF,WAAW,CAACwE,YAAY,CAACtB,KAAK,CAAC,IAAI,CAACsB,YAAY,CAACtB,KAAK,CAACkC,OAAO,EAAE;MAClE,MAAMC,QAAQ,GACZb,YAAY,CAACtB,KAAK,CAACoC,kBAAkB,IACrCd,YAAY,CAACtB,KAAK,CAACqC,aAAa;MAClC,IAAIF,QAAQ,EAAE;QACZ,MAAMG,OAAO,GAAGH,QAAQ,CAAC;UACvBI,SAAS,EAAE;YACTC,UAAU,EAAE7F,kBAAkB,CAAC8F,QAAQ;YACvCC,aAAa,EAAE9F,qBAAqB,CAAC+F,QAAQ;YAC7CrD,UAAU,EAAEiC,OAAO,CAACjC,UAAU;YAC9Bc,eAAe,EAAEmB,OAAO,CAACnB;UAC3B,CAAC;UACDwC,cAAc,EAAE;YAAEC,QAAQ,EAAE,IAAI;YAAEC,SAAS,EAAE;UAAM,CAAC;UACpDC,KAAK,EAAE,IAAI;UACXC,QAAQ,EAAE,IAAI;UACdC,UAAU,EAAE3B,YAAY,CAAC5B,YAAY,GACjC;YACEC,KAAK,EAAE2B,YAAY,CAAC5B,YAAY,CAACC,KAAK;YACtCC,MAAM,EAAE0B,YAAY,CAAC5B,YAAY,CAACE;UACpC,CAAC,GACD/B;QACN,CAAC,CAAC;QACFY,eAAe,CAAC6D,OAAO,CAAC;MAC1B,CAAC,MAAM;QACL;QACA;QACA,MAAMY,IAAI,GAAG5B,YAAY,CAAC5B,YAAY;QACtC,MAAMyD,SAAS,GAAG7B,YAAY,CAACtB,KAAK,CAACoD,KAAK;QAC1C3E,eAAe,cACbzB,IAAA,CAACf,IAAI;UAACmH,KAAK,EAAE,CACXD,SAAS,EACTD,IAAI,IAAI;YAAEvD,KAAK,EAAEuD,IAAI,CAACvD,KAAK;YAAEC,MAAM,EAAEsD,IAAI,CAACtD;UAAO,CAAC,EAClD3C,eAAe,CACf;UAAA+F,QAAA,EACC1B,YAAY,CAACtB,KAAK,CAACgD;QAAQ,CACxB,CACR,CAAC;MACH;IACF;;IAEA;IACA;IACA;;IAEA;IACArE,mBAAmB,GAAG;MAAEM,SAAS;MAAExB,QAAQ,EAAEyB;IAAiB,CAAC,CAAC;;IAEhE;IACAH,oBAAoB,CAAC4C,OAAO,GAAG,EAAE;EACnC,CAAC;;EAED;AACF;AACA;EACE,MAAM0B,oBAAoB,GAAGA,CAC3BC,aAAqB,EACrBC,aAAqB,EACrBrE,gBAA0B,EAC1BsE,UAAqB,KAClB;IACH,MAAMvE,SAAS,GAAGb,WAAW,CAACiB,KAAK;;IAEnC;IACA;IACA,MAAMoE,aAAa,GAAGD,UAAU,IAAI,EAAE;IACtC,MAAME,cAAc,GAAG3E,oBAAoB,CAAC4C,OAAO;IACnD,IACE2B,aAAa,KAAKC,aAAa,IAC/BE,aAAa,CAACE,MAAM,KAAK,CAAC,IAC1BD,cAAc,CAACC,MAAM,KAAK,CAAC,EAC3B;MACA,MAAMrC,YAAY,GAAGrD,YAAY,CAACgB,SAAS,CAAC;MAC5C,IAAI,CAACqC,YAAY,EAAE;MACnB,MAAMsC,aAAa,GAAGL,aAAa,IAAIjC,YAAY,CAACtB,KAAK,CAAC6D,UAAU;MACpE,MAAMC,aAAa,GAAGP,aAAa,GAAGtF,YAAY,CAACsF,aAAa,CAAC,GAAG1F,SAAS;MAC7E,MAAMkG,oBAAoB,GAAGR,aAAa,IAAIO,aAAa,EAAE9D,KAAK,CAACgE,iBAAiB;MACpF,MAAMC,SAAS,GAAG,CAACV,aAAa,KAAKjC,YAAY,CAACtB,KAAK,CAACkE,MAAM,IAAItF,cAAc,CAAC;MACjF,IAAI,CAACgF,aAAa,IAAI,CAACG,oBAAoB,IAAI,CAACE,SAAS,EAAE;IAC7D;IAEA,MAAM1C,OAAO,GAAGvC,oBAAoB,CAACC,SAAS,EAAEC,gBAAgB,CAAC;IACjE,IAAI,CAACqC,OAAO,EAAE;IAEd,MAAMD,YAAY,GAAGrD,YAAY,CAACgB,SAAS,CAAC;IAC5C,MAAMkF,cAAc,GAAG7C,YAAY,EAAEtB,KAAK,CAACC,WAAW,IAAIqB,YAAY,EAAEtB,KAAK,CAACD,OAAO;IAErF,MAAMX,QAAQ,GAAGZ,eAAe,CAACa,KAAK;IACtC,MAAME,eAAe,GAAG;MACtBC,CAAC,EAAEN,gBAAgB,CAACM,CAAC,GAAGJ,QAAQ,CAACI,CAAC;MAClCC,CAAC,EAAEP,gBAAgB,CAACO,CAAC,GAAGL,QAAQ,CAACK;IACnC,CAAC;IACD,MAAM2E,aAAa,GAAG;MACpB3C,oBAAoB,EAAEvC,gBAAgB;MACtCK,eAAe;MACfgC;IACF,CAAC;;IAED;IACA,IAAI8C,kBAAkB,GAAGd,aAAa;IACtC,IAAIA,aAAa,IAAID,aAAa,KAAKC,aAAa,EAAE;MACpD,MAAMe,gBAAgB,GAAGrG,YAAY,CAACsF,aAAa,CAAC;MACpD,IAAIe,gBAAgB,EAAE;QACpB;QACA,MAAMC,WAAW,GAAGD,gBAAgB,CAACtE,KAAK,CAACuE,WAAW;QACtD,IAAIA,WAAW,IAAI,CAACA,WAAW,CAACJ,cAAc,CAAC,EAAE;UAC/CE,kBAAkB,GAAG,EAAE;QACzB;;QAEA;QACA,MAAMG,QAAQ,GAAGF,gBAAgB,CAACtE,KAAK,CAACwE,QAAQ;QAChD,IAAIH,kBAAkB,IAAIG,QAAQ,KAAK3G,SAAS,EAAE;UAChD,MAAM4G,UAAU,GAAG3F,eAAe,CAAC6C,OAAO,CAAC+C,GAAG,CAACnB,aAAa,CAAC;UAC7D,MAAMoB,KAAK,GAAGF,UAAU,GAAGA,UAAU,CAACG,IAAI,GAAG,CAAC;UAC9C,IAAID,KAAK,IAAIH,QAAQ,EAAE;YACrBH,kBAAkB,GAAG,EAAE;UACzB;QACF;;QAEA;QACA,MAAMQ,eAAe,GAAGP,gBAAgB,CAACtE,KAAK,CAAC8E,wBAAwB;QACvE,IAAIT,kBAAkB,IAAIQ,eAAe,IAAIP,gBAAgB,CAAC5E,YAAY,EAAE;UAC1E,MAAMqF,QAAQ,GAAGF,eAAe,CAAC;YAC/BG,QAAQ,EAAEzB,aAAa;YACvB0B,kBAAkB,EAAEX,gBAAgB,CAAC5E,YAAY;YACjDT,SAAS;YACTkF;UACF,CAAC,CAAC;UACF,IAAI,CAACY,QAAQ,EAAE;YACbV,kBAAkB,GAAG,EAAE;UACzB;QACF;MACF;;MAEA;MACA;MACA,IAAI,CAACA,kBAAkB,EAAE;QACvBhI,OAAO,CAAC,CACN6I,aAAuC,EACvCC,qBAAuD,EACvDC,WAAmB,KAChB;UACH,SAAS;;UACTF,aAAa,CAAC7F,KAAK,GAAG,EAAE;UACxB8F,qBAAqB,CAAC9F,KAAK,GAAG+F,WAAW;QAC3C,CAAC,CAAC,CAACpH,IAAI,CAACqH,YAAY,EAAErH,IAAI,CAACsH,oBAAoB,EAAE/B,aAAa,CAAC;MACjE;IACF;;IAEA;IACA,IAAID,aAAa,IAAIA,aAAa,KAAKe,kBAAkB,EAAE;MACzD,MAAMkB,gBAAgB,GAAGtH,YAAY,CAACqF,aAAa,CAAC;MACpD,MAAMkC,eAAe,GAAGlF,qBAAqB,CAC3CgD,aAAa,EACbpE,gBACF,CAAC;MACD,IAAIqG,gBAAgB,IAAIC,eAAe,EAAE;QACvC;QACAlE,YAAY,EAAEtB,KAAK,CAACyF,UAAU,GAAG;UAC/B,GAAGrB,aAAa;UAChBsB,QAAQ,EAAEF;QACZ,CAAC,CAAC;;QAEF;QACAD,gBAAgB,CAACvF,KAAK,CAAC2F,iBAAiB,GAAG;UACzC,GAAGvB,aAAa;UAChBsB,QAAQ,EAAEF,eAAe;UACzBI,SAAS,EAAE;QACb,CAAC,CAAC;MACJ;IACF;;IAEA;IACA,IAAIvB,kBAAkB,IAAIf,aAAa,KAAKe,kBAAkB,EAAE;MAC9D,MAAMC,gBAAgB,GAAGrG,YAAY,CAACoG,kBAAkB,CAAC;MACzD,MAAMwB,eAAe,GAAGvF,qBAAqB,CAC3C+D,kBAAkB,EAClBnF,gBACF,CAAC;MACD,IAAIoF,gBAAgB,IAAIuB,eAAe,EAAE;QACvC;QACAvE,YAAY,EAAEtB,KAAK,CAAC8F,WAAW,GAAG;UAChC,GAAG1B,aAAa;UAChBsB,QAAQ,EAAEG;QACZ,CAAC,CAAC;;QAEF;QACAvB,gBAAgB,CAACtE,KAAK,CAAC+F,kBAAkB,GAAG;UAC1C,GAAG3B,aAAa;UAChBsB,QAAQ,EAAEG;QACZ,CAAC,CAAC;MACJ;IACF;;IAEA;IACA,IAAIxB,kBAAkB,IAAIf,aAAa,KAAKe,kBAAkB,EAAE;MAC9D;MACA,MAAMP,aAAa,GAAG7F,YAAY,CAACoG,kBAAkB,CAAC;MACtD,MAAM2B,YAAY,GAAG1F,qBAAqB,CAAC+D,kBAAkB,EAAEnF,gBAAgB,CAAC;MAChF,IAAI4E,aAAa,IAAIkC,YAAY,EAAE;QACjC1E,YAAY,EAAEtB,KAAK,CAAC6D,UAAU,GAAG;UAC/B,GAAGO,aAAa;UAChBsB,QAAQ,EAAEM;QACZ,CAAC,CAAC;QACFlC,aAAa,CAAC9D,KAAK,CAACgE,iBAAiB,GAAG;UACtC,GAAGI,aAAa;UAChBsB,QAAQ,EAAEM;QACZ,CAAC,CAAC;MACJ;IACF,CAAC,MAAM,IAAI,CAAC3B,kBAAkB,EAAE;MAC9B;MACA/C,YAAY,EAAEtB,KAAK,CAACkE,MAAM,GAAGE,aAAa,CAAC;IAC7C;;IAEA;IACA,MAAM6B,YAAY,GAAGvC,cAAc,CAACC,MAAM,KAAK,CAAC;;IAEhD;IACA,MAAMqC,YAAY,GAAG3B,kBAAkB,GACnC/D,qBAAqB,CAAC+D,kBAAkB,EAAEnF,gBAAgB,CAAC,GAC3DrB,SAAS;;IAEb;IACA,KAAK,MAAMqI,SAAS,IAAIzC,aAAa,EAAE;MACrC,MAAM0C,YAAY,GAAGlI,YAAY,CAACiI,SAAS,CAAC;MAC5C,IAAI,CAACC,YAAY,EAAEzG,YAAY,EAAE;MAEjC,MAAM;QACJqB,gBAAgB,EAAEqF,aAAa;QAC/BpF,qBAAqB,EAAEqF;MACzB,CAAC,GAAG9J,mBAAmB,CAAC2C,gBAAgB,EAAEiH,YAAY,CAACzG,YAAY,CAAC;MAEpE,MAAM4G,gBAAgB,GAAG;QACvB,GAAGlC,aAAa;QAChBsB,QAAQ,EAAEM,YAAY;QACtBI,aAAa;QACbC;MACF,CAAC;MAED,MAAME,KAAK,GAAG,CAAC7C,cAAc,CAAC8C,QAAQ,CAACN,SAAS,CAAC;;MAEjD;MACA,IAAIK,KAAK,IAAIN,YAAY,EAAE;QACzBE,YAAY,CAACnG,KAAK,CAACyG,kBAAkB,GAAGH,gBAAgB,CAAC;MAC3D;;MAEA;MACA,IAAIC,KAAK,EAAE;QACTJ,YAAY,CAACnG,KAAK,CAAC0G,kBAAkB,GAAGJ,gBAAgB,CAAC;MAC3D;;MAEA;MACAH,YAAY,CAACnG,KAAK,CAAC2G,iBAAiB,GAAGL,gBAAgB,CAAC;IAC1D;;IAEA;IACA,KAAK,MAAMM,aAAa,IAAIlD,cAAc,EAAE;MAC1C,IAAID,aAAa,CAAC+C,QAAQ,CAACI,aAAa,CAAC,EAAE;MAE3C,MAAMT,YAAY,GAAGlI,YAAY,CAAC2I,aAAa,CAAC;MAChD,IAAI,CAACT,YAAY,EAAEzG,YAAY,EAAE;MAEjC,MAAM;QACJqB,gBAAgB,EAAEqF,aAAa;QAC/BpF,qBAAqB,EAAEqF;MACzB,CAAC,GAAG9J,mBAAmB,CAAC2C,gBAAgB,EAAEiH,YAAY,CAACzG,YAAY,CAAC;MAEpEyG,YAAY,CAACnG,KAAK,CAAC6G,iBAAiB,GAAG;QACrC,GAAGzC,aAAa;QAChBsB,QAAQ,EAAEM,YAAY;QACtBI,aAAa;QACbC;MACF,CAAC,CAAC;IACJ;IAEAtH,oBAAoB,CAAC4C,OAAO,GAAG8B,aAAa;;IAE5C;IACA7E,cAAc,GAAG;MAAEK,SAAS,EAAEb,WAAW,CAACiB,KAAK;MAAEkB,UAAU,EAAE8D,kBAAkB,IAAIxG,SAAS;MAAEJ,QAAQ,EAAEyB;IAAiB,CAAC,CAAC;EAC7H,CAAC;;EAED;EACA,MAAM4H,aAAa,GAAGA,CACpB7H,SAAiB,EACjBsB,UAAkB,EAClBqF,SAAkB,EAClBmB,eAA0B,KACvB;IACH;IACA;;IAEA,MAAMzF,YAAY,GAAGrD,YAAY,CAACgB,SAAS,CAAC;IAC5C,IAAI,CAACqC,YAAY,EAAE;MACjB;MACAjF,OAAO,CAAC,CACN2K,aAAkC,EAClCC,YAAgC,EAChCC,YAAgC,EAChCC,gBAAwC,KACrC;QACH,SAAS;;QACTH,aAAa,CAAC3H,KAAK,GAAG,KAAK;QAC3B4H,YAAY,CAAC5H,KAAK,GAAG,MAAM;QAC3B6H,YAAY,CAAC7H,KAAK,GAAG,EAAE;QACvB8H,gBAAgB,CAAC9H,KAAK,GAAG;UAAEG,CAAC,EAAE,CAAC;UAAEC,CAAC,EAAE;QAAE,CAAC;MACzC,CAAC,CAAC,CAACf,YAAY,EAAEL,WAAW,EAAED,WAAW,EAAEE,eAAe,CAAC;MAC3DG,eAAe,CAAC,IAAI,CAAC;MACrB;IACF;IAEA,MAAMS,gBAAgB,GAAG;MAAE,GAAGZ,eAAe,CAACe;IAAM,CAAC;IACrD,MAAMkC,OAAO,GAAGvC,oBAAoB,CAACC,SAAS,EAAEC,gBAAgB,CAAC;IACjE,IAAI,CAACqC,OAAO,EAAE;MACZlF,OAAO,CAAC,CACN2K,aAAkC,EAClCC,YAAgC,EAChCC,YAAgC,EAChCC,gBAAwC,KACrC;QACH,SAAS;;QACTH,aAAa,CAAC3H,KAAK,GAAG,KAAK;QAC3B4H,YAAY,CAAC5H,KAAK,GAAG,MAAM;QAC3B6H,YAAY,CAAC7H,KAAK,GAAG,EAAE;QACvB8H,gBAAgB,CAAC9H,KAAK,GAAG;UAAEG,CAAC,EAAE,CAAC;UAAEC,CAAC,EAAE;QAAE,CAAC;MACzC,CAAC,CAAC,CAACf,YAAY,EAAEL,WAAW,EAAED,WAAW,EAAEE,eAAe,CAAC;MAC3DG,eAAe,CAAC,IAAI,CAAC;MACrB;IACF;IAEA,MAAMW,QAAQ,GAAGZ,eAAe,CAACa,KAAK;IACtC,MAAME,eAAe,GAAG;MACtBC,CAAC,EAAEN,gBAAgB,CAACM,CAAC,GAAGJ,QAAQ,CAACI,CAAC;MAClCC,CAAC,EAAEP,gBAAgB,CAACO,CAAC,GAAGL,QAAQ,CAACK;IACnC,CAAC;IACD,MAAM2E,aAAa,GAAG;MACpB3C,oBAAoB,EAAEvC,gBAAgB;MACtCK,eAAe;MACfgC;IACF,CAAC;IAED,IAAI6F,UAA8B,GAAG1K,wBAAwB,CAAC2K,OAAO;IAErE,IAAI9G,UAAU,IAAI,CAACqF,SAAS,EAAE;MAC5B;MACA,MAAM9B,aAAa,GAAG7F,YAAY,CAACsC,UAAU,CAAC;MAC9C,MAAMyF,YAAY,GAAG1F,qBAAqB,CACxCC,UAAU,EACVrB,gBACF,CAAC;MAED,IAAI8G,YAAY,IAAIlC,aAAa,EAAE;QACjC;QACA,MAAMwD,cAAc,GAAGhL,8BAA8B,CACnDwH,aAAa,CAACrD,YAAY,EAC1BvC,cAAc,CAACmB,KAAK,EACpBlB,eAAe,CAACkB,KAClB,CAAC;QACD,MAAMkI,WAAW,GAAGjG,YAAY,CAAC5B,YAAY;QAC7C,MAAM8H,YAAY,GAAG1D,aAAa,CAACpE,YAAY;QAC/C,IAAI8H,YAAY,IAAID,WAAW,EAAE;UAC/BH,UAAU,GAAG;YACX5H,CAAC,EAAE8H,cAAc,CAAC9H,CAAC,GAAG,CAACgI,YAAY,CAAC7H,KAAK,GAAG4H,WAAW,CAAC5H,KAAK,IAAI,CAAC;YAClEF,CAAC,EAAE6H,cAAc,CAAC7H,CAAC,GAAG,CAAC+H,YAAY,CAAC5H,MAAM,GAAG2H,WAAW,CAAC3H,MAAM,IAAI;UACrE,CAAC;QACH,CAAC,MAAM;UACLwH,UAAU,GAAGE,cAAc;QAC7B;;QAEA;QACA,MAAMG,gBAAgB,GAAGnG,YAAY,CAACtB,KAAK,CAAC0H,UAAU,GAAG;UACvD,GAAGtD,aAAa;UAChBsB,QAAQ,EAAEM;QACZ,CAAC,CAAC;QACF,IAAIyB,gBAAgB,KAAK5J,SAAS,EAChCuJ,UAAU,GAAGK,gBAAsC;;QAErD;QACA,MAAME,mBAAmB,GAAG7D,aAAa,CAAC9D,KAAK,CAAC4H,iBAAiB,GAAG;UAClE,GAAGxD,aAAa;UAChBsB,QAAQ,EAAEM;QACZ,CAAC,CAAC;QACF,IAAI2B,mBAAmB,KAAK9J,SAAS,EACnCuJ,UAAU,GAAGO,mBAAyC;;QAExD;QACA,IAAI,CAAC7I,eAAe,CAAC6C,OAAO,CAACkG,GAAG,CAACtH,UAAU,CAAC,EAAE;UAC5CzB,eAAe,CAAC6C,OAAO,CAACmG,GAAG,CAACvH,UAAU,EAAE,IAAIwH,GAAG,CAAC,CAAC,CAAC;QACpD;QACAjJ,eAAe,CAAC6C,OAAO,CAAC+C,GAAG,CAACnE,UAAU,CAAC,CAAEyH,GAAG,CAAC/I,SAAS,CAAC;MACzD;IACF,CAAC,MAAM;MACL;MACA,MAAMgJ,eAAe,GAAG3G,YAAY,CAACtB,KAAK,CAACkI,SAAS,GAAG;QACrD,GAAG9D,aAAa;QAChBwB;MACF,CAAC,CAAC;MACF,IAAIqC,eAAe,KAAKpK,SAAS,EAC/BuJ,UAAU,GAAGa,eAAqC;IACtD;;IAEA;IACA;IACA,MAAME,eAAe,GAAGpB,eAAe,IAAIhI,oBAAoB,CAAC4C,OAAO;IACvE,KAAK,MAAMuE,SAAS,IAAIiC,eAAe,EAAE;MACvC,MAAMhC,YAAY,GAAGlI,YAAY,CAACiI,SAAS,CAAC;MAC5C,IAAI,CAACC,YAAY,EAAEzG,YAAY,EAAE;MAEjC,MAAM;QACJqB,gBAAgB,EAAEqF,aAAa;QAC/BpF,qBAAqB,EAAEqF;MACzB,CAAC,GAAG9J,mBAAmB,CAAC2C,gBAAgB,EAAEiH,YAAY,CAACzG,YAAY,CAAC;MAEpE,IAAIa,UAAU,IAAI,CAACqF,SAAS,EAAE;QAC5B,MAAMI,YAAY,GAAG1F,qBAAqB,CACxCC,UAAU,EACVrB,gBACF,CAAC;QACD,IAAI8G,YAAY,EAAE;UAChB,MAAMoC,mBAAmB,GACvBjC,YAAY,CAACnG,KAAK,CAACqI,iBAAiB,GAAG;YACrC,GAAGjE,aAAa;YAChBsB,QAAQ,EAAEM,YAAY;YACtBI,aAAa;YACbC;UACF,CAAC,CAAC;UACJ,IAAI+B,mBAAmB,KAAKvK,SAAS,EACnCuJ,UAAU,GAAGgB,mBAAyC;QAC1D;MACF,CAAC,MAAM;QACL,MAAME,kBAAkB,GAAGnC,YAAY,CAACnG,KAAK,CAACuI,gBAAgB,GAAG;UAC/D,GAAGnE,aAAa;UAChBgC,aAAa;UACbC,kBAAkB;UAClBT;QACF,CAAC,CAAC;QACF,IAAI0C,kBAAkB,KAAKzK,SAAS,EAClCuJ,UAAU,GAAGkB,kBAAwC;MACzD;IACF;;IAEA;IACA;IACA;IACA;IACA,IAAIlB,UAAU,KAAK1K,wBAAwB,CAAC2K,OAAO,EAAE;MACnD,MAAMzG,MAAM,GAAGtE,8BAA8B,CAC3CgF,YAAY,CAACb,YAAY,EACzBvC,cAAc,CAACmB,KAAK,EACpBlB,eAAe,CAACkB,KAClB,CAAC;MACD+H,UAAU,GAAGxG,MAAM;IACrB;;IAEA;IACA4H,eAAe,CACbpB,UAAU,EACV9F,YAAY,EACZf,UAAU,GAAGtC,YAAY,CAACsC,UAAU,CAAC,GAAG1C,SAAS,EACjDS,eAAe,EACfD,WAAW,EACXD,WAAW,EACXM,YAAY,EACZD,eAAe,EACfT,IAAI,CAACyK,qBACP,CAAC;;IAED;IACA5J,iBAAiB,GAAG;MAAEI,SAAS;MAAEsB,UAAU,EAAEA,UAAU,IAAI1C,SAAS;MAAEJ,QAAQ,EAAEa,eAAe,CAACe,KAAK;MAAEuG;IAAU,CAAC,CAAC;EACrH,CAAC;EAED,OAAO;IACLxE,eAAe;IACfiC,oBAAoB;IACpByD;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0B,eAAeA,CACtBE,MAA0B,EAC1BpH,YAA+B,EAC/BwC,aAA4C,EAC5CxF,eAAsC,EACtCD,WAAmC,EACnCD,WAAgC,EAChCM,YAAkC,EAClCD,eAAoD,EACpDgK,qBAA2C,EAC3C;EACA,MAAME,WAAW,GAAGrH,YAAY,CAACtB,KAAK,CAAC2I,WAAW,IAAI,IAAI;EAC1D,MAAMC,SAAS,GAAGtH,YAAY,CAACtB,KAAK,CAAC4I,SAAS,IAAIpM,oBAAoB;EACtE,MAAMqM,YAAY,GAChBvH,YAAY,CAACtB,KAAK,CAAC6I,YAAY,IAAIpM,uBAAuB;EAC5D,MAAMqM,YAAY,GAAGxH,YAAY,CAACtB,KAAK,CAAC8I,YAAY;;EAEpD;EACA,MAAMC,aAAmC,GAAG;IAC1CxH,OAAO,EAAE;MACP1B,EAAE,EAAEyB,YAAY,CAACzB,EAAE;MACnBC,QAAQ,EAAEwB,YAAY,CAACxB,QAAQ;MAC/BC,OAAO,EAAEuB,YAAY,CAACtB,KAAK,CAACC,WAAW,IAAIqB,YAAY,CAACtB,KAAK,CAACD;IAChE,CAAC;IACD2F,QAAQ,EAAE5B,aAAa,GACnB;MACEjE,EAAE,EAAEiE,aAAa,CAACjE,EAAE;MACpBC,QAAQ,EAAEgE,aAAa,CAAChE,QAAQ;MAChCC,OAAO,EACL+D,aAAa,CAAC9D,KAAK,CAACiB,eAAe,IAAI6C,aAAa,CAAC9D,KAAK,CAACD;IAC/D,CAAC,GACDlC;EACN,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMmL,cAAc,GAAGA,CAAA,KAAM;IAE3B;IACA;IACAP,qBAAqB,CAAC9G,OAAO,GAAG,KAAK;;IAErC;IACAL,YAAY,CAACtB,KAAK,CAACiJ,SAAS,GAAGF,aAAa,CAAC;IAC7CjF,aAAa,EAAE9D,KAAK,CAACkJ,gBAAgB,GAAGH,aAAa,CAAC;;IAGtD;IACA,IAAI,CAACN,qBAAqB,CAAC9G,OAAO,EAAE;MAClCtF,OAAO,CAAC,CACN2K,aAAkC,EAClCC,YAAgC,EAChCC,YAAgC,EAChCC,gBAAwC,KACrC;QACH,SAAS;;QACTH,aAAa,CAAC3H,KAAK,GAAG,KAAK;QAC3B4H,YAAY,CAAC5H,KAAK,GAAG,MAAM;QAC3B6H,YAAY,CAAC7H,KAAK,GAAG,EAAE;QACvB8H,gBAAgB,CAAC9H,KAAK,GAAG;UAAEG,CAAC,EAAE,CAAC;UAAEC,CAAC,EAAE;QAAE,CAAC;MACzC,CAAC,CAAC,CAACf,YAAY,EAAEL,WAAW,EAAED,WAAW,EAAEE,eAAe,CAAC;MAC3DG,eAAe,CAAC,IAAI,CAAC;IACvB,CAAC,MAAM;MACL;MACA;MACA;IAAA;EAEJ,CAAC;EAED,IAAIiK,MAAM,KAAKhM,wBAAwB,CAACyM,IAAI,IAAI,CAACR,WAAW,EAAE;IAC5D;IACAK,cAAc,CAAC,CAAC;IAChB;EACF;;EAEA;EACA,IAAII,OAAiB;EACrB,IAAIvM,UAAU,CAAC6L,MAAM,CAAC,EAAE;IACtBU,OAAO,GAAGV,MAAM;EAClB,CAAC,MAAM;IACL;IACAU,OAAO,GAAG9H,YAAY,CAAC5B,YAAY,GAC/B;MAAEF,CAAC,EAAE8B,YAAY,CAAC5B,YAAY,CAACF,CAAC;MAAEC,CAAC,EAAE6B,YAAY,CAAC5B,YAAY,CAACD;IAAE,CAAC,GAClE;MAAED,CAAC,EAAE,CAAC;MAAEC,CAAC,EAAE;IAAE,CAAC;EACpB;EAEA,IAAIqJ,YAAY,EAAE;IAChB;IACAA,YAAY,CAAC;MACXzI,aAAa,EAAE/B,eAAe;MAC9B8K,OAAO;MACPC,KAAK,EAAET,SAAS;MAChBU,QAAQ,EAAET,YAAY;MACtBU,gBAAgB,EAAGC,QAAiB,IAAK;QACvC,IAAIA,QAAQ,EAAE;UACZR,cAAc,CAAC,CAAC;QAClB;MACF;IACF,CAAC,CAAC;EACJ,CAAC,MAAM;IACL;IACA;IACA1K,eAAe,CAACe,KAAK,GAAGnD,SAAS,CAC/B0M,SAAS,EACTzM,UAAU,CAACiN,OAAO,EAAE;MAAEE,QAAQ,EAAET;IAAa,CAAC,EAAGW,QAAQ,IAAK;MAC5D,SAAS;;MACT,IAAIA,QAAQ,EAAE;QACZpN,OAAO,CAAC4M,cAAc,CAAC,CAAC,CAAC;MAC3B;IACF,CAAC,CACH,CAAC;EACH;AACF;;AAEA;;AAEA,SAASnH,aAAaA,CAAC4H,CAAU,EAAoB;EACnD,IAAI,CAACA,CAAC,EAAE,OAAO,IAAI;EACnB,OAAOzN,UAAU,CAAC0N,OAAO,CAACD,CAAc,CAAC,IAAI,IAAI;AACnD","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":[]}
|