@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 CHANGED
@@ -198,8 +198,8 @@ function useDraggable(input) {
198
198
  manager
199
199
  )
200
200
  );
201
- const isDragSource = hooks.useComputed(() => draggable.isDragSource, [draggable]);
202
- const status = hooks.useComputed(() => draggable.status, [draggable]);
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 isDragSource() {
225
- return isDragSource.value;
223
+ draggable: trackedDraggable,
224
+ get isDragging() {
225
+ return trackedDraggable.isDragging;
226
+ },
227
+ get isDropping() {
228
+ return trackedDraggable.isDropping;
226
229
  },
227
- get status() {
228
- return status.value;
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
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className, ref, "data-dnd-overlay": true, children: renderChildren() });
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 isDropTarget = hooks.useComputed(() => droppable.isDropTarget, [droppable]);
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.value;
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, useDeepSignal, useConstant } from '@dnd-kit/react/hooks';
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 isDragSource = useComputed(() => draggable.isDragSource, [draggable]);
200
- const status = useComputed(() => draggable.status, [draggable]);
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 isDragSource() {
223
- return isDragSource.value;
221
+ draggable: trackedDraggable,
222
+ get isDragging() {
223
+ return trackedDraggable.isDragging;
224
+ },
225
+ get isDropping() {
226
+ return trackedDraggable.isDropping;
224
227
  },
225
- get status() {
226
- return status.value;
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
- return /* @__PURE__ */ jsx("div", { className, ref, "data-dnd-overlay": true, children: renderChildren() });
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 isDropTarget = useComputed(() => droppable.isDropTarget, [droppable]);
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.value;
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-20250203132449",
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-20250203132449",
60
- "@dnd-kit/dom": "0.0.8-beta-20250203132449",
61
- "@dnd-kit/state": "0.0.8-beta-20250203132449",
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 isDropTarget = hooks.useComputed(() => sortable$1.isDropTarget, [sortable$1]);
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.value;
115
+ return trackedSortable.isDragSource;
111
116
  },
112
117
  get isDropTarget() {
113
- return isDropTarget.value;
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 { useComputed, useOnValueChange, useIsomorphicLayoutEffect, useImmediateEffect, useOnElementChange } from '@dnd-kit/react/hooks';
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 isDropTarget = useComputed(() => sortable.isDropTarget, [sortable]);
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.value;
113
+ return trackedSortable.isDragSource;
109
114
  },
110
115
  get isDropTarget() {
111
- return isDropTarget.value;
112
- },
113
- get status() {
114
- return status.value;
116
+ return trackedSortable.isDropTarget;
115
117
  },
116
118
  handleRef: useCallback(
117
119
  (element2) => {