@dnd-kit/react 0.1.5 → 0.1.6-beta-20250501000355

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 (3) hide show
  1. package/index.cjs +235 -25
  2. package/index.js +236 -26
  3. package/package.json +4 -4
package/index.cjs CHANGED
@@ -6,6 +6,7 @@ var hooks = require('@dnd-kit/react/hooks');
6
6
  var state = require('@dnd-kit/state');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
  var utilities = require('@dnd-kit/react/utilities');
9
+ var abstract = require('@dnd-kit/abstract');
9
10
 
10
11
  var __defProp = Object.defineProperty;
11
12
  var __defProps = Object.defineProperties;
@@ -49,15 +50,15 @@ function useRenderer() {
49
50
  const resolver = react.useRef(null);
50
51
  const renderer = hooks.useConstant(() => ({
51
52
  get rendering() {
52
- var _a;
53
- return (_a = rendering.current) != null ? _a : Promise.resolve();
53
+ var _a2;
54
+ return (_a2 = rendering.current) != null ? _a2 : Promise.resolve();
54
55
  }
55
56
  }));
56
57
  hooks.useOnValueChange(
57
58
  transitionCount,
58
59
  () => {
59
- var _a;
60
- (_a = resolver.current) == null ? void 0 : _a.call(resolver);
60
+ var _a2;
61
+ (_a2 = resolver.current) == null ? void 0 : _a2.call(resolver);
61
62
  rendering.current = null;
62
63
  },
63
64
  react.useLayoutEffect
@@ -78,8 +79,8 @@ function useRenderer() {
78
79
  };
79
80
  }
80
81
  var options = [void 0, state.deepEqual];
81
- function DragDropProvider(_a) {
82
- var _b = _a, {
82
+ function DragDropProvider(_a2) {
83
+ var _b = _a2, {
83
84
  children,
84
85
  onCollision,
85
86
  onBeforeDragStart,
@@ -96,10 +97,10 @@ function DragDropProvider(_a) {
96
97
  "onDragOver",
97
98
  "onDragEnd"
98
99
  ]);
99
- var _a2;
100
+ var _a3;
100
101
  const { renderer, trackRendering } = useRenderer();
101
102
  const [manager, setManager] = react.useState(
102
- (_a2 = input.manager) != null ? _a2 : null
103
+ (_a3 = input.manager) != null ? _a3 : null
103
104
  );
104
105
  const { plugins, modifiers, sensors } = input;
105
106
  const handleBeforeDragStart = hooks.useLatest(onBeforeDragStart);
@@ -109,8 +110,8 @@ function DragDropProvider(_a) {
109
110
  const handleDragEnd = hooks.useLatest(onDragEnd);
110
111
  const handleCollision = hooks.useLatest(onCollision);
111
112
  react.useEffect(() => {
112
- var _a3;
113
- const manager2 = (_a3 = input.manager) != null ? _a3 : new dom.DragDropManager(input);
113
+ var _a4;
114
+ const manager2 = (_a4 = input.manager) != null ? _a4 : new dom.DragDropManager(input);
114
115
  manager2.renderer = renderer;
115
116
  manager2.monitor.addEventListener("beforedragstart", (event, manager3) => {
116
117
  const callback = handleBeforeDragStart.current;
@@ -121,8 +122,8 @@ function DragDropProvider(_a) {
121
122
  manager2.monitor.addEventListener(
122
123
  "dragstart",
123
124
  (event, manager3) => {
124
- var _a4;
125
- return (_a4 = handleDragStart.current) == null ? void 0 : _a4.call(handleDragStart, event, manager3);
125
+ var _a5;
126
+ return (_a5 = handleDragStart.current) == null ? void 0 : _a5.call(handleDragStart, event, manager3);
126
127
  }
127
128
  );
128
129
  manager2.monitor.addEventListener("dragover", (event, manager3) => {
@@ -146,8 +147,8 @@ function DragDropProvider(_a) {
146
147
  manager2.monitor.addEventListener(
147
148
  "collision",
148
149
  (event, manager3) => {
149
- var _a4;
150
- return (_a4 = handleCollision.current) == null ? void 0 : _a4.call(handleCollision, event, manager3);
150
+ var _a5;
151
+ return (_a5 = handleCollision.current) == null ? void 0 : _a5.call(handleCollision, event, manager3);
151
152
  }
152
153
  );
153
154
  react.startTransition(() => setManager(manager2));
@@ -176,8 +177,8 @@ function useDragDropManager() {
176
177
 
177
178
  // src/core/hooks/useInstance.ts
178
179
  function useInstance(initializer) {
179
- var _a;
180
- const manager = (_a = useDragDropManager()) != null ? _a : void 0;
180
+ var _a2;
181
+ const manager = (_a2 = useDragDropManager()) != null ? _a2 : void 0;
181
182
  const [instance] = react.useState(() => initializer(manager));
182
183
  if (instance.manager !== manager) {
183
184
  instance.manager = manager;
@@ -215,8 +216,8 @@ function useDraggable(input) {
215
216
  hooks.useOnValueChange(
216
217
  input.feedback,
217
218
  () => {
218
- var _a;
219
- return draggable.feedback = (_a = input.feedback) != null ? _a : "default";
219
+ var _a2;
220
+ return draggable.feedback = (_a2 = input.feedback) != null ? _a2 : "default";
220
221
  }
221
222
  );
222
223
  hooks.useOnValueChange(
@@ -242,8 +243,8 @@ function useDraggable(input) {
242
243
  ),
243
244
  ref: react.useCallback(
244
245
  (element2) => {
245
- var _a, _b;
246
- if (!element2 && ((_a = draggable.element) == null ? void 0 : _a.isConnected) && !((_b = draggable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
246
+ var _a2, _b;
247
+ if (!element2 && ((_a2 = draggable.element) == null ? void 0 : _a2.isConnected) && !((_b = draggable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
247
248
  return;
248
249
  }
249
250
  draggable.element = element2 != null ? element2 : void 0;
@@ -316,6 +317,207 @@ function Children({
316
317
  }) {
317
318
  return children(hooks.useDeepSignal(source));
318
319
  }
320
+ var __create = Object.create;
321
+ var __defProp2 = Object.defineProperty;
322
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
323
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
324
+ var __typeError = (msg) => {
325
+ throw TypeError(msg);
326
+ };
327
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
328
+ var __decoratorStart = (base) => {
329
+ var _a2;
330
+ return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol("metadata")]) != null ? _a2 : null)];
331
+ };
332
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
333
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
334
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
335
+ var __decoratorMetadata = (array, target) => __defNormalProp2(target, __knownSymbol("metadata"), array[3]);
336
+ var __runInitializers = (array, flags, self, value) => {
337
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
338
+ return value;
339
+ };
340
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
341
+ var it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
342
+ var j = 2 , key = __decoratorStrings[k + 5];
343
+ var extraInitializers = array[j] || (array[j] = []);
344
+ var desc = ((target = target.prototype), __getOwnPropDesc(target , name));
345
+ for (var i = decorators.length - 1; i >= 0; i--) {
346
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
347
+ {
348
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
349
+ access.get = (x) => x[name];
350
+ }
351
+ it = (0, decorators[i])(desc[key] , ctx), done._ = 1;
352
+ __expectFn(it) && (desc[key] = it );
353
+ }
354
+ return desc && __defProp2(target, name, desc), target;
355
+ };
356
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
357
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
358
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
359
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
360
+ var Point = class _Point {
361
+ /**
362
+ * @param {number} Coordinate of the point on the horizontal axis
363
+ * @param {number} Coordinate of the point on the vertical axis
364
+ */
365
+ constructor(x, y) {
366
+ this.x = x;
367
+ this.y = y;
368
+ }
369
+ /**
370
+ * Returns the delta between this point and another point.
371
+ *
372
+ * @param {Point} a - A point
373
+ * @param {Point} b - Another point
374
+ */
375
+ static delta(a, b) {
376
+ return new _Point(a.x - b.x, a.y - b.y);
377
+ }
378
+ /**
379
+ * Returns the distance (hypotenuse) between this point and another point.
380
+ *
381
+ * @param {Point} a - A point
382
+ * @param {Point} b - Another point
383
+ */
384
+ static distance(a, b) {
385
+ return Math.hypot(a.x - b.x, a.y - b.y);
386
+ }
387
+ /**
388
+ * Returns true if both points are equal.
389
+ *
390
+ * @param {Point} a - A point
391
+ * @param {Point} b - Another point
392
+ */
393
+ static equals(a, b) {
394
+ return a.x === b.x && a.y === b.y;
395
+ }
396
+ static from({ x, y }) {
397
+ return new _Point(x, y);
398
+ }
399
+ };
400
+ var _direction_dec;
401
+ var _delta_dec;
402
+ var _a;
403
+ var _timestamp;
404
+ var _init;
405
+ var Position = class extends (_a = state.ValueHistory, _delta_dec = [state.derived], _direction_dec = [state.derived], _a) {
406
+ constructor(initialValue) {
407
+ const point = Point.from(initialValue);
408
+ super(point, (a, b) => Point.equals(a, b));
409
+ __runInitializers(_init, 5, this);
410
+ __privateAdd(this, _timestamp, 0);
411
+ this.velocity = { x: 0, y: 0 };
412
+ }
413
+ get delta() {
414
+ return Point.delta(this.current, this.initial);
415
+ }
416
+ get direction() {
417
+ const { current, previous } = this;
418
+ if (!previous) return null;
419
+ const delta = {
420
+ x: current.x - previous.x,
421
+ y: current.y - previous.y
422
+ };
423
+ if (!delta.x && !delta.y) {
424
+ return null;
425
+ }
426
+ if (Math.abs(delta.x) > Math.abs(delta.y)) {
427
+ return delta.x > 0 ? "right" : "left";
428
+ }
429
+ return delta.y > 0 ? "down" : "up";
430
+ }
431
+ get current() {
432
+ return super.current;
433
+ }
434
+ set current(coordinates) {
435
+ const { current } = this;
436
+ const point = Point.from(coordinates);
437
+ const delta = {
438
+ x: point.x - current.x,
439
+ y: point.y - current.y
440
+ };
441
+ const timestamp = Date.now();
442
+ const timeDelta = timestamp - __privateGet(this, _timestamp);
443
+ const velocity = (delta2) => Math.round(delta2 / timeDelta * 100);
444
+ state.batch(() => {
445
+ __privateSet(this, _timestamp, timestamp);
446
+ this.velocity = {
447
+ x: velocity(delta.x),
448
+ y: velocity(delta.y)
449
+ };
450
+ super.current = point;
451
+ });
452
+ }
453
+ reset(coordinates = this.defaultValue) {
454
+ super.reset(Point.from(coordinates));
455
+ this.velocity = { x: 0, y: 0 };
456
+ }
457
+ };
458
+ _init = __decoratorStart(_a);
459
+ _timestamp = /* @__PURE__ */ new WeakMap();
460
+ __decorateElement(_init, 2, "delta", _delta_dec, Position);
461
+ __decorateElement(_init, 2, "direction", _direction_dec, Position);
462
+ __decoratorMetadata(_init, Position);
463
+ var Axis = /* @__PURE__ */ ((Axis2) => {
464
+ Axis2["Horizontal"] = "x";
465
+ Axis2["Vertical"] = "y";
466
+ return Axis2;
467
+ })(Axis || {});
468
+ Object.values(Axis);
469
+ var pointerIntersection = ({
470
+ dragOperation,
471
+ droppable
472
+ }) => {
473
+ const pointerCoordinates = dragOperation.position.current;
474
+ if (!pointerCoordinates) {
475
+ return null;
476
+ }
477
+ const { id } = droppable;
478
+ if (!droppable.shape) {
479
+ return null;
480
+ }
481
+ if (droppable.shape.containsPoint(pointerCoordinates)) {
482
+ const distance = Point.distance(droppable.shape.center, pointerCoordinates);
483
+ return {
484
+ id,
485
+ value: 1 / distance,
486
+ type: abstract.CollisionType.PointerIntersection,
487
+ priority: abstract.CollisionPriority.High
488
+ };
489
+ }
490
+ return null;
491
+ };
492
+ var shapeIntersection = ({
493
+ dragOperation,
494
+ droppable
495
+ }) => {
496
+ const { shape } = dragOperation;
497
+ if (!droppable.shape || !(shape == null ? void 0 : shape.current)) {
498
+ return null;
499
+ }
500
+ const intersectionArea = shape.current.intersectionArea(droppable.shape);
501
+ if (intersectionArea) {
502
+ const { position } = dragOperation;
503
+ const distance = Point.distance(droppable.shape.center, position.current);
504
+ const intersectionRatio = intersectionArea / (shape.current.area + droppable.shape.area - intersectionArea);
505
+ const value = intersectionRatio / distance;
506
+ return {
507
+ id: droppable.id,
508
+ value,
509
+ type: abstract.CollisionType.ShapeIntersection,
510
+ priority: abstract.CollisionPriority.Normal
511
+ };
512
+ }
513
+ return null;
514
+ };
515
+ var defaultCollisionDetection = (args) => {
516
+ var _a2;
517
+ return (_a2 = pointerIntersection(args)) != null ? _a2 : shapeIntersection(args);
518
+ };
519
+
520
+ // src/core/droppable/useDroppable.ts
319
521
  function useDroppable(input) {
320
522
  const { collisionDetector, data, disabled, element, id, accept, type } = input;
321
523
  const droppable = useInstance(
@@ -330,11 +532,19 @@ function useDroppable(input) {
330
532
  const trackedDroppalbe = hooks.useDeepSignal(droppable);
331
533
  hooks.useOnValueChange(id, () => droppable.id = id);
332
534
  hooks.useOnElementChange(element, (element2) => droppable.element = element2);
333
- hooks.useOnValueChange(accept, () => droppable.id = id, void 0, state.deepEqual);
334
- hooks.useOnValueChange(collisionDetector, () => droppable.id = id);
535
+ hooks.useOnValueChange(
536
+ accept,
537
+ () => droppable.accept = accept,
538
+ void 0,
539
+ state.deepEqual
540
+ );
541
+ hooks.useOnValueChange(
542
+ collisionDetector,
543
+ () => droppable.collisionDetector = collisionDetector != null ? collisionDetector : defaultCollisionDetection
544
+ );
335
545
  hooks.useOnValueChange(data, () => data && (droppable.data = data));
336
546
  hooks.useOnValueChange(disabled, () => droppable.disabled = disabled === true);
337
- hooks.useOnValueChange(type, () => droppable.id = id);
547
+ hooks.useOnValueChange(type, () => droppable.type = type);
338
548
  return {
339
549
  droppable: trackedDroppalbe,
340
550
  get isDropTarget() {
@@ -342,8 +552,8 @@ function useDroppable(input) {
342
552
  },
343
553
  ref: react.useCallback(
344
554
  (element2) => {
345
- var _a, _b;
346
- if (!element2 && ((_a = droppable.element) == null ? void 0 : _a.isConnected) && !((_b = droppable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
555
+ var _a2, _b;
556
+ if (!element2 && ((_a2 = droppable.element) == null ? void 0 : _a2.isConnected) && !((_b = droppable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
347
557
  return;
348
558
  }
349
559
  droppable.element = element2 != null ? element2 : void 0;
package/index.js CHANGED
@@ -2,9 +2,10 @@ import { createContext, useState, useEffect, startTransition, useContext, useCal
2
2
  import { DragDropManager, defaultPreset, Draggable, Feedback, Droppable } from '@dnd-kit/dom';
3
3
  export { KeyboardSensor, PointerSensor } from '@dnd-kit/dom';
4
4
  import { useLatest, useOnValueChange, useIsomorphicLayoutEffect, useDeepSignal, useOnElementChange, useComputed, useConstant } from '@dnd-kit/react/hooks';
5
- import { deepEqual } from '@dnd-kit/state';
5
+ import { deepEqual, ValueHistory, derived, batch } from '@dnd-kit/state';
6
6
  import { jsx } from 'react/jsx-runtime';
7
7
  import { currentValue } from '@dnd-kit/react/utilities';
8
+ import { CollisionType, CollisionPriority } from '@dnd-kit/abstract';
8
9
 
9
10
  var __defProp = Object.defineProperty;
10
11
  var __defProps = Object.defineProperties;
@@ -48,15 +49,15 @@ function useRenderer() {
48
49
  const resolver = useRef(null);
49
50
  const renderer = useConstant(() => ({
50
51
  get rendering() {
51
- var _a;
52
- return (_a = rendering.current) != null ? _a : Promise.resolve();
52
+ var _a2;
53
+ return (_a2 = rendering.current) != null ? _a2 : Promise.resolve();
53
54
  }
54
55
  }));
55
56
  useOnValueChange(
56
57
  transitionCount,
57
58
  () => {
58
- var _a;
59
- (_a = resolver.current) == null ? void 0 : _a.call(resolver);
59
+ var _a2;
60
+ (_a2 = resolver.current) == null ? void 0 : _a2.call(resolver);
60
61
  rendering.current = null;
61
62
  },
62
63
  useLayoutEffect
@@ -77,8 +78,8 @@ function useRenderer() {
77
78
  };
78
79
  }
79
80
  var options = [void 0, deepEqual];
80
- function DragDropProvider(_a) {
81
- var _b = _a, {
81
+ function DragDropProvider(_a2) {
82
+ var _b = _a2, {
82
83
  children,
83
84
  onCollision,
84
85
  onBeforeDragStart,
@@ -95,10 +96,10 @@ function DragDropProvider(_a) {
95
96
  "onDragOver",
96
97
  "onDragEnd"
97
98
  ]);
98
- var _a2;
99
+ var _a3;
99
100
  const { renderer, trackRendering } = useRenderer();
100
101
  const [manager, setManager] = useState(
101
- (_a2 = input.manager) != null ? _a2 : null
102
+ (_a3 = input.manager) != null ? _a3 : null
102
103
  );
103
104
  const { plugins, modifiers, sensors } = input;
104
105
  const handleBeforeDragStart = useLatest(onBeforeDragStart);
@@ -108,8 +109,8 @@ function DragDropProvider(_a) {
108
109
  const handleDragEnd = useLatest(onDragEnd);
109
110
  const handleCollision = useLatest(onCollision);
110
111
  useEffect(() => {
111
- var _a3;
112
- const manager2 = (_a3 = input.manager) != null ? _a3 : new DragDropManager(input);
112
+ var _a4;
113
+ const manager2 = (_a4 = input.manager) != null ? _a4 : new DragDropManager(input);
113
114
  manager2.renderer = renderer;
114
115
  manager2.monitor.addEventListener("beforedragstart", (event, manager3) => {
115
116
  const callback = handleBeforeDragStart.current;
@@ -120,8 +121,8 @@ function DragDropProvider(_a) {
120
121
  manager2.monitor.addEventListener(
121
122
  "dragstart",
122
123
  (event, manager3) => {
123
- var _a4;
124
- return (_a4 = handleDragStart.current) == null ? void 0 : _a4.call(handleDragStart, event, manager3);
124
+ var _a5;
125
+ return (_a5 = handleDragStart.current) == null ? void 0 : _a5.call(handleDragStart, event, manager3);
125
126
  }
126
127
  );
127
128
  manager2.monitor.addEventListener("dragover", (event, manager3) => {
@@ -145,8 +146,8 @@ function DragDropProvider(_a) {
145
146
  manager2.monitor.addEventListener(
146
147
  "collision",
147
148
  (event, manager3) => {
148
- var _a4;
149
- return (_a4 = handleCollision.current) == null ? void 0 : _a4.call(handleCollision, event, manager3);
149
+ var _a5;
150
+ return (_a5 = handleCollision.current) == null ? void 0 : _a5.call(handleCollision, event, manager3);
150
151
  }
151
152
  );
152
153
  startTransition(() => setManager(manager2));
@@ -175,8 +176,8 @@ function useDragDropManager() {
175
176
 
176
177
  // src/core/hooks/useInstance.ts
177
178
  function useInstance(initializer) {
178
- var _a;
179
- const manager = (_a = useDragDropManager()) != null ? _a : void 0;
179
+ var _a2;
180
+ const manager = (_a2 = useDragDropManager()) != null ? _a2 : void 0;
180
181
  const [instance] = useState(() => initializer(manager));
181
182
  if (instance.manager !== manager) {
182
183
  instance.manager = manager;
@@ -214,8 +215,8 @@ function useDraggable(input) {
214
215
  useOnValueChange(
215
216
  input.feedback,
216
217
  () => {
217
- var _a;
218
- return draggable.feedback = (_a = input.feedback) != null ? _a : "default";
218
+ var _a2;
219
+ return draggable.feedback = (_a2 = input.feedback) != null ? _a2 : "default";
219
220
  }
220
221
  );
221
222
  useOnValueChange(
@@ -241,8 +242,8 @@ function useDraggable(input) {
241
242
  ),
242
243
  ref: useCallback(
243
244
  (element2) => {
244
- var _a, _b;
245
- if (!element2 && ((_a = draggable.element) == null ? void 0 : _a.isConnected) && !((_b = draggable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
245
+ var _a2, _b;
246
+ if (!element2 && ((_a2 = draggable.element) == null ? void 0 : _a2.isConnected) && !((_b = draggable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
246
247
  return;
247
248
  }
248
249
  draggable.element = element2 != null ? element2 : void 0;
@@ -315,6 +316,207 @@ function Children({
315
316
  }) {
316
317
  return children(useDeepSignal(source));
317
318
  }
319
+ var __create = Object.create;
320
+ var __defProp2 = Object.defineProperty;
321
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
322
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
323
+ var __typeError = (msg) => {
324
+ throw TypeError(msg);
325
+ };
326
+ var __defNormalProp2 = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
327
+ var __decoratorStart = (base) => {
328
+ var _a2;
329
+ return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol("metadata")]) != null ? _a2 : null)];
330
+ };
331
+ var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
332
+ var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
333
+ var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
334
+ var __decoratorMetadata = (array, target) => __defNormalProp2(target, __knownSymbol("metadata"), array[3]);
335
+ var __runInitializers = (array, flags, self, value) => {
336
+ for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) fns[i].call(self) ;
337
+ return value;
338
+ };
339
+ var __decorateElement = (array, flags, name, decorators, target, extra) => {
340
+ var it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
341
+ var j = 2 , key = __decoratorStrings[k + 5];
342
+ var extraInitializers = array[j] || (array[j] = []);
343
+ var desc = ((target = target.prototype), __getOwnPropDesc(target , name));
344
+ for (var i = decorators.length - 1; i >= 0; i--) {
345
+ ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
346
+ {
347
+ ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
348
+ access.get = (x) => x[name];
349
+ }
350
+ it = (0, decorators[i])(desc[key] , ctx), done._ = 1;
351
+ __expectFn(it) && (desc[key] = it );
352
+ }
353
+ return desc && __defProp2(target, name, desc), target;
354
+ };
355
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
356
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
357
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
358
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
359
+ var Point = class _Point {
360
+ /**
361
+ * @param {number} Coordinate of the point on the horizontal axis
362
+ * @param {number} Coordinate of the point on the vertical axis
363
+ */
364
+ constructor(x, y) {
365
+ this.x = x;
366
+ this.y = y;
367
+ }
368
+ /**
369
+ * Returns the delta between this point and another point.
370
+ *
371
+ * @param {Point} a - A point
372
+ * @param {Point} b - Another point
373
+ */
374
+ static delta(a, b) {
375
+ return new _Point(a.x - b.x, a.y - b.y);
376
+ }
377
+ /**
378
+ * Returns the distance (hypotenuse) between this point and another point.
379
+ *
380
+ * @param {Point} a - A point
381
+ * @param {Point} b - Another point
382
+ */
383
+ static distance(a, b) {
384
+ return Math.hypot(a.x - b.x, a.y - b.y);
385
+ }
386
+ /**
387
+ * Returns true if both points are equal.
388
+ *
389
+ * @param {Point} a - A point
390
+ * @param {Point} b - Another point
391
+ */
392
+ static equals(a, b) {
393
+ return a.x === b.x && a.y === b.y;
394
+ }
395
+ static from({ x, y }) {
396
+ return new _Point(x, y);
397
+ }
398
+ };
399
+ var _direction_dec;
400
+ var _delta_dec;
401
+ var _a;
402
+ var _timestamp;
403
+ var _init;
404
+ var Position = class extends (_a = ValueHistory, _delta_dec = [derived], _direction_dec = [derived], _a) {
405
+ constructor(initialValue) {
406
+ const point = Point.from(initialValue);
407
+ super(point, (a, b) => Point.equals(a, b));
408
+ __runInitializers(_init, 5, this);
409
+ __privateAdd(this, _timestamp, 0);
410
+ this.velocity = { x: 0, y: 0 };
411
+ }
412
+ get delta() {
413
+ return Point.delta(this.current, this.initial);
414
+ }
415
+ get direction() {
416
+ const { current, previous } = this;
417
+ if (!previous) return null;
418
+ const delta = {
419
+ x: current.x - previous.x,
420
+ y: current.y - previous.y
421
+ };
422
+ if (!delta.x && !delta.y) {
423
+ return null;
424
+ }
425
+ if (Math.abs(delta.x) > Math.abs(delta.y)) {
426
+ return delta.x > 0 ? "right" : "left";
427
+ }
428
+ return delta.y > 0 ? "down" : "up";
429
+ }
430
+ get current() {
431
+ return super.current;
432
+ }
433
+ set current(coordinates) {
434
+ const { current } = this;
435
+ const point = Point.from(coordinates);
436
+ const delta = {
437
+ x: point.x - current.x,
438
+ y: point.y - current.y
439
+ };
440
+ const timestamp = Date.now();
441
+ const timeDelta = timestamp - __privateGet(this, _timestamp);
442
+ const velocity = (delta2) => Math.round(delta2 / timeDelta * 100);
443
+ batch(() => {
444
+ __privateSet(this, _timestamp, timestamp);
445
+ this.velocity = {
446
+ x: velocity(delta.x),
447
+ y: velocity(delta.y)
448
+ };
449
+ super.current = point;
450
+ });
451
+ }
452
+ reset(coordinates = this.defaultValue) {
453
+ super.reset(Point.from(coordinates));
454
+ this.velocity = { x: 0, y: 0 };
455
+ }
456
+ };
457
+ _init = __decoratorStart(_a);
458
+ _timestamp = /* @__PURE__ */ new WeakMap();
459
+ __decorateElement(_init, 2, "delta", _delta_dec, Position);
460
+ __decorateElement(_init, 2, "direction", _direction_dec, Position);
461
+ __decoratorMetadata(_init, Position);
462
+ var Axis = /* @__PURE__ */ ((Axis2) => {
463
+ Axis2["Horizontal"] = "x";
464
+ Axis2["Vertical"] = "y";
465
+ return Axis2;
466
+ })(Axis || {});
467
+ Object.values(Axis);
468
+ var pointerIntersection = ({
469
+ dragOperation,
470
+ droppable
471
+ }) => {
472
+ const pointerCoordinates = dragOperation.position.current;
473
+ if (!pointerCoordinates) {
474
+ return null;
475
+ }
476
+ const { id } = droppable;
477
+ if (!droppable.shape) {
478
+ return null;
479
+ }
480
+ if (droppable.shape.containsPoint(pointerCoordinates)) {
481
+ const distance = Point.distance(droppable.shape.center, pointerCoordinates);
482
+ return {
483
+ id,
484
+ value: 1 / distance,
485
+ type: CollisionType.PointerIntersection,
486
+ priority: CollisionPriority.High
487
+ };
488
+ }
489
+ return null;
490
+ };
491
+ var shapeIntersection = ({
492
+ dragOperation,
493
+ droppable
494
+ }) => {
495
+ const { shape } = dragOperation;
496
+ if (!droppable.shape || !(shape == null ? void 0 : shape.current)) {
497
+ return null;
498
+ }
499
+ const intersectionArea = shape.current.intersectionArea(droppable.shape);
500
+ if (intersectionArea) {
501
+ const { position } = dragOperation;
502
+ const distance = Point.distance(droppable.shape.center, position.current);
503
+ const intersectionRatio = intersectionArea / (shape.current.area + droppable.shape.area - intersectionArea);
504
+ const value = intersectionRatio / distance;
505
+ return {
506
+ id: droppable.id,
507
+ value,
508
+ type: CollisionType.ShapeIntersection,
509
+ priority: CollisionPriority.Normal
510
+ };
511
+ }
512
+ return null;
513
+ };
514
+ var defaultCollisionDetection = (args) => {
515
+ var _a2;
516
+ return (_a2 = pointerIntersection(args)) != null ? _a2 : shapeIntersection(args);
517
+ };
518
+
519
+ // src/core/droppable/useDroppable.ts
318
520
  function useDroppable(input) {
319
521
  const { collisionDetector, data, disabled, element, id, accept, type } = input;
320
522
  const droppable = useInstance(
@@ -329,11 +531,19 @@ function useDroppable(input) {
329
531
  const trackedDroppalbe = useDeepSignal(droppable);
330
532
  useOnValueChange(id, () => droppable.id = id);
331
533
  useOnElementChange(element, (element2) => droppable.element = element2);
332
- useOnValueChange(accept, () => droppable.id = id, void 0, deepEqual);
333
- useOnValueChange(collisionDetector, () => droppable.id = id);
534
+ useOnValueChange(
535
+ accept,
536
+ () => droppable.accept = accept,
537
+ void 0,
538
+ deepEqual
539
+ );
540
+ useOnValueChange(
541
+ collisionDetector,
542
+ () => droppable.collisionDetector = collisionDetector != null ? collisionDetector : defaultCollisionDetection
543
+ );
334
544
  useOnValueChange(data, () => data && (droppable.data = data));
335
545
  useOnValueChange(disabled, () => droppable.disabled = disabled === true);
336
- useOnValueChange(type, () => droppable.id = id);
546
+ useOnValueChange(type, () => droppable.type = type);
337
547
  return {
338
548
  droppable: trackedDroppalbe,
339
549
  get isDropTarget() {
@@ -341,8 +551,8 @@ function useDroppable(input) {
341
551
  },
342
552
  ref: useCallback(
343
553
  (element2) => {
344
- var _a, _b;
345
- if (!element2 && ((_a = droppable.element) == null ? void 0 : _a.isConnected) && !((_b = droppable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
554
+ var _a2, _b;
555
+ if (!element2 && ((_a2 = droppable.element) == null ? void 0 : _a2.isConnected) && !((_b = droppable.manager) == null ? void 0 : _b.dragOperation.status.idle)) {
346
556
  return;
347
557
  }
348
558
  droppable.element = element2 != null ? element2 : void 0;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dnd-kit/react",
3
- "version": "0.1.5",
3
+ "version": "0.1.6-beta-20250501000355",
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.1.5",
60
- "@dnd-kit/dom": "^0.1.5",
61
- "@dnd-kit/state": "^0.1.5",
59
+ "@dnd-kit/abstract": "0.1.6-beta-20250501000355",
60
+ "@dnd-kit/dom": "0.1.6-beta-20250501000355",
61
+ "@dnd-kit/state": "0.1.6-beta-20250501000355",
62
62
  "tslib": "^2.6.2"
63
63
  },
64
64
  "peerDependencies": {