@vuu-ui/vuu-utils 4.0.0 → 4.1.0

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.
Files changed (40) hide show
  1. package/package.json +7 -7
  2. package/src/vendor/@dnd-kit/abstract/index.d.ts +114 -32
  3. package/src/vendor/@dnd-kit/abstract/index.js +430 -280
  4. package/src/vendor/@dnd-kit/abstract/index.js.map +1 -1
  5. package/src/vendor/@dnd-kit/abstract/modifiers.d.ts +7 -7
  6. package/src/vendor/@dnd-kit/abstract/modifiers.js.map +1 -1
  7. package/src/vendor/@dnd-kit/abstract/package.json +8 -3
  8. package/src/vendor/@dnd-kit/collision/dist/index.js +10 -3
  9. package/src/vendor/@dnd-kit/collision/package.json +8 -3
  10. package/src/vendor/@dnd-kit/dom/index.d.ts +225 -126
  11. package/src/vendor/@dnd-kit/dom/index.js +998 -484
  12. package/src/vendor/@dnd-kit/dom/index.js.map +1 -1
  13. package/src/vendor/@dnd-kit/dom/modifiers.d.ts +1 -1
  14. package/src/vendor/@dnd-kit/dom/package.json +11 -5
  15. package/src/vendor/@dnd-kit/dom/plugins/debug.js +10 -7
  16. package/src/vendor/@dnd-kit/dom/plugins/debug.js.map +1 -1
  17. package/src/vendor/@dnd-kit/dom/sortable.d.ts +45 -11
  18. package/src/vendor/@dnd-kit/dom/sortable.js +203 -54
  19. package/src/vendor/@dnd-kit/dom/sortable.js.map +1 -1
  20. package/src/vendor/@dnd-kit/dom/utilities.d.ts +82 -10
  21. package/src/vendor/@dnd-kit/dom/utilities.js +249 -95
  22. package/src/vendor/@dnd-kit/dom/utilities.js.map +1 -1
  23. package/src/vendor/@dnd-kit/geometry/package.json +7 -2
  24. package/src/vendor/@dnd-kit/react/hooks.js +61 -38
  25. package/src/vendor/@dnd-kit/react/hooks.js.map +1 -0
  26. package/src/vendor/@dnd-kit/react/index.d.ts +18 -9
  27. package/src/vendor/@dnd-kit/react/index.js +100 -59
  28. package/src/vendor/@dnd-kit/react/index.js.map +1 -0
  29. package/src/vendor/@dnd-kit/react/package.json +17 -5
  30. package/src/vendor/@dnd-kit/react/sortable.d.ts +1 -1
  31. package/src/vendor/@dnd-kit/react/sortable.js +24 -10
  32. package/src/vendor/@dnd-kit/react/sortable.js.map +1 -0
  33. package/src/vendor/@dnd-kit/react/utilities.js.map +1 -0
  34. package/src/vendor/@dnd-kit/state/dist/index.js +1 -1
  35. package/src/vendor/@dnd-kit/state/package.json +6 -1
  36. package/src/vendor/@preact/signals-core/dist/signals-core.js +1 -1
  37. package/src/vendor/@preact/signals-core/dist/signals-core.js.map +1 -1
  38. package/types/ThemeProvider.d.ts +1 -1
  39. package/types/context-definitions/DataProvider.d.ts +1 -1
  40. package/types/context-definitions/DataSourceProvider.d.ts +1 -1
@@ -20,7 +20,7 @@ declare class RestrictToElement extends Modifier<DragDropManager, Options> {
20
20
  x: number;
21
21
  y: number;
22
22
  };
23
- static configure: (options: Options) => _dnd_kit_abstract.PluginDescriptor<any, any, typeof RestrictToElement>;
23
+ static configure: (options: Options) => _dnd_kit_abstract.PluginDescriptor<any, _dnd_kit_abstract.Plugin<any, Options>, typeof RestrictToElement>;
24
24
  }
25
25
 
26
26
  export { RestrictToElement, RestrictToWindow };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnd-kit/dom",
3
- "version": "0.1.21",
3
+ "version": "0.5.1",
4
4
  "type": "module",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
@@ -70,23 +70,29 @@
70
70
  "build:sortable": "tsup --entry.sortable src/sortable/index.ts",
71
71
  "build:utilities": "tsup --entry.utilities src/utilities/index.ts",
