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,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useLayoutEffect } from 'react';
|
|
4
|
+
import { StyleSheet } from 'react-native';
|
|
5
|
+
import Reanimated, { useAnimatedStyle } from 'react-native-reanimated';
|
|
6
|
+
import { runOnUI } from 'react-native-worklets';
|
|
7
|
+
|
|
8
|
+
/** Flattened hover styles for the currently dragged view */
|
|
9
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
|
+
/**
|
|
11
|
+
* Single hover layer component that renders the hover content during drag.
|
|
12
|
+
*
|
|
13
|
+
* This is the ONLY component that reads hoverPositionSV (changes every frame).
|
|
14
|
+
* All other DraxViews read draggedIdSV/receiverIdSV/dragPhaseSV which change ~5x per drag.
|
|
15
|
+
*
|
|
16
|
+
* Content is passed via ref to avoid re-rendering the entire DraxProvider tree.
|
|
17
|
+
* Only this component re-renders when hover content changes (via hoverVersion).
|
|
18
|
+
*/
|
|
19
|
+
export const HoverLayer = /*#__PURE__*/memo(({
|
|
20
|
+
hoverContentRef,
|
|
21
|
+
hoverVersion,
|
|
22
|
+
hoverPositionSV,
|
|
23
|
+
dragPhaseSV,
|
|
24
|
+
receiverIdSV,
|
|
25
|
+
hoverReadySV,
|
|
26
|
+
hoverDimsSV,
|
|
27
|
+
hoverStylesRef
|
|
28
|
+
}) => {
|
|
29
|
+
// After hover content is committed to the DOM, activate drag phase + signal readiness.
|
|
30
|
+
// dragPhaseSV is NOT set in the gesture handler — it's set HERE, ensuring:
|
|
31
|
+
// 1. HoverLayer becomes visible (opacity 1) only AFTER content is rendered
|
|
32
|
+
// 2. SortableItem hides only AFTER hover is visible (reads hoverReadySV)
|
|
33
|
+
// Both writes happen in the same runOnUI call → same UI frame → no blink.
|
|
34
|
+
useLayoutEffect(() => {
|
|
35
|
+
if (hoverContentRef.current != null) {
|
|
36
|
+
runOnUI((_dragPhaseSV, _hoverReadySV) => {
|
|
37
|
+
'worklet';
|
|
38
|
+
|
|
39
|
+
_dragPhaseSV.value = 'dragging';
|
|
40
|
+
_hoverReadySV.value = true;
|
|
41
|
+
})(dragPhaseSV, hoverReadySV);
|
|
42
|
+
}
|
|
43
|
+
}, [hoverVersion]);
|
|
44
|
+
|
|
45
|
+
// Read hover styles from ref in the component body — they're captured by the
|
|
46
|
+
// worklet closure when the component re-renders (on hoverVersion change).
|
|
47
|
+
// This ensures the latest styles are available without SharedValues.
|
|
48
|
+
const hs = hoverStylesRef.current;
|
|
49
|
+
const flatHoverStyle = hs?.hoverStyle ?? null;
|
|
50
|
+
const flatHoverDraggingStyle = hs?.hoverDraggingStyle ?? null;
|
|
51
|
+
const flatHoverDraggingWithReceiverStyle = hs?.hoverDraggingWithReceiverStyle ?? null;
|
|
52
|
+
const flatHoverDraggingWithoutReceiverStyle = hs?.hoverDraggingWithoutReceiverStyle ?? null;
|
|
53
|
+
const flatHoverDragReleasedStyle = hs?.hoverDragReleasedStyle ?? null;
|
|
54
|
+
|
|
55
|
+
// Position style: applied to the outer full-screen container.
|
|
56
|
+
// Only handles positioning (translate) and visibility (opacity).
|
|
57
|
+
const positionStyle = useAnimatedStyle(() => {
|
|
58
|
+
const phase = dragPhaseSV.value;
|
|
59
|
+
if (phase === 'idle') {
|
|
60
|
+
return {
|
|
61
|
+
opacity: 0
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
opacity: 1,
|
|
66
|
+
transform: [{
|
|
67
|
+
translateX: hoverPositionSV.value.x
|
|
68
|
+
}, {
|
|
69
|
+
translateY: hoverPositionSV.value.y
|
|
70
|
+
}]
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// Visual style: applied to the inner content wrapper.
|
|
75
|
+
// Handles user hover styles (border, shadow, scale, rotate, etc.)
|
|
76
|
+
// so they apply to the content bounds, not the full-screen container.
|
|
77
|
+
const visualStyle = useAnimatedStyle(() => {
|
|
78
|
+
const phase = dragPhaseSV.value;
|
|
79
|
+
if (phase === 'idle') {
|
|
80
|
+
return {};
|
|
81
|
+
}
|
|
82
|
+
let hoverStyles;
|
|
83
|
+
if (phase === 'dragging') {
|
|
84
|
+
const hasReceiver = receiverIdSV.value !== '';
|
|
85
|
+
hoverStyles = {
|
|
86
|
+
...(flatHoverStyle ?? {}),
|
|
87
|
+
...(flatHoverDraggingStyle ?? {}),
|
|
88
|
+
...(hasReceiver ? flatHoverDraggingWithReceiverStyle ?? {} : flatHoverDraggingWithoutReceiverStyle ?? {})
|
|
89
|
+
};
|
|
90
|
+
} else {
|
|
91
|
+
// phase === 'releasing'
|
|
92
|
+
hoverStyles = {
|
|
93
|
+
...(flatHoverStyle ?? {}),
|
|
94
|
+
...(flatHoverDragReleasedStyle ?? flatHoverDraggingStyle ?? {})
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// User transforms (rotate, scale, etc.) stay on the content wrapper.
|
|
99
|
+
const {
|
|
100
|
+
transform: userTransform,
|
|
101
|
+
...restStyles
|
|
102
|
+
} = hoverStyles;
|
|
103
|
+
return {
|
|
104
|
+
...restStyles,
|
|
105
|
+
...(userTransform ? {
|
|
106
|
+
transform: userTransform
|
|
107
|
+
} : {})
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
// Animated dimensions for the inner content wrapper.
|
|
112
|
+
// When hoverDimsSV is non-zero, constrains hover content to those dimensions
|
|
113
|
+
// so cross-container transfers animate smoothly from source to target size.
|
|
114
|
+
const dimensionStyle = useAnimatedStyle(() => {
|
|
115
|
+
const dims = hoverDimsSV.value;
|
|
116
|
+
if (dims.x > 0 && dims.y > 0) {
|
|
117
|
+
return {
|
|
118
|
+
width: dims.x,
|
|
119
|
+
height: dims.y
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return {};
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// Always render the Reanimated.View — never conditionally unmount it.
|
|
126
|
+
// If we returned null when content is empty, remounting causes a one-frame
|
|
127
|
+
// flash (the view renders at default position before useAnimatedStyle kicks in).
|
|
128
|
+
return /*#__PURE__*/_jsx(Reanimated.View, {
|
|
129
|
+
style: [styles.container, positionStyle],
|
|
130
|
+
pointerEvents: "none",
|
|
131
|
+
children: /*#__PURE__*/_jsx(Reanimated.View, {
|
|
132
|
+
style: [styles.content, dimensionStyle, visualStyle],
|
|
133
|
+
children: hoverContentRef.current
|
|
134
|
+
})
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
const styles = StyleSheet.create({
|
|
138
|
+
container: {
|
|
139
|
+
...StyleSheet.absoluteFillObject,
|
|
140
|
+
// Default hidden — useAnimatedStyle overrides to opacity:1 when dragging.
|
|
141
|
+
// Prevents a one-frame flash on first mount before the animated style evaluates.
|
|
142
|
+
opacity: 0,
|
|
143
|
+
transformOrigin: 'top left'
|
|
144
|
+
},
|
|
145
|
+
content: {
|
|
146
|
+
// Shrink-wrap to content width — without this the inner view stretches
|
|
147
|
+
// to fill the full-screen absolute parent, causing hover styles (border,
|
|
148
|
+
// shadow) to render at screen width instead of content width.
|
|
149
|
+
alignSelf: 'flex-start'
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=HoverLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["memo","useLayoutEffect","StyleSheet","Reanimated","useAnimatedStyle","runOnUI","jsx","_jsx","HoverLayer","hoverContentRef","hoverVersion","hoverPositionSV","dragPhaseSV","receiverIdSV","hoverReadySV","hoverDimsSV","hoverStylesRef","current","_dragPhaseSV","_hoverReadySV","value","hs","flatHoverStyle","hoverStyle","flatHoverDraggingStyle","hoverDraggingStyle","flatHoverDraggingWithReceiverStyle","hoverDraggingWithReceiverStyle","flatHoverDraggingWithoutReceiverStyle","hoverDraggingWithoutReceiverStyle","flatHoverDragReleasedStyle","hoverDragReleasedStyle","positionStyle","phase","opacity","transform","translateX","x","translateY","y","visualStyle","hoverStyles","hasReceiver","userTransform","restStyles","dimensionStyle","dims","width","height","View","style","styles","container","pointerEvents","children","content","create","absoluteFillObject","transformOrigin","alignSelf"],"sourceRoot":"../../src","sources":["HoverLayer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef } from 'react';
|
|
4
|
+
import { withDelay, withTiming } from 'react-native-reanimated';
|
|
5
|
+
import { runOnJS, runOnUI } from 'react-native-worklets';
|
|
6
|
+
import { DraxView } from "./DraxView.js";
|
|
7
|
+
import { useDraxContext } from "./hooks/useDraxContext.js";
|
|
8
|
+
import { defaultSnapbackDelay, defaultSnapbackDuration } from "./params.js";
|
|
9
|
+
import { SortableBoardContext } from "./SortableBoardContext.js";
|
|
10
|
+
import { isSortableItemPayload } from "./types.js";
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
export const SortableBoardContainer = ({
|
|
13
|
+
board,
|
|
14
|
+
style,
|
|
15
|
+
children,
|
|
16
|
+
draxViewProps
|
|
17
|
+
}) => {
|
|
18
|
+
const boardInternal = board._internal;
|
|
19
|
+
const columns = boardInternal.columns;
|
|
20
|
+
const transferStateRef = boardInternal.transferState;
|
|
21
|
+
const {
|
|
22
|
+
hoverClearDeferredRef,
|
|
23
|
+
draggedIdSV,
|
|
24
|
+
hoverReadySV,
|
|
25
|
+
dragPhaseSV,
|
|
26
|
+
hoverPositionSV,
|
|
27
|
+
hoverDimsSV,
|
|
28
|
+
setHoverContent
|
|
29
|
+
} = useDraxContext();
|
|
30
|
+
|
|
31
|
+
// Source info recorded on drag start
|
|
32
|
+
const sourceInfoRef = useRef(undefined);
|
|
33
|
+
|
|
34
|
+
// ── Find which column contains the given absolute position ──────────
|
|
35
|
+
const findTargetColumn = absolutePos => {
|
|
36
|
+
for (const [colId, internal] of columns.entries()) {
|
|
37
|
+
const bounds = internal.containerMeasurementsRef.current;
|
|
38
|
+
if (!bounds) continue;
|
|
39
|
+
if (absolutePos.x >= bounds.x && absolutePos.x <= bounds.x + bounds.width && absolutePos.y >= bounds.y && absolutePos.y <= bounds.y + bounds.height) {
|
|
40
|
+
return colId;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// ── Convert absolute position to column content position ────────────
|
|
47
|
+
const toContentPos = (absolutePos, col) => {
|
|
48
|
+
const bounds = col.containerMeasurementsRef.current;
|
|
49
|
+
if (!bounds) return {
|
|
50
|
+
x: 0,
|
|
51
|
+
y: 0
|
|
52
|
+
};
|
|
53
|
+
return {
|
|
54
|
+
x: absolutePos.x - bounds.x + col.scrollPosition.value.x,
|
|
55
|
+
y: absolutePos.y - bounds.y + col.scrollPosition.value.y
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// ── Finalize cross-container transfer ─────────────────────────────────
|
|
60
|
+
// 1. Clear source/target JS-thread drag refs
|
|
61
|
+
// 2. Clear source draggedItem on UI thread
|
|
62
|
+
// 3. rAF → onTransfer → parent setState → useLayoutEffect updates stableData
|
|
63
|
+
// (hover covers any brief re-layout; React 18 flushes setStableData
|
|
64
|
+
// synchronously from useLayoutEffect, so FlatList re-renders before paint)
|
|
65
|
+
// 4. Guarded rAF → rAF → clear hover (skipped if a new drag already started)
|
|
66
|
+
const finalizeTransferRef = useRef(undefined);
|
|
67
|
+
/** Generation counter — incremented on each new drag start.
|
|
68
|
+
* Deferred hover cleanup checks this to skip if a new drag has started. */
|
|
69
|
+
const cleanupGenRef = useRef(0);
|
|
70
|
+
finalizeTransferRef.current = () => {
|
|
71
|
+
const transfer = transferStateRef.current;
|
|
72
|
+
if (!transfer || !transfer.targetId) return;
|
|
73
|
+
const source = columns.get(transfer.sourceId);
|
|
74
|
+
const target = columns.get(transfer.targetId);
|
|
75
|
+
if (!source || !target) return;
|
|
76
|
+
const phantomIndex = target.phantomRef.current?.atDisplayIndex ?? transfer.targetSlot ?? 0;
|
|
77
|
+
const item = source.rawData[transfer.sourceOriginalIndex];
|
|
78
|
+
|
|
79
|
+
// 1. Clear source drag refs
|
|
80
|
+
source.draggedDisplayIndexRef.current = undefined;
|
|
81
|
+
source.dragStartIndexRef.current = undefined;
|
|
82
|
+
source.pendingOrderRef.current = [];
|
|
83
|
+
|
|
84
|
+
// Clear target phantom ref (JS-thread only, shifts stay for now).
|
|
85
|
+
target.phantomRef.current = undefined;
|
|
86
|
+
target.pendingOrderRef.current = [];
|
|
87
|
+
|
|
88
|
+
// Keep hover visible during transition
|
|
89
|
+
hoverClearDeferredRef.current = true;
|
|
90
|
+
|
|
91
|
+
// Clear board/transfer state
|
|
92
|
+
transferStateRef.current = undefined;
|
|
93
|
+
sourceInfoRef.current = undefined;
|
|
94
|
+
|
|
95
|
+
// 2. Clear source draggedItem AND draggedIdSV on UI thread.
|
|
96
|
+
const sourceItemKey = transfer.itemKey;
|
|
97
|
+
runOnUI((_srcDraggedItem, _draggedIdSV, _shiftsRef, _key) => {
|
|
98
|
+
'worklet';
|
|
99
|
+
|
|
100
|
+
const current = _shiftsRef.value;
|
|
101
|
+
_shiftsRef.value = {
|
|
102
|
+
...current,
|
|
103
|
+
[_key]: {
|
|
104
|
+
x: -9999,
|
|
105
|
+
y: -9999
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
_srcDraggedItem.value = -1;
|
|
109
|
+
_draggedIdSV.value = '';
|
|
110
|
+
})(source.draggedItem, draggedIdSV, source.shiftsRef, sourceItemKey);
|
|
111
|
+
|
|
112
|
+
// 3. rAF → onTransfer → parent setState
|
|
113
|
+
const gen = ++cleanupGenRef.current;
|
|
114
|
+
requestAnimationFrame(() => {
|
|
115
|
+
boardInternal.onTransfer({
|
|
116
|
+
item,
|
|
117
|
+
fromContainerId: transfer.sourceId,
|
|
118
|
+
fromIndex: transfer.dragStartIndex,
|
|
119
|
+
toContainerId: transfer.targetId,
|
|
120
|
+
toIndex: phantomIndex
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
// 4. Wait for React render + Fabric commit, then clear hover.
|
|
124
|
+
requestAnimationFrame(() => {
|
|
125
|
+
requestAnimationFrame(() => {
|
|
126
|
+
if (cleanupGenRef.current !== gen) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
runOnUI((_hoverReadySV, _dragPhaseSV, _draggedIdSV, _hoverPositionSV, _hoverDimsSV, _setHoverContent) => {
|
|
130
|
+
'worklet';
|
|
131
|
+
|
|
132
|
+
_hoverReadySV.value = false;
|
|
133
|
+
_dragPhaseSV.value = 'idle';
|
|
134
|
+
_draggedIdSV.value = '';
|
|
135
|
+
_hoverPositionSV.value = {
|
|
136
|
+
x: 0,
|
|
137
|
+
y: 0
|
|
138
|
+
};
|
|
139
|
+
_hoverDimsSV.value = {
|
|
140
|
+
x: 0,
|
|
141
|
+
y: 0
|
|
142
|
+
};
|
|
143
|
+
runOnJS(_setHoverContent)(null);
|
|
144
|
+
})(hoverReadySV, dragPhaseSV, draggedIdSV, hoverPositionSV, hoverDimsSV, setHoverContent);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
boardInternal.finalizeTransfer = () => finalizeTransferRef.current?.();
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
// ── Monitor callbacks ──────────────────────────────────────────────
|
|
154
|
+
|
|
155
|
+
const onMonitorDragStart = eventData => {
|
|
156
|
+
draxViewProps?.onMonitorDragStart?.(eventData);
|
|
157
|
+
|
|
158
|
+
// Invalidate any pending deferred hover cleanup from a previous transfer
|
|
159
|
+
cleanupGenRef.current++;
|
|
160
|
+
|
|
161
|
+
// Reset hover dimensions from any previous cross-container transfer
|
|
162
|
+
hoverDimsSV.value = {
|
|
163
|
+
x: 0,
|
|
164
|
+
y: 0
|
|
165
|
+
};
|
|
166
|
+
const {
|
|
167
|
+
dragged
|
|
168
|
+
} = eventData;
|
|
169
|
+
const parentId = dragged.parentId;
|
|
170
|
+
if (!parentId || !columns.has(parentId)) return;
|
|
171
|
+
if (!isSortableItemPayload(dragged.payload)) return;
|
|
172
|
+
const sourceCol = columns.get(parentId);
|
|
173
|
+
const {
|
|
174
|
+
originalIndex
|
|
175
|
+
} = dragged.payload;
|
|
176
|
+
const item = sourceCol.rawData[originalIndex];
|
|
177
|
+
if (item === undefined) return;
|
|
178
|
+
const itemKey = sourceCol.keyExtractor(item, originalIndex);
|
|
179
|
+
const dims = dragged.measurements ? {
|
|
180
|
+
width: dragged.measurements.width,
|
|
181
|
+
height: dragged.measurements.height
|
|
182
|
+
} : {
|
|
183
|
+
width: 0,
|
|
184
|
+
height: 0
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
// Determine display index (accounting for committed visual order)
|
|
188
|
+
const committed = sourceCol.committedOrderRef.current;
|
|
189
|
+
let displayIndex = dragged.payload.index;
|
|
190
|
+
if (committed.length > 0) {
|
|
191
|
+
const pos = committed.indexOf(originalIndex);
|
|
192
|
+
if (pos >= 0) displayIndex = pos;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Set hover dimensions to source item size for cross-container dimension animation
|
|
196
|
+
if (dims.width > 0 && dims.height > 0) {
|
|
197
|
+
hoverDimsSV.value = {
|
|
198
|
+
x: dims.width,
|
|
199
|
+
y: dims.height
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
sourceInfoRef.current = {
|
|
203
|
+
colId: parentId,
|
|
204
|
+
originalIndex,
|
|
205
|
+
itemKey,
|
|
206
|
+
dragStartIndex: displayIndex,
|
|
207
|
+
dimensions: dims
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
const onMonitorDragOver = eventData => {
|
|
211
|
+
draxViewProps?.onMonitorDragOver?.(eventData);
|
|
212
|
+
const source = sourceInfoRef.current;
|
|
213
|
+
if (!source) return;
|
|
214
|
+
const targetColId = findTargetColumn(eventData.dragAbsolutePosition);
|
|
215
|
+
const transfer = transferStateRef.current;
|
|
216
|
+
if (targetColId && targetColId !== source.colId) {
|
|
217
|
+
// ── Drag is over a different column → cross-container ──────
|
|
218
|
+
const targetCol = columns.get(targetColId);
|
|
219
|
+
if (!targetCol) return;
|
|
220
|
+
|
|
221
|
+
// Ensure target column's pending order is initialized for slot computation
|
|
222
|
+
if (targetCol.pendingOrderRef.current.length === 0) {
|
|
223
|
+
const committed = targetCol.committedOrderRef.current;
|
|
224
|
+
targetCol.pendingOrderRef.current = committed.length > 0 ? [...committed] : [...targetCol.originalIndexes];
|
|
225
|
+
}
|
|
226
|
+
const contentPos = toContentPos(eventData.dragAbsolutePosition, targetCol);
|
|
227
|
+
const insertIdx = targetCol.getSlotFromPosition(contentPos);
|
|
228
|
+
if (!transfer) {
|
|
229
|
+
// First time crossing — eject from source, set phantom in target
|
|
230
|
+
const sourceCol = columns.get(source.colId);
|
|
231
|
+
sourceCol?.ejectDraggedItem();
|
|
232
|
+
transferStateRef.current = {
|
|
233
|
+
sourceId: source.colId,
|
|
234
|
+
sourceOriginalIndex: source.originalIndex,
|
|
235
|
+
itemKey: source.itemKey,
|
|
236
|
+
itemDimensions: source.dimensions,
|
|
237
|
+
dragStartIndex: source.dragStartIndex,
|
|
238
|
+
targetId: targetColId,
|
|
239
|
+
targetSlot: insertIdx
|
|
240
|
+
};
|
|
241
|
+
targetCol.setPhantomSlot(insertIdx, source.dimensions.width, source.dimensions.height);
|
|
242
|
+
} else if (transfer.targetId !== targetColId) {
|
|
243
|
+
// Crossed to a DIFFERENT target column — clear old target, set new
|
|
244
|
+
if (transfer.targetId) {
|
|
245
|
+
const prevTarget = columns.get(transfer.targetId);
|
|
246
|
+
prevTarget?.clearPhantomSlot();
|
|
247
|
+
}
|
|
248
|
+
transferStateRef.current = {
|
|
249
|
+
...transfer,
|
|
250
|
+
targetId: targetColId,
|
|
251
|
+
targetSlot: insertIdx
|
|
252
|
+
};
|
|
253
|
+
targetCol.setPhantomSlot(insertIdx, source.dimensions.width, source.dimensions.height);
|
|
254
|
+
} else if (transfer.targetSlot !== insertIdx) {
|
|
255
|
+
// Same target column — update phantom position only if slot changed
|
|
256
|
+
transferStateRef.current = {
|
|
257
|
+
...transfer,
|
|
258
|
+
targetSlot: insertIdx
|
|
259
|
+
};
|
|
260
|
+
targetCol.setPhantomSlot(insertIdx, source.dimensions.width, source.dimensions.height);
|
|
261
|
+
}
|
|
262
|
+
} else if (targetColId === source.colId && transfer) {
|
|
263
|
+
// ── Drag returned to source column ─────────────────────────
|
|
264
|
+
// Clear target phantom
|
|
265
|
+
if (transfer.targetId) {
|
|
266
|
+
const prevTarget = columns.get(transfer.targetId);
|
|
267
|
+
prevTarget?.clearPhantomSlot();
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Reinject item into source
|
|
271
|
+
const sourceCol = columns.get(source.colId);
|
|
272
|
+
if (sourceCol) {
|
|
273
|
+
const contentPos = toContentPos(eventData.dragAbsolutePosition, sourceCol);
|
|
274
|
+
const insertIdx = sourceCol.pendingOrderRef.current.length > 0 ? sourceCol.getSlotFromPosition(contentPos) : source.dragStartIndex;
|
|
275
|
+
sourceCol.reinjectDraggedItem(insertIdx, source.originalIndex);
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Clear transfer state — source column's monitor handles from here
|
|
279
|
+
transferStateRef.current = undefined;
|
|
280
|
+
} else if (!targetColId && transfer) {
|
|
281
|
+
// ── Drag is outside all columns but transfer was active ────
|
|
282
|
+
if (transfer.targetId) {
|
|
283
|
+
const prevTarget = columns.get(transfer.targetId);
|
|
284
|
+
prevTarget?.clearPhantomSlot();
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
// Reinject into source at original position
|
|
288
|
+
const sourceCol = columns.get(source.colId);
|
|
289
|
+
sourceCol?.reinjectDraggedItem(source.dragStartIndex, source.originalIndex);
|
|
290
|
+
transferStateRef.current = undefined;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
const onMonitorDragEnd = eventData => {
|
|
294
|
+
const transfer = transferStateRef.current;
|
|
295
|
+
const cancelled = eventData.cancelled;
|
|
296
|
+
if (transfer && transfer.targetId && !cancelled) {
|
|
297
|
+
// Successful drop during cross-container transfer — snap to phantom position
|
|
298
|
+
const targetCol = columns.get(transfer.targetId);
|
|
299
|
+
if (targetCol) {
|
|
300
|
+
const snapTarget = targetCol.getPhantomSnapTarget();
|
|
301
|
+
// Clear source info to prevent spurious re-triggers during snap animation
|
|
302
|
+
sourceInfoRef.current = undefined;
|
|
303
|
+
|
|
304
|
+
// Animate hover dimensions from source to target size during snap.
|
|
305
|
+
// This causes the hover content to reflow naturally (width/height change,
|
|
306
|
+
// not scale) so the card smoothly transitions to the target column's size.
|
|
307
|
+
const sourceDims = transfer.itemDimensions;
|
|
308
|
+
const firstItemMeas = targetCol.itemMeasurements.current.values().next().value;
|
|
309
|
+
if (sourceDims && firstItemMeas && sourceDims.width > 0 && sourceDims.height > 0) {
|
|
310
|
+
if (Math.abs(firstItemMeas.width - sourceDims.width) > 2 || Math.abs(firstItemMeas.height - sourceDims.height) > 2) {
|
|
311
|
+
const snapDelay = draxViewProps?.snapDelay ?? defaultSnapbackDelay;
|
|
312
|
+
const snapDuration = draxViewProps?.snapDuration ?? defaultSnapbackDuration;
|
|
313
|
+
hoverDimsSV.value = withDelay(snapDelay, withTiming({
|
|
314
|
+
x: firstItemMeas.width,
|
|
315
|
+
y: firstItemMeas.height
|
|
316
|
+
}, {
|
|
317
|
+
duration: snapDuration
|
|
318
|
+
}));
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
draxViewProps?.onMonitorDragEnd?.(eventData);
|
|
322
|
+
return snapTarget;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (transfer) {
|
|
326
|
+
// Cancelled or no target — clear phantom and reinject
|
|
327
|
+
if (transfer.targetId) {
|
|
328
|
+
const prevTarget = columns.get(transfer.targetId);
|
|
329
|
+
prevTarget?.clearPhantomSlot();
|
|
330
|
+
}
|
|
331
|
+
const sourceCol = columns.get(transfer.sourceId);
|
|
332
|
+
if (sourceCol) {
|
|
333
|
+
sourceCol.reinjectDraggedItem(transfer.dragStartIndex, transfer.sourceOriginalIndex);
|
|
334
|
+
}
|
|
335
|
+
transferStateRef.current = undefined;
|
|
336
|
+
}
|
|
337
|
+
sourceInfoRef.current = undefined;
|
|
338
|
+
const provided = draxViewProps?.onMonitorDragEnd?.(eventData);
|
|
339
|
+
return provided;
|
|
340
|
+
};
|
|
341
|
+
const onMonitorDragDrop = eventData => {
|
|
342
|
+
// For cross-container, drops go through onMonitorDragEnd (no receiver).
|
|
343
|
+
// This handles the case where a receiver exists.
|
|
344
|
+
const transfer = transferStateRef.current;
|
|
345
|
+
if (transfer && transfer.targetId) {
|
|
346
|
+
const targetCol = columns.get(transfer.targetId);
|
|
347
|
+
if (targetCol) {
|
|
348
|
+
const snapTarget = targetCol.getPhantomSnapTarget();
|
|
349
|
+
sourceInfoRef.current = undefined;
|
|
350
|
+
draxViewProps?.onMonitorDragDrop?.(eventData);
|
|
351
|
+
return snapTarget;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
sourceInfoRef.current = undefined;
|
|
355
|
+
return draxViewProps?.onMonitorDragDrop?.(eventData);
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
// ── Context value ──────────────────────────────────────────────────
|
|
359
|
+
|
|
360
|
+
// Pass boardInternal directly — NOT a copy. The useEffect above mutates
|
|
361
|
+
// boardInternal.finalizeTransfer after render. A snapshot copy would capture
|
|
362
|
+
// `undefined` and memoization would never update it.
|
|
363
|
+
// Cast needed: SortableBoardInternal<TItem> → SortableBoardInternal<unknown>
|
|
364
|
+
// is safe because consumers only read transferState and finalizeTransfer.
|
|
365
|
+
const contextValue = {
|
|
366
|
+
registerColumn: boardInternal.registerColumn,
|
|
367
|
+
unregisterColumn: boardInternal.unregisterColumn,
|
|
368
|
+
boardInternal: boardInternal
|
|
369
|
+
};
|
|
370
|
+
return /*#__PURE__*/_jsx(SortableBoardContext.Provider, {
|
|
371
|
+
value: contextValue,
|
|
372
|
+
children: /*#__PURE__*/_jsx(DraxView, {
|
|
373
|
+
...draxViewProps,
|
|
374
|
+
style: [draxViewProps?.style, style],
|
|
375
|
+
draggable: false,
|
|
376
|
+
receptive: false,
|
|
377
|
+
monitoring: true,
|
|
378
|
+
onMonitorDragStart: onMonitorDragStart,
|
|
379
|
+
onMonitorDragOver: onMonitorDragOver,
|
|
380
|
+
onMonitorDragEnd: onMonitorDragEnd,
|
|
381
|
+
onMonitorDragDrop: onMonitorDragDrop,
|
|
382
|
+
children: children
|
|
383
|
+
})
|
|
384
|
+
});
|
|
385
|
+
};
|
|
386
|
+
//# sourceMappingURL=SortableBoardContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useRef","withDelay","withTiming","runOnJS","runOnUI","DraxView","useDraxContext","defaultSnapbackDelay","defaultSnapbackDuration","SortableBoardContext","isSortableItemPayload","jsx","_jsx","SortableBoardContainer","board","style","children","draxViewProps","boardInternal","_internal","columns","transferStateRef","transferState","hoverClearDeferredRef","draggedIdSV","hoverReadySV","dragPhaseSV","hoverPositionSV","hoverDimsSV","setHoverContent","sourceInfoRef","undefined","findTargetColumn","absolutePos","colId","internal","entries","bounds","containerMeasurementsRef","current","x","width","y","height","toContentPos","col","scrollPosition","value","finalizeTransferRef","cleanupGenRef","transfer","targetId","source","get","sourceId","target","phantomIndex","phantomRef","atDisplayIndex","targetSlot","item","rawData","sourceOriginalIndex","draggedDisplayIndexRef","dragStartIndexRef","pendingOrderRef","sourceItemKey","itemKey","_srcDraggedItem","_draggedIdSV","_shiftsRef","_key","draggedItem","shiftsRef","gen","requestAnimationFrame","onTransfer","fromContainerId","fromIndex","dragStartIndex","toContainerId","toIndex","_hoverReadySV","_dragPhaseSV","_hoverPositionSV","_hoverDimsSV","_setHoverContent","finalizeTransfer","onMonitorDragStart","eventData","dragged","parentId","has","payload","sourceCol","originalIndex","keyExtractor","dims","measurements","committed","committedOrderRef","displayIndex","index","length","pos","indexOf","dimensions","onMonitorDragOver","targetColId","dragAbsolutePosition","targetCol","originalIndexes","contentPos","insertIdx","getSlotFromPosition","ejectDraggedItem","itemDimensions","setPhantomSlot","prevTarget","clearPhantomSlot","reinjectDraggedItem","onMonitorDragEnd","cancelled","snapTarget","getPhantomSnapTarget","sourceDims","firstItemMeas","itemMeasurements","values","next","Math","abs","snapDelay","snapDuration","duration","provided","onMonitorDragDrop","contextValue","registerColumn","unregisterColumn","Provider","draggable","receptive","monitoring"],"sourceRoot":"../../src","sources":["SortableBoardContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext } from 'react';
|
|
4
|
+
export const SortableBoardContext = /*#__PURE__*/createContext(undefined);
|
|
5
|
+
export const useSortableBoardContext = () => useContext(SortableBoardContext);
|
|
6
|
+
//# sourceMappingURL=SortableBoardContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","SortableBoardContext","undefined","useSortableBoardContext"],"sourceRoot":"../../src","sources":["SortableBoardContext.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;AAGjD,OAAO,MAAMC,oBAAoB,gBAAGF,aAAa,CAAwCG,SAAS,CAAC;AAEnG,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAMH,UAAU,CAACC,oBAAoB,CAAC","ignoreList":[]}
|