@vuu-ui/vuu-utils 4.0.1 → 5.0.0-alpha.1
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 +11 -12
- package/src/column-utils.js +16 -6
- package/src/component-registry.js +2 -2
- package/src/event-emitter.js +3 -1
- package/src/feature-utils.js +7 -7
- package/src/index.js +1 -0
- package/src/react-utils.js +2 -8
- package/src/table-schema-utils.js +5 -6
- package/src/tree-utils.js +2 -2
- package/src/vendor/@dnd-kit/abstract/index.d.ts +114 -32
- package/src/vendor/@dnd-kit/abstract/index.js +430 -280
- package/src/vendor/@dnd-kit/abstract/index.js.map +1 -1
- package/src/vendor/@dnd-kit/abstract/modifiers.d.ts +7 -7
- package/src/vendor/@dnd-kit/abstract/modifiers.js.map +1 -1
- package/src/vendor/@dnd-kit/abstract/package.json +8 -3
- package/src/vendor/@dnd-kit/collision/dist/index.js +10 -3
- package/src/vendor/@dnd-kit/collision/package.json +8 -3
- package/src/vendor/@dnd-kit/dom/index.d.ts +225 -126
- package/src/vendor/@dnd-kit/dom/index.js +998 -484
- package/src/vendor/@dnd-kit/dom/index.js.map +1 -1
- package/src/vendor/@dnd-kit/dom/modifiers.d.ts +1 -1
- package/src/vendor/@dnd-kit/dom/package.json +11 -5
- package/src/vendor/@dnd-kit/dom/plugins/debug.js +10 -7
- package/src/vendor/@dnd-kit/dom/plugins/debug.js.map +1 -1
- package/src/vendor/@dnd-kit/dom/sortable.d.ts +45 -11
- package/src/vendor/@dnd-kit/dom/sortable.js +203 -54
- package/src/vendor/@dnd-kit/dom/sortable.js.map +1 -1
- package/src/vendor/@dnd-kit/dom/utilities.d.ts +82 -10
- package/src/vendor/@dnd-kit/dom/utilities.js +249 -95
- package/src/vendor/@dnd-kit/dom/utilities.js.map +1 -1
- package/src/vendor/@dnd-kit/geometry/package.json +7 -2
- package/src/vendor/@dnd-kit/react/hooks.js +61 -38
- package/src/vendor/@dnd-kit/react/hooks.js.map +1 -0
- package/src/vendor/@dnd-kit/react/index.d.ts +18 -9
- package/src/vendor/@dnd-kit/react/index.js +100 -59
- package/src/vendor/@dnd-kit/react/index.js.map +1 -0
- package/src/vendor/@dnd-kit/react/package.json +17 -5
- package/src/vendor/@dnd-kit/react/sortable.d.ts +1 -1
- package/src/vendor/@dnd-kit/react/sortable.js +24 -10
- package/src/vendor/@dnd-kit/react/sortable.js.map +1 -0
- package/src/vendor/@dnd-kit/react/utilities.js.map +1 -0
- package/src/vendor/@dnd-kit/state/dist/index.js +1 -1
- package/src/vendor/@dnd-kit/state/package.json +6 -1
- package/src/vendor/@preact/signals-core/dist/signals-core.js +1 -1
- package/src/vendor/@preact/signals-core/dist/signals-core.js.map +1 -1
- package/types/ThemeProvider.d.ts +1 -1
- package/types/column-utils.d.ts +5 -3
- package/types/component-registry.d.ts +4 -4
- package/types/context-definitions/DataProvider.d.ts +1 -1
- package/types/context-definitions/DataSourceProvider.d.ts +1 -1
- package/types/feature-utils.d.ts +29 -19
- package/types/filters/filter-utils.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/types/react-utils.d.ts +1 -1
- package/types/sort-utils.d.ts +2 -2
- package/types/table-schema-utils.d.ts +2 -2
- package/types/tree-types.d.ts +5 -0
- package/types/src/Clock.d.ts +0 -20
- package/types/src/PageVisibilityObserver.d.ts +0 -36
- package/types/src/ScaledDecimal.d.ts +0 -12
- package/types/src/ShellContext.d.ts +0 -11
- package/types/src/ThemeProvider.d.ts +0 -32
- package/types/src/array-utils.d.ts +0 -16
- package/types/src/box-utils.d.ts +0 -24
- package/types/src/broadcast-channel.d.ts +0 -16
- package/types/src/column-utils.d.ts +0 -243
- package/types/src/common-types.d.ts +0 -6
- package/types/src/component-registry.d.ts +0 -65
- package/types/src/context-definitions/DataContext.d.ts +0 -21
- package/types/src/context-definitions/DataProvider.d.ts +0 -7
- package/types/src/context-definitions/DataSourceProvider.d.ts +0 -12
- package/types/src/context-definitions/WorkspaceContext.d.ts +0 -17
- package/types/src/cookie-utils.d.ts +0 -9
- package/types/src/css-utils.d.ts +0 -1
- package/types/src/data-utils.d.ts +0 -33
- package/types/src/datasource/BaseDataSource.d.ts +0 -63
- package/types/src/datasource/datasource-action-utils.d.ts +0 -7
- package/types/src/datasource/datasource-filter-utils.d.ts +0 -2
- package/types/src/datasource/datasource-utils.d.ts +0 -61
- package/types/src/date/date-utils.d.ts +0 -39
- package/types/src/date/dateTimePattern.d.ts +0 -8
- package/types/src/date/formatter.d.ts +0 -9
- package/types/src/date/index.d.ts +0 -4
- package/types/src/date/types.d.ts +0 -29
- package/types/src/debug-utils.d.ts +0 -9
- package/types/src/edit-utils.d.ts +0 -2
- package/types/src/errors.d.ts +0 -2
- package/types/src/event-emitter.d.ts +0 -21
- package/types/src/feature-utils.d.ts +0 -110
- package/types/src/filters/filter-utils.d.ts +0 -75
- package/types/src/filters/filterAsQuery.d.ts +0 -8
- package/types/src/filters/index.d.ts +0 -2
- package/types/src/form-utils.d.ts +0 -37
- package/types/src/formatting-utils.d.ts +0 -14
- package/types/src/getUniqueId.d.ts +0 -1
- package/types/src/group-utils.d.ts +0 -10
- package/types/src/html-utils.d.ts +0 -21
- package/types/src/index.d.ts +0 -76
- package/types/src/input-utils.d.ts +0 -2
- package/types/src/invariant.d.ts +0 -1
- package/types/src/itemToString.d.ts +0 -2
- package/types/src/json-types.d.ts +0 -52
- package/types/src/json-utils.d.ts +0 -6
- package/types/src/keyboard-utils.d.ts +0 -15
- package/types/src/keyset.d.ts +0 -16
- package/types/src/layout-types.d.ts +0 -22
- package/types/src/list-utils.d.ts +0 -2
- package/types/src/local-storage-utils.d.ts +0 -4
- package/types/src/logging-utils.d.ts +0 -45
- package/types/src/module-utils.d.ts +0 -8
- package/types/src/nanoid/index.d.ts +0 -1
- package/types/src/perf-utils.d.ts +0 -5
- package/types/src/promise-utils.d.ts +0 -8
- package/types/src/protocol-message-utils.d.ts +0 -43
- package/types/src/range-utils.d.ts +0 -29
- package/types/src/react-utils.d.ts +0 -15
- package/types/src/round-decimal.d.ts +0 -4
- package/types/src/row-utils.d.ts +0 -28
- package/types/src/selection-utils.d.ts +0 -9
- package/types/src/shell-layout-types.d.ts +0 -15
- package/types/src/sort-utils.d.ts +0 -11
- package/types/src/table-schema-utils.d.ts +0 -5
- package/types/src/text-utils.d.ts +0 -10
- package/types/src/theme-utils.d.ts +0 -14
- package/types/src/tree-types.d.ts +0 -9
- package/types/src/tree-utils.d.ts +0 -9
- package/types/src/ts-utils.d.ts +0 -20
- package/types/src/typeahead-utils.d.ts +0 -1
- package/types/src/url-utils.d.ts +0 -3
- package/types/src/useId.d.ts +0 -1
- package/types/src/useLayoutEffectSkipFirst.d.ts +0 -2
- package/types/src/useResizeObserver.d.ts +0 -15
- package/types/src/useStateRef.d.ts +0 -2
- package/types/src/user-types.d.ts +0 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useLayoutEffect, useEffect, useRef, useMemo, useState, useCallback } from 'react';
|
|
2
|
-
import { computed, effect, untracked } from '../state/dist/index.js';
|
|
2
|
+
import { computed, signal, effect, untracked } from '../state/dist/index.js';
|
|
3
3
|
import { flushSync } from 'react-dom';
|
|
4
4
|
import { currentValue } from './utilities.js';
|
|
5
5
|
|
|
@@ -20,14 +20,14 @@ function useForceUpdate() {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// src/hooks/useSignal.ts
|
|
23
|
-
function useSignal(
|
|
24
|
-
const previous = useRef(
|
|
23
|
+
function useSignal(signal2, sync = false) {
|
|
24
|
+
const previous = useRef(signal2.peek());
|
|
25
25
|
const read = useRef(false);
|
|
26
26
|
const forceUpdate = useForceUpdate();
|
|
27
27
|
useIsomorphicLayoutEffect(
|
|
28
28
|
() => effect(() => {
|
|
29
29
|
const previousValue = previous.current;
|
|
30
|
-
const currentValue2 =
|
|
30
|
+
const currentValue2 = signal2.value;
|
|
31
31
|
if (previousValue !== currentValue2) {
|
|
32
32
|
previous.current = currentValue2;
|
|
33
33
|
if (!read.current) return;
|
|
@@ -38,12 +38,12 @@ function useSignal(signal, sync = false) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}),
|
|
41
|
-
[
|
|
41
|
+
[signal2, sync, forceUpdate]
|
|
42
42
|
);
|
|
43
43
|
return {
|
|
44
44
|
get value() {
|
|
45
45
|
read.current = true;
|
|
46
|
-
return
|
|
46
|
+
return signal2.peek();
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
}
|
|
@@ -57,56 +57,79 @@ function useComputed(compute, dependencies = [], sync = false) {
|
|
|
57
57
|
sync
|
|
58
58
|
);
|
|
59
59
|
}
|
|
60
|
+
function useLatest(value) {
|
|
61
|
+
const valueRef = useRef(value);
|
|
62
|
+
useIsomorphicLayoutEffect(() => {
|
|
63
|
+
valueRef.current = value;
|
|
64
|
+
}, [value]);
|
|
65
|
+
return valueRef;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/hooks/useDeepSignal.ts
|
|
60
69
|
function useDeepSignal(target, synchronous) {
|
|
61
|
-
const tracked = useRef(/* @__PURE__ */ new Map());
|
|
62
70
|
const forceUpdate = useForceUpdate();
|
|
71
|
+
const synchronousRef = useLatest(synchronous);
|
|
72
|
+
const tracker = useMemo(() => {
|
|
73
|
+
const tracked = /* @__PURE__ */ new Map();
|
|
74
|
+
return {
|
|
75
|
+
tracked,
|
|
76
|
+
propertyCount: signal(0),
|
|
77
|
+
active: false,
|
|
78
|
+
proxy: target ? new Proxy(target, {
|
|
79
|
+
get(target2, key) {
|
|
80
|
+
const value = target2[key];
|
|
81
|
+
if (!tracked.has(key)) tracked.set(key, value);
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
}) : target
|
|
85
|
+
};
|
|
86
|
+
}, [target]);
|
|
63
87
|
useIsomorphicLayoutEffect(() => {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
88
|
+
tracker.propertyCount.value = tracker.tracked.size;
|
|
89
|
+
});
|
|
90
|
+
useIsomorphicLayoutEffect(() => {
|
|
91
|
+
if (!target) return;
|
|
92
|
+
const { tracked, propertyCount } = tracker;
|
|
93
|
+
tracker.active = true;
|
|
94
|
+
const dispose = effect(() => {
|
|
95
|
+
propertyCount.value;
|
|
70
96
|
let stale = false;
|
|
71
97
|
let sync = false;
|
|
72
|
-
for (const
|
|
73
|
-
const [key] = entry;
|
|
74
|
-
const value = untracked(() => entry[1]);
|
|
98
|
+
for (const [key, value] of tracked) {
|
|
75
99
|
const latestValue = target[key];
|
|
76
|
-
if (value
|
|
100
|
+
if (!Object.is(value, latestValue)) {
|
|
77
101
|
stale = true;
|
|
78
|
-
tracked.
|
|
79
|
-
sync = (
|
|
102
|
+
tracked.set(key, latestValue);
|
|
103
|
+
sync = untracked(
|
|
104
|
+
() => {
|
|
105
|
+
var _a;
|
|
106
|
+
return (_a = synchronousRef.current) == null ? void 0 : _a.call(synchronousRef, key, value, latestValue);
|
|
107
|
+
}
|
|
108
|
+
) === true || sync;
|
|
80
109
|
}
|
|
81
110
|
}
|
|
82
111
|
if (stale) {
|
|
83
|
-
|
|
112
|
+
if (sync) {
|
|
113
|
+
queueMicrotask(() => {
|
|
114
|
+
if (tracker.active) flushSync(forceUpdate);
|
|
115
|
+
});
|
|
116
|
+
} else {
|
|
117
|
+
forceUpdate();
|
|
118
|
+
}
|
|
84
119
|
}
|
|
85
120
|
});
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return value;
|
|
93
|
-
}
|
|
94
|
-
}) : target,
|
|
95
|
-
[target]
|
|
96
|
-
);
|
|
121
|
+
return () => {
|
|
122
|
+
tracker.active = false;
|
|
123
|
+
dispose();
|
|
124
|
+
};
|
|
125
|
+
}, [target, tracker, forceUpdate, synchronousRef]);
|
|
126
|
+
return tracker.proxy;
|
|
97
127
|
}
|
|
98
128
|
|
|
99
129
|
// src/hooks/useImmediateEffect.ts
|
|
100
130
|
function useImmediateEffect(callback, _) {
|
|
101
131
|
callback();
|
|
102
132
|
}
|
|
103
|
-
function useLatest(value) {
|
|
104
|
-
const valueRef = useRef(value);
|
|
105
|
-
useIsomorphicLayoutEffect(() => {
|
|
106
|
-
valueRef.current = value;
|
|
107
|
-
}, [value]);
|
|
108
|
-
return valueRef;
|
|
109
|
-
}
|
|
110
133
|
function useOnValueChange(value, onChange, effect3 = useEffect, compare = Object.is) {
|
|
111
134
|
const tracked = useRef(value);
|
|
112
135
|
effect3(() => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/hooks/useConstant.ts","src/hooks/useIsomorphicLayoutEffect.ts","src/hooks/useForceUpdate.ts","src/hooks/useSignal.ts","src/hooks/useComputed.ts","src/hooks/useLatest.ts","src/hooks/useDeepSignal.ts","src/hooks/useImmediateEffect.ts","src/hooks/useOnValueChange.ts","src/hooks/useOnElementChange.ts"],"names":["signal","useRef","currentValue","useMemo","target","effect","flushSync","useEffect"],"mappings":";;;;;AAEO,SAAS,YAAqB,WAAsB,EAAA;AACzD,EAAM,MAAA,GAAA,GAAM,OAAU,IAAI,CAAA;AAE1B,EAAI,IAAA,CAAC,IAAI,OAAS,EAAA;AAChB,IAAA,GAAA,CAAI,UAAU,WAAY,EAAA;AAAA;AAG5B,EAAA,OAAO,GAAI,CAAA,OAAA;AACb;ACPO,IAAM,SAAA,GACX,OAAO,MAAA,KAAW,WAClB,IAAA,OAAO,MAAO,CAAA,QAAA,KAAa,WAC3B,IAAA,OAAO,MAAO,CAAA,QAAA,CAAS,aAAkB,KAAA,WAAA;AAM9B,IAAA,yBAAA,GAA4B,YACrC,eACA,GAAA;ACZG,SAAS,cAAiB,GAAA;AAC/B,EAAA,MAAM,QAAW,GAAA,QAAA,CAAS,CAAC,CAAA,CAAE,CAAC,CAAA;AAE9B,EAAA,OAAO,YAAY,MAAM;AACvB,IAAS,QAAA,CAAA,CAAC,KAAU,KAAA,KAAA,GAAQ,CAAC,CAAA;AAAA,GAC/B,EAAG,CAAC,QAAQ,CAAC,CAAA;AACf;;;ACAO,SAAS,SAAA,CAAmBA,OAAmB,EAAA,IAAA,GAAO,KAAO,EAAA;AAClE,EAAA,MAAM,QAAWC,GAAAA,MAAAA,CAAOD,OAAO,CAAA,IAAA,EAAM,CAAA;AACrC,EAAM,MAAA,IAAA,GAAOC,OAAO,KAAK,CAAA;AACzB,EAAA,MAAM,cAAc,cAAe,EAAA;AAEnC,EAAA,yBAAA;AAAA,IACE,MACE,OAAO,MAAM;AACX,MAAA,MAAM,gBAAgB,QAAS,CAAA,OAAA;AAC/B,MAAA,MAAMC,gBAAeF,OAAO,CAAA,KAAA;AAE5B,MAAA,IAAI,kBAAkBE,aAAc,EAAA;AAClC,QAAA,QAAA,CAAS,OAAUA,GAAAA,aAAAA;AAEnB,QAAI,IAAA,CAAC,KAAK,OAAS,EAAA;AAEnB,QAAA,IAAI,IAAM,EAAA;AACR,UAAA,SAAA,CAAU,WAAW,CAAA;AAAA,SAChB,MAAA;AACL,UAAY,WAAA,EAAA;AAAA;AACd;AACF,KACD,CAAA;AAAA,IACH,CAACF,OAAQ,EAAA,IAAA,EAAM,WAAW;AAAA,GAC5B;AAEA,EAAO,OAAA;AAAA,IACL,IAAI,KAAQ,GAAA;AACV,MAAA,IAAA,CAAK,OAAU,GAAA,IAAA;AAEf,MAAA,OAAOA,QAAO,IAAK,EAAA;AAAA;AACrB,GACF;AACF;;;ACpCO,SAAS,YACd,OACA,EAAA,YAAA,GAAsB,EAAC,EACvB,OAAO,KACP,EAAA;AACA,EAAM,MAAA,QAAA,GAAWC,OAAO,OAAO,CAAA;AAC/B,EAAA,QAAA,CAAS,OAAU,GAAA,OAAA;AAEnB,EAAO,OAAA,SAAA;AAAA,IACL,OAAA,CAAQ,MAAM,QAAS,CAAA,MAAM,SAAS,OAAQ,EAAC,GAAG,YAAY,CAAA;AAAA,IAC9D;AAAA,GACF;AACF;ACbO,SAAS,UAAa,KAAU,EAAA;AACrC,EAAM,MAAA,QAAA,GAAWA,OAAsB,KAAK,CAAA;AAE5C,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,QAAA,CAAS,OAAU,GAAA,KAAA;AAAA,GACrB,EAAG,CAAC,KAAK,CAAC,CAAA;AAEV,EAAO,OAAA,QAAA;AACT;;;ACHO,SAAS,aAAA,CACd,QACA,WACG,EAAA;AACH,EAAA,MAAM,cAAc,cAAe,EAAA;AACnC,EAAM,MAAA,cAAA,GAAiB,UAAU,WAAW,CAAA;AAC5C,EAAM,MAAA,OAAA,GAAUE,QAAQ,MAAM;AAC5B,IAAM,MAAA,OAAA,uBAAc,GAA0B,EAAA;AAE9C,IAAO,OAAA;AAAA,MACL,OAAA;AAAA,MACA,aAAA,EAAe,OAAO,CAAC,CAAA;AAAA,MACvB,MAAQ,EAAA,KAAA;AAAA,MACR,KAAO,EAAA,MAAA,GACH,IAAI,KAAA,CAAM,MAAQ,EAAA;AAAA,QAChB,GAAA,CAAIC,SAAQ,GAAK,EAAA;AACf,UAAM,MAAA,KAAA,GAASA,QAAe,GAAG,CAAA;AAGjC,UAAI,IAAA,CAAC,QAAQ,GAAI,CAAA,GAAG,GAAW,OAAA,CAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAE7C,UAAO,OAAA,KAAA;AAAA;AACT,OACD,CACD,GAAA;AAAA,KACN;AAAA,GACF,EAAG,CAAC,MAAM,CAAC,CAAA;AAIX,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAQ,OAAA,CAAA,aAAA,CAAc,KAAQ,GAAA,OAAA,CAAQ,OAAQ,CAAA,IAAA;AAAA,GAC/C,CAAA;AAED,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,CAAC,MAAQ,EAAA;AAEb,IAAM,MAAA,EAAC,OAAS,EAAA,aAAA,EAAiB,GAAA,OAAA;AACjC,IAAA,OAAA,CAAQ,MAAS,GAAA,IAAA;AACjB,IAAM,MAAA,OAAA,GAAUC,OAAO,MAAM;AAE3B,MAAc,aAAA,CAAA,KAAA;AAEd,MAAA,IAAI,KAAQ,GAAA,KAAA;AACZ,MAAA,IAAI,IAAO,GAAA,KAAA;AAEX,MAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,CAAA,IAAK,OAAS,EAAA;AAClC,QAAM,MAAA,WAAA,GAAe,OAAe,GAAG,CAAA;AAEvC,QAAA,IAAI,CAAC,MAAA,CAAO,EAAG,CAAA,KAAA,EAAO,WAAW,CAAG,EAAA;AAClC,UAAQ,KAAA,GAAA,IAAA;AACR,UAAQ,OAAA,CAAA,GAAA,CAAI,KAAK,WAAW,CAAA;AAC5B,UACE,IAAA,GAAA,SAAA;AAAA,YAAU,MAAG;AA9DzB,cAAA,IAAA,EAAA;AA+Dc,cAAe,OAAA,CAAA,EAAA,GAAA,cAAA,CAAA,OAAA,KAAf,IAAyB,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,cAAA,EAAA,GAAA,EAAgB,KAAO,EAAA,WAAA,CAAA;AAAA;AAAA,gBAC5C,IAAQ,IAAA,IAAA;AAAA;AAClB;AAGF,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,IAAI,IAAM,EAAA;AAER,UAAA,cAAA,CAAe,MAAM;AACnB,YAAA,IAAI,OAAQ,CAAA,MAAA,EAAQC,SAAAA,CAAU,WAAW,CAAA;AAAA,WAC1C,CAAA;AAAA,SACI,MAAA;AACL,UAAY,WAAA,EAAA;AAAA;AACd;AACF,KACD,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,OAAA,CAAQ,MAAS,GAAA,KAAA;AACjB,MAAQ,OAAA,EAAA;AAAA,KACV;AAAA,KACC,CAAC,MAAA,EAAQ,OAAS,EAAA,WAAA,EAAa,cAAc,CAAC,CAAA;AAEjD,EAAA,OAAO,OAAQ,CAAA,KAAA;AACjB;;;ACrFO,SAAS,kBAAA,CACd,UACA,CACA,EAAA;AACA,EAAS,QAAA,EAAA;AACX;ACLO,SAAS,iBACd,KACA,EAAA,QAAA,EACAD,UAASE,SACT,EAAA,OAAA,GAAU,OAAO,EACjB,EAAA;AACA,EAAM,MAAA,OAAA,GAAUN,OAAU,KAAK,CAAA;AAE/B,EAAAI,QAAO,MAAM;AACX,IAAA,MAAM,WAAW,OAAQ,CAAA,OAAA;AAEzB,IAAA,IAAI,CAAC,OAAA,CAAQ,KAAO,EAAA,QAAQ,CAAG,EAAA;AAC7B,MAAA,OAAA,CAAQ,OAAU,GAAA,KAAA;AAClB,MAAA,QAAA,CAAS,OAAO,QAAQ,CAAA;AAAA;AAC1B,GACC,EAAA,CAAC,QAAU,EAAA,KAAK,CAAC,CAAA;AACtB;ACbO,SAAS,kBAAA,CACd,OACA,QACA,EAAA;AACA,EAAA,MAAM,QAAWJ,GAAAA,MAAAA,CAAO,YAAa,CAAA,KAAK,CAAC,CAAA;AAE3C,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAM,MAAA,OAAA,GAAU,aAAa,KAAK,CAAA;AAElC,IAAI,IAAA,OAAA,KAAY,SAAS,OAAS,EAAA;AAChC,MAAA,QAAA,CAAS,OAAU,GAAA,OAAA;AACnB,MAAA,QAAA,CAAS,OAAO,CAAA;AAAA;AAClB,GACD,CAAA;AACH","file":"hooks.js","sourcesContent":["import {type MutableRefObject, useRef} from 'react';\n\nexport function useConstant<T = any>(initializer: () => T) {\n const ref = useRef<T>(null) as MutableRefObject<T>;\n\n if (!ref.current) {\n ref.current = initializer();\n }\n\n return ref.current;\n}\n","import {useEffect, useLayoutEffect} from 'react';\n\n// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js\nexport const canUseDOM =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined';\n\n/**\n * A hook that resolves to useEffect on the server and useLayoutEffect on the client\n * @param callback {function} Callback function that is invoked when the dependencies of the hook change\n */\nexport const useIsomorphicLayoutEffect = canUseDOM\n ? useLayoutEffect\n : useEffect;\n","import {useCallback, useState} from 'react';\n\nexport function useForceUpdate() {\n const setState = useState(0)[1];\n\n return useCallback(() => {\n setState((value) => value + 1);\n }, [setState]);\n}\n","import {useRef, useState} from 'react';\nimport {flushSync} from 'react-dom';\nimport {effect, Signal} from '@dnd-kit/state';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\nimport {useForceUpdate} from './useForceUpdate.ts';\n\n/** Trigger a re-render when reading a signal. */\nexport function useSignal<T = any>(signal: Signal<T>, sync = false) {\n const previous = useRef(signal.peek());\n const read = useRef(false);\n const forceUpdate = useForceUpdate();\n\n useIsomorphicLayoutEffect(\n () =>\n effect(() => {\n const previousValue = previous.current;\n const currentValue = signal.value;\n\n if (previousValue !== currentValue) {\n previous.current = currentValue;\n\n if (!read.current) return;\n\n if (sync) {\n flushSync(forceUpdate);\n } else {\n forceUpdate();\n }\n }\n }),\n [signal, sync, forceUpdate]\n );\n\n return {\n get value() {\n read.current = true;\n\n return signal.peek();\n },\n };\n}\n","import {useMemo, useRef} from 'react';\nimport {computed} from '@dnd-kit/state';\n\nimport {useSignal} from './useSignal.ts';\n\nexport function useComputed<T = any>(\n compute: () => T,\n dependencies: any[] = [],\n sync = false\n) {\n const $compute = useRef(compute);\n $compute.current = compute;\n\n return useSignal(\n useMemo(() => computed(() => $compute.current()), dependencies),\n sync\n );\n}\n","import {useRef} from 'react';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\n\nexport function useLatest<T>(value: T) {\n const valueRef = useRef<T | undefined>(value);\n\n useIsomorphicLayoutEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n return valueRef;\n}\n","import {useMemo} from 'react';\nimport {flushSync} from 'react-dom';\nimport {effect, signal, untracked} from '@dnd-kit/state';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\nimport {useForceUpdate} from './useForceUpdate.ts';\nimport {useLatest} from './useLatest.ts';\n\n/** Trigger a re-render when reading signal properties of an object. */\nexport function useDeepSignal<T extends object | null | undefined>(\n target: T,\n synchronous?: (property: keyof T, oldValue: any, newValue: any) => boolean\n): T {\n const forceUpdate = useForceUpdate();\n const synchronousRef = useLatest(synchronous);\n const tracker = useMemo(() => {\n const tracked = new Map<string | symbol, any>();\n\n return {\n tracked,\n propertyCount: signal(0),\n active: false,\n proxy: target\n ? new Proxy(target, {\n get(target, key) {\n const value = (target as any)[key];\n\n // Reads must not overwrite the observer's comparison baseline.\n if (!tracked.has(key)) tracked.set(key, value);\n\n return value;\n },\n })\n : target,\n };\n }, [target]);\n\n // Publish newly read properties after commit, without notifying from render.\n // The map only grows for a given target, so its size versions the key set.\n useIsomorphicLayoutEffect(() => {\n tracker.propertyCount.value = tracker.tracked.size;\n });\n\n useIsomorphicLayoutEffect(() => {\n if (!target) return;\n\n const {tracked, propertyCount} = tracker;\n tracker.active = true;\n const dispose = effect(() => {\n // Keep the effect alive, but refresh its dependencies for late reads.\n propertyCount.value;\n\n let stale = false;\n let sync = false;\n\n for (const [key, value] of tracked) {\n const latestValue = (target as any)[key];\n\n if (!Object.is(value, latestValue)) {\n stale = true;\n tracked.set(key, latestValue);\n sync =\n untracked(() =>\n synchronousRef.current?.(key as keyof T, value, latestValue)\n ) === true || sync;\n }\n }\n\n if (stale) {\n if (sync) {\n // Signal updates can originate in a React lifecycle method.\n queueMicrotask(() => {\n if (tracker.active) flushSync(forceUpdate);\n });\n } else {\n forceUpdate();\n }\n }\n });\n\n return () => {\n tracker.active = false;\n dispose();\n };\n }, [target, tracker, forceUpdate, synchronousRef]);\n\n return tracker.proxy;\n}\n","import type {DependencyList, EffectCallback} from 'react';\n\nexport function useImmediateEffect(\n callback: EffectCallback,\n _?: DependencyList\n) {\n callback();\n}\n","import {useRef, useEffect} from 'react';\n\nexport function useOnValueChange<T>(\n value: T,\n onChange: (value: T, oldValue: T) => void,\n effect = useEffect,\n compare = Object.is\n) {\n const tracked = useRef<T>(value);\n\n effect(() => {\n const oldValue = tracked.current;\n\n if (!compare(value, oldValue)) {\n tracked.current = value;\n onChange(value, oldValue);\n }\n }, [onChange, value]);\n}\n","import {useRef} from 'react';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useIsomorphicLayoutEffect} from './useIsomorphicLayoutEffect.ts';\n\nexport function useOnElementChange(\n value: RefOrValue<Element>,\n onChange: (value: Element | undefined) => void\n) {\n const previous = useRef(currentValue(value));\n\n useIsomorphicLayoutEffect(() => {\n const current = currentValue(value);\n\n if (current !== previous.current) {\n previous.current = current;\n onChange(current);\n }\n });\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { PropsWithChildren, RefObject, MutableRefObject, ReactNode } from 'react';
|
|
3
|
-
import { Data,
|
|
4
|
-
import { Draggable, Droppable, DragDropManager, DragDropManagerInput, DraggableInput, DroppableInput } from '@dnd-kit/dom';
|
|
5
|
-
export { DragDropManager, KeyboardSensor, PointerSensor } from '@dnd-kit/dom';
|
|
3
|
+
import { Data, DragDropEventHandlers, DragDropManager as DragDropManager$1 } from '@dnd-kit/abstract';
|
|
4
|
+
import { Draggable, Droppable, DragDropManager, DragDropManagerInput, DraggableInput, DropAnimation, DroppableInput } from '@dnd-kit/dom';
|
|
5
|
+
export { BeforeDragStartEvent, CollisionEvent, DragDropManager, DragEndEvent, DragMoveEvent, DragOverEvent, DragStartEvent, KeyboardSensor, PointerSensor } from '@dnd-kit/dom';
|
|
6
6
|
import { CleanupFunction } from '@dnd-kit/state';
|
|
7
7
|
|
|
8
|
-
type Events$1<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>> =
|
|
8
|
+
type Events$1<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>> = DragDropEventHandlers<U, V, W>;
|
|
9
9
|
interface Props$1<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>> extends DragDropManagerInput, PropsWithChildren {
|
|
10
10
|
manager?: W;
|
|
11
11
|
onBeforeDragStart?: Events$1<T, U, V, W>['beforedragstart'];
|
|
@@ -36,11 +36,20 @@ declare function useDraggable<T extends Data = Data>(input: UseDraggableInput<T>
|
|
|
36
36
|
interface Props<T extends Data, U extends Draggable<T>> {
|
|
37
37
|
className?: string;
|
|
38
38
|
children: ReactNode | ((source: U) => ReactNode);
|
|
39
|
+
/**
|
|
40
|
+
* Customize or disable the drop animation that plays when a drag operation ends.
|
|
41
|
+
*
|
|
42
|
+
* - `undefined` – use the default animation (250ms ease)
|
|
43
|
+
* - `null` – disable the drop animation entirely
|
|
44
|
+
* - `{duration, easing}` – customize the animation timing
|
|
45
|
+
* - `(context) => Promise<void> | void` – provide a fully custom animation function
|
|
46
|
+
*/
|
|
47
|
+
dropAnimation?: DropAnimation | null;
|
|
39
48
|
style?: React.CSSProperties;
|
|
40
49
|
tag?: string;
|
|
41
50
|
disabled?: boolean | ((source: U | null) => boolean);
|
|
42
51
|
}
|
|
43
|
-
declare function DragOverlay<T extends Data, U extends Draggable<T>>({ children, className, style, tag, disabled, }: Props<T, U>): react_jsx_runtime.JSX.Element;
|
|
52
|
+
declare function DragOverlay<T extends Data, U extends Draggable<T>>({ children, className, dropAnimation, style, tag, disabled, }: Props<T, U>): react_jsx_runtime.JSX.Element;
|
|
44
53
|
|
|
45
54
|
interface UseDroppableInput<T extends Data = Data> extends Omit<DroppableInput<T>, 'element'> {
|
|
46
55
|
element?: RefOrValue<Element>;
|
|
@@ -53,14 +62,14 @@ declare function useDroppable<T extends Data = Data>(input: UseDroppableInput<T>
|
|
|
53
62
|
|
|
54
63
|
declare function useDragDropManager<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>>(): W | null;
|
|
55
64
|
|
|
56
|
-
type
|
|
65
|
+
type EventNameOverrides = {
|
|
57
66
|
beforedragstart: 'onBeforeDragStart';
|
|
58
67
|
};
|
|
59
|
-
type EventHandlerName<T extends string> = T extends keyof
|
|
68
|
+
type EventHandlerName<T extends string> = T extends keyof EventNameOverrides ? EventNameOverrides[T] : T extends `drag${infer Second}${infer Rest}` ? `onDrag${Uppercase<Second>}${Rest}` : `on${Capitalize<T>}`;
|
|
60
69
|
/**
|
|
61
70
|
* Type for all possible event handlers
|
|
62
71
|
*/
|
|
63
|
-
type Events<T extends Data, U extends Draggable<T>, V extends Droppable<T>, W extends DragDropManager<T, U, V>> =
|
|
72
|
+
type Events<T extends Data, U extends Draggable<T>, V extends Droppable<T>, W extends DragDropManager<T, U, V>> = DragDropEventHandlers<U, V, W>;
|
|
64
73
|
type EventHandlers<T extends Data = Data, U extends Draggable<T> = Draggable<T>, V extends Droppable<T> = Droppable<T>, W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>> = {
|
|
65
74
|
[K in keyof Events<T, U, V, W> as EventHandlerName<K>]: Events<T, U, V, W>[K];
|
|
66
75
|
};
|
|
@@ -81,4 +90,4 @@ interface Instance<T extends DragDropManager$1<any, any> = DragDropManager$1<any
|
|
|
81
90
|
}
|
|
82
91
|
declare function useInstance<T extends Instance>(initializer: (manager: DragDropManager$1<any, any> | undefined) => T): T;
|
|
83
92
|
|
|
84
|
-
export { type EventHandlers as DragDropEventHandlers,
|
|
93
|
+
export { type EventHandlers as DragDropEventHandlers, DragDropProvider, DragOverlay, type UseDraggableInput, type UseDroppableInput, useDragDropManager, useDragDropMonitor, useDragOperation, useDraggable, useDroppable, useInstance };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { createContext, memo, forwardRef, useState, useRef, useMemo, startTransition, useImperativeHandle, useEffect, useContext, useCallback, createElement } from 'react';
|
|
2
|
-
import { DragDropManager, defaultPreset, Draggable, Feedback, Droppable } from '../dom/index.js';
|
|
1
|
+
import { createContext, memo, forwardRef, useState, useRef, useMemo, startTransition, useImperativeHandle, useEffect, useInsertionEffect, useContext, useCallback, createElement } from 'react';
|
|
2
|
+
import { DragDropManager, resolveCustomizable, defaultPreset, Draggable, Feedback, Droppable } from '../dom/index.js';
|
|
3
3
|
export { KeyboardSensor, PointerSensor } from '../dom/index.js';
|
|
4
4
|
import { useIsomorphicLayoutEffect, useLatest, useOnValueChange, useDeepSignal, useOnElementChange, useComputed } from './hooks.js';
|
|
5
5
|
import { deepEqual, ValueHistory, derived, batch } from '../state/dist/index.js';
|
|
@@ -97,76 +97,88 @@ function DragDropProvider(_a2) {
|
|
|
97
97
|
"onDragOver",
|
|
98
98
|
"onDragEnd"
|
|
99
99
|
]);
|
|
100
|
-
var _a3;
|
|
101
100
|
const rendererRef = useRef(null);
|
|
102
|
-
const
|
|
103
|
-
|
|
101
|
+
const {
|
|
102
|
+
plugins: pluginsInput,
|
|
103
|
+
modifiers: modifiersInput,
|
|
104
|
+
sensors: sensorsInput
|
|
105
|
+
} = input;
|
|
106
|
+
const plugins = resolveCustomizable(pluginsInput, defaultPreset.plugins);
|
|
107
|
+
const sensors = resolveCustomizable(sensorsInput, defaultPreset.sensors);
|
|
108
|
+
const modifiers = resolveCustomizable(
|
|
109
|
+
modifiersInput,
|
|
110
|
+
defaultPreset.modifiers
|
|
111
|
+
);
|
|
104
112
|
const handleBeforeDragStart = useLatest(onBeforeDragStart);
|
|
105
113
|
const handleDragStart = useLatest(onDragStart);
|
|
106
114
|
const handleDragOver = useLatest(onDragOver);
|
|
107
115
|
const handleDragMove = useLatest(onDragMove);
|
|
108
116
|
const handleDragEnd = useLatest(onDragEnd);
|
|
109
117
|
const handleCollision = useLatest(onCollision);
|
|
118
|
+
const manager = useStableInstance(() => {
|
|
119
|
+
var _a3;
|
|
120
|
+
return (_a3 = input.manager) != null ? _a3 : new DragDropManager(input);
|
|
121
|
+
});
|
|
110
122
|
useEffect(() => {
|
|
111
|
-
var _a4;
|
|
112
123
|
if (!rendererRef.current) throw new Error("Renderer not found");
|
|
113
124
|
const { renderer, trackRendering } = rendererRef.current;
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
125
|
+
const { monitor } = manager;
|
|
126
|
+
manager.renderer = renderer;
|
|
127
|
+
const listeners = [
|
|
128
|
+
monitor.addEventListener("beforedragstart", (event) => {
|
|
129
|
+
const callback = handleBeforeDragStart.current;
|
|
130
|
+
if (callback) {
|
|
131
|
+
trackRendering(() => callback(event, manager));
|
|
132
|
+
}
|
|
133
|
+
}),
|
|
134
|
+
monitor.addEventListener(
|
|
135
|
+
"dragstart",
|
|
136
|
+
(event) => {
|
|
137
|
+
var _a3;
|
|
138
|
+
return (_a3 = handleDragStart.current) == null ? void 0 : _a3.call(handleDragStart, event, manager);
|
|
139
|
+
}
|
|
140
|
+
),
|
|
141
|
+
monitor.addEventListener("dragover", (event) => {
|
|
142
|
+
const callback = handleDragOver.current;
|
|
143
|
+
if (callback) {
|
|
144
|
+
trackRendering(() => callback(event, manager));
|
|
145
|
+
}
|
|
146
|
+
}),
|
|
147
|
+
monitor.addEventListener("dragmove", (event) => {
|
|
148
|
+
const callback = handleDragMove.current;
|
|
149
|
+
if (callback) {
|
|
150
|
+
trackRendering(() => callback(event, manager));
|
|
151
|
+
}
|
|
152
|
+
}),
|
|
153
|
+
monitor.addEventListener("dragend", (event) => {
|
|
154
|
+
const callback = handleDragEnd.current;
|
|
155
|
+
if (callback) {
|
|
156
|
+
trackRendering(() => callback(event, manager));
|
|
157
|
+
}
|
|
158
|
+
}),
|
|
159
|
+
monitor.addEventListener(
|
|
160
|
+
"collision",
|
|
161
|
+
(event) => {
|
|
162
|
+
var _a3;
|
|
163
|
+
return (_a3 = handleCollision.current) == null ? void 0 : _a3.call(handleCollision, event, manager);
|
|
164
|
+
}
|
|
165
|
+
)
|
|
166
|
+
];
|
|
167
|
+
return () => listeners.forEach((dispose) => dispose());
|
|
168
|
+
}, [manager]);
|
|
157
169
|
useOnValueChange(
|
|
158
170
|
plugins,
|
|
159
|
-
() => manager && (manager.plugins = plugins
|
|
171
|
+
() => manager && (manager.plugins = plugins),
|
|
160
172
|
...options
|
|
161
173
|
);
|
|
162
174
|
useOnValueChange(
|
|
163
175
|
sensors,
|
|
164
|
-
() => manager && (manager.sensors = sensors
|
|
176
|
+
() => manager && (manager.sensors = sensors),
|
|
165
177
|
...options
|
|
166
178
|
);
|
|
167
179
|
useOnValueChange(
|
|
168
180
|
modifiers,
|
|
169
|
-
() => manager && (manager.modifiers = modifiers
|
|
181
|
+
() => manager && (manager.modifiers = modifiers),
|
|
170
182
|
...options
|
|
171
183
|
);
|
|
172
184
|
return /* @__PURE__ */ jsxs(DragDropContext.Provider, { value: manager, children: [
|
|
@@ -174,6 +186,19 @@ function DragDropProvider(_a2) {
|
|
|
174
186
|
children
|
|
175
187
|
] });
|
|
176
188
|
}
|
|
189
|
+
function useStableInstance(create) {
|
|
190
|
+
const ref = useRef(null);
|
|
191
|
+
if (!ref.current) {
|
|
192
|
+
ref.current = create();
|
|
193
|
+
}
|
|
194
|
+
useInsertionEffect(() => {
|
|
195
|
+
return () => {
|
|
196
|
+
var _a2;
|
|
197
|
+
return (_a2 = ref.current) == null ? void 0 : _a2.destroy();
|
|
198
|
+
};
|
|
199
|
+
}, []);
|
|
200
|
+
return ref.current;
|
|
201
|
+
}
|
|
177
202
|
function useDragDropManager() {
|
|
178
203
|
return useContext(DragDropContext);
|
|
179
204
|
}
|
|
@@ -192,7 +217,7 @@ function useInstance(initializer) {
|
|
|
192
217
|
|
|
193
218
|
// src/core/draggable/useDraggable.ts
|
|
194
219
|
function useDraggable(input) {
|
|
195
|
-
const { disabled, data, element, handle, id, modifiers, sensors } = input;
|
|
220
|
+
const { disabled, data, element, handle, id, modifiers, sensors, plugins } = input;
|
|
196
221
|
const draggable = useInstance(
|
|
197
222
|
(manager) => new Draggable(
|
|
198
223
|
__spreadProps(__spreadValues({}, input), {
|
|
@@ -209,7 +234,12 @@ function useDraggable(input) {
|
|
|
209
234
|
useOnElementChange(element, (element2) => draggable.element = element2);
|
|
210
235
|
useOnValueChange(data, () => data && (draggable.data = data));
|
|
211
236
|
useOnValueChange(disabled, () => draggable.disabled = disabled === true);
|
|
212
|
-
useOnValueChange(
|
|
237
|
+
useOnValueChange(
|
|
238
|
+
sensors,
|
|
239
|
+
() => draggable.sensors = sensors,
|
|
240
|
+
void 0,
|
|
241
|
+
deepEqual
|
|
242
|
+
);
|
|
213
243
|
useOnValueChange(
|
|
214
244
|
modifiers,
|
|
215
245
|
() => draggable.modifiers = modifiers,
|
|
@@ -217,11 +247,10 @@ function useDraggable(input) {
|
|
|
217
247
|
deepEqual
|
|
218
248
|
);
|
|
219
249
|
useOnValueChange(
|
|
220
|
-
|
|
221
|
-
() =>
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
250
|
+
plugins,
|
|
251
|
+
() => draggable.plugins = plugins,
|
|
252
|
+
void 0,
|
|
253
|
+
deepEqual
|
|
225
254
|
);
|
|
226
255
|
useOnValueChange(
|
|
227
256
|
input.alignment,
|
|
@@ -263,6 +292,7 @@ function shouldUpdateSynchronously(key, oldValue, newValue) {
|
|
|
263
292
|
function DragOverlay({
|
|
264
293
|
children,
|
|
265
294
|
className,
|
|
295
|
+
dropAnimation,
|
|
266
296
|
style,
|
|
267
297
|
tag,
|
|
268
298
|
disabled
|
|
@@ -283,6 +313,17 @@ function DragOverlay({
|
|
|
283
313
|
feedback.overlay = void 0;
|
|
284
314
|
};
|
|
285
315
|
}, [manager, isDisabled]);
|
|
316
|
+
useEffect(() => {
|
|
317
|
+
if (!manager) return;
|
|
318
|
+
const feedback = manager.plugins.find(
|
|
319
|
+
(plugin) => plugin instanceof Feedback
|
|
320
|
+
);
|
|
321
|
+
if (!feedback) return;
|
|
322
|
+
feedback.dropAnimation = dropAnimation;
|
|
323
|
+
return () => {
|
|
324
|
+
feedback.dropAnimation = void 0;
|
|
325
|
+
};
|
|
326
|
+
}, [manager, dropAnimation]);
|
|
286
327
|
const patchedManager = useMemo(() => {
|
|
287
328
|
if (!manager) return null;
|
|
288
329
|
const patchedRegistry = new Proxy(manager.registry, {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["src/core/context/context.ts","src/core/context/renderer.ts","src/core/context/DragDropProvider.tsx","src/core/hooks/useDragDropManager.ts","src/core/hooks/useInstance.ts","src/core/draggable/useDraggable.ts","src/core/draggable/DragOverlay.tsx","../geometry/dist/index.mjs","../collision/dist/index.js","src/core/droppable/useDroppable.ts","src/core/hooks/useDragDropMonitor.ts","src/core/hooks/useDragOperation.ts"],"names":["_a","useRef","DragDropManager","useState","useIsomorphicLayoutEffect","useOnValueChange","handle","element","deepEqual","useEffect","useMemo","jsx","useDeepSignal","__defProp","__defNormalProp","CollisionType2","CollisionPriority2","currentValue","useOnElementChange","useCallback","useComputed"],"mappings":"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","file":"index.js","sourcesContent":["'use client';\n\nimport {createContext} from 'react';\nimport {DragDropManager} from '@dnd-kit/dom';\n\nexport const defaultManager = new DragDropManager();\n\nexport const DragDropContext = createContext<DragDropManager | null>(\n defaultManager\n);\n","import {\n forwardRef,\n memo,\n startTransition,\n useImperativeHandle,\n useState,\n useRef,\n useMemo,\n} from 'react';\nimport type {Renderer as AbstractRenderer} from '@dnd-kit/abstract';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nexport type ReactRenderer = {\n renderer: AbstractRenderer;\n trackRendering: (callback: () => void) => void;\n};\n\nexport const Renderer = memo(\n forwardRef<ReactRenderer, {children: React.ReactNode}>(({children}, ref) => {\n const [transitionCount, setTransitionCount] = useState(0);\n const rendering = useRef<Promise<void> | null>(null);\n const resolver = useRef<(() => void) | null>(null);\n const renderer = useMemo<ReactRenderer>(\n () => ({\n renderer: {\n get rendering() {\n return rendering.current ?? Promise.resolve();\n },\n },\n trackRendering(callback: () => void) {\n if (!rendering.current) {\n rendering.current = new Promise<void>((resolve) => {\n resolver.current = resolve;\n });\n }\n\n startTransition(() => {\n callback();\n setTransitionCount((count) => count + 1);\n });\n },\n }),\n []\n );\n\n useIsomorphicLayoutEffect(() => {\n resolver.current?.();\n rendering.current = null;\n }, [children, transitionCount]);\n\n useImperativeHandle(ref, () => renderer);\n\n return null;\n })\n);\n","'use client';\n\nimport {\n useEffect,\n useRef,\n useInsertionEffect,\n type PropsWithChildren,\n} from 'react';\nimport type {Data, DragDropEventHandlers} from '@dnd-kit/abstract';\nimport {\n DragDropManager,\n defaultPreset,\n resolveCustomizable,\n} from '@dnd-kit/dom';\nimport type {DragDropManagerInput, Draggable, Droppable} from '@dnd-kit/dom';\nimport {useLatest, useOnValueChange} from '@dnd-kit/react/hooks';\nimport {deepEqual} from '@dnd-kit/state';\n\nimport {DragDropContext} from './context.ts';\nimport {Renderer, type ReactRenderer} from './renderer.ts';\n\nexport type Events<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport interface Props<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> extends DragDropManagerInput,\n PropsWithChildren {\n manager?: W;\n onBeforeDragStart?: Events<T, U, V, W>['beforedragstart'];\n onCollision?: Events<T, U, V, W>['collision'];\n onDragStart?: Events<T, U, V, W>['dragstart'];\n onDragMove?: Events<T, U, V, W>['dragmove'];\n onDragOver?: Events<T, U, V, W>['dragover'];\n onDragEnd?: Events<T, U, V, W>['dragend'];\n}\n\nconst options = [undefined, deepEqual] as const;\n\nexport function DragDropProvider<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>({\n children,\n onCollision,\n onBeforeDragStart,\n onDragStart,\n onDragMove,\n onDragOver,\n onDragEnd,\n ...input\n}: Props<T, U, V, W>) {\n const rendererRef = useRef<ReactRenderer | null>(null);\n const {\n plugins: pluginsInput,\n modifiers: modifiersInput,\n sensors: sensorsInput,\n } = input;\n const plugins = resolveCustomizable(pluginsInput, defaultPreset.plugins);\n const sensors = resolveCustomizable(sensorsInput, defaultPreset.sensors);\n const modifiers = resolveCustomizable(\n modifiersInput,\n defaultPreset.modifiers\n );\n const handleBeforeDragStart = useLatest(onBeforeDragStart);\n const handleDragStart = useLatest(onDragStart);\n const handleDragOver = useLatest(onDragOver);\n const handleDragMove = useLatest(onDragMove);\n const handleDragEnd = useLatest(onDragEnd);\n const handleCollision = useLatest(onCollision);\n const manager = useStableInstance<W>(() => {\n return input.manager ?? (new DragDropManager<T, U, V>(input) as W);\n });\n\n useEffect(() => {\n if (!rendererRef.current) throw new Error('Renderer not found');\n\n const {renderer, trackRendering} = rendererRef.current;\n const {monitor} = manager;\n\n manager.renderer = renderer;\n\n const listeners = [\n monitor.addEventListener('beforedragstart', (event) => {\n const callback = handleBeforeDragStart.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragstart', (event) =>\n handleDragStart.current?.(event, manager)\n ),\n monitor.addEventListener('dragover', (event) => {\n const callback = handleDragOver.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragmove', (event) => {\n const callback = handleDragMove.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('dragend', (event) => {\n const callback = handleDragEnd.current;\n\n if (callback) {\n trackRendering(() => callback(event, manager));\n }\n }),\n monitor.addEventListener('collision', (event) =>\n handleCollision.current?.(event, manager)\n ),\n ];\n\n return () => listeners.forEach((dispose) => dispose());\n }, [manager]);\n\n useOnValueChange(\n plugins,\n () => manager && (manager.plugins = plugins),\n ...options\n );\n useOnValueChange(\n sensors,\n () => manager && (manager.sensors = sensors),\n ...options\n );\n useOnValueChange(\n modifiers,\n () => manager && (manager.modifiers = modifiers),\n ...options\n );\n\n return (\n <DragDropContext.Provider value={manager as any}>\n <Renderer ref={rendererRef}>{children}</Renderer>\n {children}\n </DragDropContext.Provider>\n );\n}\n\nfunction useStableInstance<T extends {destroy(): void}>(create: () => T): T {\n const ref = useRef<T | null>(null);\n\n if (!ref.current) {\n ref.current = create();\n }\n\n useInsertionEffect(() => {\n return () => ref.current?.destroy();\n }, []);\n\n return ref.current;\n}\n","import {useContext} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport type {DragDropManager, Draggable, Droppable} from '@dnd-kit/dom';\n\nimport {DragDropContext} from '../context/context.ts';\n\nexport function useDragDropManager<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(): W | null {\n return useContext(DragDropContext) as W | null;\n}\n","import {useState} from 'react';\nimport type {DragDropManager} from '@dnd-kit/abstract';\nimport type {CleanupFunction} from '@dnd-kit/state';\nimport {useIsomorphicLayoutEffect} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport interface Instance<\n T extends DragDropManager<any, any> = DragDropManager<any, any>,\n> {\n manager: T | undefined;\n register(): CleanupFunction | void;\n}\n\nexport function useInstance<T extends Instance>(\n initializer: (manager: DragDropManager<any, any> | undefined) => T\n): T {\n const manager = useDragDropManager() ?? undefined;\n const [instance] = useState<T>(() => initializer(manager));\n\n if (instance.manager !== manager) {\n instance.manager = manager;\n }\n\n useIsomorphicLayoutEffect(instance.register, [manager, instance]);\n\n return instance;\n}\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {deepEqual} from '@dnd-kit/state';\nimport {Draggable} from '@dnd-kit/dom';\nimport type {DraggableInput} from '@dnd-kit/dom';\nimport {\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\n\nexport interface UseDraggableInput<T extends Data = Data>\n extends Omit<DraggableInput<T>, 'handle' | 'element'> {\n handle?: RefOrValue<Element>;\n element?: RefOrValue<Element>;\n}\n\nexport function useDraggable<T extends Data = Data>(\n input: UseDraggableInput<T>\n) {\n const {disabled, data, element, handle, id, modifiers, sensors, plugins} =\n input;\n const draggable = useInstance(\n (manager) =>\n new Draggable(\n {\n ...input,\n register: false,\n handle: currentValue(handle),\n element: currentValue(element),\n },\n manager\n )\n );\n const trackedDraggable = useDeepSignal(draggable, shouldUpdateSynchronously);\n\n useOnValueChange(id, () => (draggable.id = id));\n useOnElementChange(handle, (handle) => (draggable.handle = handle));\n useOnElementChange(element, (element) => (draggable.element = element));\n useOnValueChange(data, () => data && (draggable.data = data));\n useOnValueChange(disabled, () => (draggable.disabled = disabled === true));\n useOnValueChange(\n sensors,\n () => (draggable.sensors = sensors),\n undefined,\n deepEqual\n );\n useOnValueChange(\n modifiers,\n () => (draggable.modifiers = modifiers),\n undefined,\n deepEqual\n );\n useOnValueChange(\n plugins,\n () => (draggable.plugins = plugins),\n undefined,\n deepEqual\n );\n useOnValueChange(\n input.alignment,\n () => (draggable.alignment = input.alignment)\n );\n\n return {\n draggable: trackedDraggable,\n get isDragging() {\n return trackedDraggable.isDragging;\n },\n get isDropping() {\n return trackedDraggable.isDropping;\n },\n get isDragSource() {\n return trackedDraggable.isDragSource;\n },\n handleRef: useCallback(\n (element: Element | null) => {\n draggable.handle = element ?? undefined;\n },\n [draggable]\n ),\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n draggable.element?.isConnected &&\n !draggable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n draggable.element = element ?? undefined;\n },\n [draggable]\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","import {createElement, useEffect, useMemo, useRef, type ReactNode} from 'react';\nimport {useComputed, useDeepSignal} from '@dnd-kit/react/hooks';\nimport {DragDropManager, Draggable, Feedback} from '@dnd-kit/dom';\nimport type {DropAnimation} from '@dnd-kit/dom';\nimport {Data} from '@dnd-kit/abstract';\n\nimport {useDragDropManager} from '../hooks/useDragDropManager.ts';\nimport {DragDropContext} from '../context/context.ts';\n\nexport interface Props<T extends Data, U extends Draggable<T>> {\n className?: string;\n children: ReactNode | ((source: U) => ReactNode);\n /**\n * Customize or disable the drop animation that plays when a drag operation ends.\n *\n * - `undefined` – use the default animation (250ms ease)\n * - `null` – disable the drop animation entirely\n * - `{duration, easing}` – customize the animation timing\n * - `(context) => Promise<void> | void` – provide a fully custom animation function\n */\n dropAnimation?: DropAnimation | null;\n style?: React.CSSProperties;\n tag?: string;\n disabled?: boolean | ((source: U | null) => boolean);\n}\n\nexport function DragOverlay<T extends Data, U extends Draggable<T>>({\n children,\n className,\n dropAnimation,\n style,\n tag,\n disabled,\n}: Props<T, U>) {\n const ref = useRef<HTMLDivElement | null>(null);\n const manager = useDragDropManager<T, U>();\n const source =\n useComputed(() => manager?.dragOperation.source, [manager]).value ?? null;\n const isDisabled =\n typeof disabled === 'function' ? disabled(source) : disabled;\n\n useEffect(() => {\n if (!ref.current || !manager || isDisabled) return;\n\n const feedback = manager.plugins.find(\n (plugin) => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.overlay = ref.current;\n\n return () => {\n feedback.overlay = undefined;\n };\n }, [manager, isDisabled]);\n\n useEffect(() => {\n if (!manager) return;\n\n const feedback = manager.plugins.find(\n (plugin) => plugin instanceof Feedback\n );\n\n if (!feedback) return;\n\n feedback.dropAnimation = dropAnimation;\n\n return () => {\n feedback.dropAnimation = undefined;\n };\n }, [manager, dropAnimation]);\n\n // Prevent children of the overlay from registering themselves as draggables or droppables\n const patchedManager = useMemo(() => {\n if (!manager) return null;\n\n const patchedRegistry = new Proxy(manager.registry, {\n get(target, property) {\n if (property === 'register' || property === 'unregister') {\n return noop;\n }\n\n return target[property as keyof typeof target];\n },\n });\n\n return new Proxy(manager, {\n get(target, property) {\n if (property === 'registry') {\n return patchedRegistry;\n }\n\n return target[property as keyof typeof target];\n },\n });\n }, [manager]);\n\n return (\n <DragDropContext.Provider value={patchedManager as DragDropManager | null}>\n {createElement(\n tag || 'div',\n {ref, className, style, 'data-dnd-overlay': true},\n\n renderChildren()\n )}\n </DragDropContext.Provider>\n );\n\n function renderChildren() {\n if (!source || isDisabled) return null;\n\n if (typeof children === 'function') {\n return <Children source={source}>{children}</Children>;\n }\n\n return children;\n }\n}\n\nfunction noop() {\n return () => {};\n}\n\nfunction Children<T extends Data, U extends Draggable<T>>({\n children,\n source,\n}: {\n children: (source: U) => ReactNode;\n source: U;\n}) {\n return children(useDeepSignal(source));\n}\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for(\"Symbol.\" + name);\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __pow = Math.pow;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __decoratorStart = (base) => {\n var _a2;\n return [, , , __create((_a2 = base == null ? void 0 : base[__knownSymbol(\"metadata\")]) != null ? _a2 : null)];\n};\nvar __decoratorStrings = [\"class\", \"method\", \"getter\", \"setter\", \"accessor\", \"field\", \"value\", \"get\", \"set\"];\nvar __expectFn = (fn) => fn !== void 0 && typeof fn !== \"function\" ? __typeError(\"Function expected\") : fn;\nvar __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError(\"Already initialized\") : fns.push(__expectFn(fn || null)) });\nvar __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol(\"metadata\"), array[3]);\nvar __runInitializers = (array, flags, self, value) => {\n for (var i = 0, fns = array[flags >> 1], n = fns && fns.length; i < n; i++) flags & 1 ? fns[i].call(self) : value = fns[i].call(self, value);\n return value;\n};\nvar __decorateElement = (array, flags, name, decorators, target, extra) => {\n var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);\n var j = k > 3 ? array.length + 1 : k ? s ? 1 : 2 : 0, key = __decoratorStrings[k + 5];\n var initializers = k > 3 && (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);\n var desc = k && (!p && !s && (target = target.prototype), k < 5 && (k > 3 || !p) && __getOwnPropDesc(k < 4 ? target : { get [name]() {\n return __privateGet(this, extra);\n }, set [name](x) {\n return __privateSet(this, extra, x);\n } }, name));\n k ? p && k < 4 && __name(extra, (k > 2 ? \"set \" : k > 1 ? \"get \" : \"\") + name) : __name(target, name);\n for (var i = decorators.length - 1; i >= 0; i--) {\n ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);\n if (k) {\n ctx.static = s, ctx.private = p, access = ctx.access = { has: p ? (x) => __privateIn(target, x) : (x) => name in x };\n if (k ^ 3) access.get = p ? (x) => (k ^ 1 ? __privateGet : __privateMethod)(x, target, k ^ 4 ? extra : desc.get) : (x) => x[name];\n if (k > 2) access.set = p ? (x, y) => __privateSet(x, target, y, k ^ 4 ? extra : desc.set) : (x, y) => x[name] = y;\n }\n it = (0, decorators[i])(k ? k < 4 ? p ? extra : desc[key] : k > 4 ? void 0 : { get: desc.get, set: desc.set } : target, ctx), done._ = 1;\n if (k ^ 4 || it === void 0) __expectFn(it) && (k > 4 ? initializers.unshift(it) : k ? p ? extra = it : desc[key] = it : target = it);\n else if (typeof it !== \"object\" || it === null) __typeError(\"Object expected\");\n else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);\n }\n return k || __decoratorMetadata(array, target), desc && __defProp(target, name, desc), p ? k ^ 4 ? extra : desc : target;\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateIn = (member, obj) => Object(obj) !== obj ? __typeError('Cannot use the \"in\" operator on this value') : member.has(obj);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __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);\nvar __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, \"write to private field\"), setter ? setter.call(obj, value) : member.set(obj, value), value);\nvar __privateMethod = (obj, member, method) => (__accessCheck(obj, member, \"access private method\"), method);\n\n// src/point/Point.ts\nvar Point = class _Point {\n /**\n * @param {number} Coordinate of the point on the horizontal axis\n * @param {number} Coordinate of the point on the vertical axis\n */\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n /**\n * Returns the delta between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static delta(a, b) {\n return new _Point(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns the distance (hypotenuse) between this point and another point.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static distance(a, b) {\n return Math.hypot(a.x - b.x, a.y - b.y);\n }\n /**\n * Returns true if both points are equal.\n *\n * @param {Point} a - A point\n * @param {Point} b - Another point\n */\n static equals(a, b) {\n return a.x === b.x && a.y === b.y;\n }\n static from({ x, y }) {\n return new _Point(x, y);\n }\n};\n\n// src/shapes/Rectangle.ts\nvar Rectangle = class _Rectangle {\n constructor(left, top, width, height) {\n this.left = left;\n this.top = top;\n this.width = width;\n this.height = height;\n this.scale = {\n x: 1,\n y: 1\n };\n }\n get inverseScale() {\n return {\n x: 1 / this.scale.x,\n y: 1 / this.scale.y\n };\n }\n translate(x, y) {\n const { top, left, width, height, scale } = this;\n const newShape = new _Rectangle(left + x, top + y, width, height);\n newShape.scale = __spreadValues({}, scale);\n return newShape;\n }\n get boundingRectangle() {\n const { width, height, left, top, right, bottom } = this;\n return { width, height, left, top, right, bottom };\n }\n get center() {\n const { left, top, right, bottom } = this;\n return new Point((left + right) / 2, (top + bottom) / 2);\n }\n get area() {\n const { width, height } = this;\n return width * height;\n }\n equals(shape) {\n if (!(shape instanceof _Rectangle)) {\n return false;\n }\n const { left, top, width, height } = this;\n return left === shape.left && top === shape.top && width === shape.width && height === shape.height;\n }\n containsPoint(point) {\n const { top, left, bottom, right } = this;\n return top <= point.y && point.y <= bottom && left <= point.x && point.x <= right;\n }\n intersectionArea(shape) {\n if (shape instanceof _Rectangle) {\n return rectangleRectangleIntersection(this, shape);\n }\n return 0;\n }\n intersectionRatio(shape) {\n const { area } = this;\n const intersectionArea = this.intersectionArea(shape);\n const intersectionRatio = intersectionArea / (shape.area + area - intersectionArea);\n return intersectionRatio;\n }\n get bottom() {\n const { top, height } = this;\n return top + height;\n }\n get right() {\n const { left, width } = this;\n return left + width;\n }\n get aspectRatio() {\n const { width, height } = this;\n return width / height;\n }\n get corners() {\n return [\n { x: this.left, y: this.top },\n { x: this.right, y: this.top },\n { x: this.left, y: this.bottom },\n { x: this.right, y: this.bottom }\n ];\n }\n static from({ top, left, width, height }) {\n return new _Rectangle(left, top, width, height);\n }\n static delta(a, b, alignment = { x: \"center\", y: \"center\" }) {\n const getCoordinate = (rect, axis) => {\n const align = alignment[axis];\n const start = axis === \"x\" ? rect.left : rect.top;\n const size = axis === \"x\" ? rect.width : rect.height;\n if (align == \"start\") return start;\n if (align == \"end\") return start + size;\n return start + size / 2;\n };\n return Point.delta(\n { x: getCoordinate(a, \"x\"), y: getCoordinate(a, \"y\") },\n { x: getCoordinate(b, \"x\"), y: getCoordinate(b, \"y\") }\n );\n }\n static intersectionRatio(a, b) {\n return _Rectangle.from(a).intersectionRatio(_Rectangle.from(b));\n }\n};\nfunction rectangleRectangleIntersection(a, b) {\n const top = Math.max(b.top, a.top);\n const left = Math.max(b.left, a.left);\n const right = Math.min(b.left + b.width, a.left + a.width);\n const bottom = Math.min(b.top + b.height, a.top + a.height);\n const width = right - left;\n const height = bottom - top;\n if (left < right && top < bottom) {\n const intersectionArea = width * height;\n return intersectionArea;\n }\n return 0;\n}\n\n// src/position/position.ts\nimport { batch, derived, ValueHistory } from \"@dnd-kit/state\";\nvar _direction_dec, _delta_dec, _a, _timestamp, _init;\nvar Position = class extends (_a = ValueHistory, _delta_dec = [derived], _direction_dec = [derived], _a) {\n constructor(initialValue) {\n const point = Point.from(initialValue);\n super(point, (a, b) => Point.equals(a, b));\n __runInitializers(_init, 5, this);\n __privateAdd(this, _timestamp, 0);\n this.velocity = { x: 0, y: 0 };\n }\n get delta() {\n return Point.delta(this.current, this.initial);\n }\n get direction() {\n const { current, previous } = this;\n if (!previous) return null;\n const delta = {\n x: current.x - previous.x,\n y: current.y - previous.y\n };\n if (!delta.x && !delta.y) {\n return null;\n }\n if (Math.abs(delta.x) > Math.abs(delta.y)) {\n return delta.x > 0 ? \"right\" : \"left\";\n }\n return delta.y > 0 ? \"down\" : \"up\";\n }\n get current() {\n return super.current;\n }\n set current(coordinates) {\n const { current } = this;\n const point = Point.from(coordinates);\n const delta = {\n x: point.x - current.x,\n y: point.y - current.y\n };\n const timestamp = Date.now();\n const timeDelta = timestamp - __privateGet(this, _timestamp);\n const velocity = (delta2) => Math.round(delta2 / timeDelta * 100);\n batch(() => {\n __privateSet(this, _timestamp, timestamp);\n this.velocity = {\n x: velocity(delta.x),\n y: velocity(delta.y)\n };\n super.current = point;\n });\n }\n reset(coordinates = this.defaultValue) {\n super.reset(Point.from(coordinates));\n this.velocity = { x: 0, y: 0 };\n }\n};\n_init = __decoratorStart(_a);\n_timestamp = new WeakMap();\n__decorateElement(_init, 2, \"delta\", _delta_dec, Position);\n__decorateElement(_init, 2, \"direction\", _direction_dec, Position);\n__decoratorMetadata(_init, Position);\n\n// src/distance/distance.ts\nfunction exceedsDistance({ x, y }, distance) {\n const dx = Math.abs(x);\n const dy = Math.abs(y);\n if (typeof distance === \"number\") {\n return Math.sqrt(__pow(dx, 2) + __pow(dy, 2)) > distance;\n }\n if (\"x\" in distance && \"y\" in distance) {\n return dx > distance.x && dy > distance.y;\n }\n if (\"x\" in distance) {\n return dx > distance.x;\n }\n if (\"y\" in distance) {\n return dy > distance.y;\n }\n return false;\n}\n\n// src/types/axis.ts\nvar Axis = /* @__PURE__ */ ((Axis2) => {\n Axis2[\"Horizontal\"] = \"x\";\n Axis2[\"Vertical\"] = \"y\";\n return Axis2;\n})(Axis || {});\nvar Axes = Object.values(Axis);\nexport {\n Axes,\n Axis,\n Point,\n Position,\n Rectangle,\n exceedsDistance\n};\n","// src/algorithms/pointerIntersection.ts\nimport { CollisionPriority, CollisionType } from \"@dnd-kit/abstract\";\nimport { Point } from \"@dnd-kit/geometry\";\nvar pointerIntersection = ({\n dragOperation,\n droppable\n}) => {\n const pointerCoordinates = dragOperation.position.current;\n if (!pointerCoordinates) {\n return null;\n }\n const { id } = droppable;\n if (!droppable.shape) {\n return null;\n }\n if (droppable.shape.containsPoint(pointerCoordinates)) {\n const distance = Point.distance(droppable.shape.center, pointerCoordinates);\n return {\n id,\n value: 1 / distance,\n type: CollisionType.PointerIntersection,\n priority: CollisionPriority.High\n };\n }\n return null;\n};\n\n// src/algorithms/shapeIntersection.ts\nimport { CollisionPriority as CollisionPriority2, CollisionType as CollisionType2 } from \"@dnd-kit/abstract\";\nimport { Point as Point2 } from \"@dnd-kit/geometry\";\nvar shapeIntersection = ({\n dragOperation,\n droppable\n}) => {\n const { shape } = dragOperation;\n if (!droppable.shape || !(shape == null ? void 0 : shape.current)) {\n return null;\n }\n const intersectionArea = shape.current.intersectionArea(droppable.shape);\n if (intersectionArea) {\n const { position } = dragOperation;\n const distance = Point2.distance(droppable.shape.center, position.current);\n const intersectionRatio = intersectionArea / (shape.current.area + droppable.shape.area - intersectionArea);\n const value = intersectionRatio / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType2.ShapeIntersection,\n priority: CollisionPriority2.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/default.ts\nvar defaultCollisionDetection = (args) => {\n var _a;\n return (_a = pointerIntersection(args)) != null ? _a : shapeIntersection(args);\n};\n\n// src/algorithms/closestCorners.ts\nimport { CollisionPriority as CollisionPriority3, CollisionType as CollisionType3 } from \"@dnd-kit/abstract\";\nimport { Point as Point3, Rectangle } from \"@dnd-kit/geometry\";\nvar closestCorners = (input) => {\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const shapeCorners = shape ? Rectangle.from(shape.current.boundingRectangle).corners : void 0;\n const distance = Rectangle.from(\n droppable.shape.boundingRectangle\n ).corners.reduce(\n (acc, corner, index) => {\n var _a;\n return acc + Point3.distance(\n Point3.from(corner),\n (_a = shapeCorners == null ? void 0 : shapeCorners[index]) != null ? _a : position.current\n );\n },\n 0\n );\n const value = distance / 4;\n return {\n id: droppable.id,\n value: 1 / value,\n type: CollisionType3.Collision,\n priority: CollisionPriority3.Normal\n };\n};\n\n// src/algorithms/closestCenter.ts\nimport { CollisionPriority as CollisionPriority4, CollisionType as CollisionType4 } from \"@dnd-kit/abstract\";\nimport { Point as Point4 } from \"@dnd-kit/geometry\";\nvar closestCenter = (input) => {\n var _a;\n const { dragOperation, droppable } = input;\n const { shape, position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const collision = defaultCollisionDetection(input);\n if (collision) {\n return collision;\n }\n const distance = Point4.distance(\n droppable.shape.center,\n (_a = shape == null ? void 0 : shape.current.center) != null ? _a : position.current\n );\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType4.Collision,\n priority: CollisionPriority4.Normal\n };\n};\n\n// src/algorithms/directionBiased.ts\nimport { CollisionPriority as CollisionPriority5, CollisionType as CollisionType5 } from \"@dnd-kit/abstract\";\nimport { Point as Point5 } from \"@dnd-kit/geometry\";\nvar directionBiased = ({\n dragOperation,\n droppable\n}) => {\n if (!droppable.shape) {\n return null;\n }\n const { position, shape } = dragOperation;\n const { direction } = position;\n if (!shape) {\n return null;\n }\n if (direction === null) {\n return defaultCollisionDetection({ dragOperation, droppable });\n }\n const { center } = shape.current;\n const rect = droppable.shape.boundingRectangle;\n const isBelow = rect.bottom >= center.y;\n const isAbove = rect.top <= center.y;\n const isLeft = rect.left <= center.x;\n const isRight = rect.right >= center.x;\n if (direction === \"down\" && isBelow || direction === \"up\" && isAbove || direction === \"left\" && isLeft || direction === \"right\" && isRight) {\n const distance = Point5.distance(droppable.shape.center, center);\n const value = distance === 0 ? 1 : 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType5.Collision,\n priority: CollisionPriority5.Normal\n };\n }\n return null;\n};\n\n// src/algorithms/pointerDistance.ts\nimport { CollisionPriority as CollisionPriority6, CollisionType as CollisionType6 } from \"@dnd-kit/abstract\";\nimport { Point as Point6 } from \"@dnd-kit/geometry\";\nvar pointerDistance = (input) => {\n const { dragOperation, droppable } = input;\n const { position } = dragOperation;\n if (!droppable.shape) {\n return null;\n }\n const distance = Point6.distance(droppable.shape.center, position.current);\n const value = 1 / distance;\n return {\n id: droppable.id,\n value,\n type: CollisionType6.Collision,\n priority: CollisionPriority6.Normal\n };\n};\nexport {\n closestCenter,\n closestCorners,\n defaultCollisionDetection,\n directionBiased,\n pointerDistance,\n pointerIntersection,\n shapeIntersection\n};\n","import {useCallback} from 'react';\nimport type {Data} from '@dnd-kit/abstract';\nimport {Droppable} from '@dnd-kit/dom';\nimport {deepEqual} from '@dnd-kit/state';\nimport type {DroppableInput} from '@dnd-kit/dom';\nimport {\n useComputed,\n useOnValueChange,\n useOnElementChange,\n useDeepSignal,\n} from '@dnd-kit/react/hooks';\nimport {currentValue, type RefOrValue} from '@dnd-kit/react/utilities';\n\nimport {useInstance} from '../hooks/useInstance.ts';\nimport {defaultCollisionDetection} from '@dnd-kit/collision';\n\nexport interface UseDroppableInput<T extends Data = Data>\n extends Omit<DroppableInput<T>, 'element'> {\n element?: RefOrValue<Element>;\n}\n\nexport function useDroppable<T extends Data = Data>(\n input: UseDroppableInput<T>\n) {\n const {collisionDetector, data, disabled, element, id, accept, type} = input;\n const droppable = useInstance(\n (manager) =>\n new Droppable(\n {\n ...input,\n register: false,\n element: currentValue(element),\n },\n manager\n )\n );\n const trackedDroppalbe = useDeepSignal(droppable);\n\n useOnValueChange(id, () => (droppable.id = id));\n useOnElementChange(element, (element) => (droppable.element = element));\n useOnValueChange(\n accept,\n () => (droppable.accept = accept),\n undefined,\n deepEqual\n );\n useOnValueChange(\n collisionDetector,\n () =>\n (droppable.collisionDetector =\n collisionDetector ?? defaultCollisionDetection)\n );\n useOnValueChange(data, () => data && (droppable.data = data));\n useOnValueChange(disabled, () => (droppable.disabled = disabled === true));\n useOnValueChange(type, () => (droppable.type = type));\n\n return {\n droppable: trackedDroppalbe,\n get isDropTarget() {\n return trackedDroppalbe.isDropTarget;\n },\n ref: useCallback(\n (element: Element | null) => {\n if (\n !element &&\n droppable.element?.isConnected &&\n !droppable.manager?.dragOperation.status.idle\n ) {\n return;\n }\n\n droppable.element = element ?? undefined;\n },\n [droppable]\n ),\n };\n}\n","import {useEffect} from 'react';\nimport type {DragDropEventHandlers, Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\n\nimport {useDragDropManager} from './useDragDropManager.js';\nimport {CleanupFunction} from '@dnd-kit/state';\n\ntype EventNameOverrides = {\n beforedragstart: 'onBeforeDragStart';\n};\n\ntype EventHandlerName<T extends string> = T extends keyof EventNameOverrides\n ? EventNameOverrides[T]\n : T extends `drag${infer Second}${infer Rest}`\n ? `onDrag${Uppercase<Second>}${Rest}`\n : `on${Capitalize<T>}`;\n\n/**\n * Type for all possible event handlers\n */\ntype Events<\n T extends Data,\n U extends Draggable<T>,\n V extends Droppable<T>,\n W extends DragDropManager<T, U, V>,\n> = DragDropEventHandlers<U, V, W>;\n\nexport type EventHandlers<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n> = {\n [K in keyof Events<T, U, V, W> as EventHandlerName<K>]: Events<T, U, V, W>[K];\n};\n\n/**\n * Hook to monitor drag and drop events anywhere within a DragDropProvider\n * @param handlers Object containing event handlers for drag and drop events\n */\nexport function useDragDropMonitor<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>(handlers: Partial<EventHandlers<T, U, V, W>>): void {\n const manager = useDragDropManager<T, U, V, W>();\n\n useEffect(() => {\n if (!manager) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'useDndMonitor hook was called outside of a DragDropProvider. ' +\n 'Make sure your app is wrapped in a DragDropProvider component.'\n );\n }\n return;\n }\n\n const cleanupFns = Object.entries(handlers).reduce<CleanupFunction[]>(\n (acc, [handlerName, handler]) => {\n if (handler) {\n // Convert handler name (e.g. 'onDragStart') to event name (e.g. 'dragstart')\n const eventName = handlerName\n .replace(/^on/, '')\n .toLowerCase() as keyof Events<T, U, V, W>;\n\n const unsubscribe = manager.monitor.addEventListener(\n eventName,\n handler as any\n );\n\n acc.push(unsubscribe);\n }\n\n return acc;\n },\n []\n );\n\n return () => cleanupFns.forEach((cleanup) => cleanup?.());\n }, [manager, handlers]);\n}\n","import type {Data} from '@dnd-kit/abstract';\nimport type {Draggable, Droppable, DragDropManager} from '@dnd-kit/dom';\nimport {useComputed} from '@dnd-kit/react/hooks';\n\nimport {useDragDropManager} from './useDragDropManager.ts';\n\nexport function useDragOperation<\n T extends Data = Data,\n U extends Draggable<T> = Draggable<T>,\n V extends Droppable<T> = Droppable<T>,\n W extends DragDropManager<T, U, V> = DragDropManager<T, U, V>,\n>() {\n const manager = useDragDropManager<T, U, V, W>();\n const source = useComputed(() => manager?.dragOperation.source, [manager]);\n const target = useComputed(() => manager?.dragOperation.target, [manager]);\n\n return {\n get source() {\n return source.value;\n },\n get target() {\n return target.value;\n },\n };\n}\n"]}
|