@dnd-kit/react 0.0.4-beta-20240622155137 → 0.0.4

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
@@ -38,8 +38,9 @@ var __objRest = (source, exclude) => {
38
38
  }
39
39
  return target;
40
40
  };
41
+ var defaultManager = new dom.DragDropManager();
41
42
  var DragDropContext = react.createContext(
42
- new dom.DragDropManager()
43
+ defaultManager
43
44
  );
44
45
  function useRenderer() {
45
46
  const [_, startTransition2] = react.useTransition();
@@ -169,10 +170,12 @@ function useDragDropManager() {
169
170
  function useInstance(initializer) {
170
171
  var _a;
171
172
  const manager = (_a = useDragDropManager()) != null ? _a : void 0;
172
- const [instance] = react.useState(() => initializer());
173
+ const [instance] = react.useState(
174
+ () => initializer(manager === defaultManager ? void 0 : manager)
175
+ );
173
176
  react.useEffect(() => {
174
177
  instance.manager = manager;
175
- return manager == null ? void 0 : manager.registry.register(instance);
178
+ return instance.register();
176
179
  }, [instance, manager]);
177
180
  return instance;
178
181
  }
@@ -183,12 +186,12 @@ function useDraggable(input) {
183
186
  const handle = utilities.currentValue(input.handle);
184
187
  const element = utilities.currentValue(input.element);
185
188
  const draggable = useInstance(
186
- () => new dom.Draggable(
189
+ (manager) => new dom.Draggable(
187
190
  __spreadProps(__spreadValues({}, input), {
188
191
  handle,
189
192
  element
190
193
  }),
191
- void 0
194
+ manager
192
195
  )
193
196
  );
194
197
  const isDragSource = hooks.useComputed(() => draggable.isDragSource);
@@ -238,11 +241,11 @@ function useDroppable(input) {
238
241
  const { collisionDetector, data, disabled, id, accept, type } = input;
239
242
  const element = utilities.currentValue(input.element);
240
243
  const droppable = useInstance(
241
- () => new dom.Droppable(
244
+ (manager) => new dom.Droppable(
242
245
  __spreadProps(__spreadValues({}, input), {
243
246
  element
244
247
  }),
245
- void 0
248
+ manager
246
249
  )
247
250
  );
248
251
  const isDropTarget = hooks.useComputed(() => droppable.isDropTarget);
@@ -285,5 +288,6 @@ exports.useDragDropManager = useDragDropManager;
285
288
  exports.useDragOperation = useDragOperation;
286
289
  exports.useDraggable = useDraggable;
287
290
  exports.useDroppable = useDroppable;
291
+ exports.useInstance = useInstance;
288
292
  //# sourceMappingURL=out.js.map
289
293
  //# sourceMappingURL=index.cjs.map
package/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { PropsWithChildren } from 'react';
3
3
  import * as _dnd_kit_abstract from '@dnd-kit/abstract';
4
- import { DragDropEvents, Data } from '@dnd-kit/abstract';
4
+ import { DragDropEvents, Data, DragDropManager as DragDropManager$1 } from '@dnd-kit/abstract';
5
5
  import * as _dnd_kit_dom from '@dnd-kit/dom';
6
6
  import { DragDropManagerInput, DragDropManager, Draggable, Droppable, DraggableInput, DroppableInput } from '@dnd-kit/dom';
7
7
  import { RefOrValue } from '@dnd-kit/react/utilities';
8
+ import { CleanupFunction } from '@dnd-kit/state';
8
9
 
9
10
  type Events = DragDropEvents<Draggable, Droppable, DragDropManager>;
10
11
  interface Props extends DragDropManagerInput, PropsWithChildren {
@@ -46,4 +47,10 @@ declare function useDragOperation(): {
46
47
  readonly target: _dnd_kit_dom.Droppable<_dnd_kit_abstract.Data> | null | undefined;
47
48
  };
48
49
 
49
- export { DragDropProvider, useDragDropManager, useDragOperation, useDraggable, useDroppable };
50
+ interface Instance<T extends DragDropManager$1<any, any> = DragDropManager$1<any, any>> {
51
+ manager: T | undefined;
52
+ register(): CleanupFunction | void;
53
+ }
54
+ declare function useInstance<T extends Instance>(initializer: (manager: DragDropManager$1<any, any> | undefined) => T): T;
55
+
56
+ export { DragDropProvider, type UseDraggableInput, type UseDroppableInput, useDragDropManager, useDragOperation, useDraggable, useDroppable, useInstance };
package/index.js CHANGED
@@ -36,8 +36,9 @@ var __objRest = (source, exclude) => {
36
36
  }
37
37
  return target;
38
38
  };
39
+ var defaultManager = new DragDropManager();
39
40
  var DragDropContext = createContext(
40
- new DragDropManager()
41
+ defaultManager
41
42
  );
42
43
  function useRenderer() {
43
44
  const [_, startTransition2] = useTransition();
@@ -167,10 +168,12 @@ function useDragDropManager() {
167
168
  function useInstance(initializer) {
168
169
  var _a;
169
170
  const manager = (_a = useDragDropManager()) != null ? _a : void 0;
170
- const [instance] = useState(() => initializer());
171
+ const [instance] = useState(
172
+ () => initializer(manager === defaultManager ? void 0 : manager)
173
+ );
171
174
  useEffect(() => {
172
175
  instance.manager = manager;
173
- return manager == null ? void 0 : manager.registry.register(instance);
176
+ return instance.register();
174
177
  }, [instance, manager]);
175
178
  return instance;
176
179
  }
@@ -181,12 +184,12 @@ function useDraggable(input) {
181
184
  const handle = currentValue(input.handle);
182
185
  const element = currentValue(input.element);
183
186
  const draggable = useInstance(
184
- () => new Draggable(
187
+ (manager) => new Draggable(
185
188
  __spreadProps(__spreadValues({}, input), {
186
189
  handle,
187
190
  element
188
191
  }),
189
- void 0
192
+ manager
190
193
  )
191
194
  );
192
195
  const isDragSource = useComputed(() => draggable.isDragSource);
@@ -236,11 +239,11 @@ function useDroppable(input) {
236
239
  const { collisionDetector, data, disabled, id, accept, type } = input;
237
240
  const element = currentValue(input.element);
238
241
  const droppable = useInstance(
239
- () => new Droppable(
242
+ (manager) => new Droppable(
240
243
  __spreadProps(__spreadValues({}, input), {
241
244
  element
242
245
  }),
243
- void 0
246
+ manager
244
247
  )
245
248
  );
246
249
  const isDropTarget = useComputed(() => droppable.isDropTarget);
@@ -278,6 +281,6 @@ function useDragOperation() {
278
281
  };
279
282
  }
280
283
 
281
- export { DragDropProvider, useDragDropManager, useDragOperation, useDraggable, useDroppable };
284
+ export { DragDropProvider, useDragDropManager, useDragOperation, useDraggable, useDroppable, useInstance };
282
285
  //# sourceMappingURL=out.js.map
283
286
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnd-kit/react",
3
- "version": "0.0.4-beta-20240622155137",
3
+ "version": "0.0.4",
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.4-beta-20240622155137",
60
- "@dnd-kit/dom": "0.0.4-beta-20240622155137",
61
- "@dnd-kit/state": "0.0.4-beta-20240622155137",
59
+ "@dnd-kit/abstract": "^0.0.4",
60
+ "@dnd-kit/dom": "^0.0.4",
61
+ "@dnd-kit/state": "^0.0.4",
62
62
  "tslib": "^2.6.2"
63
63
  },
64
64
  "peerDependencies": {
package/sortable.cjs CHANGED
@@ -45,7 +45,7 @@ function useSortable(input) {
45
45
  const handle = utilities.currentValue(input.handle);
46
46
  const element = utilities.currentValue(input.element);
47
47
  const target = utilities.currentValue(input.target);
48
- const sortable$1 = hooks.useConstant(() => {
48
+ const sortable$1 = react.useInstance((manager2) => {
49
49
  return new sortable.Sortable(
50
50
  __spreadProps(__spreadValues({}, input), {
51
51
  handle,
@@ -53,19 +53,9 @@ function useSortable(input) {
53
53
  target,
54
54
  feedback
55
55
  }),
56
- void 0
56
+ manager2
57
57
  );
58
58
  });
59
- react$1.useEffect(() => {
60
- sortable$1.manager = manager != null ? manager : void 0;
61
- if (!manager) return;
62
- manager.registry.register(sortable$1.draggable);
63
- manager.registry.register(sortable$1.droppable);
64
- return () => {
65
- manager.registry.unregister(sortable$1.draggable);
66
- manager.registry.unregister(sortable$1.droppable);
67
- };
68
- }, [sortable$1, manager]);
69
59
  const isDropTarget = hooks.useComputed(() => sortable$1.isDropTarget);
70
60
  const isDragSource = hooks.useComputed(() => sortable$1.isDragSource);
71
61
  const status = hooks.useComputed(() => sortable$1.status);
package/sortable.js CHANGED
@@ -1,8 +1,8 @@
1
- import { useEffect, useCallback } from 'react';
1
+ import { useCallback } from 'react';
2
2
  import { deepEqual } from '@dnd-kit/state';
3
3
  import { Sortable, defaultSortableTransition } from '@dnd-kit/dom/sortable';
4
- import { useDragDropManager } from '@dnd-kit/react';
5
- import { useConstant, useComputed, useOnValueChange, useIsomorphicLayoutEffect, useImmediateEffect } from '@dnd-kit/react/hooks';
4
+ import { useDragDropManager, useInstance } from '@dnd-kit/react';
5
+ import { useComputed, useOnValueChange, useIsomorphicLayoutEffect, useImmediateEffect } from '@dnd-kit/react/hooks';
6
6
  import { currentValue } from '@dnd-kit/react/utilities';
7
7
 
8
8
  var __defProp = Object.defineProperty;
@@ -43,7 +43,7 @@ function useSortable(input) {
43
43
  const handle = currentValue(input.handle);
44
44
  const element = currentValue(input.element);
45
45
  const target = currentValue(input.target);
46
- const sortable = useConstant(() => {
46
+ const sortable = useInstance((manager2) => {
47
47
  return new Sortable(
48
48
  __spreadProps(__spreadValues({}, input), {
49
49
  handle,
@@ -51,19 +51,9 @@ function useSortable(input) {
51
51
  target,
52
52
  feedback
53
53
  }),
54
- void 0
54
+ manager2
55
55
  );
56
56
  });
57
- useEffect(() => {
58
- sortable.manager = manager != null ? manager : void 0;
59
- if (!manager) return;
60
- manager.registry.register(sortable.draggable);
61
- manager.registry.register(sortable.droppable);
62
- return () => {
63
- manager.registry.unregister(sortable.draggable);
64
- manager.registry.unregister(sortable.droppable);
65
- };
66
- }, [sortable, manager]);
67
57
  const isDropTarget = useComputed(() => sortable.isDropTarget);
68
58
  const isDragSource = useComputed(() => sortable.isDragSource);
69
59
  const status = useComputed(() => sortable.status);