@dnd-kit/react 0.5.0-beta-20260512133255 → 0.5.0-beta-20260518131345

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnd-kit/react",
3
- "version": "0.5.0-beta-20260512133255",
3
+ "version": "0.5.0-beta-20260518131345",
4
4
  "main": "./index.cjs",
5
5
  "module": "./index.js",
6
6
  "type": "module",
@@ -64,9 +64,9 @@
64
64
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
65
65
  },
66
66
  "dependencies": {
67
- "@dnd-kit/abstract": "0.5.0-beta-20260512133255",
68
- "@dnd-kit/dom": "0.5.0-beta-20260512133255",
69
- "@dnd-kit/state": "0.5.0-beta-20260512133255",
67
+ "@dnd-kit/abstract": "0.5.0-beta-20260518131345",
68
+ "@dnd-kit/dom": "0.5.0-beta-20260518131345",
69
+ "@dnd-kit/state": "0.5.0-beta-20260518131345",
70
70
  "tslib": "^2.6.2"
71
71
  },
72
72
  "peerDependencies": {
package/sortable.cjs CHANGED
@@ -86,7 +86,12 @@ function useSortable(input) {
86
86
  hooks.useOnElementChange(handle, (handle2) => sortable$1.handle = handle2);
87
87
  hooks.useOnElementChange(element, (element2) => sortable$1.element = element2);
88
88
  hooks.useOnElementChange(target, (target2) => sortable$1.target = target2);
89
- hooks.useOnValueChange(disabled, () => sortable$1.disabled = disabled === true);
89
+ hooks.useOnValueChange(
90
+ disabled,
91
+ () => sortable$1.disabled = disabled != null ? disabled : false,
92
+ void 0,
93
+ state.deepEqual
94
+ );
90
95
  hooks.useOnValueChange(
91
96
  sensors,
92
97
  () => sortable$1.sensors = sensors,
package/sortable.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["src/sortable/useSortable.ts"],"names":["defaultSortableTransition","sortable","useInstance","Sortable","currentValue","useDeepSignal","useOnValueChange","useIsomorphicLayoutEffect","batch","deepEqual","immediateEffect","useOnElementChange","handle","element","target","useCallback"],"mappings":"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","file":"sortable.cjs","sourcesContent":["import {useCallback} from 'react';\nimport {batch, deepEqual} from '@dnd-kit/state';\nimport {type Data} from '@dnd-kit/abstract';\nimport {Sortable, defaultSortableTransition} from '@dnd-kit/dom/sortable';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {useInstance} from '@dnd-kit/react';\nimport {\n useImmediateEffect as immediateEffect,\n useIsomorphicLayoutEffect,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'target'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n target?: RefOrValue<Element>;\n}\n\nexport function useSortable<T extends Data = Data>(input: UseSortableInput<T>) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n modifiers,\n sensors,\n target,\n type,\n plugins,\n } = input;\n const transition = {...defaultSortableTransition, ...input.transition};\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n },\n manager\n );\n });\n\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (sortable.id = id));\n\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n\n useOnValueChange(type, () => (sortable.type = type));\n useOnValueChange(\n accept,\n () => (sortable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n if (sortable.manager?.dragOperation.status.idle && transition?.idle) {\n sortable.refreshShape();\n }\n },\n immediateEffect\n );\n useOnElementChange(handle, (handle) => (sortable.handle = handle));\n useOnElementChange(element, (element) => (sortable.element = element));\n useOnElementChange(target, (target) => (sortable.target = target));\n useOnValueChange(disabled, () => (sortable.disabled = disabled === true));\n useOnValueChange(\n sensors,\n () => (sortable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () => (sortable.collisionDetector = collisionDetector)\n );\n useOnValueChange(\n collisionPriority,\n () => (sortable.collisionPriority = collisionPriority)\n );\n useOnValueChange(\n plugins,\n () => (sortable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n transition,\n () => (sortable.transition = transition),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (sortable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (sortable.alignment = input.alignment)\n );\n\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n sortable.handle = element ?? undefined;\n },\n [sortable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.element?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.element = element ?? undefined;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.source?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.source = element ?? undefined;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.target?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.target = element ?? undefined;\n },\n [sortable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n"]}
1
+ {"version":3,"sources":["src/sortable/useSortable.ts"],"names":["defaultSortableTransition","sortable","useInstance","Sortable","currentValue","useDeepSignal","useOnValueChange","useIsomorphicLayoutEffect","batch","deepEqual","immediateEffect","useOnElementChange","handle","element","target","useCallback"],"mappings":"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","file":"sortable.cjs","sourcesContent":["import {useCallback} from 'react';\nimport {batch, deepEqual} from '@dnd-kit/state';\nimport {type Data} from '@dnd-kit/abstract';\nimport {Sortable, defaultSortableTransition} from '@dnd-kit/dom/sortable';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {useInstance} from '@dnd-kit/react';\nimport {\n useImmediateEffect as immediateEffect,\n useIsomorphicLayoutEffect,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'target'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n target?: RefOrValue<Element>;\n}\n\nexport function useSortable<T extends Data = Data>(input: UseSortableInput<T>) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n modifiers,\n sensors,\n target,\n type,\n plugins,\n } = input;\n const transition = {...defaultSortableTransition, ...input.transition};\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n },\n manager\n );\n });\n\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (sortable.id = id));\n\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n\n useOnValueChange(type, () => (sortable.type = type));\n useOnValueChange(\n accept,\n () => (sortable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n if (sortable.manager?.dragOperation.status.idle && transition?.idle) {\n sortable.refreshShape();\n }\n },\n immediateEffect\n );\n useOnElementChange(handle, (handle) => (sortable.handle = handle));\n useOnElementChange(element, (element) => (sortable.element = element));\n useOnElementChange(target, (target) => (sortable.target = target));\n useOnValueChange(\n disabled,\n () => (sortable.disabled = disabled ?? false),\n undefined,\n deepEqual\n );\n useOnValueChange(\n sensors,\n () => (sortable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () => (sortable.collisionDetector = collisionDetector)\n );\n useOnValueChange(\n collisionPriority,\n () => (sortable.collisionPriority = collisionPriority)\n );\n useOnValueChange(\n plugins,\n () => (sortable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n transition,\n () => (sortable.transition = transition),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (sortable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (sortable.alignment = input.alignment)\n );\n\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n sortable.handle = element ?? undefined;\n },\n [sortable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.element?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.element = element ?? undefined;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.source?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.source = element ?? undefined;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.target?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.target = element ?? undefined;\n },\n [sortable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n"]}
package/sortable.js CHANGED
@@ -85,7 +85,12 @@ function useSortable(input) {
85
85
  useOnElementChange(handle, (handle2) => sortable.handle = handle2);
86
86
  useOnElementChange(element, (element2) => sortable.element = element2);
87
87
  useOnElementChange(target, (target2) => sortable.target = target2);
88
- useOnValueChange(disabled, () => sortable.disabled = disabled === true);
88
+ useOnValueChange(
89
+ disabled,
90
+ () => sortable.disabled = disabled != null ? disabled : false,
91
+ void 0,
92
+ deepEqual
93
+ );
89
94
  useOnValueChange(
90
95
  sensors,
91
96
  () => sortable.sensors = sensors,
package/sortable.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["src/sortable/useSortable.ts"],"names":["immediateEffect","handle","element","target"],"mappings":"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","file":"sortable.js","sourcesContent":["import {useCallback} from 'react';\nimport {batch, deepEqual} from '@dnd-kit/state';\nimport {type Data} from '@dnd-kit/abstract';\nimport {Sortable, defaultSortableTransition} from '@dnd-kit/dom/sortable';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {useInstance} from '@dnd-kit/react';\nimport {\n useImmediateEffect as immediateEffect,\n useIsomorphicLayoutEffect,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'target'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n target?: RefOrValue<Element>;\n}\n\nexport function useSortable<T extends Data = Data>(input: UseSortableInput<T>) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n modifiers,\n sensors,\n target,\n type,\n plugins,\n } = input;\n const transition = {...defaultSortableTransition, ...input.transition};\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n },\n manager\n );\n });\n\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (sortable.id = id));\n\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n\n useOnValueChange(type, () => (sortable.type = type));\n useOnValueChange(\n accept,\n () => (sortable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n if (sortable.manager?.dragOperation.status.idle && transition?.idle) {\n sortable.refreshShape();\n }\n },\n immediateEffect\n );\n useOnElementChange(handle, (handle) => (sortable.handle = handle));\n useOnElementChange(element, (element) => (sortable.element = element));\n useOnElementChange(target, (target) => (sortable.target = target));\n useOnValueChange(disabled, () => (sortable.disabled = disabled === true));\n useOnValueChange(\n sensors,\n () => (sortable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () => (sortable.collisionDetector = collisionDetector)\n );\n useOnValueChange(\n collisionPriority,\n () => (sortable.collisionPriority = collisionPriority)\n );\n useOnValueChange(\n plugins,\n () => (sortable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n transition,\n () => (sortable.transition = transition),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (sortable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (sortable.alignment = input.alignment)\n );\n\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n sortable.handle = element ?? undefined;\n },\n [sortable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.element?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.element = element ?? undefined;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.source?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.source = element ?? undefined;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.target?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.target = element ?? undefined;\n },\n [sortable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n"]}
1
+ {"version":3,"sources":["src/sortable/useSortable.ts"],"names":["immediateEffect","handle","element","target"],"mappings":"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","file":"sortable.js","sourcesContent":["import {useCallback} from 'react';\nimport {batch, deepEqual} from '@dnd-kit/state';\nimport {type Data} from '@dnd-kit/abstract';\nimport {Sortable, defaultSortableTransition} from '@dnd-kit/dom/sortable';\nimport type {SortableInput} from '@dnd-kit/dom/sortable';\nimport {useInstance} from '@dnd-kit/react';\nimport {\n useImmediateEffect as immediateEffect,\n useIsomorphicLayoutEffect,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nexport interface UseSortableInput<T extends Data = Data>\n extends Omit<SortableInput<T>, 'handle' | 'element' | 'target'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n target?: RefOrValue<Element>;\n}\n\nexport function useSortable<T extends Data = Data>(input: UseSortableInput<T>) {\n const {\n accept,\n collisionDetector,\n collisionPriority,\n id,\n data,\n element,\n handle,\n index,\n group,\n disabled,\n modifiers,\n sensors,\n target,\n type,\n plugins,\n } = input;\n const transition = {...defaultSortableTransition, ...input.transition};\n const sortable = useInstance((manager) => {\n return new Sortable(\n {\n ...input,\n transition,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n target: currentValue(target),\n },\n manager\n );\n });\n\n const trackedSortable = useDeepSignal(sortable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (sortable.id = id));\n\n useIsomorphicLayoutEffect(() => {\n batch(() => {\n sortable.group = group;\n sortable.index = index;\n });\n }, [sortable, group, index]);\n\n useOnValueChange(type, () => (sortable.type = type));\n useOnValueChange(\n accept,\n () => (sortable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(data, () => data && (sortable.data = data));\n useOnValueChange(\n index,\n () => {\n if (sortable.manager?.dragOperation.status.idle && transition?.idle) {\n sortable.refreshShape();\n }\n },\n immediateEffect\n );\n useOnElementChange(handle, (handle) => (sortable.handle = handle));\n useOnElementChange(element, (element) => (sortable.element = element));\n useOnElementChange(target, (target) => (sortable.target = target));\n useOnValueChange(\n disabled,\n () => (sortable.disabled = disabled ?? false),\n undefined,\n deepEqual\n );\n useOnValueChange(\n sensors,\n () => (sortable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () => (sortable.collisionDetector = collisionDetector)\n );\n useOnValueChange(\n collisionPriority,\n () => (sortable.collisionPriority = collisionPriority)\n );\n useOnValueChange(\n plugins,\n () => (sortable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n transition,\n () => (sortable.transition = transition),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (sortable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (sortable.alignment = input.alignment)\n );\n\n return {\n sortable: trackedSortable,\n get isDragging() {\n return trackedSortable.isDragging;\n },\n get isDropping() {\n return trackedSortable.isDropping;\n },\n get isDragSource() {\n return trackedSortable.isDragSource;\n },\n get isDropTarget() {\n return trackedSortable.isDropTarget;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n sortable.handle = element ?? undefined;\n },\n [sortable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.element?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.element = element ?? undefined;\n },\n [sortable]\n ),\n sourceRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.source?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.source = element ?? undefined;\n },\n [sortable]\n ),\n targetRef: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n sortable.target?.isConnected &&\n !sortable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n sortable.target = element ?? undefined;\n },\n [sortable]\n ),\n };\n}\n\nfunction shouldUpdateSynchronously(key: string, oldValue: any, newValue: any) {\n // Update synchronously after drop animation\n if (key === 'isDragSource' && !newValue && oldValue) return true;\n\n return false;\n}\n"]}