72
72
  "dev": "bun build:utilities --watch & bun build:core --watch & bun build:sortable --watch & bun build:modifiers --watch & bun build:plugins --watch",
73
+ "test": "bun test",
73
74
  "lint": "TIMING=1 eslint src/**/*.ts* --fix",
74
75
  "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
75
76
  },
76
77
  "dependencies": {
77
- "@dnd-kit/abstract": "^0.1.21",
78
- "@dnd-kit/collision": "^0.1.21",
79
- "@dnd-kit/geometry": "^0.1.21",
80
- "@dnd-kit/state": "^0.1.21",
78
+ "@dnd-kit/abstract": "^0.5.1",
79
+ "@dnd-kit/collision": "^0.5.1",
80
+ "@dnd-kit/geometry": "^0.5.1",
81
+ "@dnd-kit/state": "^0.5.1",
81
82
  "tslib": "^2.6.2"
82
83
  },
83
84
  "devDependencies": {
84
85
  "@dnd-kit/eslint-config": "*",
86
+ "bun-types": "^1.2.15",
85
87
  "eslint": "^8.38.0",
86
88
  "tsup": "8.3.0",
87
89
  "typescript": "^5.5.2"
88
90
  },
89
91
  "publishConfig": {
90
92
  "access": "public"
93
+ },
94
+ "repository": {
95
+ "type": "git",
96
+ "url": "https://github.com/clauderic/dnd-kit"
91
97
  }
92
98
  }
@@ -1,6 +1,6 @@
1
1
  import { effects } from '../../state/dist/index.js';
2
2
  import { Plugin } from '../../abstract/index.js';
3
- import { hidePopover, showPopover } from '../utilities.js';
3
+ import { getFixedPositionOffset, hidePopover, showPopover } from '../utilities.js';
4
4
 
5
5
  // src/plugins/debug/debug.ts
