@dnd-kit/dom 0.0.3 → 0.0.4-beta-20240621131401
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +264 -168
- package/index.cjs.map +1 -1
- package/index.d.cts +8 -10
- package/index.d.ts +8 -10
- package/index.js +268 -172
- package/index.js.map +1 -1
- package/modifiers.cjs +5 -5
- package/modifiers.js +8 -8
- package/modifiers.js.map +1 -1
- package/package.json +7 -7
- package/plugins/debug.cjs +3 -3
- package/plugins/debug.cjs.map +1 -1
- package/plugins/debug.js +3 -3
- package/plugins/debug.js.map +1 -1
- package/sortable.cjs +139 -44
- package/sortable.cjs.map +1 -1
- package/sortable.d.cts +6 -5
- package/sortable.d.ts +6 -5
- package/sortable.js +139 -44
- package/sortable.js.map +1 -1
- package/utilities.cjs +27 -25
- package/utilities.cjs.map +1 -1
- package/utilities.js +27 -25
- package/utilities.js.map +1 -1
package/sortable.js
CHANGED
|
@@ -4,16 +4,82 @@ import { defaultCollisionDetection, closestCenter } from '@dnd-kit/collision';
|
|
|
4
4
|
import { Draggable, Droppable, Scroller } from '@dnd-kit/dom';
|
|
5
5
|
import { scheduler, computeTranslate, animateTransform, isKeyboardEvent, scrollIntoViewIfNeeded } from '@dnd-kit/dom/utilities';
|
|
6
6
|
|
|
7
|
+
var __create = Object.create;
|
|
7
8
|
var __defProp = Object.defineProperty;
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
var __defProps = Object.defineProperties;
|
|
10
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
11
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
12
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
13
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
14
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
15
|
+
var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name);
|
|
16
|
+
var __typeError = (msg) => {
|
|
17
|
+
throw TypeError(msg);
|
|
16
18
|
};
|
|
19
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
20
|
+
var __spreadValues = (a, b) => {
|
|
21
|
+
for (var prop in b || (b = {}))
|
|
22
|
+
if (__hasOwnProp.call(b, prop))
|
|
23
|
+
__defNormalProp(a, prop, b[prop]);
|
|
24
|
+
if (__getOwnPropSymbols)
|
|
25
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
26
|
+
if (__propIsEnum.call(b, prop))
|
|
27
|
+
__defNormalProp(a, prop, b[prop]);
|
|
28
|
+
}
|
|
29
|
+
return a;
|
|
30
|
+
};
|
|
31
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
32
|
+
var __objRest = (source, exclude) => {
|
|
33
|
+
var target = {};
|
|
34
|
+
for (var prop in source)
|
|
35
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
36
|
+
target[prop] = source[prop];
|
|
37
|
+
if (source != null && __getOwnPropSymbols)
|
|
38
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
39
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
40
|
+
target[prop] = source[prop];
|
|
41
|
+
}
|
|
42
|
+
return target;
|
|
43
|
+
};
|
|
44
|
+
var __decoratorStart = (base) => {
|
|
45
|
+
var _a;
|
|
46
|
+
return [, , , __create((_a = void 0 ) != null ? _a : null)];
|
|
47
|
+
};
|
|
48
|
+
var __decoratorStrings = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"];
|
|
49
|
+
var __expectFn = (fn) => fn !== void 0 && typeof fn !== "function" ? __typeError("Function expected") : fn;
|
|
50
|
+
var __decoratorContext = (kind, name, done, metadata, fns) => ({ kind: __decoratorStrings[kind], name, metadata, addInitializer: (fn) => done._ ? __typeError("Already initialized") : fns.push(__expectFn(fn || null)) });
|
|
51
|
+
var __decoratorMetadata = (array, target) => __defNormalProp(target, __knownSymbol("metadata"), array[3]);
|
|
52
|
+
var __runInitializers = (array, flags, self, value) => {
|
|
53
|
+
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);
|
|
54
|
+
return value;
|
|
55
|
+
};
|
|
56
|
+
var __decorateElement = (array, flags, name, decorators, target, extra) => {
|
|
57
|
+
var fn, it, done, ctx, access, k = flags & 7, s = !!(flags & 8), p = !!(flags & 16);
|
|
58
|
+
var j = array.length + 1 , key = __decoratorStrings[k + 5];
|
|
59
|
+
var initializers = (array[j - 1] = []), extraInitializers = array[j] || (array[j] = []);
|
|
60
|
+
var desc = ((target = target.prototype), __getOwnPropDesc({ get [name]() {
|
|
61
|
+
return __privateGet(this, extra);
|
|
62
|
+
}, set [name](x) {
|
|
63
|
+
return __privateSet(this, extra, x);
|
|
64
|
+
} }, name));
|
|
65
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
66
|
+
ctx = __decoratorContext(k, name, done = {}, array[3], extraInitializers);
|
|
67
|
+
{
|
|
68
|
+
ctx.static = s, ctx.private = p, access = ctx.access = { has: (x) => name in x };
|
|
69
|
+
access.get = (x) => x[name];
|
|
70
|
+
access.set = (x, y) => x[name] = y;
|
|
71
|
+
}
|
|
72
|
+
it = (0, decorators[i])({ get: desc.get, set: desc.set } , ctx), done._ = 1;
|
|
73
|
+
if (it === void 0) __expectFn(it) && (desc[key] = it );
|
|
74
|
+
else if (typeof it !== "object" || it === null) __typeError("Object expected");
|
|
75
|
+
else __expectFn(fn = it.get) && (desc.get = fn), __expectFn(fn = it.set) && (desc.set = fn), __expectFn(fn = it.init) && initializers.unshift(fn);
|
|
76
|
+
}
|
|
77
|
+
return desc && __defProp(target, name, desc), target;
|
|
78
|
+
};
|
|
79
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
80
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
|
|
81
|
+
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);
|
|
82
|
+
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
17
83
|
|
|
18
84
|
// src/sortable/utilities.ts
|
|
19
85
|
function isSortable(element) {
|
|
@@ -69,7 +135,7 @@ var SortableKeyboardPlugin = class extends Plugin {
|
|
|
69
135
|
const potentialTargets = [];
|
|
70
136
|
for (const droppable of registry.droppables) {
|
|
71
137
|
const { shape, id: id2 } = droppable;
|
|
72
|
-
if (!shape || id2 === source
|
|
138
|
+
if (!shape || id2 === (source == null ? void 0 : source.id) && isSortable(droppable) || (source == null ? void 0 : source.type) != null && !droppable.accepts(source)) {
|
|
73
139
|
continue;
|
|
74
140
|
}
|
|
75
141
|
switch (direction) {
|
|
@@ -112,7 +178,7 @@ var SortableKeyboardPlugin = class extends Plugin {
|
|
|
112
178
|
return;
|
|
113
179
|
}
|
|
114
180
|
const droppable = registry.droppables.get(source2.id);
|
|
115
|
-
if (!droppable
|
|
181
|
+
if (!(droppable == null ? void 0 : droppable.element)) {
|
|
116
182
|
return;
|
|
117
183
|
}
|
|
118
184
|
const { element } = droppable;
|
|
@@ -169,6 +235,7 @@ var OptimisticSortingPlugin = class extends Plugin {
|
|
|
169
235
|
constructor(manager) {
|
|
170
236
|
super(manager);
|
|
171
237
|
const getSortableInstances = (group) => {
|
|
238
|
+
var _a;
|
|
172
239
|
const sortableInstances = /* @__PURE__ */ new Map();
|
|
173
240
|
for (const droppable of manager.registry.droppables) {
|
|
174
241
|
if (droppable instanceof SortableDroppable) {
|
|
@@ -178,7 +245,7 @@ var OptimisticSortingPlugin = class extends Plugin {
|
|
|
178
245
|
}
|
|
179
246
|
if (sortableInstances.has(sortable.index)) {
|
|
180
247
|
throw new Error(
|
|
181
|
-
`Duplicate sortable index found for same sortable group: ${sortable.droppable.id} and ${sortableInstances.get(sortable.index)
|
|
248
|
+
`Duplicate sortable index found for same sortable group: ${sortable.droppable.id} and ${(_a = sortableInstances.get(sortable.index)) == null ? void 0 : _a.droppable.id} have the same index (${sortable.index}). Make sure each sortable item has a unique index. Use the \`group\` attribute to separate sortables into different groups.`
|
|
182
249
|
);
|
|
183
250
|
}
|
|
184
251
|
sortableInstances.set(sortable.index, sortable);
|
|
@@ -205,6 +272,7 @@ var OptimisticSortingPlugin = class extends Plugin {
|
|
|
205
272
|
}
|
|
206
273
|
const sortableInstances = getSortableInstances(source.sortable.group);
|
|
207
274
|
manager2.renderer.rendering.then(() => {
|
|
275
|
+
var _a;
|
|
208
276
|
for (const [index, sortable] of sortableInstances.entries()) {
|
|
209
277
|
if (sortable.index !== index) {
|
|
210
278
|
return;
|
|
@@ -220,7 +288,7 @@ var OptimisticSortingPlugin = class extends Plugin {
|
|
|
220
288
|
sourceIndex,
|
|
221
289
|
targetIndex
|
|
222
290
|
);
|
|
223
|
-
const sourceElement = source.sortable.droppable.internal.element.peek()
|
|
291
|
+
const sourceElement = (_a = source.sortable.droppable.internal.element.peek()) != null ? _a : source.sortable.droppable.placeholder;
|
|
224
292
|
const targetElement = target.element;
|
|
225
293
|
if (!targetElement || !sourceElement) {
|
|
226
294
|
return;
|
|
@@ -249,6 +317,7 @@ var OptimisticSortingPlugin = class extends Plugin {
|
|
|
249
317
|
queueMicrotask(() => {
|
|
250
318
|
const sortableInstances = getSortableInstances(source.sortable.group);
|
|
251
319
|
manager2.renderer.rendering.then(() => {
|
|
320
|
+
var _a;
|
|
252
321
|
for (const [index, sortable] of sortableInstances.entries()) {
|
|
253
322
|
if (sortable.index !== index) {
|
|
254
323
|
return;
|
|
@@ -258,7 +327,7 @@ var OptimisticSortingPlugin = class extends Plugin {
|
|
|
258
327
|
sortableInstances.values()
|
|
259
328
|
).sort((a, b) => a.index - b.index);
|
|
260
329
|
const sourceElement = source.sortable.droppable.element;
|
|
261
|
-
const targetElement = orderedSortables[source.sortable.initialIndex]
|
|
330
|
+
const targetElement = (_a = orderedSortables[source.sortable.initialIndex]) == null ? void 0 : _a.element;
|
|
262
331
|
if (!targetElement || !sourceElement) {
|
|
263
332
|
return;
|
|
264
333
|
}
|
|
@@ -299,29 +368,42 @@ var defaultSortableTransition = {
|
|
|
299
368
|
easing: "cubic-bezier(0.25, 1, 0.5, 1)",
|
|
300
369
|
idle: false
|
|
301
370
|
};
|
|
371
|
+
var _group_dec, _index_dec, _init, _index, _group;
|
|
372
|
+
_index_dec = [reactive], _group_dec = [reactive];
|
|
302
373
|
var Sortable2 = class {
|
|
303
|
-
constructor({
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
374
|
+
constructor(_a, manager) {
|
|
375
|
+
__privateAdd(this, _index, __runInitializers(_init, 8, this)), __runInitializers(_init, 11, this);
|
|
376
|
+
__privateAdd(this, _group, __runInitializers(_init, 12, this)), __runInitializers(_init, 15, this);
|
|
377
|
+
var _b = _a, {
|
|
378
|
+
effects: inputEffects = () => [],
|
|
379
|
+
group,
|
|
380
|
+
index,
|
|
381
|
+
sensors,
|
|
382
|
+
type,
|
|
383
|
+
transition = defaultSortableTransition,
|
|
384
|
+
plugins = defaultPlugins
|
|
385
|
+
} = _b, input = __objRest(_b, [
|
|
386
|
+
"effects",
|
|
387
|
+
"group",
|
|
388
|
+
"index",
|
|
389
|
+
"sensors",
|
|
390
|
+
"type",
|
|
391
|
+
"transition",
|
|
392
|
+
"plugins"
|
|
393
|
+
]);
|
|
314
394
|
this.droppable = new SortableDroppable(input, manager, this);
|
|
315
395
|
this.draggable = new SortableDraggable(
|
|
316
|
-
{
|
|
317
|
-
...input,
|
|
396
|
+
__spreadProps(__spreadValues({}, input), {
|
|
318
397
|
effects: () => [
|
|
319
|
-
() => this.manager.monitor.addEventListener("dragstart", () => {
|
|
320
|
-
this.initialIndex = this.index;
|
|
321
|
-
this.previousIndex = this.index;
|
|
322
|
-
}),
|
|
323
398
|
() => {
|
|
324
|
-
|
|
399
|
+
var _a2;
|
|
400
|
+
return (_a2 = this.manager) == null ? void 0 : _a2.monitor.addEventListener("dragstart", () => {
|
|
401
|
+
this.initialIndex = this.index;
|
|
402
|
+
this.previousIndex = this.index;
|
|
403
|
+
});
|
|
404
|
+
},
|
|
405
|
+
() => {
|
|
406
|
+
const { index: index2, previousIndex, manager: _ } = this;
|
|
325
407
|
if (index2 === previousIndex) {
|
|
326
408
|
return;
|
|
327
409
|
}
|
|
@@ -335,17 +417,21 @@ var Sortable2 = class {
|
|
|
335
417
|
this.droppable.disabled = !target;
|
|
336
418
|
}
|
|
337
419
|
},
|
|
420
|
+
() => {
|
|
421
|
+
const { manager: manager2 } = this;
|
|
422
|
+
for (const plugin of plugins) {
|
|
423
|
+
manager2 == null ? void 0 : manager2.registry.register(plugin);
|
|
424
|
+
}
|
|
425
|
+
},
|
|
338
426
|
...inputEffects()
|
|
339
427
|
],
|
|
340
428
|
type,
|
|
341
429
|
sensors
|
|
342
|
-
},
|
|
430
|
+
}),
|
|
343
431
|
manager,
|
|
344
432
|
this
|
|
345
433
|
);
|
|
346
|
-
|
|
347
|
-
manager.registry.register(plugin);
|
|
348
|
-
}
|
|
434
|
+
this.manager = manager;
|
|
349
435
|
this.index = index;
|
|
350
436
|
this.previousIndex = index;
|
|
351
437
|
this.initialIndex = index;
|
|
@@ -361,6 +447,7 @@ var Sortable2 = class {
|
|
|
361
447
|
untracked(() => {
|
|
362
448
|
const { manager, transition } = this;
|
|
363
449
|
const { shape } = this.droppable;
|
|
450
|
+
if (!manager) return;
|
|
364
451
|
const { idle } = manager.dragOperation.status;
|
|
365
452
|
if (!shape || !transition || idle && !transition.idle) {
|
|
366
453
|
return;
|
|
@@ -399,12 +486,20 @@ var Sortable2 = class {
|
|
|
399
486
|
});
|
|
400
487
|
});
|
|
401
488
|
}
|
|
489
|
+
get manager() {
|
|
490
|
+
return this.draggable.manager;
|
|
491
|
+
}
|
|
492
|
+
set manager(manager) {
|
|
493
|
+
this.draggable.manager = manager;
|
|
494
|
+
this.droppable.manager = manager;
|
|
495
|
+
}
|
|
402
496
|
set element(element) {
|
|
403
497
|
this.draggable.element = element;
|
|
404
498
|
this.droppable.element = element;
|
|
405
499
|
}
|
|
406
500
|
get element() {
|
|
407
|
-
|
|
501
|
+
var _a;
|
|
502
|
+
return (_a = this.droppable.element) != null ? _a : this.draggable.element;
|
|
408
503
|
}
|
|
409
504
|
set target(target) {
|
|
410
505
|
this.droppable.element = target;
|
|
@@ -452,10 +547,10 @@ var Sortable2 = class {
|
|
|
452
547
|
this.draggable.sensors = value;
|
|
453
548
|
}
|
|
454
549
|
set collisionPriority(value) {
|
|
455
|
-
this.droppable.collisionPriority = value
|
|
550
|
+
this.droppable.collisionPriority = value != null ? value : CollisionPriority.Normal;
|
|
456
551
|
}
|
|
457
552
|
set collisionDetector(value) {
|
|
458
|
-
this.droppable.collisionDetector = value
|
|
553
|
+
this.droppable.collisionDetector = value != null ? value : defaultCollisionDetection;
|
|
459
554
|
}
|
|
460
555
|
set type(type) {
|
|
461
556
|
this.draggable.type = type;
|
|
@@ -488,12 +583,12 @@ var Sortable2 = class {
|
|
|
488
583
|
destroy() {
|
|
489
584
|
}
|
|
490
585
|
};
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
586
|
+
_init = __decoratorStart();
|
|
587
|
+
_index = new WeakMap();
|
|
588
|
+
_group = new WeakMap();
|
|
589
|
+
__decorateElement(_init, 4, "index", _index_dec, Sortable2, _index);
|
|
590
|
+
__decorateElement(_init, 4, "group", _group_dec, Sortable2, _group);
|
|
591
|
+
__decoratorMetadata(_init, Sortable2);
|
|
497
592
|
var SortableDraggable = class extends Draggable {
|
|
498
593
|
constructor(input, manager, sortable) {
|
|
499
594
|
super(input, manager);
|
package/sortable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["src/sortable/sortable.ts","src/sortable/SortableKeyboardPlugin.ts","src/sortable/utilities.ts","src/sortable/OptimisticSortingPlugin.ts","../helpers/dist/index.js"],"names":["batch","scheduler","manager","id","source","Plugin","Sortable","index"],"mappings":"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","sourcesContent":["import {batch, reactive, untracked} from '@dnd-kit/state';\nimport {CollisionPriority} from '@dnd-kit/abstract';\nimport type {\n Data,\n PluginConstructor,\n Type,\n UniqueIdentifier,\n} from '@dnd-kit/abstract';\nimport {\n defaultCollisionDetection,\n type CollisionDetector,\n} from '@dnd-kit/collision';\nimport {Draggable, Droppable} from '@dnd-kit/dom';\nimport type {\n DraggableInput,\n FeedbackType,\n DroppableInput,\n Sensors,\n DragDropManager,\n} from '@dnd-kit/dom';\nimport {\n animateTransform,\n computeTranslate,\n scheduler,\n} from '@dnd-kit/dom/utilities';\n\nimport {SortableKeyboardPlugin} from './SortableKeyboardPlugin.ts';\nimport {OptimisticSortingPlugin} from './OptimisticSortingPlugin.ts';\n\nexport interface SortableTransition {\n /**\n * The duration of the transition in milliseconds.\n * @default 300\n */\n duration?: number;\n /**\n * The easing function to use for the transition.\n * @default 'cubic-bezier(0.25, 1, 0.5, 1)'\n */\n easing?: string;\n /**\n * Whether the sortable item should transition when its index changes,\n * but there is no drag operation in progress.\n * @default false\n **/\n idle?: boolean;\n}\n\nconst defaultPlugins: PluginConstructor[] = [\n SortableKeyboardPlugin,\n OptimisticSortingPlugin,\n];\n\nexport interface SortableInput<T extends Data>\n extends DraggableInput<T>,\n DroppableInput<T> {\n /**\n * The index of the sortable item within its group.\n */\n index: number;\n\n /**\n * The element that should be used as the droppable target for this sortable item.\n */\n target?: Element;\n\n /**\n * The optional unique identifier of the group that the sortable item belongs to.\n */\n group?: UniqueIdentifier;\n /**\n * The transition configuration to use when the index of the sortable item changes.\n */\n transition?: SortableTransition | null;\n /**\n * Plugins to register when sortable item is instantiated.\n * @default [SortableKeyboardPlugin, OptimisticSortingPlugin]\n */\n plugins?: PluginConstructor[];\n}\n\nexport const defaultSortableTransition: SortableTransition = {\n duration: 250,\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n idle: false,\n};\n\nexport class Sortable<T extends Data = Data> {\n public draggable: Draggable<T>;\n public droppable: Droppable<T>;\n\n @reactive\n index: number;\n\n previousIndex: number;\n\n initialIndex: number;\n\n @reactive\n group: UniqueIdentifier | undefined;\n\n transition: SortableTransition | null;\n\n constructor(\n {\n effects: inputEffects = () => [],\n group,\n index,\n sensors,\n type,\n transition = defaultSortableTransition,\n plugins = defaultPlugins,\n ...input\n }: SortableInput<T>,\n public manager: DragDropManager<any, any>\n ) {\n this.droppable = new SortableDroppable<T>(input, manager, this);\n this.draggable = new SortableDraggable<T>(\n {\n ...input,\n effects: () => [\n () =>\n this.manager.monitor.addEventListener('dragstart', () => {\n this.initialIndex = this.index;\n this.previousIndex = this.index;\n }),\n () => {\n const {index, previousIndex} = this;\n\n // Re-run this effect whenever the index changes\n if (index === previousIndex) {\n return;\n }\n\n this.previousIndex = index;\n\n this.animate();\n },\n () => {\n const {target} = this;\n const {feedback, isDragSource} = this.draggable;\n\n if (feedback == 'move' && isDragSource) {\n this.droppable.disabled = !target;\n }\n },\n ...inputEffects(),\n ],\n type,\n sensors,\n },\n manager,\n this\n );\n\n for (const plugin of plugins) {\n manager.registry.register(plugin);\n }\n\n this.index = index;\n this.previousIndex = index;\n this.initialIndex = index;\n this.group = group;\n this.type = type;\n this.transition = transition;\n\n this.destroy = () => {\n this.draggable.destroy();\n this.droppable.destroy();\n };\n }\n\n protected animate() {\n untracked(() => {\n const {manager, transition} = this;\n const {shape} = this.droppable;\n const {idle} = manager.dragOperation.status;\n\n if (!shape || !transition || (idle && !transition.idle)) {\n return;\n }\n scheduler.schedule(() => {\n const {element} = this.droppable;\n\n if (!element) {\n return;\n }\n\n const updatedShape = this.refreshShape();\n\n if (!updatedShape) {\n return;\n }\n\n const delta = {\n x: shape.boundingRectangle.left - updatedShape.boundingRectangle.left,\n y: shape.boundingRectangle.top - updatedShape.boundingRectangle.top,\n };\n\n const {x, y, z} = computeTranslate(element);\n\n if (delta.x || delta.y) {\n animateTransform({\n element,\n keyframes: {\n translate: [\n `${x + delta.x}px ${y + delta.y}px ${z}`,\n `${x}px ${y}px ${z}`,\n ],\n },\n options: transition,\n onFinish: () => {\n if (idle) {\n this.droppable.shape = undefined;\n }\n },\n });\n }\n });\n });\n }\n\n public set element(element: Element | undefined) {\n this.draggable.element = element;\n this.droppable.element = element;\n }\n\n public get element() {\n return this.droppable.element ?? this.draggable.element;\n }\n\n public set target(target: Element | undefined) {\n this.droppable.element = target;\n }\n\n public get target() {\n return this.droppable.element;\n }\n\n public set source(source: Element | undefined) {\n this.draggable.element = source;\n }\n\n public get source() {\n return this.draggable.element;\n }\n\n public get disabled() {\n return this.draggable.disabled && this.droppable.disabled;\n }\n\n public set feedback(value: FeedbackType) {\n this.draggable.feedback = value;\n }\n\n public set disabled(value: boolean) {\n batch(() => {\n this.draggable.disabled = value;\n this.droppable.disabled = value;\n });\n }\n\n public set data(data: T | null) {\n batch(() => {\n this.draggable.data = data;\n this.droppable.data = data;\n });\n }\n\n public set handle(handle: Element | undefined) {\n this.draggable.handle = handle;\n }\n\n public set id(id: UniqueIdentifier) {\n batch(() => {\n this.draggable.id = id;\n this.droppable.id = id;\n });\n }\n\n public get id() {\n return this.droppable.id;\n }\n\n public set sensors(value: Sensors | undefined) {\n this.draggable.sensors = value;\n }\n\n public set collisionPriority(value: CollisionPriority | number | undefined) {\n this.droppable.collisionPriority = value ?? CollisionPriority.Normal;\n }\n\n public set collisionDetector(value: CollisionDetector | undefined) {\n this.droppable.collisionDetector = value ?? defaultCollisionDetection;\n }\n\n public set type(type: Type | undefined) {\n this.draggable.type = type;\n this.droppable.type = type;\n }\n\n public get type() {\n return this.draggable.type;\n }\n\n public set accept(value: Droppable['accept']) {\n this.droppable.accept = value;\n }\n\n public get accept() {\n return this.droppable.accept;\n }\n\n public get isDropTarget() {\n return this.droppable.isDropTarget;\n }\n\n /**\n * A boolean indicating whether the sortable item is the source of a drag operation.\n */\n public get isDragSource() {\n return this.draggable.isDragSource;\n }\n\n public refreshShape(ignoreTransforms: boolean = false) {\n return this.droppable.refreshShape(ignoreTransforms);\n }\n\n public accepts(draggable: Draggable): boolean {\n return this.droppable.accepts(draggable);\n }\n\n public destroy() {}\n}\n\nexport class SortableDraggable<T extends Data> extends Draggable<T> {\n constructor(\n input: DraggableInput<T>,\n manager: DragDropManager,\n public sortable: Sortable<T>\n ) {\n super(input, manager);\n }\n\n public get index() {\n return this.sortable.index;\n }\n}\n\nexport class SortableDroppable<T extends Data> extends Droppable<T> {\n constructor(\n input: DraggableInput<T>,\n manager: DragDropManager,\n public sortable: Sortable<T>\n ) {\n super(input, manager);\n }\n\n public refreshShape(ignoreTransforms = false) {\n return super.refreshShape(ignoreTransforms);\n }\n\n public get index() {\n return this.sortable.index;\n }\n}\n","import {effect} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {closestCenter} from '@dnd-kit/collision';\nimport {\n isKeyboardEvent,\n scheduler,\n scrollIntoViewIfNeeded,\n} from '@dnd-kit/dom/utilities';\nimport type {Coordinates} from '@dnd-kit/geometry';\n\nimport {Scroller} from '@dnd-kit/dom';\nimport type {DragDropManager, Droppable} from '@dnd-kit/dom';\n\nimport {isSortable} from './utilities.ts';\n\nconst TOLERANCE = 10;\n\nexport class SortableKeyboardPlugin extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n const cleanupEffect = effect(() => {\n const {dragOperation} = manager;\n\n if (!isKeyboardEvent(dragOperation.activatorEvent)) {\n return;\n }\n\n if (!isSortable(dragOperation.source)) {\n return;\n }\n\n if (dragOperation.status.initialized) {\n const scroller = manager.registry.plugins.get(Scroller);\n\n if (scroller) {\n scroller.disable();\n\n return () => scroller.enable();\n }\n }\n });\n\n const unsubscribe = manager.monitor.addEventListener(\n 'dragmove',\n (event, manager) => {\n queueMicrotask(() => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n const {dragOperation} = manager;\n\n if (!isKeyboardEvent(dragOperation.activatorEvent)) {\n return;\n }\n\n if (!isSortable(dragOperation.source)) {\n return;\n }\n\n if (!dragOperation.shape) {\n return;\n }\n\n const {actions, collisionObserver, registry} = manager;\n const {by} = event;\n\n if (!by) {\n return;\n }\n\n const direction = getDirection(by);\n const {source} = dragOperation;\n const {center} = dragOperation.shape.current;\n const potentialTargets: Droppable[] = [];\n\n for (const droppable of registry.droppables) {\n const {shape, id} = droppable;\n\n if (\n !shape ||\n (id === source?.id && isSortable(droppable)) ||\n (source?.type != null && !droppable.accepts(source))\n ) {\n continue;\n }\n\n switch (direction) {\n case 'down':\n if (center.y + TOLERANCE < shape.center.y) {\n potentialTargets.push(droppable);\n }\n break;\n case 'up':\n if (center.y - TOLERANCE > shape.center.y) {\n potentialTargets.push(droppable);\n }\n break;\n case 'left':\n if (center.x - TOLERANCE > shape.center.x) {\n potentialTargets.push(droppable);\n }\n break;\n case 'right':\n if (center.x + TOLERANCE < shape.center.x) {\n potentialTargets.push(droppable);\n }\n break;\n }\n }\n\n event.preventDefault();\n collisionObserver.disable();\n\n const collisions = collisionObserver.computeCollisions(\n potentialTargets,\n closestCenter\n );\n const [firstCollision] = collisions;\n\n if (!firstCollision) {\n return;\n }\n\n const {id} = firstCollision;\n\n actions.setDropTarget(id).then(() => {\n const {source} = dragOperation;\n\n if (!source) {\n return;\n }\n\n const droppable = registry.droppables.get(source.id);\n\n if (!droppable?.element) {\n return;\n }\n\n const {element} = droppable;\n scrollIntoViewIfNeeded(element);\n\n scheduler.schedule(() => {\n const shape = droppable.refreshShape();\n\n if (!shape) {\n return;\n }\n\n actions.move({\n to: {\n x: shape.center.x,\n y: shape.center.y,\n },\n });\n\n actions.setDropTarget(source.id).then(() => {\n dragOperation.shape = shape;\n collisionObserver.enable();\n });\n });\n });\n });\n }\n );\n\n this.destroy = () => {\n unsubscribe();\n cleanupEffect();\n };\n }\n}\n\nfunction getDirection(delta: Coordinates) {\n const {x, y} = delta;\n\n if (x > 0) {\n return 'right';\n } else if (x < 0) {\n return 'left';\n } else if (y > 0) {\n return 'down';\n } else if (y < 0) {\n return 'up';\n }\n}\n","import type {Droppable, Draggable} from '@dnd-kit/dom';\n\nimport {SortableDroppable, SortableDraggable} from './sortable.ts';\n\nexport function isSortable(\n element: Draggable | Droppable | null\n): element is SortableDroppable<any> | SortableDraggable<any> {\n return (\n element instanceof SortableDroppable || element instanceof SortableDraggable\n );\n}\n","import {Plugin, UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\nimport {arrayMove} from '@dnd-kit/helpers';\n\nimport {isSortable} from './utilities.ts';\nimport {Sortable, SortableDroppable} from './sortable.ts';\nimport {batch} from '@dnd-kit/state';\n\nexport class OptimisticSortingPlugin extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n const getSortableInstances = (group: UniqueIdentifier | undefined) => {\n const sortableInstances = new Map<number, Sortable>();\n\n for (const droppable of manager.registry.droppables) {\n if (droppable instanceof SortableDroppable) {\n const {sortable} = droppable;\n\n if (sortable.group !== group) {\n continue;\n }\n\n if (sortableInstances.has(sortable.index)) {\n throw new Error(\n `Duplicate sortable index found for same sortable group: ${sortable.droppable.id} and ${sortableInstances.get(sortable.index)?.droppable.id} have the same index (${sortable.index}). Make sure each sortable item has a unique index. Use the \\`group\\` attribute to separate sortables into different groups.`\n );\n }\n\n sortableInstances.set(sortable.index, sortable);\n }\n }\n\n return sortableInstances;\n };\n\n const unsubscribe = [\n manager.monitor.addEventListener('dragover', (event, manager) => {\n queueMicrotask(() => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n const {dragOperation} = manager;\n const {source, target} = dragOperation;\n\n if (!isSortable(source) || !isSortable(target)) {\n return;\n }\n\n if (source.sortable === target.sortable) {\n return;\n }\n\n if (source.sortable.group !== target.sortable.group) {\n return;\n }\n\n const sortableInstances = getSortableInstances(source.sortable.group);\n\n // Wait for the renderer to handle the event before attempting to optimistically update\n manager.renderer.rendering.then(() => {\n for (const [index, sortable] of sortableInstances.entries()) {\n if (sortable.index !== index) {\n // At least one index was changed so we should abort optimistic updates\n return;\n }\n }\n\n const orderedSortables = Array.from(\n sortableInstances.values()\n ).sort((a, b) => a.index - b.index);\n\n const sourceIndex = orderedSortables.indexOf(source.sortable);\n const targetIndex = orderedSortables.indexOf(target.sortable);\n\n const newOrder = arrayMove(\n orderedSortables,\n sourceIndex,\n targetIndex\n );\n\n const sourceElement =\n source.sortable.droppable.internal.element.peek() ??\n source.sortable.droppable.placeholder;\n const targetElement = target.element;\n\n if (!targetElement || !sourceElement) {\n return;\n }\n\n reorder(sourceElement, sourceIndex, targetElement, targetIndex);\n\n batch(() => {\n for (const [index, sortable] of newOrder.entries()) {\n sortable.index = index;\n }\n });\n });\n });\n }),\n manager.monitor.addEventListener('dragend', (event, manager) => {\n if (!event.canceled) {\n return;\n }\n\n const {dragOperation} = manager;\n const {source} = dragOperation;\n\n if (!isSortable(source)) {\n return;\n }\n\n if (source.sortable.initialIndex === source.sortable.index) {\n return;\n }\n\n queueMicrotask(() => {\n const sortableInstances = getSortableInstances(source.sortable.group);\n\n // Wait for the renderer to handle the event before attempting to optimistically update\n manager.renderer.rendering.then(() => {\n for (const [index, sortable] of sortableInstances.entries()) {\n if (sortable.index !== index) {\n // At least one index was changed so we should abort optimistic updates\n return;\n }\n }\n\n const orderedSortables = Array.from(\n sortableInstances.values()\n ).sort((a, b) => a.index - b.index);\n\n const sourceElement = source.sortable.droppable.element;\n const targetElement =\n orderedSortables[source.sortable.initialIndex]?.element;\n\n if (!targetElement || !sourceElement) {\n return;\n }\n\n reorder(\n sourceElement,\n source.sortable.index,\n targetElement,\n source.sortable.initialIndex\n );\n\n batch(() => {\n for (const sortable of orderedSortables.values()) {\n sortable.index = sortable.initialIndex;\n }\n });\n });\n });\n }),\n ];\n\n this.destroy = () => {\n for (const unsubscribeListener of unsubscribe) {\n unsubscribeListener();\n }\n };\n }\n}\n\nfunction reorder(\n sourceElement: Element,\n sourceIndex: number,\n targetElement: Element,\n targetIndex: number\n) {\n const position = targetIndex < sourceIndex ? 'beforebegin' : 'afterend';\n\n targetElement.insertAdjacentElement(position, sourceElement);\n}\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\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 __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/move.ts\nfunction arrayMove(array, from, to) {\n if (from === to) {\n return array;\n }\n const newArray = array.slice();\n newArray.splice(to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\nfunction arraySwap(array, from, to) {\n if (from === to) {\n return array;\n }\n const newArray = array.slice();\n const item = newArray[from];\n newArray[from] = newArray[to];\n newArray[to] = item;\n return newArray;\n}\nfunction mutate(items, source, target, mutation) {\n if (!source || !target) {\n return items;\n }\n const findIndex = (item, id) => item === id || typeof item === \"object\" && \"id\" in item && item.id === id;\n if (Array.isArray(items)) {\n const sourceIndex2 = items.findIndex((item) => findIndex(item, source.id));\n const targetIndex2 = items.findIndex((item) => findIndex(item, target.id));\n if (sourceIndex2 === -1 || targetIndex2 === -1) {\n return items;\n }\n const { dragOperation: dragOperation2 } = source.manager;\n if (!dragOperation2.canceled && \"index\" in source && typeof source.index === \"number\") {\n const projectedSourceIndex = source.index;\n if (projectedSourceIndex !== sourceIndex2) {\n return mutation(items, sourceIndex2, projectedSourceIndex);\n }\n }\n return mutation(items, sourceIndex2, targetIndex2);\n }\n if (source.id === target.id) {\n return items;\n }\n const entries = Object.entries(items);\n let sourceIndex = -1;\n let sourceParent;\n let targetIndex = -1;\n let targetParent;\n for (const [id, children] of entries) {\n if (sourceIndex === -1) {\n sourceIndex = children.findIndex((item) => findIndex(item, source.id));\n if (sourceIndex !== -1) {\n sourceParent = id;\n }\n }\n if (targetIndex === -1) {\n targetIndex = children.findIndex((item) => findIndex(item, target.id));\n if (targetIndex !== -1) {\n targetParent = id;\n }\n }\n if (sourceIndex !== -1 && targetIndex !== -1) {\n break;\n }\n }\n const { dragOperation } = source.manager;\n const position = dragOperation.position.current;\n if (targetParent == null) {\n if (target.id in items) {\n const insertionIndex = target.shape && position.y > target.shape.center.y ? items[target.id].length : 0;\n targetParent = target.id;\n targetIndex = insertionIndex;\n }\n }\n if (sourceParent == null || targetParent == null) {\n return items;\n }\n if (sourceParent === targetParent) {\n return __spreadProps(__spreadValues({}, items), {\n [sourceParent]: mutation(items[sourceParent], sourceIndex, targetIndex)\n });\n }\n const isBelowTarget = target.shape && position.y > target.shape.boundingRectangle.bottom;\n const modifier = isBelowTarget ? 1 : 0;\n const sourceItem = items[sourceParent][sourceIndex];\n return __spreadProps(__spreadValues({}, items), {\n [sourceParent]: [\n ...items[sourceParent].slice(0, sourceIndex),\n ...items[sourceParent].slice(sourceIndex + 1)\n ],\n [targetParent]: [\n ...items[targetParent].slice(0, targetIndex + modifier),\n sourceItem,\n ...items[targetParent].slice(targetIndex + modifier)\n ]\n });\n}\nfunction move(items, source, target) {\n return mutate(items, source, target, arrayMove);\n}\nfunction swap(items, source, target) {\n return mutate(items, source, target, arraySwap);\n}\nexport {\n arrayMove,\n arraySwap,\n move,\n swap\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["src/sortable/sortable.ts","src/sortable/SortableKeyboardPlugin.ts","src/sortable/utilities.ts","src/sortable/OptimisticSortingPlugin.ts","../helpers/dist/index.js"],"names":["batch","scheduler","manager","id","source","Plugin","Sortable","_a","index"],"mappings":"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","sourcesContent":["import {batch, reactive, untracked} from '@dnd-kit/state';\nimport {CollisionPriority} from '@dnd-kit/abstract';\nimport type {\n Data,\n PluginConstructor,\n Type,\n UniqueIdentifier,\n} from '@dnd-kit/abstract';\nimport {\n defaultCollisionDetection,\n type CollisionDetector,\n} from '@dnd-kit/collision';\nimport {Draggable, Droppable} from '@dnd-kit/dom';\nimport type {\n DraggableInput,\n FeedbackType,\n DroppableInput,\n Sensors,\n DragDropManager,\n} from '@dnd-kit/dom';\nimport {\n animateTransform,\n computeTranslate,\n scheduler,\n} from '@dnd-kit/dom/utilities';\n\nimport {SortableKeyboardPlugin} from './SortableKeyboardPlugin.ts';\nimport {OptimisticSortingPlugin} from './OptimisticSortingPlugin.ts';\n\nexport interface SortableTransition {\n /**\n * The duration of the transition in milliseconds.\n * @default 300\n */\n duration?: number;\n /**\n * The easing function to use for the transition.\n * @default 'cubic-bezier(0.25, 1, 0.5, 1)'\n */\n easing?: string;\n /**\n * Whether the sortable item should transition when its index changes,\n * but there is no drag operation in progress.\n * @default false\n **/\n idle?: boolean;\n}\n\nconst defaultPlugins: PluginConstructor[] = [\n SortableKeyboardPlugin,\n OptimisticSortingPlugin,\n];\n\nexport interface SortableInput<T extends Data>\n extends DraggableInput<T>,\n DroppableInput<T> {\n /**\n * The index of the sortable item within its group.\n */\n index: number;\n\n /**\n * The element that should be used as the droppable target for this sortable item.\n */\n target?: Element;\n\n /**\n * The optional unique identifier of the group that the sortable item belongs to.\n */\n group?: UniqueIdentifier;\n /**\n * The transition configuration to use when the index of the sortable item changes.\n */\n transition?: SortableTransition | null;\n /**\n * Plugins to register when sortable item is instantiated.\n * @default [SortableKeyboardPlugin, OptimisticSortingPlugin]\n */\n plugins?: PluginConstructor[];\n}\n\nexport const defaultSortableTransition: SortableTransition = {\n duration: 250,\n easing: 'cubic-bezier(0.25, 1, 0.5, 1)',\n idle: false,\n};\n\nexport class Sortable<T extends Data = Data> {\n public draggable: Draggable<T>;\n public droppable: Droppable<T>;\n\n @reactive\n public accessor index: number;\n\n previousIndex: number;\n\n initialIndex: number;\n\n @reactive\n public accessor group: UniqueIdentifier | undefined;\n\n transition: SortableTransition | null;\n\n constructor(\n {\n effects: inputEffects = () => [],\n group,\n index,\n sensors,\n type,\n transition = defaultSortableTransition,\n plugins = defaultPlugins,\n ...input\n }: SortableInput<T>,\n manager: DragDropManager<any, any> | undefined\n ) {\n this.droppable = new SortableDroppable<T>(input, manager, this);\n this.draggable = new SortableDraggable<T>(\n {\n ...input,\n effects: () => [\n () =>\n this.manager?.monitor.addEventListener('dragstart', () => {\n this.initialIndex = this.index;\n this.previousIndex = this.index;\n }),\n () => {\n const {index, previousIndex, manager: _} = this;\n\n // Re-run this effect whenever the index changes\n if (index === previousIndex) {\n return;\n }\n\n this.previousIndex = index;\n\n this.animate();\n },\n () => {\n const {target} = this;\n const {feedback, isDragSource} = this.draggable;\n\n if (feedback == 'move' && isDragSource) {\n this.droppable.disabled = !target;\n }\n },\n () => {\n const {manager} = this;\n\n for (const plugin of plugins) {\n manager?.registry.register(plugin);\n }\n },\n ...inputEffects(),\n ],\n type,\n sensors,\n },\n manager,\n this\n );\n\n this.manager = manager;\n this.index = index;\n this.previousIndex = index;\n this.initialIndex = index;\n this.group = group;\n this.type = type;\n this.transition = transition;\n\n this.destroy = () => {\n this.draggable.destroy();\n this.droppable.destroy();\n };\n }\n\n protected animate() {\n untracked(() => {\n const {manager, transition} = this;\n const {shape} = this.droppable;\n\n if (!manager) return;\n\n const {idle} = manager.dragOperation.status;\n\n if (!shape || !transition || (idle && !transition.idle)) {\n return;\n }\n\n scheduler.schedule(() => {\n const {element} = this.droppable;\n\n if (!element) {\n return;\n }\n\n const updatedShape = this.refreshShape();\n\n if (!updatedShape) {\n return;\n }\n\n const delta = {\n x: shape.boundingRectangle.left - updatedShape.boundingRectangle.left,\n y: shape.boundingRectangle.top - updatedShape.boundingRectangle.top,\n };\n\n const {x, y, z} = computeTranslate(element);\n\n if (delta.x || delta.y) {\n animateTransform({\n element,\n keyframes: {\n translate: [\n `${x + delta.x}px ${y + delta.y}px ${z}`,\n `${x}px ${y}px ${z}`,\n ],\n },\n options: transition,\n onFinish: () => {\n if (idle) {\n this.droppable.shape = undefined;\n }\n },\n });\n }\n });\n });\n }\n\n public get manager(): DragDropManager<any, any> | undefined {\n return this.draggable.manager as any;\n }\n\n public set manager(manager: DragDropManager<any, any> | undefined) {\n this.draggable.manager = manager as any;\n this.droppable.manager = manager as any;\n }\n\n public set element(element: Element | undefined) {\n this.draggable.element = element;\n this.droppable.element = element;\n }\n\n public get element() {\n return this.droppable.element ?? this.draggable.element;\n }\n\n public set target(target: Element | undefined) {\n this.droppable.element = target;\n }\n\n public get target() {\n return this.droppable.element;\n }\n\n public set source(source: Element | undefined) {\n this.draggable.element = source;\n }\n\n public get source() {\n return this.draggable.element;\n }\n\n public get disabled() {\n return this.draggable.disabled && this.droppable.disabled;\n }\n\n public set feedback(value: FeedbackType) {\n this.draggable.feedback = value;\n }\n\n public set disabled(value: boolean) {\n batch(() => {\n this.draggable.disabled = value;\n this.droppable.disabled = value;\n });\n }\n\n public set data(data: T | null) {\n batch(() => {\n this.draggable.data = data;\n this.droppable.data = data;\n });\n }\n\n public set handle(handle: Element | undefined) {\n this.draggable.handle = handle;\n }\n\n public set id(id: UniqueIdentifier) {\n batch(() => {\n this.draggable.id = id;\n this.droppable.id = id;\n });\n }\n\n public get id() {\n return this.droppable.id;\n }\n\n public set sensors(value: Sensors | undefined) {\n this.draggable.sensors = value;\n }\n\n public set collisionPriority(value: CollisionPriority | number | undefined) {\n this.droppable.collisionPriority = value ?? CollisionPriority.Normal;\n }\n\n public set collisionDetector(value: CollisionDetector | undefined) {\n this.droppable.collisionDetector = value ?? defaultCollisionDetection;\n }\n\n public set type(type: Type | undefined) {\n this.draggable.type = type;\n this.droppable.type = type;\n }\n\n public get type() {\n return this.draggable.type;\n }\n\n public set accept(value: Droppable['accept']) {\n this.droppable.accept = value;\n }\n\n public get accept() {\n return this.droppable.accept;\n }\n\n public get isDropTarget() {\n return this.droppable.isDropTarget;\n }\n\n /**\n * A boolean indicating whether the sortable item is the source of a drag operation.\n */\n public get isDragSource() {\n return this.draggable.isDragSource;\n }\n\n public refreshShape(ignoreTransforms: boolean = false) {\n return this.droppable.refreshShape(ignoreTransforms);\n }\n\n public accepts(draggable: Draggable): boolean {\n return this.droppable.accepts(draggable);\n }\n\n public destroy() {}\n}\n\nexport class SortableDraggable<T extends Data> extends Draggable<T> {\n constructor(\n input: DraggableInput<T>,\n manager: DragDropManager | undefined,\n public sortable: Sortable<T>\n ) {\n super(input, manager);\n }\n\n public get index() {\n return this.sortable.index;\n }\n}\n\nexport class SortableDroppable<T extends Data> extends Droppable<T> {\n constructor(\n input: DraggableInput<T>,\n manager: DragDropManager | undefined,\n public sortable: Sortable<T>\n ) {\n super(input, manager);\n }\n\n public refreshShape(ignoreTransforms = false) {\n return super.refreshShape(ignoreTransforms);\n }\n\n public get index() {\n return this.sortable.index;\n }\n}\n","import {effect} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport {closestCenter} from '@dnd-kit/collision';\nimport {\n isKeyboardEvent,\n scheduler,\n scrollIntoViewIfNeeded,\n} from '@dnd-kit/dom/utilities';\nimport type {Coordinates} from '@dnd-kit/geometry';\n\nimport {Scroller} from '@dnd-kit/dom';\nimport type {DragDropManager, Droppable} from '@dnd-kit/dom';\n\nimport {isSortable} from './utilities.ts';\n\nconst TOLERANCE = 10;\n\nexport class SortableKeyboardPlugin extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n const cleanupEffect = effect(() => {\n const {dragOperation} = manager;\n\n if (!isKeyboardEvent(dragOperation.activatorEvent)) {\n return;\n }\n\n if (!isSortable(dragOperation.source)) {\n return;\n }\n\n if (dragOperation.status.initialized) {\n const scroller = manager.registry.plugins.get(Scroller);\n\n if (scroller) {\n scroller.disable();\n\n return () => scroller.enable();\n }\n }\n });\n\n const unsubscribe = manager.monitor.addEventListener(\n 'dragmove',\n (event, manager) => {\n queueMicrotask(() => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n const {dragOperation} = manager;\n\n if (!isKeyboardEvent(dragOperation.activatorEvent)) {\n return;\n }\n\n if (!isSortable(dragOperation.source)) {\n return;\n }\n\n if (!dragOperation.shape) {\n return;\n }\n\n const {actions, collisionObserver, registry} = manager;\n const {by} = event;\n\n if (!by) {\n return;\n }\n\n const direction = getDirection(by);\n const {source} = dragOperation;\n const {center} = dragOperation.shape.current;\n const potentialTargets: Droppable[] = [];\n\n for (const droppable of registry.droppables) {\n const {shape, id} = droppable;\n\n if (\n !shape ||\n (id === source?.id && isSortable(droppable)) ||\n (source?.type != null && !droppable.accepts(source))\n ) {\n continue;\n }\n\n switch (direction) {\n case 'down':\n if (center.y + TOLERANCE < shape.center.y) {\n potentialTargets.push(droppable);\n }\n break;\n case 'up':\n if (center.y - TOLERANCE > shape.center.y) {\n potentialTargets.push(droppable);\n }\n break;\n case 'left':\n if (center.x - TOLERANCE > shape.center.x) {\n potentialTargets.push(droppable);\n }\n break;\n case 'right':\n if (center.x + TOLERANCE < shape.center.x) {\n potentialTargets.push(droppable);\n }\n break;\n }\n }\n\n event.preventDefault();\n collisionObserver.disable();\n\n const collisions = collisionObserver.computeCollisions(\n potentialTargets,\n closestCenter\n );\n const [firstCollision] = collisions;\n\n if (!firstCollision) {\n return;\n }\n\n const {id} = firstCollision;\n\n actions.setDropTarget(id).then(() => {\n const {source} = dragOperation;\n\n if (!source) {\n return;\n }\n\n const droppable = registry.droppables.get(source.id);\n\n if (!droppable?.element) {\n return;\n }\n\n const {element} = droppable;\n scrollIntoViewIfNeeded(element);\n\n scheduler.schedule(() => {\n const shape = droppable.refreshShape();\n\n if (!shape) {\n return;\n }\n\n actions.move({\n to: {\n x: shape.center.x,\n y: shape.center.y,\n },\n });\n\n actions.setDropTarget(source.id).then(() => {\n dragOperation.shape = shape;\n collisionObserver.enable();\n });\n });\n });\n });\n }\n );\n\n this.destroy = () => {\n unsubscribe();\n cleanupEffect();\n };\n }\n}\n\nfunction getDirection(delta: Coordinates) {\n const {x, y} = delta;\n\n if (x > 0) {\n return 'right';\n } else if (x < 0) {\n return 'left';\n } else if (y > 0) {\n return 'down';\n } else if (y < 0) {\n return 'up';\n }\n}\n","import type {Droppable, Draggable} from '@dnd-kit/dom';\n\nimport {SortableDroppable, SortableDraggable} from './sortable.ts';\n\nexport function isSortable(\n element: Draggable | Droppable | null\n): element is SortableDroppable<any> | SortableDraggable<any> {\n return (\n element instanceof SortableDroppable || element instanceof SortableDraggable\n );\n}\n","import {Plugin, UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\nimport {arrayMove} from '@dnd-kit/helpers';\n\nimport {isSortable} from './utilities.ts';\nimport {Sortable, SortableDroppable} from './sortable.ts';\nimport {batch} from '@dnd-kit/state';\n\nexport class OptimisticSortingPlugin extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n const getSortableInstances = (group: UniqueIdentifier | undefined) => {\n const sortableInstances = new Map<number, Sortable>();\n\n for (const droppable of manager.registry.droppables) {\n if (droppable instanceof SortableDroppable) {\n const {sortable} = droppable;\n\n if (sortable.group !== group) {\n continue;\n }\n\n if (sortableInstances.has(sortable.index)) {\n throw new Error(\n `Duplicate sortable index found for same sortable group: ${sortable.droppable.id} and ${sortableInstances.get(sortable.index)?.droppable.id} have the same index (${sortable.index}). Make sure each sortable item has a unique index. Use the \\`group\\` attribute to separate sortables into different groups.`\n );\n }\n\n sortableInstances.set(sortable.index, sortable);\n }\n }\n\n return sortableInstances;\n };\n\n const unsubscribe = [\n manager.monitor.addEventListener('dragover', (event, manager) => {\n queueMicrotask(() => {\n if (this.disabled || event.defaultPrevented) {\n return;\n }\n\n const {dragOperation} = manager;\n const {source, target} = dragOperation;\n\n if (!isSortable(source) || !isSortable(target)) {\n return;\n }\n\n if (source.sortable === target.sortable) {\n return;\n }\n\n if (source.sortable.group !== target.sortable.group) {\n return;\n }\n\n const sortableInstances = getSortableInstances(source.sortable.group);\n\n // Wait for the renderer to handle the event before attempting to optimistically update\n manager.renderer.rendering.then(() => {\n for (const [index, sortable] of sortableInstances.entries()) {\n if (sortable.index !== index) {\n // At least one index was changed so we should abort optimistic updates\n return;\n }\n }\n\n const orderedSortables = Array.from(\n sortableInstances.values()\n ).sort((a, b) => a.index - b.index);\n\n const sourceIndex = orderedSortables.indexOf(source.sortable);\n const targetIndex = orderedSortables.indexOf(target.sortable);\n\n const newOrder = arrayMove(\n orderedSortables,\n sourceIndex,\n targetIndex\n );\n\n const sourceElement =\n source.sortable.droppable.internal.element.peek() ??\n source.sortable.droppable.placeholder;\n const targetElement = target.element;\n\n if (!targetElement || !sourceElement) {\n return;\n }\n\n reorder(sourceElement, sourceIndex, targetElement, targetIndex);\n\n batch(() => {\n for (const [index, sortable] of newOrder.entries()) {\n sortable.index = index;\n }\n });\n });\n });\n }),\n manager.monitor.addEventListener('dragend', (event, manager) => {\n if (!event.canceled) {\n return;\n }\n\n const {dragOperation} = manager;\n const {source} = dragOperation;\n\n if (!isSortable(source)) {\n return;\n }\n\n if (source.sortable.initialIndex === source.sortable.index) {\n return;\n }\n\n queueMicrotask(() => {\n const sortableInstances = getSortableInstances(source.sortable.group);\n\n // Wait for the renderer to handle the event before attempting to optimistically update\n manager.renderer.rendering.then(() => {\n for (const [index, sortable] of sortableInstances.entries()) {\n if (sortable.index !== index) {\n // At least one index was changed so we should abort optimistic updates\n return;\n }\n }\n\n const orderedSortables = Array.from(\n sortableInstances.values()\n ).sort((a, b) => a.index - b.index);\n\n const sourceElement = source.sortable.droppable.element;\n const targetElement =\n orderedSortables[source.sortable.initialIndex]?.element;\n\n if (!targetElement || !sourceElement) {\n return;\n }\n\n reorder(\n sourceElement,\n source.sortable.index,\n targetElement,\n source.sortable.initialIndex\n );\n\n batch(() => {\n for (const sortable of orderedSortables.values()) {\n sortable.index = sortable.initialIndex;\n }\n });\n });\n });\n }),\n ];\n\n this.destroy = () => {\n for (const unsubscribeListener of unsubscribe) {\n unsubscribeListener();\n }\n };\n }\n}\n\nfunction reorder(\n sourceElement: Element,\n sourceIndex: number,\n targetElement: Element,\n targetIndex: number\n) {\n const position = targetIndex < sourceIndex ? 'beforebegin' : 'afterend';\n\n targetElement.insertAdjacentElement(position, sourceElement);\n}\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\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 __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\n\n// src/move.ts\nfunction arrayMove(array, from, to) {\n if (from === to) {\n return array;\n }\n const newArray = array.slice();\n newArray.splice(to, 0, newArray.splice(from, 1)[0]);\n return newArray;\n}\nfunction arraySwap(array, from, to) {\n if (from === to) {\n return array;\n }\n const newArray = array.slice();\n const item = newArray[from];\n newArray[from] = newArray[to];\n newArray[to] = item;\n return newArray;\n}\nfunction mutate(items, source, target, mutation) {\n if (!source || !target) {\n return items;\n }\n const findIndex = (item, id) => item === id || typeof item === \"object\" && \"id\" in item && item.id === id;\n if (Array.isArray(items)) {\n const sourceIndex2 = items.findIndex((item) => findIndex(item, source.id));\n const targetIndex2 = items.findIndex((item) => findIndex(item, target.id));\n if (sourceIndex2 === -1 || targetIndex2 === -1) {\n return items;\n }\n if (source.manager) {\n const { dragOperation: dragOperation2 } = source.manager;\n if (!dragOperation2.canceled && \"index\" in source && typeof source.index === \"number\") {\n const projectedSourceIndex = source.index;\n if (projectedSourceIndex !== sourceIndex2) {\n return mutation(items, sourceIndex2, projectedSourceIndex);\n }\n }\n }\n return mutation(items, sourceIndex2, targetIndex2);\n }\n if (source.id === target.id) {\n return items;\n }\n const entries = Object.entries(items);\n let sourceIndex = -1;\n let sourceParent;\n let targetIndex = -1;\n let targetParent;\n for (const [id, children] of entries) {\n if (sourceIndex === -1) {\n sourceIndex = children.findIndex((item) => findIndex(item, source.id));\n if (sourceIndex !== -1) {\n sourceParent = id;\n }\n }\n if (targetIndex === -1) {\n targetIndex = children.findIndex((item) => findIndex(item, target.id));\n if (targetIndex !== -1) {\n targetParent = id;\n }\n }\n if (sourceIndex !== -1 && targetIndex !== -1) {\n break;\n }\n }\n if (!source.manager) return items;\n const { dragOperation } = source.manager;\n const position = dragOperation.position.current;\n if (targetParent == null) {\n if (target.id in items) {\n const insertionIndex = target.shape && position.y > target.shape.center.y ? items[target.id].length : 0;\n targetParent = target.id;\n targetIndex = insertionIndex;\n }\n }\n if (sourceParent == null || targetParent == null) {\n return items;\n }\n if (sourceParent === targetParent) {\n return __spreadProps(__spreadValues({}, items), {\n [sourceParent]: mutation(items[sourceParent], sourceIndex, targetIndex)\n });\n }\n const isBelowTarget = target.shape && position.y > target.shape.boundingRectangle.bottom;\n const modifier = isBelowTarget ? 1 : 0;\n const sourceItem = items[sourceParent][sourceIndex];\n return __spreadProps(__spreadValues({}, items), {\n [sourceParent]: [\n ...items[sourceParent].slice(0, sourceIndex),\n ...items[sourceParent].slice(sourceIndex + 1)\n ],\n [targetParent]: [\n ...items[targetParent].slice(0, targetIndex + modifier),\n sourceItem,\n ...items[targetParent].slice(targetIndex + modifier)\n ]\n });\n}\nfunction move(items, source, target) {\n return mutate(items, source, target, arrayMove);\n}\nfunction swap(items, source, target) {\n return mutate(items, source, target, arraySwap);\n}\nexport {\n arrayMove,\n arraySwap,\n move,\n swap\n};\n"]}
|
package/utilities.cjs
CHANGED
|
@@ -25,6 +25,7 @@ function isNode(node) {
|
|
|
25
25
|
|
|
26
26
|
// src/utilities/execution-context/getWindow.ts
|
|
27
27
|
function getWindow(target) {
|
|
28
|
+
var _a, _b;
|
|
28
29
|
if (!target) {
|
|
29
30
|
return window;
|
|
30
31
|
}
|
|
@@ -34,7 +35,7 @@ function getWindow(target) {
|
|
|
34
35
|
if (!isNode(target)) {
|
|
35
36
|
return window;
|
|
36
37
|
}
|
|
37
|
-
return target.ownerDocument
|
|
38
|
+
return (_b = (_a = target.ownerDocument) == null ? void 0 : _a.defaultView) != null ? _b : window;
|
|
38
39
|
}
|
|
39
40
|
|
|
40
41
|
// src/utilities/type-guards/isDocument.ts
|
|
@@ -104,7 +105,7 @@ function cloneElement(element) {
|
|
|
104
105
|
}
|
|
105
106
|
if (field instanceof HTMLCanvasElement && originalField instanceof HTMLCanvasElement && originalField.width > 0 && originalField.height > 0) {
|
|
106
107
|
const destCtx = field.getContext("2d");
|
|
107
|
-
destCtx
|
|
108
|
+
destCtx == null ? void 0 : destCtx.drawImage(originalField, 0, 0);
|
|
108
109
|
}
|
|
109
110
|
});
|
|
110
111
|
return clonedElement;
|
|
@@ -224,7 +225,7 @@ function getScrollPosition(scrollableElement) {
|
|
|
224
225
|
// src/utilities/scroll/canScroll.ts
|
|
225
226
|
function canScroll(scrollableElement, by) {
|
|
226
227
|
const { isTop, isBottom, isLeft, isRight, position } = getScrollPosition(scrollableElement);
|
|
227
|
-
const { x, y } = by
|
|
228
|
+
const { x, y } = by != null ? by : { x: 0, y: 0 };
|
|
228
229
|
const top = !isTop && position.current.y + y > 0;
|
|
229
230
|
const bottom = !isBottom && position.current.y + y < position.max.y;
|
|
230
231
|
const left = !isLeft && position.current.x + x > 0;
|
|
@@ -297,8 +298,7 @@ function getScrollableAncestors(element, options = defaultOptions) {
|
|
|
297
298
|
}
|
|
298
299
|
if (isFixed(node, computedStyle)) {
|
|
299
300
|
const { scrollingElement } = node.ownerDocument;
|
|
300
|
-
if (scrollingElement)
|
|
301
|
-
scrollParents.add(scrollingElement);
|
|
301
|
+
if (scrollingElement) scrollParents.add(scrollingElement);
|
|
302
302
|
return scrollParents;
|
|
303
303
|
}
|
|
304
304
|
return findScrollableAncestors(node.parentNode);
|
|
@@ -310,7 +310,7 @@ function getScrollableAncestors(element, options = defaultOptions) {
|
|
|
310
310
|
}
|
|
311
311
|
function getFirstScrollableAncestor(node) {
|
|
312
312
|
const [firstScrollableAncestor] = getScrollableAncestors(node, { limit: 1 });
|
|
313
|
-
return firstScrollableAncestor
|
|
313
|
+
return firstScrollableAncestor != null ? firstScrollableAncestor : null;
|
|
314
314
|
}
|
|
315
315
|
|
|
316
316
|
// src/utilities/scroll/detectScrollIntent.ts
|
|
@@ -348,23 +348,23 @@ function detectScrollIntent(scrollableElement, coordinates, intent, acceleration
|
|
|
348
348
|
height: scrollContainerRect.height * thresholdPercentage.y,
|
|
349
349
|
width: scrollContainerRect.width * thresholdPercentage.x
|
|
350
350
|
};
|
|
351
|
-
if (!isTop && coordinates.y <= scrollContainerRect.top + threshold.height && intent
|
|
351
|
+
if (!isTop && coordinates.y <= scrollContainerRect.top + threshold.height && (intent == null ? void 0 : intent.y) !== 1 /* Forward */ && coordinates.x >= scrollContainerRect.left - tolerance.x && coordinates.x <= scrollContainerRect.right + tolerance.x) {
|
|
352
352
|
direction.y = -1 /* Reverse */;
|
|
353
353
|
speed.y = acceleration * Math.abs(
|
|
354
354
|
(scrollContainerRect.top + threshold.height - coordinates.y) / threshold.height
|
|
355
355
|
);
|
|
356
|
-
} else if (!isBottom && coordinates.y >= scrollContainerRect.bottom - threshold.height && intent
|
|
356
|
+
} else if (!isBottom && coordinates.y >= scrollContainerRect.bottom - threshold.height && (intent == null ? void 0 : intent.y) !== -1 /* Reverse */ && coordinates.x >= scrollContainerRect.left - tolerance.x && coordinates.x <= scrollContainerRect.right + tolerance.x) {
|
|
357
357
|
direction.y = 1 /* Forward */;
|
|
358
358
|
speed.y = acceleration * Math.abs(
|
|
359
359
|
(scrollContainerRect.bottom - threshold.height - coordinates.y) / threshold.height
|
|
360
360
|
);
|
|
361
361
|
}
|
|
362
|
-
if (!isRight && coordinates.x >= scrollContainerRect.right - threshold.width && intent
|
|
362
|
+
if (!isRight && coordinates.x >= scrollContainerRect.right - threshold.width && (intent == null ? void 0 : intent.x) !== -1 /* Reverse */ && coordinates.y >= scrollContainerRect.top - tolerance.y && coordinates.y <= scrollContainerRect.bottom + tolerance.y) {
|
|
363
363
|
direction.x = 1 /* Forward */;
|
|
364
364
|
speed.x = acceleration * Math.abs(
|
|
365
365
|
(scrollContainerRect.right - threshold.width - coordinates.x) / threshold.width
|
|
366
366
|
);
|
|
367
|
-
} else if (!isLeft && coordinates.x <= scrollContainerRect.left + threshold.width && intent
|
|
367
|
+
} else if (!isLeft && coordinates.x <= scrollContainerRect.left + threshold.width && (intent == null ? void 0 : intent.x) !== 1 /* Forward */ && coordinates.y >= scrollContainerRect.top - tolerance.y && coordinates.y <= scrollContainerRect.bottom + tolerance.y) {
|
|
368
368
|
direction.x = -1 /* Reverse */;
|
|
369
369
|
speed.x = acceleration * Math.abs(
|
|
370
370
|
(scrollContainerRect.left + threshold.width - coordinates.x) / threshold.width
|
|
@@ -515,9 +515,9 @@ function animateTransform({
|
|
|
515
515
|
(property) => !property.includes("transform") && !property.includes("translate")
|
|
516
516
|
).join(", ") : "none"
|
|
517
517
|
});
|
|
518
|
-
onReady
|
|
518
|
+
onReady == null ? void 0 : onReady();
|
|
519
519
|
element.animate(keyframes, options).finished.then(() => {
|
|
520
|
-
onFinish
|
|
520
|
+
onFinish == null ? void 0 : onFinish();
|
|
521
521
|
styles.reset();
|
|
522
522
|
});
|
|
523
523
|
}
|
|
@@ -530,7 +530,7 @@ function getFinalKeyframe(element) {
|
|
|
530
530
|
const { effect } = animation;
|
|
531
531
|
const keyframes = effect instanceof KeyframeEffect ? effect.getKeyframes() : [];
|
|
532
532
|
if (keyframes.length > 0) {
|
|
533
|
-
return keyframes
|
|
533
|
+
return keyframes == null ? void 0 : keyframes[keyframes.length - 1];
|
|
534
534
|
}
|
|
535
535
|
}
|
|
536
536
|
return null;
|
|
@@ -594,6 +594,7 @@ function parseScale(scale) {
|
|
|
594
594
|
|
|
595
595
|
// src/utilities/transform/parseTransform.ts
|
|
596
596
|
function parseTransform(computedStyles) {
|
|
597
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
597
598
|
const { scale, transform, translate } = computedStyles;
|
|
598
599
|
const parsedScale = parseScale(scale);
|
|
599
600
|
const parsedTranslate = parseTranslate(translate);
|
|
@@ -602,23 +603,23 @@ function parseTransform(computedStyles) {
|
|
|
602
603
|
return null;
|
|
603
604
|
}
|
|
604
605
|
const normalizedScale = {
|
|
605
|
-
x: parsedScale
|
|
606
|
-
y: parsedScale
|
|
606
|
+
x: (_a = parsedScale == null ? void 0 : parsedScale.x) != null ? _a : 1,
|
|
607
|
+
y: (_b = parsedScale == null ? void 0 : parsedScale.y) != null ? _b : 1
|
|
607
608
|
};
|
|
608
609
|
const normalizedTranslate = {
|
|
609
|
-
x: parsedTranslate
|
|
610
|
-
y: parsedTranslate
|
|
610
|
+
x: (_c = parsedTranslate == null ? void 0 : parsedTranslate.x) != null ? _c : 0,
|
|
611
|
+
y: (_d = parsedTranslate == null ? void 0 : parsedTranslate.y) != null ? _d : 0
|
|
611
612
|
};
|
|
612
613
|
const normalizedMatrix = {
|
|
613
|
-
x: parsedMatrix
|
|
614
|
-
y: parsedMatrix
|
|
615
|
-
scaleX: parsedMatrix
|
|
616
|
-
scaleY: parsedMatrix
|
|
614
|
+
x: (_e = parsedMatrix == null ? void 0 : parsedMatrix.x) != null ? _e : 0,
|
|
615
|
+
y: (_f = parsedMatrix == null ? void 0 : parsedMatrix.y) != null ? _f : 0,
|
|
616
|
+
scaleX: (_g = parsedMatrix == null ? void 0 : parsedMatrix.scaleX) != null ? _g : 1,
|
|
617
|
+
scaleY: (_h = parsedMatrix == null ? void 0 : parsedMatrix.scaleY) != null ? _h : 1
|
|
617
618
|
};
|
|
618
619
|
return {
|
|
619
620
|
x: normalizedTranslate.x + normalizedMatrix.x,
|
|
620
621
|
y: normalizedTranslate.y + normalizedMatrix.y,
|
|
621
|
-
z: parsedTranslate
|
|
622
|
+
z: (_i = parsedTranslate == null ? void 0 : parsedTranslate.z) != null ? _i : 0,
|
|
622
623
|
scaleX: normalizedScale.x * normalizedMatrix.scaleX,
|
|
623
624
|
scaleY: normalizedScale.y * normalizedMatrix.scaleY
|
|
624
625
|
};
|
|
@@ -646,18 +647,19 @@ function parseTransformMatrix(transform) {
|
|
|
646
647
|
|
|
647
648
|
// src/utilities/transform/stringifyTransform.ts
|
|
648
649
|
function stringifyTransform({ x, y, z, scaleX, scaleY }) {
|
|
649
|
-
return `translate3d(${x}px, ${y}px, ${z
|
|
650
|
+
return `translate3d(${x}px, ${y}px, ${z != null ? z : 0}) scale(${scaleX}, ${scaleY})`;
|
|
650
651
|
}
|
|
651
652
|
|
|
652
653
|
// src/utilities/shapes/DOMRectangle.ts
|
|
653
654
|
var DOMRectangle = class extends geometry.Rectangle {
|
|
654
655
|
constructor(element, ignoreTransforms = false) {
|
|
656
|
+
var _a, _b;
|
|
655
657
|
let { top, left, right, bottom, width, height } = getBoundingRectangle(element);
|
|
656
658
|
const computedStyles = getComputedStyles(element);
|
|
657
659
|
const parsedTransform = parseTransform(computedStyles);
|
|
658
660
|
const scale = {
|
|
659
|
-
x: parsedTransform
|
|
660
|
-
y: parsedTransform
|
|
661
|
+
x: (_a = parsedTransform == null ? void 0 : parsedTransform.scaleX) != null ? _a : 1,
|
|
662
|
+
y: (_b = parsedTransform == null ? void 0 : parsedTransform.scaleY) != null ? _b : 1
|
|
661
663
|
};
|
|
662
664
|
const projectedTransform = getProjectedTransform(element);
|
|
663
665
|
if (parsedTransform && (ignoreTransforms || projectedTransform)) {
|