@dnd-kit/dom 0.0.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/README.md +17 -0
- package/index.cjs +1307 -0
- package/index.cjs.map +1 -0
- package/index.d.cts +189 -0
- package/index.d.ts +189 -0
- package/index.js +1295 -0
- package/index.js.map +1 -0
- package/modifiers.cjs +120 -0
- package/modifiers.d.cts +23 -0
- package/modifiers.d.ts +23 -0
- package/modifiers.js +117 -0
- package/modifiers.js.map +1 -0
- package/package.json +92 -0
- package/plugins/debug.cjs +95 -0
- package/plugins/debug.cjs.map +1 -0
- package/plugins/debug.d.cts +8 -0
- package/plugins/debug.d.ts +8 -0
- package/plugins/debug.js +93 -0
- package/plugins/debug.js.map +1 -0
- package/sortable.cjs +531 -0
- package/sortable.cjs.map +1 -0
- package/sortable.d.cts +85 -0
- package/sortable.d.ts +85 -0
- package/sortable.js +528 -0
- package/sortable.js.map +1 -0
- package/utilities.cjs +655 -0
- package/utilities.cjs.map +1 -0
- package/utilities.d.cts +131 -0
- package/utilities.d.ts +131 -0
- package/utilities.js +626 -0
- package/utilities.js.map +1 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var state = require('@dnd-kit/state');
|
|
4
|
+
var abstract = require('@dnd-kit/abstract');
|
|
5
|
+
|
|
6
|
+
// src/plugins/debug/debug.ts
|
|
7
|
+
var Debug = class extends abstract.Plugin {
|
|
8
|
+
constructor(manager) {
|
|
9
|
+
super(manager);
|
|
10
|
+
if (process.env.NODE_ENV !== "production") {
|
|
11
|
+
const elements = /* @__PURE__ */ new Map();
|
|
12
|
+
let draggableElement = null;
|
|
13
|
+
this.destroy = state.effect(() => {
|
|
14
|
+
const { dragOperation } = manager;
|
|
15
|
+
dragOperation.status;
|
|
16
|
+
const { collisions } = manager.collisionObserver;
|
|
17
|
+
const draggable = dragOperation.source;
|
|
18
|
+
const topCollisions = collisions.slice(1, 3);
|
|
19
|
+
const collidingIds = topCollisions.map(({ id }) => id);
|
|
20
|
+
if (draggable && dragOperation.shape) {
|
|
21
|
+
const element = draggableElement ?? createDebugElement("dialog");
|
|
22
|
+
const { boundingRectangle } = dragOperation.shape.current;
|
|
23
|
+
if (!draggableElement) {
|
|
24
|
+
draggableElement = element;
|
|
25
|
+
const style = document.createElement("style");
|
|
26
|
+
style.innerText = `dialog[data-dnd-kit-debug]::backdrop {display: none;}`;
|
|
27
|
+
element.innerText = `${draggable.id}`;
|
|
28
|
+
element.setAttribute("data-dnd-kit-debug", "");
|
|
29
|
+
element.appendChild(style);
|
|
30
|
+
element.style.backgroundColor = "rgba(118, 190, 250, 0.5)";
|
|
31
|
+
element.style.color = "rgba(0,0,0,0.9)";
|
|
32
|
+
document.body.appendChild(element);
|
|
33
|
+
}
|
|
34
|
+
if (element instanceof HTMLDialogElement) {
|
|
35
|
+
element.showModal();
|
|
36
|
+
}
|
|
37
|
+
element.style.top = `${boundingRectangle.top}px`;
|
|
38
|
+
element.style.left = `${boundingRectangle.left}px`;
|
|
39
|
+
element.style.width = `${boundingRectangle.width}px`;
|
|
40
|
+
element.style.height = `${boundingRectangle.height}px`;
|
|
41
|
+
} else {
|
|
42
|
+
draggableElement?.remove();
|
|
43
|
+
draggableElement = null;
|
|
44
|
+
}
|
|
45
|
+
for (const [id, element] of elements) {
|
|
46
|
+
if (!manager.registry.droppables.has(id)) {
|
|
47
|
+
element.remove();
|
|
48
|
+
elements.delete(id);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
for (const droppable of manager.registry.droppables) {
|
|
52
|
+
const element = elements.get(droppable.id);
|
|
53
|
+
if (droppable.shape) {
|
|
54
|
+
const { boundingRectangle } = droppable.shape;
|
|
55
|
+
const debugElement = element ?? createDebugElement();
|
|
56
|
+
if (!element) {
|
|
57
|
+
elements.set(droppable.id, debugElement);
|
|
58
|
+
document.body.appendChild(debugElement);
|
|
59
|
+
}
|
|
60
|
+
debugElement.style.backgroundColor = droppable.isDropTarget ? "rgba(13, 210, 36, 0.6)" : collidingIds.includes(droppable.id) ? "rgba(255, 193, 7, 0.5)" : "rgba(0, 0, 0, 0.1)";
|
|
61
|
+
debugElement.style.top = `${boundingRectangle.top}px`;
|
|
62
|
+
debugElement.style.left = `${boundingRectangle.left}px`;
|
|
63
|
+
debugElement.style.width = `${boundingRectangle.width}px`;
|
|
64
|
+
debugElement.style.height = `${boundingRectangle.height}px`;
|
|
65
|
+
debugElement.innerText = `${droppable.id}`;
|
|
66
|
+
} else if (element) {
|
|
67
|
+
element.remove();
|
|
68
|
+
elements.delete(droppable.id);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
function createDebugElement(tagName = "div") {
|
|
76
|
+
const element = document.createElement(tagName);
|
|
77
|
+
element.style.all = "initial";
|
|
78
|
+
element.style.position = "fixed";
|
|
79
|
+
element.style.display = "flex";
|
|
80
|
+
element.style.alignItems = "center";
|
|
81
|
+
element.style.justifyContent = "center";
|
|
82
|
+
element.style.border = "1px solid rgba(0, 0, 0, 0.1)";
|
|
83
|
+
element.style.boxSizing = "border-box";
|
|
84
|
+
element.style.pointerEvents = "none";
|
|
85
|
+
element.style.zIndex = "9999";
|
|
86
|
+
element.style.color = "rgba(0,0,0,0.5)";
|
|
87
|
+
element.style.fontFamily = "sans-serif";
|
|
88
|
+
element.style.textShadow = "0 0 3px rgba(255,255,255,0.8)";
|
|
89
|
+
element.style.pointerEvents = "none";
|
|
90
|
+
return element;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
exports.Debug = Debug;
|
|
94
|
+
//# sourceMappingURL=out.js.map
|
|
95
|
+
//# sourceMappingURL=debug.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plugins/debug/debug.ts"],"names":[],"mappings":"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","sourcesContent":["import {effect} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\n\nexport class Debug extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n if (process.env.NODE_ENV !== 'production') {\n const elements = new Map<UniqueIdentifier, HTMLElement>();\n let draggableElement: HTMLElement | null = null;\n\n this.destroy = effect(() => {\n const {dragOperation} = manager;\n const {current: _} = dragOperation.status;\n\n const {collisions} = manager.collisionObserver;\n const draggable = dragOperation.source;\n const topCollisions = collisions.slice(1, 3);\n const collidingIds = topCollisions.map(({id}) => id);\n\n if (draggable && dragOperation.shape) {\n const element = draggableElement ?? createDebugElement('dialog');\n const {boundingRectangle} = dragOperation.shape.current;\n\n if (!draggableElement) {\n draggableElement = element;\n\n const style = document.createElement('style');\n style.innerText = `dialog[data-dnd-kit-debug]::backdrop {display: none;}`;\n\n element.innerText = `${draggable.id}`;\n element.setAttribute('data-dnd-kit-debug', '');\n element.appendChild(style);\n element.style.backgroundColor = 'rgba(118, 190, 250, 0.5)';\n element.style.color = 'rgba(0,0,0,0.9)';\n\n document.body.appendChild(element);\n }\n\n if (element instanceof HTMLDialogElement) {\n element.showModal();\n }\n\n element.style.top = `${boundingRectangle.top}px`;\n element.style.left = `${boundingRectangle.left}px`;\n element.style.width = `${boundingRectangle.width}px`;\n element.style.height = `${boundingRectangle.height}px`;\n } else {\n draggableElement?.remove();\n draggableElement = null;\n }\n\n for (const [id, element] of elements) {\n if (!manager.registry.droppables.has(id)) {\n element.remove();\n elements.delete(id);\n }\n }\n\n for (const droppable of manager.registry.droppables) {\n const element = elements.get(droppable.id);\n\n if (droppable.shape) {\n const {boundingRectangle} = droppable.shape;\n const debugElement = element ?? createDebugElement();\n\n if (!element) {\n elements.set(droppable.id, debugElement);\n document.body.appendChild(debugElement);\n }\n\n debugElement.style.backgroundColor = droppable.isDropTarget\n ? 'rgba(13, 210, 36, 0.6)'\n : collidingIds.includes(droppable.id)\n ? 'rgba(255, 193, 7, 0.5)'\n : 'rgba(0, 0, 0, 0.1)';\n\n debugElement.style.top = `${boundingRectangle.top}px`;\n debugElement.style.left = `${boundingRectangle.left}px`;\n debugElement.style.width = `${boundingRectangle.width}px`;\n debugElement.style.height = `${boundingRectangle.height}px`;\n debugElement.innerText = `${droppable.id}`;\n } else if (element) {\n element.remove();\n elements.delete(droppable.id);\n }\n }\n });\n }\n }\n}\n\nfunction createDebugElement(tagName = 'div') {\n const element = document.createElement(tagName);\n\n element.style.all = 'initial';\n element.style.position = 'fixed';\n element.style.display = 'flex';\n element.style.alignItems = 'center';\n element.style.justifyContent = 'center';\n element.style.border = '1px solid rgba(0, 0, 0, 0.1)';\n element.style.boxSizing = 'border-box';\n element.style.pointerEvents = 'none';\n element.style.zIndex = '9999';\n element.style.color = 'rgba(0,0,0,0.5)';\n element.style.fontFamily = 'sans-serif';\n element.style.textShadow = '0 0 3px rgba(255,255,255,0.8)';\n element.style.pointerEvents = 'none';\n\n return element;\n}\n"]}
|
package/plugins/debug.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { effect } from '@dnd-kit/state';
|
|
2
|
+
import { Plugin } from '@dnd-kit/abstract';
|
|
3
|
+
|
|
4
|
+
// src/plugins/debug/debug.ts
|
|
5
|
+
var Debug = class extends Plugin {
|
|
6
|
+
constructor(manager) {
|
|
7
|
+
super(manager);
|
|
8
|
+
if (process.env.NODE_ENV !== "production") {
|
|
9
|
+
const elements = /* @__PURE__ */ new Map();
|
|
10
|
+
let draggableElement = null;
|
|
11
|
+
this.destroy = effect(() => {
|
|
12
|
+
const { dragOperation } = manager;
|
|
13
|
+
dragOperation.status;
|
|
14
|
+
const { collisions } = manager.collisionObserver;
|
|
15
|
+
const draggable = dragOperation.source;
|
|
16
|
+
const topCollisions = collisions.slice(1, 3);
|
|
17
|
+
const collidingIds = topCollisions.map(({ id }) => id);
|
|
18
|
+
if (draggable && dragOperation.shape) {
|
|
19
|
+
const element = draggableElement ?? createDebugElement("dialog");
|
|
20
|
+
const { boundingRectangle } = dragOperation.shape.current;
|
|
21
|
+
if (!draggableElement) {
|
|
22
|
+
draggableElement = element;
|
|
23
|
+
const style = document.createElement("style");
|
|
24
|
+
style.innerText = `dialog[data-dnd-kit-debug]::backdrop {display: none;}`;
|
|
25
|
+
element.innerText = `${draggable.id}`;
|
|
26
|
+
element.setAttribute("data-dnd-kit-debug", "");
|
|
27
|
+
element.appendChild(style);
|
|
28
|
+
element.style.backgroundColor = "rgba(118, 190, 250, 0.5)";
|
|
29
|
+
element.style.color = "rgba(0,0,0,0.9)";
|
|
30
|
+
document.body.appendChild(element);
|
|
31
|
+
}
|
|
32
|
+
if (element instanceof HTMLDialogElement) {
|
|
33
|
+
element.showModal();
|
|
34
|
+
}
|
|
35
|
+
element.style.top = `${boundingRectangle.top}px`;
|
|
36
|
+
element.style.left = `${boundingRectangle.left}px`;
|
|
37
|
+
element.style.width = `${boundingRectangle.width}px`;
|
|
38
|
+
element.style.height = `${boundingRectangle.height}px`;
|
|
39
|
+
} else {
|
|
40
|
+
draggableElement?.remove();
|
|
41
|
+
draggableElement = null;
|
|
42
|
+
}
|
|
43
|
+
for (const [id, element] of elements) {
|
|
44
|
+
if (!manager.registry.droppables.has(id)) {
|
|
45
|
+
element.remove();
|
|
46
|
+
elements.delete(id);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
for (const droppable of manager.registry.droppables) {
|
|
50
|
+
const element = elements.get(droppable.id);
|
|
51
|
+
if (droppable.shape) {
|
|
52
|
+
const { boundingRectangle } = droppable.shape;
|
|
53
|
+
const debugElement = element ?? createDebugElement();
|
|
54
|
+
if (!element) {
|
|
55
|
+
elements.set(droppable.id, debugElement);
|
|
56
|
+
document.body.appendChild(debugElement);
|
|
57
|
+
}
|
|
58
|
+
debugElement.style.backgroundColor = droppable.isDropTarget ? "rgba(13, 210, 36, 0.6)" : collidingIds.includes(droppable.id) ? "rgba(255, 193, 7, 0.5)" : "rgba(0, 0, 0, 0.1)";
|
|
59
|
+
debugElement.style.top = `${boundingRectangle.top}px`;
|
|
60
|
+
debugElement.style.left = `${boundingRectangle.left}px`;
|
|
61
|
+
debugElement.style.width = `${boundingRectangle.width}px`;
|
|
62
|
+
debugElement.style.height = `${boundingRectangle.height}px`;
|
|
63
|
+
debugElement.innerText = `${droppable.id}`;
|
|
64
|
+
} else if (element) {
|
|
65
|
+
element.remove();
|
|
66
|
+
elements.delete(droppable.id);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
function createDebugElement(tagName = "div") {
|
|
74
|
+
const element = document.createElement(tagName);
|
|
75
|
+
element.style.all = "initial";
|
|
76
|
+
element.style.position = "fixed";
|
|
77
|
+
element.style.display = "flex";
|
|
78
|
+
element.style.alignItems = "center";
|
|
79
|
+
element.style.justifyContent = "center";
|
|
80
|
+
element.style.border = "1px solid rgba(0, 0, 0, 0.1)";
|
|
81
|
+
element.style.boxSizing = "border-box";
|
|
82
|
+
element.style.pointerEvents = "none";
|
|
83
|
+
element.style.zIndex = "9999";
|
|
84
|
+
element.style.color = "rgba(0,0,0,0.5)";
|
|
85
|
+
element.style.fontFamily = "sans-serif";
|
|
86
|
+
element.style.textShadow = "0 0 3px rgba(255,255,255,0.8)";
|
|
87
|
+
element.style.pointerEvents = "none";
|
|
88
|
+
return element;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export { Debug };
|
|
92
|
+
//# sourceMappingURL=out.js.map
|
|
93
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plugins/debug/debug.ts"],"names":[],"mappings":";AAAA,SAAQ,cAAa;AACrB,SAAQ,cAAa;AAId,IAAM,QAAN,cAAoB,OAAwB;AAAA,EACjD,YAAY,SAA0B;AACpC,UAAM,OAAO;AAEb,QAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,YAAM,WAAW,oBAAI,IAAmC;AACxD,UAAI,mBAAuC;AAE3C,WAAK,UAAU,OAAO,MAAM;AAC1B,cAAM,EAAC,cAAa,IAAI;AACxB,cAAM,EAAC,SAAS,EAAC,IAAI,cAAc;AAEnC,cAAM,EAAC,WAAU,IAAI,QAAQ;AAC7B,cAAM,YAAY,cAAc;AAChC,cAAM,gBAAgB,WAAW,MAAM,GAAG,CAAC;AAC3C,cAAM,eAAe,cAAc,IAAI,CAAC,EAAC,GAAE,MAAM,EAAE;AAEnD,YAAI,aAAa,cAAc,OAAO;AACpC,gBAAM,UAAU,oBAAoB,mBAAmB,QAAQ;AAC/D,gBAAM,EAAC,kBAAiB,IAAI,cAAc,MAAM;AAEhD,cAAI,CAAC,kBAAkB;AACrB,+BAAmB;AAEnB,kBAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,kBAAM,YAAY;AAElB,oBAAQ,YAAY,GAAG,UAAU,EAAE;AACnC,oBAAQ,aAAa,sBAAsB,EAAE;AAC7C,oBAAQ,YAAY,KAAK;AACzB,oBAAQ,MAAM,kBAAkB;AAChC,oBAAQ,MAAM,QAAQ;AAEtB,qBAAS,KAAK,YAAY,OAAO;AAAA,UACnC;AAEA,cAAI,mBAAmB,mBAAmB;AACxC,oBAAQ,UAAU;AAAA,UACpB;AAEA,kBAAQ,MAAM,MAAM,GAAG,kBAAkB,GAAG;AAC5C,kBAAQ,MAAM,OAAO,GAAG,kBAAkB,IAAI;AAC9C,kBAAQ,MAAM,QAAQ,GAAG,kBAAkB,KAAK;AAChD,kBAAQ,MAAM,SAAS,GAAG,kBAAkB,MAAM;AAAA,QACpD,OAAO;AACL,4BAAkB,OAAO;AACzB,6BAAmB;AAAA,QACrB;AAEA,mBAAW,CAAC,IAAI,OAAO,KAAK,UAAU;AACpC,cAAI,CAAC,QAAQ,SAAS,WAAW,IAAI,EAAE,GAAG;AACxC,oBAAQ,OAAO;AACf,qBAAS,OAAO,EAAE;AAAA,UACpB;AAAA,QACF;AAEA,mBAAW,aAAa,QAAQ,SAAS,YAAY;AACnD,gBAAM,UAAU,SAAS,IAAI,UAAU,EAAE;AAEzC,cAAI,UAAU,OAAO;AACnB,kBAAM,EAAC,kBAAiB,IAAI,UAAU;AACtC,kBAAM,eAAe,WAAW,mBAAmB;AAEnD,gBAAI,CAAC,SAAS;AACZ,uBAAS,IAAI,UAAU,IAAI,YAAY;AACvC,uBAAS,KAAK,YAAY,YAAY;AAAA,YACxC;AAEA,yBAAa,MAAM,kBAAkB,UAAU,eAC3C,2BACA,aAAa,SAAS,UAAU,EAAE,IAClC,2BACA;AAEJ,yBAAa,MAAM,MAAM,GAAG,kBAAkB,GAAG;AACjD,yBAAa,MAAM,OAAO,GAAG,kBAAkB,IAAI;AACnD,yBAAa,MAAM,QAAQ,GAAG,kBAAkB,KAAK;AACrD,yBAAa,MAAM,SAAS,GAAG,kBAAkB,MAAM;AACvD,yBAAa,YAAY,GAAG,UAAU,EAAE;AAAA,UAC1C,WAAW,SAAS;AAClB,oBAAQ,OAAO;AACf,qBAAS,OAAO,UAAU,EAAE;AAAA,UAC9B;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,UAAU,OAAO;AAC3C,QAAM,UAAU,SAAS,cAAc,OAAO;AAE9C,UAAQ,MAAM,MAAM;AACpB,UAAQ,MAAM,WAAW;AACzB,UAAQ,MAAM,UAAU;AACxB,UAAQ,MAAM,aAAa;AAC3B,UAAQ,MAAM,iBAAiB;AAC/B,UAAQ,MAAM,SAAS;AACvB,UAAQ,MAAM,YAAY;AAC1B,UAAQ,MAAM,gBAAgB;AAC9B,UAAQ,MAAM,SAAS;AACvB,UAAQ,MAAM,QAAQ;AACtB,UAAQ,MAAM,aAAa;AAC3B,UAAQ,MAAM,aAAa;AAC3B,UAAQ,MAAM,gBAAgB;AAE9B,SAAO;AACT","sourcesContent":["import {effect} from '@dnd-kit/state';\nimport {Plugin} from '@dnd-kit/abstract';\nimport type {UniqueIdentifier} from '@dnd-kit/abstract';\nimport type {DragDropManager} from '@dnd-kit/dom';\n\nexport class Debug extends Plugin<DragDropManager> {\n constructor(manager: DragDropManager) {\n super(manager);\n\n if (process.env.NODE_ENV !== 'production') {\n const elements = new Map<UniqueIdentifier, HTMLElement>();\n let draggableElement: HTMLElement | null = null;\n\n this.destroy = effect(() => {\n const {dragOperation} = manager;\n const {current: _} = dragOperation.status;\n\n const {collisions} = manager.collisionObserver;\n const draggable = dragOperation.source;\n const topCollisions = collisions.slice(1, 3);\n const collidingIds = topCollisions.map(({id}) => id);\n\n if (draggable && dragOperation.shape) {\n const element = draggableElement ?? createDebugElement('dialog');\n const {boundingRectangle} = dragOperation.shape.current;\n\n if (!draggableElement) {\n draggableElement = element;\n\n const style = document.createElement('style');\n style.innerText = `dialog[data-dnd-kit-debug]::backdrop {display: none;}`;\n\n element.innerText = `${draggable.id}`;\n element.setAttribute('data-dnd-kit-debug', '');\n element.appendChild(style);\n element.style.backgroundColor = 'rgba(118, 190, 250, 0.5)';\n element.style.color = 'rgba(0,0,0,0.9)';\n\n document.body.appendChild(element);\n }\n\n if (element instanceof HTMLDialogElement) {\n element.showModal();\n }\n\n element.style.top = `${boundingRectangle.top}px`;\n element.style.left = `${boundingRectangle.left}px`;\n element.style.width = `${boundingRectangle.width}px`;\n element.style.height = `${boundingRectangle.height}px`;\n } else {\n draggableElement?.remove();\n draggableElement = null;\n }\n\n for (const [id, element] of elements) {\n if (!manager.registry.droppables.has(id)) {\n element.remove();\n elements.delete(id);\n }\n }\n\n for (const droppable of manager.registry.droppables) {\n const element = elements.get(droppable.id);\n\n if (droppable.shape) {\n const {boundingRectangle} = droppable.shape;\n const debugElement = element ?? createDebugElement();\n\n if (!element) {\n elements.set(droppable.id, debugElement);\n document.body.appendChild(debugElement);\n }\n\n debugElement.style.backgroundColor = droppable.isDropTarget\n ? 'rgba(13, 210, 36, 0.6)'\n : collidingIds.includes(droppable.id)\n ? 'rgba(255, 193, 7, 0.5)'\n : 'rgba(0, 0, 0, 0.1)';\n\n debugElement.style.top = `${boundingRectangle.top}px`;\n debugElement.style.left = `${boundingRectangle.left}px`;\n debugElement.style.width = `${boundingRectangle.width}px`;\n debugElement.style.height = `${boundingRectangle.height}px`;\n debugElement.innerText = `${droppable.id}`;\n } else if (element) {\n element.remove();\n elements.delete(droppable.id);\n }\n }\n });\n }\n }\n}\n\nfunction createDebugElement(tagName = 'div') {\n const element = document.createElement(tagName);\n\n element.style.all = 'initial';\n element.style.position = 'fixed';\n element.style.display = 'flex';\n element.style.alignItems = 'center';\n element.style.justifyContent = 'center';\n element.style.border = '1px solid rgba(0, 0, 0, 0.1)';\n element.style.boxSizing = 'border-box';\n element.style.pointerEvents = 'none';\n element.style.zIndex = '9999';\n element.style.color = 'rgba(0,0,0,0.5)';\n element.style.fontFamily = 'sans-serif';\n element.style.textShadow = '0 0 3px rgba(255,255,255,0.8)';\n element.style.pointerEvents = 'none';\n\n return element;\n}\n"]}
|