@dnd-kit/react 0.0.8-beta-20250203132449 → 0.0.8-beta-20250203145345
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 +38 -12
- package/index.d.ts +3 -2
- package/index.js +40 -14
- package/package.json +4 -4
- package/sortable.cjs +10 -8
- package/sortable.d.ts +4 -2
- package/sortable.js +11 -9
package/index.cjs
CHANGED
|
@@ -198,8 +198,8 @@ function useDraggable(input) {
|
|
|
198
198
|
manager
|
|
199
199
|
)
|
|
200
200
|
);
|
|
201
|
-
const
|
|
202
|
-
|
|
201
|
+
const trackedDraggable = hooks.useDeepSignal(draggable);
|
|
202
|
+
hooks.useComputed(() => draggable.status, [draggable]);
|
|
203
203
|
hooks.useOnValueChange(id, () => draggable.id = id);
|
|
204
204
|
hooks.useOnElementChange(handle, (handle2) => draggable.handle = handle2);
|
|
205
205
|
hooks.useOnElementChange(element, (element2) => draggable.element = element2);
|
|
@@ -220,12 +220,15 @@ function useDraggable(input) {
|
|
|
220
220
|
}
|
|
221
221
|
);
|
|
222
222
|
return {
|
|
223
|
-
draggable,
|
|
224
|
-
get
|
|
225
|
-
return
|
|
223
|
+
draggable: trackedDraggable,
|
|
224
|
+
get isDragging() {
|
|
225
|
+
return trackedDraggable.isDragging;
|
|
226
|
+
},
|
|
227
|
+
get isDropping() {
|
|
228
|
+
return trackedDraggable.isDropping;
|
|
226
229
|
},
|
|
227
|
-
get
|
|
228
|
-
return
|
|
230
|
+
get isDragSource() {
|
|
231
|
+
return trackedDraggable.isDragSource;
|
|
229
232
|
},
|
|
230
233
|
handleRef: react.useCallback(
|
|
231
234
|
(element2) => {
|
|
@@ -263,7 +266,26 @@ function DragOverlay({ children, className }) {
|
|
|
263
266
|
feedback.overlay = void 0;
|
|
264
267
|
};
|
|
265
268
|
}, [manager]);
|
|
266
|
-
|
|
269
|
+
const patchedManager = react.useMemo(() => {
|
|
270
|
+
if (!manager) return null;
|
|
271
|
+
const patchedRegistry = new Proxy(manager.registry, {
|
|
272
|
+
get(target, property) {
|
|
273
|
+
if (property === "register" || property === "unregister") {
|
|
274
|
+
return noop;
|
|
275
|
+
}
|
|
276
|
+
return target[property];
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
return new Proxy(manager, {
|
|
280
|
+
get(target, property) {
|
|
281
|
+
if (property === "registry") {
|
|
282
|
+
return patchedRegistry;
|
|
283
|
+
}
|
|
284
|
+
return target[property];
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}, [manager]);
|
|
288
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className, ref, "data-dnd-overlay": true, children: /* @__PURE__ */ jsxRuntime.jsx(DragDropContext.Provider, { value: patchedManager, children: renderChildren() }) });
|
|
267
289
|
function renderChildren() {
|
|
268
290
|
if (!source) return null;
|
|
269
291
|
if (typeof children === "function") {
|
|
@@ -272,6 +294,10 @@ function DragOverlay({ children, className }) {
|
|
|
272
294
|
return children;
|
|
273
295
|
}
|
|
274
296
|
}
|
|
297
|
+
function noop() {
|
|
298
|
+
return () => {
|
|
299
|
+
};
|
|
300
|
+
}
|
|
275
301
|
function Children({
|
|
276
302
|
children,
|
|
277
303
|
source
|
|
@@ -288,7 +314,7 @@ function useDroppable(input) {
|
|
|
288
314
|
manager
|
|
289
315
|
)
|
|
290
316
|
);
|
|
291
|
-
const
|
|
317
|
+
const trackedDroppalbe = hooks.useDeepSignal(droppable);
|
|
292
318
|
hooks.useOnValueChange(id, () => droppable.id = id);
|
|
293
319
|
hooks.useOnElementChange(element, (element2) => droppable.element = element2);
|
|
294
320
|
hooks.useOnValueChange(accept, () => droppable.id = id, void 0, state.deepEqual);
|
|
@@ -297,8 +323,9 @@ function useDroppable(input) {
|
|
|
297
323
|
hooks.useOnValueChange(disabled, () => droppable.disabled = disabled === true);
|
|
298
324
|
hooks.useOnValueChange(type, () => droppable.id = id);
|
|
299
325
|
return {
|
|
326
|
+
droppable: trackedDroppalbe,
|
|
300
327
|
get isDropTarget() {
|
|
301
|
-
return isDropTarget
|
|
328
|
+
return trackedDroppalbe.isDropTarget;
|
|
302
329
|
},
|
|
303
330
|
ref: react.useCallback(
|
|
304
331
|
(element2) => {
|
|
@@ -309,8 +336,7 @@ function useDroppable(input) {
|
|
|
309
336
|
droppable.element = element2 != null ? element2 : void 0;
|
|
310
337
|
},
|
|
311
338
|
[droppable]
|
|
312
|
-
)
|
|
313
|
-
droppable
|
|
339
|
+
)
|
|
314
340
|
};
|
|
315
341
|
}
|
|
316
342
|
function useDragOperation() {
|
package/index.d.ts
CHANGED
|
@@ -25,8 +25,9 @@ interface UseDraggableInput<T extends Data = Data> extends Omit<DraggableInput<T
|
|
|
25
25
|
}
|
|
26
26
|
declare function useDraggable<T extends Data = Data>(input: UseDraggableInput<T>): {
|
|
27
27
|
draggable: Draggable<T>;
|
|
28
|
+
readonly isDragging: boolean;
|
|
29
|
+
readonly isDropping: boolean;
|
|
28
30
|
readonly isDragSource: boolean;
|
|
29
|
-
readonly status: "idle" | "dragging" | "dropping";
|
|
30
31
|
handleRef: (element: Element | null) => void;
|
|
31
32
|
ref: (element: Element | null) => void;
|
|
32
33
|
};
|
|
@@ -41,9 +42,9 @@ interface UseDroppableInput<T extends Data = Data> extends Omit<DroppableInput<T
|
|
|
41
42
|
element?: RefOrValue<Element>;
|
|
42
43
|
}
|
|
43
44
|
declare function useDroppable<T extends Data = Data>(input: UseDroppableInput<T>): {
|
|
45
|
+
droppable: Droppable<T>;
|
|
44
46
|
readonly isDropTarget: boolean;
|
|
45
47
|
ref: (element: Element | null) => void;
|
|
46
|
-
droppable: Droppable<T>;
|
|
47
48
|
};
|
|
48
49
|
|
|
49
50
|
declare function useDragDropManager(): _dnd_kit_dom.DragDropManager<_dnd_kit_dom.Draggable<_dnd_kit_abstract.Data>, _dnd_kit_dom.Droppable<_dnd_kit_abstract.Data>> | null;
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createContext, useState, useEffect, startTransition, useContext, useCallback, useRef, useTransition, useLayoutEffect } from 'react';
|
|
1
|
+
import { createContext, useState, useEffect, startTransition, useContext, useCallback, useRef, useMemo, useTransition, useLayoutEffect } from 'react';
|
|
2
2
|
import { DragDropManager, defaultPreset, Draggable, Feedback, Droppable } from '@dnd-kit/dom';
|
|
3
|
-
import { useLatest, useOnValueChange, useIsomorphicLayoutEffect, useComputed, useOnElementChange,
|
|
3
|
+
import { useLatest, useOnValueChange, useIsomorphicLayoutEffect, useDeepSignal, useComputed, useOnElementChange, useConstant } from '@dnd-kit/react/hooks';
|
|
4
4
|
import { deepEqual } from '@dnd-kit/state';
|
|
5
5
|
import { jsx } from 'react/jsx-runtime';
|
|
6
6
|
import { currentValue } from '@dnd-kit/react/utilities';
|
|
@@ -196,8 +196,8 @@ function useDraggable(input) {
|
|
|
196
196
|
manager
|
|
197
197
|
)
|
|
198
198
|
);
|
|
199
|
-
const
|
|
200
|
-
|
|
199
|
+
const trackedDraggable = useDeepSignal(draggable);
|
|
200
|
+
useComputed(() => draggable.status, [draggable]);
|
|
201
201
|
useOnValueChange(id, () => draggable.id = id);
|
|
202
202
|
useOnElementChange(handle, (handle2) => draggable.handle = handle2);
|
|
203
203
|
useOnElementChange(element, (element2) => draggable.element = element2);
|
|
@@ -218,12 +218,15 @@ function useDraggable(input) {
|
|
|
218
218
|
}
|
|
219
219
|
);
|
|
220
220
|
return {
|
|
221
|
-
draggable,
|
|
222
|
-
get
|
|
223
|
-
return
|
|
221
|
+
draggable: trackedDraggable,
|
|
222
|
+
get isDragging() {
|
|
223
|
+
return trackedDraggable.isDragging;
|
|
224
|
+
},
|
|
225
|
+
get isDropping() {
|
|
226
|
+
return trackedDraggable.isDropping;
|
|
224
227
|
},
|
|
225
|
-
get
|
|
226
|
-
return
|
|
228
|
+
get isDragSource() {
|
|
229
|
+
return trackedDraggable.isDragSource;
|
|
227
230
|
},
|
|
228
231
|
handleRef: useCallback(
|
|
229
232
|
(element2) => {
|
|
@@ -261,7 +264,26 @@ function DragOverlay({ children, className }) {
|
|
|
261
264
|
feedback.overlay = void 0;
|
|
262
265
|
};
|
|
263
266
|
}, [manager]);
|
|
264
|
-
|
|
267
|
+
const patchedManager = useMemo(() => {
|
|
268
|
+
if (!manager) return null;
|
|
269
|
+
const patchedRegistry = new Proxy(manager.registry, {
|
|
270
|
+
get(target, property) {
|
|
271
|
+
if (property === "register" || property === "unregister") {
|
|
272
|
+
return noop;
|
|
273
|
+
}
|
|
274
|
+
return target[property];
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
return new Proxy(manager, {
|
|
278
|
+
get(target, property) {
|
|
279
|
+
if (property === "registry") {
|
|
280
|
+
return patchedRegistry;
|
|
281
|
+
}
|
|
282
|
+
return target[property];
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
}, [manager]);
|
|
286
|
+
return /* @__PURE__ */ jsx("div", { className, ref, "data-dnd-overlay": true, children: /* @__PURE__ */ jsx(DragDropContext.Provider, { value: patchedManager, children: renderChildren() }) });
|
|
265
287
|
function renderChildren() {
|
|
266
288
|
if (!source) return null;
|
|
267
289
|
if (typeof children === "function") {
|
|
@@ -270,6 +292,10 @@ function DragOverlay({ children, className }) {
|
|
|
270
292
|
return children;
|
|
271
293
|
}
|
|
272
294
|
}
|
|
295
|
+
function noop() {
|
|
296
|
+
return () => {
|
|
297
|
+
};
|
|
298
|
+
}
|
|
273
299
|
function Children({
|
|
274
300
|
children,
|
|
275
301
|
source
|
|
@@ -286,7 +312,7 @@ function useDroppable(input) {
|
|
|
286
312
|
manager
|
|
287
313
|
)
|
|
288
314
|
);
|
|
289
|
-
const
|
|
315
|
+
const trackedDroppalbe = useDeepSignal(droppable);
|
|
290
316
|
useOnValueChange(id, () => droppable.id = id);
|
|
291
317
|
useOnElementChange(element, (element2) => droppable.element = element2);
|
|
292
318
|
useOnValueChange(accept, () => droppable.id = id, void 0, deepEqual);
|
|
@@ -295,8 +321,9 @@ function useDroppable(input) {
|
|
|
295
321
|
useOnValueChange(disabled, () => droppable.disabled = disabled === true);
|
|
296
322
|
useOnValueChange(type, () => droppable.id = id);
|
|
297
323
|
return {
|
|
324
|
+
droppable: trackedDroppalbe,
|
|
298
325
|
get isDropTarget() {
|
|
299
|
-
return isDropTarget
|
|
326
|
+
return trackedDroppalbe.isDropTarget;
|
|
300
327
|
},
|
|
301
328
|
ref: useCallback(
|
|
302
329
|
(element2) => {
|
|
@@ -307,8 +334,7 @@ function useDroppable(input) {
|
|
|
307
334
|
droppable.element = element2 != null ? element2 : void 0;
|
|
308
335
|
},
|
|
309
336
|
[droppable]
|
|
310
|
-
)
|
|
311
|
-
droppable
|
|
337
|
+
)
|
|
312
338
|
};
|
|
313
339
|
}
|
|
314
340
|
function useDragOperation() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dnd-kit/react",
|
|
3
|
-
"version": "0.0.8-beta-
|
|
3
|
+
"version": "0.0.8-beta-20250203145345",
|
|
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": "0.0.8-beta-
|
|
60
|
-
"@dnd-kit/dom": "0.0.8-beta-
|
|
61
|
-
"@dnd-kit/state": "0.0.8-beta-
|
|
59
|
+
"@dnd-kit/abstract": "0.0.8-beta-20250203145345",
|
|
60
|
+
"@dnd-kit/dom": "0.0.8-beta-20250203145345",
|
|
61
|
+
"@dnd-kit/state": "0.0.8-beta-20250203145345",
|
|
62
62
|
"tslib": "^2.6.2"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
package/sortable.cjs
CHANGED
|
@@ -56,9 +56,7 @@ function useSortable(input) {
|
|
|
56
56
|
manager
|
|
57
57
|
);
|
|
58
58
|
});
|
|
59
|
-
const
|
|
60
|
-
const isDragSource = hooks.useComputed(() => sortable$1.isDragSource, [sortable$1]);
|
|
61
|
-
const status = hooks.useComputed(() => sortable$1.status, [sortable$1]);
|
|
59
|
+
const trackedSortable = hooks.useDeepSignal(sortable$1);
|
|
62
60
|
hooks.useOnValueChange(id, () => sortable$1.id = id);
|
|
63
61
|
hooks.useIsomorphicLayoutEffect(() => {
|
|
64
62
|
state.batch(() => {
|
|
@@ -106,14 +104,18 @@ function useSortable(input) {
|
|
|
106
104
|
state.deepEqual
|
|
107
105
|
);
|
|
108
106
|
return {
|
|
107
|
+
sortable: trackedSortable,
|
|
108
|
+
get isDragging() {
|
|
109
|
+
return trackedSortable.isDragging;
|
|
110
|
+
},
|
|
111
|
+
get isDropping() {
|
|
112
|
+
return trackedSortable.isDropping;
|
|
113
|
+
},
|
|
109
114
|
get isDragSource() {
|
|
110
|
-
return isDragSource
|
|
115
|
+
return trackedSortable.isDragSource;
|
|
111
116
|
},
|
|
112
117
|
get isDropTarget() {
|
|
113
|
-
return isDropTarget
|
|
114
|
-
},
|
|
115
|
-
get status() {
|
|
116
|
-
return status.value;
|
|
118
|
+
return trackedSortable.isDropTarget;
|
|
117
119
|
},
|
|
118
120
|
handleRef: react$1.useCallback(
|
|
119
121
|
(element2) => {
|
package/sortable.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Data } from '@dnd-kit/abstract';
|
|
2
|
-
import { SortableInput } from '@dnd-kit/dom/sortable';
|
|
2
|
+
import { SortableInput, Sortable } from '@dnd-kit/dom/sortable';
|
|
3
3
|
import { RefOrValue } from '@dnd-kit/react/utilities';
|
|
4
4
|
|
|
5
5
|
interface UseSortableInput<T extends Data = Data> extends Omit<SortableInput<T>, 'handle' | 'element' | 'target'> {
|
|
@@ -8,9 +8,11 @@ interface UseSortableInput<T extends Data = Data> extends Omit<SortableInput<T>,
|
|
|
8
8
|
target?: RefOrValue<Element>;
|
|
9
9
|
}
|
|
10
10
|
declare function useSortable<T extends Data = Data>(input: UseSortableInput<T>): {
|
|
11
|
+
sortable: Sortable<T>;
|
|
12
|
+
readonly isDragging: boolean;
|
|
13
|
+
readonly isDropping: boolean;
|
|
11
14
|
readonly isDragSource: boolean;
|
|
12
15
|
readonly isDropTarget: boolean;
|
|
13
|
-
readonly status: "idle" | "dragging" | "dropping";
|
|
14
16
|
handleRef: (element: Element | null) => void;
|
|
15
17
|
ref: (element: Element | null) => void;
|
|
16
18
|
sourceRef: (element: Element | null) => void;
|
package/sortable.js
CHANGED
|
@@ -2,7 +2,7 @@ import { useCallback } from 'react';
|
|
|
2
2
|
import { batch, deepEqual } from '@dnd-kit/state';
|
|
3
3
|
import { Sortable, defaultSortableTransition } from '@dnd-kit/dom/sortable';
|
|
4
4
|
import { useInstance } from '@dnd-kit/react';
|
|
5
|
-
import {
|
|
5
|
+
import { useDeepSignal, useOnValueChange, useIsomorphicLayoutEffect, useImmediateEffect, useOnElementChange } from '@dnd-kit/react/hooks';
|
|
6
6
|
import { currentValue } from '@dnd-kit/react/utilities';
|
|
7
7
|
|
|
8
8
|
var __defProp = Object.defineProperty;
|
|
@@ -54,9 +54,7 @@ function useSortable(input) {
|
|
|
54
54
|
manager
|
|
55
55
|
);
|
|
56
56
|
});
|
|
57
|
-
const
|
|
58
|
-
const isDragSource = useComputed(() => sortable.isDragSource, [sortable]);
|
|
59
|
-
const status = useComputed(() => sortable.status, [sortable]);
|
|
57
|
+
const trackedSortable = useDeepSignal(sortable);
|
|
60
58
|
useOnValueChange(id, () => sortable.id = id);
|
|
61
59
|
useIsomorphicLayoutEffect(() => {
|
|
62
60
|
batch(() => {
|
|
@@ -104,14 +102,18 @@ function useSortable(input) {
|
|
|
104
102
|
deepEqual
|
|
105
103
|
);
|
|
106
104
|
return {
|
|
105
|
+
sortable: trackedSortable,
|
|
106
|
+
get isDragging() {
|
|
107
|
+
return trackedSortable.isDragging;
|
|
108
|
+
},
|
|
109
|
+
get isDropping() {
|
|
110
|
+
return trackedSortable.isDropping;
|
|
111
|
+
},
|
|
107
112
|
get isDragSource() {
|
|
108
|
-
return isDragSource
|
|
113
|
+
return trackedSortable.isDragSource;
|
|
109
114
|
},
|
|
110
115
|
get isDropTarget() {
|
|
111
|
-
return isDropTarget
|
|
112
|
-
},
|
|
113
|
-
get status() {
|
|
114
|
-
return status.value;
|
|
116
|
+
return trackedSortable.isDropTarget;
|
|
115
117
|
},
|
|
116
118
|
handleRef: useCallback(
|
|
117
119
|
(element2) => {
|