6
6
  var Debug = class extends Plugin {
@@ -31,8 +31,9 @@ var Debug = class extends Plugin {
31
31
  element.style.color = "rgba(0,0,0,0.9)";
32
32
  document.body.appendChild(element);
33
33
  }
34
- element.style.top = `${boundingRectangle.top}px`;
35
- element.style.left = `${boundingRectangle.left}px`;
34
+ const draggableOffset = getFixedPositionOffset();
35
+ element.style.top = `${boundingRectangle.top + draggableOffset.y}px`;
36
+ element.style.left = `${boundingRectangle.left + draggableOffset.x}px`;
36
37
  element.style.width = `${boundingRectangle.width}px`;
37
38
  element.style.height = `${boundingRectangle.height}px`;
38
39
  hidePopover(element);
@@ -57,8 +58,9 @@ var Debug = class extends Plugin {
57
58
  document.body.appendChild(debugElement);
58
59
  }
59
60
  debugElement.style.backgroundColor = droppable.isDropTarget ? "rgba(13, 210, 36, 0.6)" : collidingIds.includes(droppable.id) ? "rgba(255, 193, 7, 0.5)" : "rgba(0, 0, 0, 0.1)";
60
- debugElement.style.top = `${boundingRectangle.top}px`;
61
- debugElement.style.left = `${boundingRectangle.left}px`;
61
+ const droppableOffset = getFixedPositionOffset();
62
+ debugElement.style.top = `${boundingRectangle.top + droppableOffset.y}px`;
63
+ debugElement.style.left = `${boundingRectangle.left + droppableOffset.x}px`;
62
64
  debugElement.style.width = `${boundingRectangle.width}px`;
63
65
  debugElement.style.height = `${boundingRectangle.height}px`;
64
66
  debugElement.textContent = `${droppable.id}`;
@@ -84,8 +86,9 @@ var Debug = class extends Plugin {
84
86
  positionElement.appendChild(vertical);
85
87
  document.body.appendChild(positionElement);
86
88
  }
87
- positionElement.style.top = `${y}px`;
88
- positionElement.style.left = `${x}px`;
89
+ const posOffset = getFixedPositionOffset();
90
+ positionElement.style.top = `${y + posOffset.y}px`;
91
+ positionElement.style.left = `${x + posOffset.x}px`;
89
92
  hidePopover(positionElement);
90
93
  queueMicrotask(() => positionElement && showPopover(positionElement));
91
94
  } else {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/plugins/debug/debug.ts"],"names":[],"mappings":"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","file":"debug.js","sourcesContent":["import {effects} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\nimport {showPopover, hidePopover} from '@dnd-kit/dom/utilities';\n\nexport class Debug extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n const elements = new Map<UniqueIdentifier, HTMLElement>();\n let draggableElement: HTMLElement | null = null;\n let positionElement: HTMLElement | null = null;\n\n const cleanup = effects(() => {\n const {dragOperation} = manager;\n const {x, y} = dragOperation.position.current;\n const {current: _, idle} = dragOperation.status;\n const {collisions} = manager.collisionObserver;\n const draggable = dragOperation.source;\n const topCollisions = collisions.slice(1, 3);\n const collidingIds = topCollisions.map(({id}) => id);\n\n if (draggable && dragOperation.shape) {\n const element = draggableElement ?? createDebugElement();\n const {boundingRectangle} = dragOperation.shape.current;\n\n if (!draggableElement) {\n draggableElement = element;\n\n const style = document.createElement('style');\n style.textContent = `dialog[data-dnd-kit-debug]::backdrop {display: none;}`;\n\n element.textContent = `${draggable.id}`;\n element.setAttribute('data-dnd-kit-debug', '');\n element.appendChild(style);\n element.style.backgroundColor = 'rgba(118, 190, 250, 0.5)';\n element.style.color = 'rgba(0,0,0,0.9)';\n\n document.body.appendChild(element);\n }\n\n element.style.top = `${boundingRectangle.top}px`;\n element.style.left = `${boundingRectangle.left}px`;\n element.style.width = `${boundingRectangle.width}px`;\n element.style.height = `${boundingRectangle.height}px`;\n\n hidePopover(element);\n showPopover(element);\n } else {\n draggableElement?.remove();\n draggableElement = null;\n }\n\n for (const [id, element] of elements) {\n if (!manager.registry.droppables.has(id)) {\n element.remove();\n elements.delete(id);\n }\n }\n\n for (const droppable of manager.registry.droppables) {\n const element = elements.get(droppable.id);\n\n if (droppable.shape) {\n const {boundingRectangle} = droppable.shape;\n const debugElement = element ?? createDebugElement();\n\n if (!element) {\n elements.set(droppable.id, debugElement);\n document.body.appendChild(debugElement);\n }\n\n debugElement.style.backgroundColor = droppable.isDropTarget\n ? 'rgba(13, 210, 36, 0.6)'\n : collidingIds.includes(droppable.id)\n ? 'rgba(255, 193, 7, 0.5)'\n : 'rgba(0, 0, 0, 0.1)';\n\n debugElement.style.top = `${boundingRectangle.top}px`;\n debugElement.style.left = `${boundingRectangle.left}px`;\n debugElement.style.width = `${boundingRectangle.width}px`;\n debugElement.style.height = `${boundingRectangle.height}px`;\n debugElement.textContent = `${droppable.id}`;\n } else if (element) {\n element.remove();\n elements.delete(droppable.id);\n }\n }\n\n if (!idle) {\n if (!positionElement) {\n positionElement = createDebugElement();\n\n const horizontal = document.createElement('div');\n const vertical = document.createElement('div');\n\n horizontal.style.position = 'absolute';\n horizontal.style.width = '25px';\n horizontal.style.height = '1px';\n horizontal.style.backgroundColor = '#000';\n\n vertical.style.position = 'absolute';\n vertical.style.width = '1px';\n vertical.style.height = '25px';\n vertical.style.backgroundColor = '#000';\n\n positionElement.appendChild(horizontal);\n positionElement.appendChild(vertical);\n document.body.appendChild(positionElement);\n }\n\n positionElement.style.top = `${y}px`;\n positionElement.style.left = `${x}px`;\n\n hidePopover(positionElement);\n // Only one element can be promoted to the top layer per call stack\n queueMicrotask(() => positionElement && showPopover(positionElement));\n } else {\n positionElement?.remove();\n positionElement = null;\n }\n });\n\n this.destroy = () => {\n positionElement?.remove();\n draggableElement?.remove();\n elements.forEach((element) => element.remove());\n cleanup();\n };\n }\n}\n\nfunction createDebugElement(tagName = 'div') {\n const element = document.createElement(tagName);\n\n element.setAttribute('popover', 'manual');\n element.style.all = 'initial';\n element.style.position = 'fixed';\n element.style.display = 'flex';\n element.style.alignItems = 'center';\n element.style.justifyContent = 'center';\n element.style.border = '1px solid rgba(0, 0, 0, 0.1)';\n element.style.boxSizing = 'border-box';\n element.style.pointerEvents = 'none';\n element.style.zIndex = 'calc(infinity)';\n element.style.color = 'rgba(0,0,0,0.5)';\n element.style.fontFamily = 'sans-serif';\n element.style.textShadow = '0 0 3px rgba(255,255,255,0.8)';\n element.style.pointerEvents = 'none';\n\n return element;\n}\n"]}
1
+ {"version":3,"sources":["../src/plugins/debug/debug.ts"],"names":[],"mappings":"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","file":"debug.js","sourcesContent":["import {effects} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\nimport {showPopover, hidePopover, getFixedPositionOffset} from '@dnd-kit/dom/utilities';\n\nexport class Debug extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n const elements = new Map<UniqueIdentifier, HTMLElement>();\n let draggableElement: HTMLElement | null = null;\n let positionElement: HTMLElement | null = null;\n\n const cleanup = effects(() => {\n const {dragOperation} = manager;\n const {x, y} = dragOperation.position.current;\n const {current: _, idle} = dragOperation.status;\n const {collisions} = manager.collisionObserver;\n const draggable = dragOperation.source;\n const topCollisions = collisions.slice(1, 3);\n const collidingIds = topCollisions.map(({id}) => id);\n\n if (draggable && dragOperation.shape) {\n const element = draggableElement ?? createDebugElement();\n const {boundingRectangle} = dragOperation.shape.current;\n\n if (!draggableElement) {\n draggableElement = element;\n\n const style = document.createElement('style');\n style.textContent = `dialog[data-dnd-kit-debug]::backdrop {display: none;}`;\n\n element.textContent = `${draggable.id}`;\n element.setAttribute('data-dnd-kit-debug', '');\n element.appendChild(style);\n element.style.backgroundColor = 'rgba(118, 190, 250, 0.5)';\n element.style.color = 'rgba(0,0,0,0.9)';\n\n document.body.appendChild(element);\n }\n\n const draggableOffset = getFixedPositionOffset();\n element.style.top = `${boundingRectangle.top + draggableOffset.y}px`;\n element.style.left = `${boundingRectangle.left + draggableOffset.x}px`;\n element.style.width = `${boundingRectangle.width}px`;\n element.style.height = `${boundingRectangle.height}px`;\n\n hidePopover(element);\n showPopover(element);\n } else {\n draggableElement?.remove();\n draggableElement = null;\n }\n\n for (const [id, element] of elements) {\n if (!manager.registry.droppables.has(id)) {\n element.remove();\n elements.delete(id);\n }\n }\n\n for (const droppable of manager.registry.droppables) {\n const element = elements.get(droppable.id);\n\n if (droppable.shape) {\n const {boundingRectangle} = droppable.shape;\n const debugElement = element ?? createDebugElement();\n\n if (!element) {\n elements.set(droppable.id, debugElement);\n document.body.appendChild(debugElement);\n }\n\n debugElement.style.backgroundColor = droppable.isDropTarget\n ? 'rgba(13, 210, 36, 0.6)'\n : collidingIds.includes(droppable.id)\n ? 'rgba(255, 193, 7, 0.5)'\n : 'rgba(0, 0, 0, 0.1)';\n\n const droppableOffset = getFixedPositionOffset();\n debugElement.style.top = `${boundingRectangle.top + droppableOffset.y}px`;\n debugElement.style.left = `${boundingRectangle.left + droppableOffset.x}px`;\n debugElement.style.width = `${boundingRectangle.width}px`;\n debugElement.style.height = `${boundingRectangle.height}px`;\n debugElement.textContent = `${droppable.id}`;\n } else if (element) {\n element.remove();\n elements.delete(droppable.id);\n }\n }\n\n if (!idle) {\n if (!positionElement) {\n positionElement = createDebugElement();\n\n const horizontal = document.createElement('div');\n const vertical = document.createElement('div');\n\n horizontal.style.position = 'absolute';\n horizontal.style.width = '25px';\n horizontal.style.height = '1px';\n horizontal.style.backgroundColor = '#000';\n\n vertical.style.position = 'absolute';\n vertical.style.width = '1px';\n vertical.style.height = '25px';\n vertical.style.backgroundColor = '#000';\n\n positionElement.appendChild(horizontal);\n positionElement.appendChild(vertical);\n document.body.appendChild(positionElement);\n }\n\n const posOffset = getFixedPositionOffset();\n positionElement.style.top = `${y + posOffset.y}px`;\n positionElement.style.left = `${x + posOffset.x}px`;\n\n hidePopover(positionElement);\n // Only one element can be promoted to the top layer per call stack\n queueMicrotask(() => positionElement && showPopover(positionElement));\n } else {\n positionElement?.remove();\n positionElement = null;\n }\n });\n\n this.destroy = () => {\n positionElement?.remove();\n draggableElement?.remove();\n elements.forEach((element) => element.remove());\n cleanup();\n };\n }\n}\n\nfunction createDebugElement(tagName = 'div') {\n const element = document.createElement(tagName);\n\n element.setAttribute('popover', 'manual');\n element.style.all = 'initial';\n element.style.position = 'fixed';\n element.style.display = 'flex';\n element.style.alignItems = 'center';\n element.style.justifyContent = 'center';\n element.style.border = '1px solid rgba(0, 0, 0, 0.1)';\n element.style.boxSizing = 'border-box';\n element.style.pointerEvents = 'none';\n element.style.zIndex = 'calc(infinity)';\n element.style.color = 'rgba(0,0,0,0.5)';\n element.style.fontFamily = 'sans-serif';\n element.style.textShadow = '0 0 3px rgba(255,255,255,0.8)';\n element.style.pointerEvents = 'none';\n\n return element;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  import * as _dnd_kit_geometry from '@dnd-kit/geometry';
2
2
  import { Alignment } from '@dnd-kit/geometry';
3
- import { Data, UniqueIdentifier, PluginConstructor, Modifiers, CollisionPriority, Type, Plugin } from '@dnd-kit/abstract';
3
+ import { Data, UniqueIdentifier, Customizable, Plugins, Modifiers, CollisionPriority, Type, DragOperation, Plugin } from '@dnd-kit/abstract';
4
4
  import { CollisionDetector } from '@dnd-kit/collision';
5
- import { Draggable, Droppable, DraggableInput, DroppableInput, DragDropManager, FeedbackType, Sensors } from '@dnd-kit/dom';
5
+ import { Draggable, Droppable, DraggableInput, DroppableInput, DragDropManager, Sensors } from '@dnd-kit/dom';
6
6
 
7
7
  interface SortableTransition {
8
8
  /**
@@ -22,7 +22,19 @@ interface SortableTransition {
22
22
  **/
23
23
  idle?: boolean;
24
24
  }
25
- interface SortableInput<T extends Data> extends DraggableInput<T>, DroppableInput<T> {
25
+ interface SortableDisabled {
26
+ draggable?: boolean;
27
+ droppable?: boolean;
28
+ }
29
+ type SortableDisabledValue = boolean | SortableDisabled;
30
+ interface SortableInput<T extends Data> extends Omit<DraggableInput<T>, 'disabled' | 'plugins'>, Omit<DroppableInput<T>, 'disabled'> {
31
+ /**
32
+ * Whether the sortable item should be disabled.
33
+ *
34
+ * Passing a boolean disables dragging and dropping.
35
+ * Use the object form to disable dragging and dropping independently.
36
+ */
37
+ disabled?: boolean | SortableDisabled;
26
38
  /**
27
39
  * The index of the sortable item within its group.
28
40
  */
@@ -40,12 +52,27 @@ interface SortableInput<T extends Data> extends DraggableInput<T>, DroppableInpu
40
52
  */
41
53
  transition?: SortableTransition | null;
42
54
  /**
43
- * Plugins to register when sortable item is instantiated.
55
+ * Plugins to register or configure per-entity.
56
+ *
57
+ * Bare constructors are registered globally (e.g. sortable-specific plugins).
58
+ * Descriptors from `Plugin.configure()` are applied as per-entity plugin config.
59
+ *
60
+ * Can be provided as an array (replaces defaults) or a function that receives
61
+ * the default plugins and returns a new array (extends defaults).
62
+ *
44
63
  * @default [SortableKeyboardPlugin, OptimisticSortingPlugin]
64
+ *
65
+ * @example
66
+ * // Extend defaults
67
+ * plugins: (defaults) => [...defaults, Feedback.configure({feedback: 'clone'})]
68
+ *
69
+ * // Replace defaults
70
+ * plugins: [MyPlugin]
45
71
  */
46
- plugins?: PluginConstructor[];
72
+ plugins?: Customizable<Plugins>;
47
73
  }
48
74
  declare const defaultSortableTransition: SortableTransition;
75
+ declare function resolveSortableTransition(transition: SortableTransition | null | undefined): SortableTransition | null;
49
76
  declare class Sortable<T extends Data = Data> {
50
77
  #private;
51
78
  draggable: Draggable<T>;
@@ -55,7 +82,7 @@ declare class Sortable<T extends Data = Data> {
55
82
  get initialGroup(): UniqueIdentifier | undefined;
56
83
  accessor group: UniqueIdentifier | undefined;
57
84
  transition: SortableTransition | null;
58
- constructor({ effects: inputEffects, group, index, sensors, type, transition, plugins, ...input }: SortableInput<T>, manager: DragDropManager<any, any> | undefined);
85
+ constructor({ effects: inputEffects, disabled, group, index, sensors, type, transition, plugins: pluginsInput, ...input }: SortableInput<T>, manager: DragDropManager<any, any> | undefined);
59
86
  protected animate(): void;
60
87
  get manager(): DragDropManager<any, any> | undefined;
61
88
  set manager(manager: DragDropManager<any, any> | undefined);
@@ -65,9 +92,9 @@ declare class Sortable<T extends Data = Data> {
65
92
  get target(): Element | undefined;
66
93
  set source(source: Element | undefined);
67
94
  get source(): Element | undefined;
68
- get disabled(): boolean;
69
- set feedback(value: FeedbackType);
70
- set disabled(value: boolean);
95
+ get disabled(): boolean | SortableDisabled;
96
+ set plugins(value: Customizable<Plugins> | undefined);
97
+ set disabled(value: SortableDisabledValue);
71
98
  set data(data: T);
72
99
  set handle(handle: Element | undefined);
73
100
  set id(id: UniqueIdentifier);
@@ -106,13 +133,20 @@ declare class SortableDraggable<T extends Data> extends Draggable<T> {
106
133
  sortable: Sortable<T>;
107
134
  constructor(input: DraggableInput<T>, manager: DragDropManager | undefined, sortable: Sortable<T>);
108
135
  get index(): number;
136
+ get initialIndex(): number;
137
+ get group(): UniqueIdentifier | undefined;
138
+ get initialGroup(): UniqueIdentifier | undefined;
109
139
  }
110
140
  declare class SortableDroppable<T extends Data> extends Droppable<T> {
111
141
  sortable: Sortable<T>;
112
142
  constructor(input: DraggableInput<T>, manager: DragDropManager | undefined, sortable: Sortable<T>);
143
+ get index(): number;
144
+ get group(): UniqueIdentifier | undefined;
113
145
  }
114
146
 
115
- declare function isSortable(element: Draggable | Droppable | null): element is SortableDroppable<any> | SortableDraggable<any>;
147
+ declare function isSortable<T extends Data = Data>(element: Draggable<T> | null): element is SortableDraggable<T>;
148
+ declare function isSortable<T extends Data = Data>(element: Droppable<T> | null): element is SortableDroppable<T>;
149
+ declare function isSortableOperation<T extends Data = Data, U extends Data = T>(operation: DragOperation<Draggable<T>, Droppable<U>>): operation is DragOperation<SortableDraggable<T>, SortableDroppable<U>>;
116
150
 
117
151
  declare class OptimisticSortingPlugin extends Plugin<DragDropManager> {
118
152
  constructor(manager: DragDropManager);
@@ -122,4 +156,4 @@ declare class SortableKeyboardPlugin extends Plugin<DragDropManager> {
122
156
  constructor(manager: DragDropManager);
123
157
  }
124
158
 
125
- export { OptimisticSortingPlugin, Sortable, type SortableInput, SortableKeyboardPlugin, type SortableTransition, defaultSortableTransition, isSortable };
159
+ export { OptimisticSortingPlugin, Sortable, type SortableDisabled, SortableDraggable, SortableDroppable, type SortableInput, SortableKeyboardPlugin, type SortableTransition, defaultSortableTransition, isSortable, isSortableOperation, resolveSortableTransition };