@dnd-kit/react 0.1.17 → 0.1.18-beta-20250523142052
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/index.cjs +67 -58
- package/index.d.ts +23 -24
- package/index.js +70 -61
- package/package.json +4 -4
package/index.cjs
CHANGED
|
@@ -43,41 +43,42 @@ var defaultManager = new dom.DragDropManager();
|
|
|
43
43
|
var DragDropContext = react.createContext(
|
|
44
44
|
defaultManager
|
|
45
45
|
);
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
46
|
+
var Renderer = react.memo(
|
|
47
|
+
react.forwardRef(({ children }, ref) => {
|
|
48
|
+
const [transitionCount, setTransitionCount] = react.useState(0);
|
|
49
|
+
const rendering = react.useRef(null);
|
|
50
|
+
const resolver = react.useRef(null);
|
|
51
|
+
const renderer = react.useMemo(
|
|
52
|
+
() => ({
|
|
53
|
+
renderer: {
|
|
54
|
+
get rendering() {
|
|
55
|
+
var _a2;
|
|
56
|
+
return (_a2 = rendering.current) != null ? _a2 : Promise.resolve();
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
trackRendering(callback) {
|
|
60
|
+
if (!rendering.current) {
|
|
61
|
+
rendering.current = new Promise((resolve) => {
|
|
62
|
+
resolver.current = resolve;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
react.startTransition(() => {
|
|
66
|
+
callback();
|
|
67
|
+
setTransitionCount((count) => count + 1);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}),
|
|
71
|
+
[]
|
|
72
|
+
);
|
|
73
|
+
hooks.useIsomorphicLayoutEffect(() => {
|
|
60
74
|
var _a2;
|
|
61
75
|
(_a2 = resolver.current) == null ? void 0 : _a2.call(resolver);
|
|
62
76
|
rendering.current = null;
|
|
63
|
-
},
|
|
64
|
-
react.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
trackRendering(callback) {
|
|
69
|
-
if (!rendering.current) {
|
|
70
|
-
rendering.current = new Promise((resolve) => {
|
|
71
|
-
resolver.current = resolve;
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
startTransition2(() => {
|
|
75
|
-
callback();
|
|
76
|
-
setTransitionCount((count) => count + 1);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
77
|
+
}, [children, transitionCount]);
|
|
78
|
+
react.useImperativeHandle(ref, () => renderer);
|
|
79
|
+
return null;
|
|
80
|
+
})
|
|
81
|
+
);
|
|
81
82
|
var options = [void 0, state.deepEqual];
|
|
82
83
|
function DragDropProvider(_a2) {
|
|
83
84
|
var _b = _a2, {
|
|
@@ -98,10 +99,8 @@ function DragDropProvider(_a2) {
|
|
|
98
99
|
"onDragEnd"
|
|
99
100
|
]);
|
|
100
101
|
var _a3;
|
|
101
|
-
const
|
|
102
|
-
const [manager, setManager] = react.useState(
|
|
103
|
-
(_a3 = input.manager) != null ? _a3 : null
|
|
104
|
-
);
|
|
102
|
+
const rendererRef = react.useRef(null);
|
|
103
|
+
const [manager, setManager] = react.useState((_a3 = input.manager) != null ? _a3 : null);
|
|
105
104
|
const { plugins, modifiers, sensors } = input;
|
|
106
105
|
const handleBeforeDragStart = hooks.useLatest(onBeforeDragStart);
|
|
107
106
|
const handleDragStart = hooks.useLatest(onDragStart);
|
|
@@ -111,49 +110,51 @@ function DragDropProvider(_a2) {
|
|
|
111
110
|
const handleCollision = hooks.useLatest(onCollision);
|
|
112
111
|
react.useEffect(() => {
|
|
113
112
|
var _a4;
|
|
113
|
+
if (!rendererRef.current) throw new Error("Renderer not found");
|
|
114
|
+
const { renderer, trackRendering } = rendererRef.current;
|
|
114
115
|
const manager2 = (_a4 = input.manager) != null ? _a4 : new dom.DragDropManager(input);
|
|
115
116
|
manager2.renderer = renderer;
|
|
116
|
-
manager2.monitor.addEventListener("beforedragstart", (event
|
|
117
|
+
manager2.monitor.addEventListener("beforedragstart", (event) => {
|
|
117
118
|
const callback = handleBeforeDragStart.current;
|
|
118
119
|
if (callback) {
|
|
119
|
-
trackRendering(() => callback(event,
|
|
120
|
+
trackRendering(() => callback(event, manager2));
|
|
120
121
|
}
|
|
121
122
|
});
|
|
122
123
|
manager2.monitor.addEventListener(
|
|
123
124
|
"dragstart",
|
|
124
|
-
(event
|
|
125
|
+
(event) => {
|
|
125
126
|
var _a5;
|
|
126
|
-
return (_a5 = handleDragStart.current) == null ? void 0 : _a5.call(handleDragStart, event,
|
|
127
|
+
return (_a5 = handleDragStart.current) == null ? void 0 : _a5.call(handleDragStart, event, manager2);
|
|
127
128
|
}
|
|
128
129
|
);
|
|
129
|
-
manager2.monitor.addEventListener("dragover", (event
|
|
130
|
+
manager2.monitor.addEventListener("dragover", (event) => {
|
|
130
131
|
const callback = handleDragOver.current;
|
|
131
132
|
if (callback) {
|
|
132
|
-
trackRendering(() => callback(event,
|
|
133
|
+
trackRendering(() => callback(event, manager2));
|
|
133
134
|
}
|
|
134
135
|
});
|
|
135
|
-
manager2.monitor.addEventListener("dragmove", (event
|
|
136
|
+
manager2.monitor.addEventListener("dragmove", (event) => {
|
|
136
137
|
const callback = handleDragMove.current;
|
|
137
138
|
if (callback) {
|
|
138
|
-
trackRendering(() => callback(event,
|
|
139
|
+
trackRendering(() => callback(event, manager2));
|
|
139
140
|
}
|
|
140
141
|
});
|
|
141
|
-
manager2.monitor.addEventListener("dragend", (event
|
|
142
|
+
manager2.monitor.addEventListener("dragend", (event) => {
|
|
142
143
|
const callback = handleDragEnd.current;
|
|
143
144
|
if (callback) {
|
|
144
|
-
trackRendering(() => callback(event,
|
|
145
|
+
trackRendering(() => callback(event, manager2));
|
|
145
146
|
}
|
|
146
147
|
});
|
|
147
148
|
manager2.monitor.addEventListener(
|
|
148
149
|
"collision",
|
|
149
|
-
(event
|
|
150
|
+
(event) => {
|
|
150
151
|
var _a5;
|
|
151
|
-
return (_a5 = handleCollision.current) == null ? void 0 : _a5.call(handleCollision, event,
|
|
152
|
+
return (_a5 = handleCollision.current) == null ? void 0 : _a5.call(handleCollision, event, manager2);
|
|
152
153
|
}
|
|
153
154
|
);
|
|
154
155
|
react.startTransition(() => setManager(manager2));
|
|
155
156
|
return manager2.destroy;
|
|
156
|
-
}, [
|
|
157
|
+
}, [input.manager]);
|
|
157
158
|
hooks.useOnValueChange(
|
|
158
159
|
plugins,
|
|
159
160
|
() => manager && (manager.plugins = plugins != null ? plugins : dom.defaultPreset.plugins),
|
|
@@ -169,7 +170,10 @@ function DragDropProvider(_a2) {
|
|
|
169
170
|
() => manager && (manager.modifiers = modifiers != null ? modifiers : dom.defaultPreset.modifiers),
|
|
170
171
|
...options
|
|
171
172
|
);
|
|
172
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
173
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(DragDropContext.Provider, { value: manager, children: [
|
|
174
|
+
/* @__PURE__ */ jsxRuntime.jsx(Renderer, { ref: rendererRef, children }),
|
|
175
|
+
children
|
|
176
|
+
] });
|
|
173
177
|
}
|
|
174
178
|
function useDragDropManager() {
|
|
175
179
|
return react.useContext(DragDropContext);
|
|
@@ -257,15 +261,20 @@ function shouldUpdateSynchronously(key, oldValue, newValue) {
|
|
|
257
261
|
if (key === "isDragSource" && !newValue && oldValue) return true;
|
|
258
262
|
return false;
|
|
259
263
|
}
|
|
260
|
-
function DragOverlay({
|
|
264
|
+
function DragOverlay({
|
|
265
|
+
children,
|
|
266
|
+
className,
|
|
267
|
+
style,
|
|
268
|
+
tag,
|
|
269
|
+
disabled
|
|
270
|
+
}) {
|
|
271
|
+
var _a2;
|
|
261
272
|
const ref = react.useRef(null);
|
|
262
273
|
const manager = useDragDropManager();
|
|
263
|
-
const source = hooks.useComputed(
|
|
264
|
-
|
|
265
|
-
[manager]
|
|
266
|
-
).value;
|
|
274
|
+
const source = (_a2 = hooks.useComputed(() => manager == null ? void 0 : manager.dragOperation.source, [manager]).value) != null ? _a2 : null;
|
|
275
|
+
const isDisabled = typeof disabled === "function" ? disabled(source) : disabled;
|
|
267
276
|
react.useEffect(() => {
|
|
268
|
-
if (!ref.current || !manager) return;
|
|
277
|
+
if (!ref.current || !manager || isDisabled) return;
|
|
269
278
|
const feedback = manager.plugins.find(
|
|
270
279
|
(plugin) => plugin instanceof dom.Feedback
|
|
271
280
|
);
|
|
@@ -274,7 +283,7 @@ function DragOverlay({ children, className, style, tag }) {
|
|
|
274
283
|
return () => {
|
|
275
284
|
feedback.overlay = void 0;
|
|
276
285
|
};
|
|
277
|
-
}, [manager]);
|
|
286
|
+
}, [manager, isDisabled]);
|
|
278
287
|
const patchedManager = react.useMemo(() => {
|
|
279
288
|
if (!manager) return null;
|
|
280
289
|
const patchedRegistry = new Proxy(manager.registry, {
|
|
@@ -300,7 +309,7 @@ function DragOverlay({ children, className, style, tag }) {
|
|
|
300
309
|
renderChildren()
|
|
301
310
|
) });
|
|
302
311
|
function renderChildren() {
|
|
303
|
-
if (!source) return null;
|
|
312
|
+
if (!source || isDisabled) return null;
|
|
304
313
|
if (typeof children === "function") {
|
|
305
314
|
return /* @__PURE__ */ jsxRuntime.jsx(Children, { source, children });
|
|
306
315
|
}
|
package/index.d.ts
CHANGED
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { PropsWithChildren, RefObject, MutableRefObject, ReactNode } from 'react';
|
|
3
|
-
import * as _dnd_kit_abstract from '@dnd-kit/abstract';
|
|
4
3
|
import { Data, DragDropEvents, DragDropManager as DragDropManager$1 } from '@dnd-kit/abstract';
|
|
5
|
-
import
|
|
6
|
-
import { DragDropManagerInput, DragDropManager, Draggable, Droppable, DraggableInput, DroppableInput } from '@dnd-kit/dom';
|
|
4
|
+
import { Draggable, Droppable, DragDropManager, DragDropManagerInput, DraggableInput, DroppableInput } from '@dnd-kit/dom';
|
|
7
5
|
export { DragDropManager, KeyboardSensor, PointerSensor } from '@dnd-kit/dom';
|
|
8
6
|
import { CleanupFunction } from '@dnd-kit/state';
|
|
9
7
|
|
|
10
|
-
type Events$1<T extends Data = Data> =
|
|
11
|
-
interface Props$1<T extends Data = Data> extends DragDropManagerInput, PropsWithChildren {
|
|
12
|
-
manager?:
|
|
13
|
-
onBeforeDragStart?: Events$1<T>['beforedragstart'];
|
|
14
|
-
onCollision?: Events$1<T>['collision'];
|
|
15
|
-
onDragStart?: Events$1<T>['dragstart'];
|
|
16
|
-
onDragMove?: Events$1<T>['dragmove'];
|
|
17
|
-
onDragOver?: Events$1<T>['dragover'];
|
|
18
|
-
onDragEnd?: Events$1<T>['dragend'];
|
|
8
|
+
type Events$1<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>> = DragDropEvents<U, V, W>;
|
|
9
|
+
interface Props$1<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>> extends DragDropManagerInput, PropsWithChildren {
|
|
10
|
+
manager?: W;
|
|
11
|
+
onBeforeDragStart?: Events$1<T, U, V, W>['beforedragstart'];
|
|
12
|
+
onCollision?: Events$1<T, U, V, W>['collision'];
|
|
13
|
+
onDragStart?: Events$1<T, U, V, W>['dragstart'];
|
|
14
|
+
onDragMove?: Events$1<T, U, V, W>['dragmove'];
|
|
15
|
+
onDragOver?: Events$1<T, U, V, W>['dragover'];
|
|
16
|
+
onDragEnd?: Events$1<T, U, V, W>['dragend'];
|
|
19
17
|
}
|
|
20
|
-
declare function DragDropProvider<T extends Data = Data>({ children, onCollision, onBeforeDragStart, onDragStart, onDragMove, onDragOver, onDragEnd, ...input }: Props$1<T>): react_jsx_runtime.JSX.Element;
|
|
18
|
+
declare function DragDropProvider<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>>({ children, onCollision, onBeforeDragStart, onDragStart, onDragMove, onDragOver, onDragEnd, ...input }: Props$1<T, U, V, W>): react_jsx_runtime.JSX.Element;
|
|
21
19
|
|
|
22
20
|
type Ref<T> = RefObject<T | null | undefined> | MutableRefObject<T>;
|
|
23
21
|
type RefOrValue<T> = T | Ref<T> | null | undefined;
|
|
@@ -35,13 +33,14 @@ declare function useDraggable<T extends Data = Data>(input: UseDraggableInput<T>
|
|
|
35
33
|
ref: (element: Element | null) => void;
|
|
36
34
|
};
|
|
37
35
|
|
|
38
|
-
interface Props {
|
|
36
|
+
interface Props<T extends Data, U extends Draggable<T>> {
|
|
39
37
|
className?: string;
|
|
40
|
-
children: ReactNode | ((source:
|
|
38
|
+
children: ReactNode | ((source: U) => ReactNode);
|
|
41
39
|
style?: React.CSSProperties;
|
|
42
40
|
tag?: string;
|
|
41
|
+
disabled?: boolean | ((source: U | null) => boolean);
|
|
43
42
|
}
|
|
44
|
-
declare function DragOverlay({ children, className, style, tag }: Props): react_jsx_runtime.JSX.Element;
|
|
43
|
+
declare function DragOverlay<T extends Data, U extends Draggable<T>>({ children, className, style, tag, disabled, }: Props<T, U>): react_jsx_runtime.JSX.Element;
|
|
45
44
|
|
|
46
45
|
interface UseDroppableInput<T extends Data = Data> extends Omit<DroppableInput<T>, 'element'> {
|
|
47
46
|
element?: RefOrValue<Element>;
|
|
@@ -52,7 +51,7 @@ declare function useDroppable<T extends Data = Data>(input: UseDroppableInput<T>
|
|
|
52
51
|
ref: (element: Element | null) => void;
|
|
53
52
|
};
|
|
54
53
|
|
|
55
|
-
declare function useDragDropManager
|
|
54
|
+
declare function useDragDropManager<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>>(): W | null;
|
|
56
55
|
|
|
57
56
|
type DragDropEventMap = {
|
|
58
57
|
beforedragstart: 'onBeforeDragStart';
|
|
@@ -61,19 +60,19 @@ type EventHandlerName<T extends string> = T extends keyof DragDropEventMap ? Dra
|
|
|
61
60
|
/**
|
|
62
61
|
* Type for all possible event handlers
|
|
63
62
|
*/
|
|
64
|
-
type Events<T extends Data
|
|
65
|
-
type EventHandlers<T extends Data = Data> = {
|
|
66
|
-
[K in keyof Events<T> as EventHandlerName<K>]: Events<T>[K];
|
|
63
|
+
type Events<T extends Data, U extends Draggable<T>, V extends Droppable<T>, W extends DragDropManager<T, U, V>> = DragDropEvents<U, V, W>;
|
|
64
|
+
type EventHandlers<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>> = {
|
|
65
|
+
[K in keyof Events<T, U, V, W> as EventHandlerName<K>]: Events<T, U, V, W>[K];
|
|
67
66
|
};
|
|
68
67
|
/**
|
|
69
68
|
* Hook to monitor drag and drop events anywhere within a DragDropProvider
|
|
70
69
|
* @param handlers Object containing event handlers for drag and drop events
|
|
71
70
|
*/
|
|
72
|
-
declare function useDragDropMonitor<T extends Data = Data>(handlers: Partial<EventHandlers<T>>): void;
|
|
71
|
+
declare function useDragDropMonitor<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>>(handlers: Partial<EventHandlers<T, U, V, W>>): void;
|
|
73
72
|
|
|
74
|
-
declare function useDragOperation(): {
|
|
75
|
-
readonly source:
|
|
76
|
-
readonly target:
|
|
73
|
+
declare function useDragOperation<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>>(): {
|
|
74
|
+
readonly source: U | null | undefined;
|
|
75
|
+
readonly target: V | null | undefined;
|
|
77
76
|
};
|
|
78
77
|
|
|
79
78
|
interface Instance<T extends DragDropManager$1<any, any> = DragDropManager$1<any, any>> {
|
package/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { createContext,
|
|
1
|
+
import { createContext, memo, forwardRef, useState, useRef, useMemo, startTransition, useImperativeHandle, useEffect, useContext, useCallback, createElement } from 'react';
|
|
2
2
|
import { DragDropManager, defaultPreset, Draggable, Feedback, Droppable } from '@dnd-kit/dom';
|
|
3
3
|
export { KeyboardSensor, PointerSensor } from '@dnd-kit/dom';
|
|
4
|
-
import { useLatest, useOnValueChange,
|
|
4
|
+
import { useIsomorphicLayoutEffect, useLatest, useOnValueChange, useDeepSignal, useOnElementChange, useComputed } from '@dnd-kit/react/hooks';
|
|
5
5
|
import { deepEqual, ValueHistory, derived, batch } from '@dnd-kit/state';
|
|
6
|
-
import { jsx } from 'react/jsx-runtime';
|
|
6
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
7
7
|
import { currentValue } from '@dnd-kit/react/utilities';
|
|
8
8
|
import { CollisionPriority, CollisionType } from '@dnd-kit/abstract';
|
|
9
9
|
|
|
@@ -42,41 +42,42 @@ var defaultManager = new DragDropManager();
|
|
|
42
42
|
var DragDropContext = createContext(
|
|
43
43
|
defaultManager
|
|
44
44
|
);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
45
|
+
var Renderer = memo(
|
|
46
|
+
forwardRef(({ children }, ref) => {
|
|
47
|
+
const [transitionCount, setTransitionCount] = useState(0);
|
|
48
|
+
const rendering = useRef(null);
|
|
49
|
+
const resolver = useRef(null);
|
|
50
|
+
const renderer = useMemo(
|
|
51
|
+
() => ({
|
|
52
|
+
renderer: {
|
|
53
|
+
get rendering() {
|
|
54
|
+
var _a2;
|
|
55
|
+
return (_a2 = rendering.current) != null ? _a2 : Promise.resolve();
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
trackRendering(callback) {
|
|
59
|
+
if (!rendering.current) {
|
|
60
|
+
rendering.current = new Promise((resolve) => {
|
|
61
|
+
resolver.current = resolve;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
startTransition(() => {
|
|
65
|
+
callback();
|
|
66
|
+
setTransitionCount((count) => count + 1);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}),
|
|
70
|
+
[]
|
|
71
|
+
);
|
|
72
|
+
useIsomorphicLayoutEffect(() => {
|
|
59
73
|
var _a2;
|
|
60
74
|
(_a2 = resolver.current) == null ? void 0 : _a2.call(resolver);
|
|
61
75
|
rendering.current = null;
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
trackRendering(callback) {
|
|
68
|
-
if (!rendering.current) {
|
|
69
|
-
rendering.current = new Promise((resolve) => {
|
|
70
|
-
resolver.current = resolve;
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
startTransition2(() => {
|
|
74
|
-
callback();
|
|
75
|
-
setTransitionCount((count) => count + 1);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
}
|
|
76
|
+
}, [children, transitionCount]);
|
|
77
|
+
useImperativeHandle(ref, () => renderer);
|
|
78
|
+
return null;
|
|
79
|
+
})
|
|
80
|
+
);
|
|
80
81
|
var options = [void 0, deepEqual];
|
|
81
82
|
function DragDropProvider(_a2) {
|
|
82
83
|
var _b = _a2, {
|
|
@@ -97,10 +98,8 @@ function DragDropProvider(_a2) {
|
|
|
97
98
|
"onDragEnd"
|
|
98
99
|
]);
|
|
99
100
|
var _a3;
|
|
100
|
-
const
|
|
101
|
-
const [manager, setManager] = useState(
|
|
102
|
-
(_a3 = input.manager) != null ? _a3 : null
|
|
103
|
-
);
|
|
101
|
+
const rendererRef = useRef(null);
|
|
102
|
+
const [manager, setManager] = useState((_a3 = input.manager) != null ? _a3 : null);
|
|
104
103
|
const { plugins, modifiers, sensors } = input;
|
|
105
104
|
const handleBeforeDragStart = useLatest(onBeforeDragStart);
|
|
106
105
|
const handleDragStart = useLatest(onDragStart);
|
|
@@ -110,49 +109,51 @@ function DragDropProvider(_a2) {
|
|
|
110
109
|
const handleCollision = useLatest(onCollision);
|
|
111
110
|
useEffect(() => {
|
|
112
111
|
var _a4;
|
|
112
|
+
if (!rendererRef.current) throw new Error("Renderer not found");
|
|
113
|
+
const { renderer, trackRendering } = rendererRef.current;
|
|
113
114
|
const manager2 = (_a4 = input.manager) != null ? _a4 : new DragDropManager(input);
|
|
114
115
|
manager2.renderer = renderer;
|
|
115
|
-
manager2.monitor.addEventListener("beforedragstart", (event
|
|
116
|
+
manager2.monitor.addEventListener("beforedragstart", (event) => {
|
|
116
117
|
const callback = handleBeforeDragStart.current;
|
|
117
118
|
if (callback) {
|
|
118
|
-
trackRendering(() => callback(event,
|
|
119
|
+
trackRendering(() => callback(event, manager2));
|
|
119
120
|
}
|
|
120
121
|
});
|
|
121
122
|
manager2.monitor.addEventListener(
|
|
122
123
|
"dragstart",
|
|
123
|
-
(event
|
|
124
|
+
(event) => {
|
|
124
125
|
var _a5;
|
|
125
|
-
return (_a5 = handleDragStart.current) == null ? void 0 : _a5.call(handleDragStart, event,
|
|
126
|
+
return (_a5 = handleDragStart.current) == null ? void 0 : _a5.call(handleDragStart, event, manager2);
|
|
126
127
|
}
|
|
127
128
|
);
|
|
128
|
-
manager2.monitor.addEventListener("dragover", (event
|
|
129
|
+
manager2.monitor.addEventListener("dragover", (event) => {
|
|
129
130
|
const callback = handleDragOver.current;
|
|
130
131
|
if (callback) {
|
|
131
|
-
trackRendering(() => callback(event,
|
|
132
|
+
trackRendering(() => callback(event, manager2));
|
|
132
133
|
}
|
|
133
134
|
});
|
|
134
|
-
manager2.monitor.addEventListener("dragmove", (event
|
|
135
|
+
manager2.monitor.addEventListener("dragmove", (event) => {
|
|
135
136
|
const callback = handleDragMove.current;
|
|
136
137
|
if (callback) {
|
|
137
|
-
trackRendering(() => callback(event,
|
|
138
|
+
trackRendering(() => callback(event, manager2));
|
|
138
139
|
}
|
|
139
140
|
});
|
|
140
|
-
manager2.monitor.addEventListener("dragend", (event
|
|
141
|
+
manager2.monitor.addEventListener("dragend", (event) => {
|
|
141
142
|
const callback = handleDragEnd.current;
|
|
142
143
|
if (callback) {
|
|
143
|
-
trackRendering(() => callback(event,
|
|
144
|
+
trackRendering(() => callback(event, manager2));
|
|
144
145
|
}
|
|
145
146
|
});
|
|
146
147
|
manager2.monitor.addEventListener(
|
|
147
148
|
"collision",
|
|
148
|
-
(event
|
|
149
|
+
(event) => {
|
|
149
150
|
var _a5;
|
|
150
|
-
return (_a5 = handleCollision.current) == null ? void 0 : _a5.call(handleCollision, event,
|
|
151
|
+
return (_a5 = handleCollision.current) == null ? void 0 : _a5.call(handleCollision, event, manager2);
|
|
151
152
|
}
|
|
152
153
|
);
|
|
153
154
|
startTransition(() => setManager(manager2));
|
|
154
155
|
return manager2.destroy;
|
|
155
|
-
}, [
|
|
156
|
+
}, [input.manager]);
|
|
156
157
|
useOnValueChange(
|
|
157
158
|
plugins,
|
|
158
159
|
() => manager && (manager.plugins = plugins != null ? plugins : defaultPreset.plugins),
|
|
@@ -168,7 +169,10 @@ function DragDropProvider(_a2) {
|
|
|
168
169
|
() => manager && (manager.modifiers = modifiers != null ? modifiers : defaultPreset.modifiers),
|
|
169
170
|
...options
|
|
170
171
|
);
|
|
171
|
-
return /* @__PURE__ */
|
|
172
|
+
return /* @__PURE__ */ jsxs(DragDropContext.Provider, { value: manager, children: [
|
|
173
|
+
/* @__PURE__ */ jsx(Renderer, { ref: rendererRef, children }),
|
|
174
|
+
children
|
|
175
|
+
] });
|
|
172
176
|
}
|
|
173
177
|
function useDragDropManager() {
|
|
174
178
|
return useContext(DragDropContext);
|
|
@@ -256,15 +260,20 @@ function shouldUpdateSynchronously(key, oldValue, newValue) {
|
|
|
256
260
|
if (key === "isDragSource" && !newValue && oldValue) return true;
|
|
257
261
|
return false;
|
|
258
262
|
}
|
|
259
|
-
function DragOverlay({
|
|
263
|
+
function DragOverlay({
|
|
264
|
+
children,
|
|
265
|
+
className,
|
|
266
|
+
style,
|
|
267
|
+
tag,
|
|
268
|
+
disabled
|
|
269
|
+
}) {
|
|
270
|
+
var _a2;
|
|
260
271
|
const ref = useRef(null);
|
|
261
272
|
const manager = useDragDropManager();
|
|
262
|
-
const source = useComputed(
|
|
263
|
-
|
|
264
|
-
[manager]
|
|
265
|
-
).value;
|
|
273
|
+
const source = (_a2 = useComputed(() => manager == null ? void 0 : manager.dragOperation.source, [manager]).value) != null ? _a2 : null;
|
|
274
|
+
const isDisabled = typeof disabled === "function" ? disabled(source) : disabled;
|
|
266
275
|
useEffect(() => {
|
|
267
|
-
if (!ref.current || !manager) return;
|
|
276
|
+
if (!ref.current || !manager || isDisabled) return;
|
|
268
277
|
const feedback = manager.plugins.find(
|
|
269
278
|
(plugin) => plugin instanceof Feedback
|
|
270
279
|
);
|
|
@@ -273,7 +282,7 @@ function DragOverlay({ children, className, style, tag }) {
|
|
|
273
282
|
return () => {
|
|
274
283
|
feedback.overlay = void 0;
|
|
275
284
|
};
|
|
276
|
-
}, [manager]);
|
|
285
|
+
}, [manager, isDisabled]);
|
|
277
286
|
const patchedManager = useMemo(() => {
|
|
278
287
|
if (!manager) return null;
|
|
279
288
|
const patchedRegistry = new Proxy(manager.registry, {
|
|
@@ -299,7 +308,7 @@ function DragOverlay({ children, className, style, tag }) {
|
|
|
299
308
|
renderChildren()
|
|
300
309
|
) });
|
|
301
310
|
function renderChildren() {
|
|
302
|
-
if (!source) return null;
|
|
311
|
+
if (!source || isDisabled) return null;
|
|
303
312
|
if (typeof children === "function") {
|
|
304
313
|
return /* @__PURE__ */ jsx(Children, { source, children });
|
|
305
314
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dnd-kit/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.18-beta-20250523142052",
|
|
4
4
|
"main": "./index.cjs",
|
|
5
5
|
"module": "./index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -56,9 +56,9 @@
|
|
|
56
56
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@dnd-kit/abstract": "
|
|
60
|
-
"@dnd-kit/dom": "
|
|
61
|
-
"@dnd-kit/state": "
|
|
59
|
+
"@dnd-kit/abstract": "0.1.18-beta-20250523142052",
|
|
60
|
+
"@dnd-kit/dom": "0.1.18-beta-20250523142052",
|
|
61
|
+
"@dnd-kit/state": "0.1.18-beta-20250523142052",
|
|
62
62
|
"tslib": "^2.6.2"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|