ngx-drag-drop 21.0.1 → 21.0.4
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 +18 -0
- package/fesm2022/ngx-drag-drop.mjs +32 -62
- package/fesm2022/ngx-drag-drop.mjs.map +1 -1
- package/package.json +3 -3
- package/types/ngx-drag-drop.d.ts +1 -0
package/README.md
CHANGED
|
@@ -28,6 +28,24 @@ Port of [angular-drag-drop-lists](https://github.com/marceljuenemann/angular-dra
|
|
|
28
28
|
This has `dropzones` though :+1:
|
|
29
29
|
The idea is that the directive does not handle lists internally so the `dndDropzone` can be general purpose.
|
|
30
30
|
|
|
31
|
+
## Angular Version Compatibility
|
|
32
|
+
|
|
33
|
+
Starting with v13, the library major version matches the Angular major version.
|
|
34
|
+
|
|
35
|
+
| Angular | ngx-drag-drop |
|
|
36
|
+
|---------|---------------|
|
|
37
|
+
| 21.x | 21.x |
|
|
38
|
+
| 20.x | 20.x |
|
|
39
|
+
| 19.x | 19.x |
|
|
40
|
+
| 18.x | 18.x |
|
|
41
|
+
| 17.x | 17.x |
|
|
42
|
+
| 16.x | 16.x |
|
|
43
|
+
| 15.x | 15.x |
|
|
44
|
+
| 14.x | 14.x |
|
|
45
|
+
| 13.x | 13.x |
|
|
46
|
+
|
|
47
|
+
For older Angular versions (v4–v12), use ngx-drag-drop v2.x.
|
|
48
|
+
|
|
31
49
|
## Usage
|
|
32
50
|
|
|
33
51
|
`app.component.html`
|
|
@@ -3,22 +3,14 @@ import { inject, forwardRef, ElementRef, Directive, EventEmitter, Renderer2, NgZ
|
|
|
3
3
|
|
|
4
4
|
const DROP_EFFECTS = ['move', 'copy', 'link'];
|
|
5
5
|
const CUSTOM_MIME_TYPE = 'application/x-dnd';
|
|
6
|
-
const JSON_MIME_TYPE = 'application/json';
|
|
7
|
-
const MSIE_MIME_TYPE = 'Text';
|
|
8
6
|
function mimeTypeIsCustom(mimeType) {
|
|
9
|
-
return mimeType.
|
|
7
|
+
return mimeType.substring(0, CUSTOM_MIME_TYPE.length) === CUSTOM_MIME_TYPE;
|
|
10
8
|
}
|
|
11
9
|
function getWellKnownMimeType(event) {
|
|
12
10
|
if (event.dataTransfer) {
|
|
13
11
|
const types = event.dataTransfer.types;
|
|
14
|
-
// IE 9 workaround.
|
|
15
|
-
if (!types) {
|
|
16
|
-
return MSIE_MIME_TYPE;
|
|
17
|
-
}
|
|
18
12
|
for (let i = 0; i < types.length; i++) {
|
|
19
|
-
if (types[i]
|
|
20
|
-
types[i] === JSON_MIME_TYPE ||
|
|
21
|
-
mimeTypeIsCustom(types[i])) {
|
|
13
|
+
if (mimeTypeIsCustom(types[i])) {
|
|
22
14
|
return types[i];
|
|
23
15
|
}
|
|
24
16
|
}
|
|
@@ -26,47 +18,21 @@ function getWellKnownMimeType(event) {
|
|
|
26
18
|
return null;
|
|
27
19
|
}
|
|
28
20
|
function setDragData(event, data, effectAllowed) {
|
|
29
|
-
// Internet Explorer and Microsoft Edge don't support custom mime types, see design doc:
|
|
30
|
-
// https://github.com/marceljuenemann/angular-drag-and-drop-lists/wiki/Data-Transfer-Design
|
|
31
21
|
const mimeType = CUSTOM_MIME_TYPE + (data.type ? '-' + data.type : '');
|
|
32
22
|
const dataString = JSON.stringify(data);
|
|
33
|
-
|
|
34
|
-
event.dataTransfer?.setData(mimeType, dataString);
|
|
35
|
-
}
|
|
36
|
-
catch (e) {
|
|
37
|
-
// Setting a custom MIME type did not work, we are probably in IE or Edge.
|
|
38
|
-
try {
|
|
39
|
-
event.dataTransfer?.setData(JSON_MIME_TYPE, dataString);
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
// We are in Internet Explorer and can only use the Text MIME type. Also note that IE
|
|
43
|
-
// does not allow changing the cursor in the dragover event, therefore we have to choose
|
|
44
|
-
// the one we want to display now by setting effectAllowed.
|
|
45
|
-
const effectsAllowed = filterEffects(DROP_EFFECTS, effectAllowed);
|
|
46
|
-
if (event.dataTransfer) {
|
|
47
|
-
event.dataTransfer.effectAllowed = effectsAllowed[0];
|
|
48
|
-
}
|
|
49
|
-
event.dataTransfer?.setData(MSIE_MIME_TYPE, dataString);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
23
|
+
event.dataTransfer?.setData(mimeType, dataString);
|
|
52
24
|
}
|
|
53
25
|
function getDropData(event, dragIsExternal) {
|
|
54
|
-
// check if the mime type is well known
|
|
55
26
|
const mimeType = getWellKnownMimeType(event);
|
|
56
|
-
// drag did not originate from [dndDraggable]
|
|
57
27
|
if (dragIsExternal === true) {
|
|
58
28
|
if (mimeType !== null && mimeTypeIsCustom(mimeType)) {
|
|
59
|
-
// the type of content is well known and safe to handle
|
|
60
29
|
return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');
|
|
61
30
|
}
|
|
62
|
-
// the contained data is unknown, let user handle it
|
|
63
31
|
return {};
|
|
64
32
|
}
|
|
65
33
|
if (mimeType !== null) {
|
|
66
|
-
// the type of content is well known and safe to handle
|
|
67
34
|
return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');
|
|
68
35
|
}
|
|
69
|
-
// the contained data is unknown, let user handle it
|
|
70
36
|
return {};
|
|
71
37
|
}
|
|
72
38
|
function filterEffects(effects, allowed) {
|
|
@@ -174,10 +140,7 @@ function getDndType(event) {
|
|
|
174
140
|
if (mimeType === null) {
|
|
175
141
|
return undefined;
|
|
176
142
|
}
|
|
177
|
-
|
|
178
|
-
return undefined;
|
|
179
|
-
}
|
|
180
|
-
return mimeType.substr(CUSTOM_MIME_TYPE.length + 1) || undefined;
|
|
143
|
+
return mimeType.substring(CUSTOM_MIME_TYPE.length + 1) || undefined;
|
|
181
144
|
}
|
|
182
145
|
function isExternalDrag() {
|
|
183
146
|
return _dndState.isDragging === false;
|
|
@@ -190,10 +153,10 @@ class DndDragImageRefDirective {
|
|
|
190
153
|
ngOnInit() {
|
|
191
154
|
this.dndDraggableDirective.registerDragImage(this.elementRef);
|
|
192
155
|
}
|
|
193
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
194
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndDragImageRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
157
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: DndDragImageRefDirective, isStandalone: true, selector: "[dndDragImageRef]", ngImport: i0 });
|
|
195
158
|
}
|
|
196
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndDragImageRefDirective, decorators: [{
|
|
197
160
|
type: Directive,
|
|
198
161
|
args: [{ selector: '[dndDragImageRef]', standalone: true }]
|
|
199
162
|
}] });
|
|
@@ -332,10 +295,10 @@ class DndDraggableDirective {
|
|
|
332
295
|
return this.elementRef.nativeElement;
|
|
333
296
|
}
|
|
334
297
|
}
|
|
335
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
336
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
298
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
299
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: DndDraggableDirective, isStandalone: true, selector: "[dndDraggable]", inputs: { dndDraggable: "dndDraggable", dndEffectAllowed: "dndEffectAllowed", dndType: "dndType", dndDraggingClass: "dndDraggingClass", dndDraggingSourceClass: "dndDraggingSourceClass", dndDraggableDisabledClass: "dndDraggableDisabledClass", dndDragImageOffsetFunction: "dndDragImageOffsetFunction", dndDisableIf: "dndDisableIf", dndDisableDragIf: "dndDisableDragIf" }, outputs: { dndStart: "dndStart", dndDrag: "dndDrag", dndEnd: "dndEnd", dndMoved: "dndMoved", dndCopied: "dndCopied", dndLinked: "dndLinked", dndCanceled: "dndCanceled" }, host: { listeners: { "dragstart": "onDragStart($event)", "dragend": "onDragEnd($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
|
|
337
300
|
}
|
|
338
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndDraggableDirective, decorators: [{
|
|
339
302
|
type: Directive,
|
|
340
303
|
args: [{ selector: '[dndDraggable]', standalone: true }]
|
|
341
304
|
}], propDecorators: { dndDraggable: [{
|
|
@@ -390,10 +353,10 @@ class DndPlaceholderRefDirective {
|
|
|
390
353
|
// placeholder has to be "invisible" to the cursor, or it would interfere with the dragover detection for the same dropzone
|
|
391
354
|
this.elementRef.nativeElement.style.pointerEvents = 'none';
|
|
392
355
|
}
|
|
393
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
394
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
356
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndPlaceholderRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
357
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: DndPlaceholderRefDirective, isStandalone: true, selector: "[dndPlaceholderRef]", ngImport: i0 });
|
|
395
358
|
}
|
|
396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
359
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndPlaceholderRefDirective, decorators: [{
|
|
397
360
|
type: Directive,
|
|
398
361
|
args: [{ selector: '[dndPlaceholderRef]', standalone: true }]
|
|
399
362
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
@@ -412,6 +375,7 @@ class DndDropzoneDirective {
|
|
|
412
375
|
dndPlaceholderRef;
|
|
413
376
|
placeholder = null;
|
|
414
377
|
disabled = false;
|
|
378
|
+
enterCount = 0;
|
|
415
379
|
constructor(ngZone, elementRef, renderer) {
|
|
416
380
|
this.ngZone = ngZone;
|
|
417
381
|
this.elementRef = elementRef;
|
|
@@ -444,6 +408,7 @@ class DndDropzoneDirective {
|
|
|
444
408
|
this.elementRef.nativeElement.removeEventListener('dragleave', this.dragLeaveEventHandler);
|
|
445
409
|
}
|
|
446
410
|
onDragEnter(event) {
|
|
411
|
+
this.enterCount++;
|
|
447
412
|
// check if another dropzone is activated
|
|
448
413
|
if (event._dndDropzoneActive === true) {
|
|
449
414
|
this.cleanupDragoverState();
|
|
@@ -451,7 +416,10 @@ class DndDropzoneDirective {
|
|
|
451
416
|
}
|
|
452
417
|
// set as active if the target element is inside this dropzone
|
|
453
418
|
if (event._dndDropzoneActive == null) {
|
|
454
|
-
|
|
419
|
+
// Determine the root node and fetch the element at the drop point
|
|
420
|
+
const rootNode = this.elementRef.nativeElement.getRootNode();
|
|
421
|
+
const newTarget = (rootNode instanceof ShadowRoot ? rootNode : document).elementFromPoint(event.clientX, event.clientY);
|
|
422
|
+
// Verify if the new target is within this dropzone
|
|
455
423
|
if (this.elementRef.nativeElement.contains(newTarget)) {
|
|
456
424
|
event._dndDropzoneActive = true;
|
|
457
425
|
}
|
|
@@ -533,9 +501,10 @@ class DndDropzoneDirective {
|
|
|
533
501
|
onDragLeave(event) {
|
|
534
502
|
event.preventDefault();
|
|
535
503
|
event.stopPropagation();
|
|
504
|
+
this.enterCount--;
|
|
536
505
|
// check if still inside this dropzone and not yet handled by another dropzone
|
|
537
506
|
if (event._dndDropzoneActive == null) {
|
|
538
|
-
if (this.
|
|
507
|
+
if (this.enterCount !== 0) {
|
|
539
508
|
event._dndDropzoneActive = true;
|
|
540
509
|
return;
|
|
541
510
|
}
|
|
@@ -621,12 +590,13 @@ class DndDropzoneDirective {
|
|
|
621
590
|
}
|
|
622
591
|
cleanupDragoverState() {
|
|
623
592
|
this.renderer.removeClass(this.elementRef.nativeElement, this.dndDragoverClass);
|
|
593
|
+
this.enterCount = 0;
|
|
624
594
|
this.removePlaceholderFromDOM();
|
|
625
595
|
}
|
|
626
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
627
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
596
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndDropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
597
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: DndDropzoneDirective, isStandalone: true, selector: "[dndDropzone]", inputs: { dndDropzone: "dndDropzone", dndEffectAllowed: "dndEffectAllowed", dndAllowExternal: "dndAllowExternal", dndHorizontal: "dndHorizontal", dndDragoverClass: "dndDragoverClass", dndDropzoneDisabledClass: "dndDropzoneDisabledClass", dndDisableIf: "dndDisableIf", dndDisableDropIf: "dndDisableDropIf" }, outputs: { dndDragover: "dndDragover", dndDrop: "dndDrop" }, host: { listeners: { "drop": "onDrop($event)" } }, queries: [{ propertyName: "dndPlaceholderRef", first: true, predicate: DndPlaceholderRefDirective, descendants: true }], ngImport: i0 });
|
|
628
598
|
}
|
|
629
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
599
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndDropzoneDirective, decorators: [{
|
|
630
600
|
type: Directive,
|
|
631
601
|
args: [{ selector: '[dndDropzone]', standalone: true }]
|
|
632
602
|
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { dndDropzone: [{
|
|
@@ -669,10 +639,10 @@ class DndHandleDirective {
|
|
|
669
639
|
onDragEvent(event) {
|
|
670
640
|
event._dndUsingHandle = true;
|
|
671
641
|
}
|
|
672
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
673
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.
|
|
642
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
643
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.5", type: DndHandleDirective, isStandalone: true, selector: "[dndHandle]", host: { listeners: { "dragstart": "onDragEvent($event)", "dragend": "onDragEvent($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
|
|
674
644
|
}
|
|
675
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
645
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndHandleDirective, decorators: [{
|
|
676
646
|
type: Directive,
|
|
677
647
|
args: [{ selector: '[dndHandle]', standalone: true }]
|
|
678
648
|
}], propDecorators: { draggable: [{
|
|
@@ -687,8 +657,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.8", ngImpor
|
|
|
687
657
|
}] } });
|
|
688
658
|
|
|
689
659
|
class DndModule {
|
|
690
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.
|
|
691
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.
|
|
660
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
661
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.5", ngImport: i0, type: DndModule, imports: [DndDragImageRefDirective,
|
|
692
662
|
DndDropzoneDirective,
|
|
693
663
|
DndHandleDirective,
|
|
694
664
|
DndPlaceholderRefDirective,
|
|
@@ -697,9 +667,9 @@ class DndModule {
|
|
|
697
667
|
DndHandleDirective,
|
|
698
668
|
DndPlaceholderRefDirective,
|
|
699
669
|
DndDragImageRefDirective] });
|
|
700
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.
|
|
670
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndModule });
|
|
701
671
|
}
|
|
702
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.
|
|
672
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImport: i0, type: DndModule, decorators: [{
|
|
703
673
|
type: NgModule,
|
|
704
674
|
args: [{
|
|
705
675
|
exports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-drag-drop.mjs","sources":["../../../projects/dnd/src/lib/dnd-utils.ts","../../../projects/dnd/src/lib/dnd-state.ts","../../../projects/dnd/src/lib/dnd-draggable.directive.ts","../../../projects/dnd/src/lib/dnd-dropzone.directive.ts","../../../projects/dnd/src/lib/dnd-handle.directive.ts","../../../projects/dnd/src/lib/dnd.module.ts","../../../projects/dnd/src/public-api.ts","../../../projects/dnd/src/ngx-drag-drop.ts"],"sourcesContent":["import { DropEffect, EffectAllowed } from './dnd-types';\n\nexport interface DragDropData {\n data?: any;\n type?: string;\n}\n\nexport interface DndEvent extends DragEvent {\n _dndUsingHandle?: boolean;\n _dndDropzoneActive?: true;\n}\n\nexport type DndDragImageOffsetFunction = (\n event: DragEvent,\n dragImage: Element\n) => { x: number; y: number };\n\nexport const DROP_EFFECTS = ['move', 'copy', 'link'] as DropEffect[];\n\nexport const CUSTOM_MIME_TYPE = 'application/x-dnd';\nexport const JSON_MIME_TYPE = 'application/json';\nexport const MSIE_MIME_TYPE = 'Text';\n\nfunction mimeTypeIsCustom(mimeType: string) {\n return mimeType.substr(0, CUSTOM_MIME_TYPE.length) === CUSTOM_MIME_TYPE;\n}\n\nexport function getWellKnownMimeType(event: DragEvent): string | null {\n if (event.dataTransfer) {\n const types = event.dataTransfer.types;\n\n // IE 9 workaround.\n if (!types) {\n return MSIE_MIME_TYPE;\n }\n\n for (let i = 0; i < types.length; i++) {\n if (\n types[i] === MSIE_MIME_TYPE ||\n types[i] === JSON_MIME_TYPE ||\n mimeTypeIsCustom(types[i])\n ) {\n return types[i];\n }\n }\n }\n\n return null;\n}\n\nexport function setDragData(\n event: DragEvent,\n data: DragDropData,\n effectAllowed: EffectAllowed\n): void {\n // Internet Explorer and Microsoft Edge don't support custom mime types, see design doc:\n // https://github.com/marceljuenemann/angular-drag-and-drop-lists/wiki/Data-Transfer-Design\n const mimeType = CUSTOM_MIME_TYPE + (data.type ? '-' + data.type : '');\n\n const dataString = JSON.stringify(data);\n\n try {\n event.dataTransfer?.setData(mimeType, dataString);\n } catch (e) {\n // Setting a custom MIME type did not work, we are probably in IE or Edge.\n try {\n event.dataTransfer?.setData(JSON_MIME_TYPE, dataString);\n } catch (e) {\n // We are in Internet Explorer and can only use the Text MIME type. Also note that IE\n // does not allow changing the cursor in the dragover event, therefore we have to choose\n // the one we want to display now by setting effectAllowed.\n const effectsAllowed = filterEffects(DROP_EFFECTS, effectAllowed);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = effectsAllowed[0];\n }\n\n event.dataTransfer?.setData(MSIE_MIME_TYPE, dataString);\n }\n }\n}\n\nexport function getDropData(\n event: DragEvent,\n dragIsExternal: boolean\n): DragDropData {\n // check if the mime type is well known\n const mimeType = getWellKnownMimeType(event);\n\n // drag did not originate from [dndDraggable]\n if (dragIsExternal === true) {\n if (mimeType !== null && mimeTypeIsCustom(mimeType)) {\n // the type of content is well known and safe to handle\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n // the contained data is unknown, let user handle it\n return {};\n }\n\n if (mimeType !== null) {\n // the type of content is well known and safe to handle\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n // the contained data is unknown, let user handle it\n return {};\n}\n\nexport function filterEffects(\n effects: DropEffect[],\n allowed: EffectAllowed | DropEffect\n): DropEffect[] {\n if (allowed === 'all' || allowed === 'uninitialized') {\n return effects;\n }\n\n return effects.filter(function (effect) {\n return allowed.toLowerCase().indexOf(effect) !== -1;\n });\n}\n\nexport function getDirectChildElement(\n parentElement: Element,\n childElement: Element\n): Element | null {\n let directChild: Node = childElement;\n\n while (directChild.parentNode !== parentElement) {\n // reached root node without finding given parent\n if (!directChild.parentNode) {\n return null;\n }\n\n directChild = directChild.parentNode;\n }\n\n return directChild as Element;\n}\n\nexport function shouldPositionPlaceholderBeforeElement(\n event: DragEvent,\n element: Element,\n horizontal: boolean\n) {\n const bounds = element.getBoundingClientRect();\n\n // If the pointer is in the upper half of the list item element,\n // we position the placeholder before the list item, otherwise after it.\n if (horizontal) {\n return event.clientX < bounds.left + bounds.width / 2;\n }\n\n return event.clientY < bounds.top + bounds.height / 2;\n}\n\nexport function calculateDragImageOffset(\n event: DragEvent,\n dragImage: Element\n): { x: number; y: number } {\n const dragImageComputedStyle = window.getComputedStyle(dragImage);\n const paddingTop = parseFloat(dragImageComputedStyle.paddingTop) || 0;\n const paddingLeft = parseFloat(dragImageComputedStyle.paddingLeft) || 0;\n const borderTop = parseFloat(dragImageComputedStyle.borderTopWidth) || 0;\n const borderLeft = parseFloat(dragImageComputedStyle.borderLeftWidth) || 0;\n\n return {\n x: event.offsetX + paddingLeft + borderLeft,\n y: event.offsetY + paddingTop + borderTop,\n };\n}\n\nexport function setDragImage(\n event: DragEvent,\n dragImage: Element,\n offsetFunction: DndDragImageOffsetFunction\n): void {\n const offset = offsetFunction(event, dragImage) || { x: 0, y: 0 };\n\n (event.dataTransfer as any).setDragImage(dragImage, offset.x, offset.y);\n}\n","import { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n CUSTOM_MIME_TYPE,\n DROP_EFFECTS,\n filterEffects,\n getWellKnownMimeType,\n JSON_MIME_TYPE,\n MSIE_MIME_TYPE,\n} from './dnd-utils';\n\nexport interface DndState {\n isDragging: boolean;\n dropEffect?: DropEffect;\n effectAllowed?: EffectAllowed;\n type?: string;\n}\n\nconst _dndState: DndState = {\n isDragging: false,\n dropEffect: 'none',\n effectAllowed: 'all',\n type: undefined,\n};\n\nexport function startDrag(\n event: DragEvent,\n effectAllowed: EffectAllowed,\n type: string | undefined\n) {\n _dndState.isDragging = true;\n _dndState.dropEffect = 'none';\n _dndState.effectAllowed = effectAllowed;\n _dndState.type = type;\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = effectAllowed;\n }\n}\n\nexport function endDrag() {\n _dndState.isDragging = false;\n _dndState.dropEffect = undefined;\n _dndState.effectAllowed = undefined;\n _dndState.type = undefined;\n}\n\nexport function setDropEffect(event: DragEvent, dropEffect: DropEffect) {\n if (_dndState.isDragging === true) {\n _dndState.dropEffect = dropEffect;\n }\n\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = dropEffect;\n }\n}\n\nexport function getDropEffect(\n event: DragEvent,\n effectAllowed?: EffectAllowed | DropEffect\n): DropEffect {\n const dataTransferEffectAllowed: EffectAllowed = event.dataTransfer\n ? (event.dataTransfer.effectAllowed as EffectAllowed)\n : 'uninitialized';\n\n let effects = filterEffects(DROP_EFFECTS, dataTransferEffectAllowed);\n\n if (_dndState.isDragging === true) {\n effects = filterEffects(effects, _dndState.effectAllowed!);\n }\n\n if (effectAllowed) {\n effects = filterEffects(effects, effectAllowed);\n }\n\n // MacOS automatically filters dataTransfer.effectAllowed depending on the modifier keys,\n // therefore the following modifier keys will only affect other operating systems.\n if (effects.length === 0) {\n return 'none';\n }\n\n if (event.ctrlKey && effects.indexOf('copy') !== -1) {\n return 'copy';\n }\n\n if (event.altKey && effects.indexOf('link') !== -1) {\n return 'link';\n }\n\n return effects[0] as DropEffect;\n}\n\nexport function getDndType(event: DragEvent): string | undefined {\n if (_dndState.isDragging === true) {\n return _dndState.type;\n }\n\n const mimeType = getWellKnownMimeType(event);\n\n if (mimeType === null) {\n return undefined;\n }\n\n if (mimeType === MSIE_MIME_TYPE || mimeType === JSON_MIME_TYPE) {\n return undefined;\n }\n\n return mimeType.substr(CUSTOM_MIME_TYPE.length + 1) || undefined;\n}\n\nexport function isExternalDrag(): boolean {\n return _dndState.isDragging === false;\n}\n\nexport const dndState: Readonly<DndState> = _dndState as Readonly<DndState>;\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { DndHandleDirective } from './dnd-handle.directive';\nimport { dndState, endDrag, startDrag } from './dnd-state';\nimport { EffectAllowed } from './dnd-types';\nimport {\n calculateDragImageOffset,\n DndDragImageOffsetFunction,\n DndEvent,\n setDragData,\n setDragImage,\n} from './dnd-utils';\n\n@Directive({ selector: '[dndDragImageRef]', standalone: true })\nexport class DndDragImageRefDirective implements OnInit {\n dndDraggableDirective = inject(forwardRef(() => DndDraggableDirective));\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragImage(this.elementRef);\n }\n}\n\n@Directive({ selector: '[dndDraggable]', standalone: true })\nexport class DndDraggableDirective implements AfterViewInit, OnDestroy {\n @Input() dndDraggable: any;\n @Input() dndEffectAllowed: EffectAllowed = 'copy';\n @Input() dndType?: string;\n @Input() dndDraggingClass = 'dndDragging';\n @Input() dndDraggingSourceClass = 'dndDraggingSource';\n @Input() dndDraggableDisabledClass = 'dndDraggableDisabled';\n @Input() dndDragImageOffsetFunction: DndDragImageOffsetFunction =\n calculateDragImageOffset;\n\n @Output() readonly dndStart: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndDrag: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndEnd: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndMoved: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCopied: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndLinked: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCanceled: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @HostBinding('attr.draggable') draggable = true;\n\n private dndHandle?: DndHandleDirective;\n private dndDragImageElementRef?: ElementRef;\n private dragImage: Element | undefined;\n private isDragStarted: boolean = false;\n\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n @Input() set dndDisableIf(value: boolean) {\n this.draggable = !value;\n\n if (this.draggable) {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n } else {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDragIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'drag',\n this.dragEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'drag',\n this.dragEventHandler\n );\n if (this.isDragStarted) {\n endDrag();\n }\n }\n\n @HostListener('dragstart', ['$event']) onDragStart(event: DndEvent): boolean {\n if (!this.draggable) {\n return false;\n }\n\n // check if there is dnd handle and if the dnd handle was used to start the drag\n if (this.dndHandle != null && event._dndUsingHandle == null) {\n event.stopPropagation();\n return false;\n }\n\n // initialize global state\n startDrag(event, this.dndEffectAllowed, this.dndType);\n\n this.isDragStarted = true;\n\n setDragData(\n event,\n { data: this.dndDraggable, type: this.dndType },\n dndState.effectAllowed!\n );\n\n this.dragImage = this.determineDragImage();\n\n // set dragging css class prior to setDragImage so styles are applied before\n // TODO breaking change: add class to elementRef rather than drag image which could be another element\n this.renderer.addClass(this.dragImage, this.dndDraggingClass);\n\n // set custom dragimage if present\n // set dragimage if drag is started from dndHandle\n if (this.dndDragImageElementRef != null || event._dndUsingHandle != null) {\n setDragImage(event, this.dragImage, this.dndDragImageOffsetFunction);\n }\n\n // add dragging source css class on first drag event\n const unregister = this.renderer.listen(\n this.elementRef.nativeElement,\n 'drag',\n () => {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n unregister();\n }\n );\n\n this.dndStart.emit(event);\n\n event.stopPropagation();\n\n setTimeout(() => {\n if (this.isDragStarted) {\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');\n }\n }, 100);\n\n return true;\n }\n\n onDrag(event: DragEvent) {\n this.dndDrag.emit(event);\n }\n\n @HostListener('dragend', ['$event']) onDragEnd(event: DragEvent) {\n if (!this.draggable || !this.isDragStarted) {\n return;\n }\n // get drop effect from custom stored state as its not reliable across browsers\n const dropEffect = dndState.dropEffect;\n\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'unset');\n\n let dropEffectEmitter: EventEmitter<DragEvent>;\n\n switch (dropEffect) {\n case 'copy':\n dropEffectEmitter = this.dndCopied;\n break;\n\n case 'link':\n dropEffectEmitter = this.dndLinked;\n break;\n\n case 'move':\n dropEffectEmitter = this.dndMoved;\n break;\n\n default:\n dropEffectEmitter = this.dndCanceled;\n break;\n }\n\n dropEffectEmitter.emit(event);\n this.dndEnd.emit(event);\n\n // reset global state\n endDrag();\n\n this.isDragStarted = false;\n\n this.renderer.removeClass(this.dragImage, this.dndDraggingClass);\n\n // IE9 special hammering\n window.setTimeout(() => {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n }, 0);\n\n event.stopPropagation();\n }\n\n registerDragHandle(handle: DndHandleDirective | undefined) {\n this.dndHandle = handle;\n }\n\n registerDragImage(elementRef: ElementRef | undefined) {\n this.dndDragImageElementRef = elementRef;\n }\n\n private readonly dragEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDrag(event);\n\n private determineDragImage(): Element {\n // evaluate custom drag image existence\n if (typeof this.dndDragImageElementRef !== 'undefined') {\n return this.dndDragImageElementRef.nativeElement as Element;\n } else {\n return this.elementRef.nativeElement;\n }\n }\n}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n getDndType,\n getDropEffect,\n isExternalDrag,\n setDropEffect,\n} from './dnd-state';\nimport { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n DndEvent,\n DragDropData,\n getDirectChildElement,\n getDropData,\n shouldPositionPlaceholderBeforeElement,\n} from './dnd-utils';\n\nexport interface DndDropEvent {\n event: DragEvent;\n dropEffect: DropEffect;\n isExternal: boolean;\n data?: any;\n index?: number;\n type?: any;\n}\n\n@Directive({ selector: '[dndPlaceholderRef]', standalone: true })\nexport class DndPlaceholderRefDirective implements OnInit {\n constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit() {\n // placeholder has to be \"invisible\" to the cursor, or it would interfere with the dragover detection for the same dropzone\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n }\n}\n\n@Directive({ selector: '[dndDropzone]', standalone: true })\nexport class DndDropzoneDirective implements AfterViewInit, OnDestroy {\n @Input() dndDropzone?: string[] | '' = '';\n\n @Input() dndEffectAllowed: EffectAllowed = 'uninitialized';\n\n @Input() dndAllowExternal: boolean = false;\n\n @Input() dndHorizontal: boolean = false;\n\n @Input() dndDragoverClass: string = 'dndDragover';\n\n @Input() dndDropzoneDisabledClass = 'dndDropzoneDisabled';\n\n @Output() readonly dndDragover: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @Output() readonly dndDrop: EventEmitter<DndDropEvent> =\n new EventEmitter<DndDropEvent>();\n\n @ContentChild(DndPlaceholderRefDirective)\n private readonly dndPlaceholderRef?: DndPlaceholderRefDirective;\n\n private placeholder: Element | null = null;\n\n private disabled: boolean = false;\n\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef,\n private renderer: Renderer2\n ) {}\n\n @Input() set dndDisableIf(value: boolean) {\n this.disabled = value;\n\n if (this.disabled) {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n } else {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDropIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.placeholder = this.tryGetPlaceholder();\n\n this.removePlaceholderFromDOM();\n\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n }\n\n onDragEnter(event: DndEvent) {\n // check if another dropzone is activated\n if (event._dndDropzoneActive === true) {\n this.cleanupDragoverState();\n return;\n }\n\n // set as active if the target element is inside this dropzone\n if (event._dndDropzoneActive == null) {\n const newTarget = document.elementFromPoint(event.clientX, event.clientY);\n\n if (this.elementRef.nativeElement.contains(newTarget)) {\n event._dndDropzoneActive = true;\n }\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n // allow the dragenter\n event.preventDefault();\n }\n\n onDragOver(event: DragEvent) {\n // With nested dropzones, we want to ignore this event if a child dropzone\n // has already handled a dragover. Historically, event.stopPropagation() was\n // used to prevent this bubbling, but that prevents any dragovers outside the\n // ngx-drag-drop component, and stops other use cases such as scrolling on drag.\n // Instead, we can check if the event was already prevented by a child and bail early.\n if (event.defaultPrevented) {\n return;\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n this.checkAndUpdatePlaceholderPosition(event);\n\n const dropEffect = getDropEffect(event, this.dndEffectAllowed);\n\n if (dropEffect === 'none') {\n this.cleanupDragoverState();\n return;\n }\n\n // allow the dragover\n event.preventDefault();\n\n // set the drop effect\n setDropEffect(event, dropEffect);\n\n this.dndDragover.emit(event);\n\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n }\n\n @HostListener('drop', ['$event']) onDrop(event: DragEvent) {\n try {\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n const data: DragDropData = getDropData(event, isExternalDrag());\n\n if (!this.isDropAllowed(data.type)) {\n return;\n }\n\n // signal custom drop handling\n event.preventDefault();\n\n const dropEffect = getDropEffect(event);\n\n setDropEffect(event, dropEffect);\n\n if (dropEffect === 'none') {\n return;\n }\n\n const dropIndex = this.getPlaceholderIndex();\n\n // if for whatever reason the placeholder is not present in the DOM but it should be there\n // we don't allow/emit the drop event since it breaks the contract\n // seems to only happen if drag and drop is executed faster than the DOM updates\n if (dropIndex === -1) {\n return;\n }\n\n this.dndDrop.emit({\n event: event,\n dropEffect: dropEffect,\n isExternal: isExternalDrag(),\n data: data.data,\n index: dropIndex,\n type: type,\n });\n\n event.stopPropagation();\n } finally {\n this.cleanupDragoverState();\n }\n }\n\n onDragLeave(event: DndEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n // check if still inside this dropzone and not yet handled by another dropzone\n if (event._dndDropzoneActive == null) {\n if (this.elementRef.nativeElement.contains(event.relatedTarget)) {\n event._dndDropzoneActive = true;\n return;\n }\n }\n\n this.cleanupDragoverState();\n\n // cleanup drop effect when leaving dropzone\n setDropEffect(event, 'none');\n }\n\n private readonly dragEnterEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragEnter(event);\n\n private readonly dragOverEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragOver(event);\n\n private readonly dragLeaveEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragLeave(event);\n\n private isDropAllowed(type?: string): boolean {\n // dropzone is disabled -> deny it\n if (this.disabled) {\n return false;\n }\n\n // if drag did not start from our directive\n // and external drag sources are not allowed -> deny it\n if (isExternalDrag() && !this.dndAllowExternal) {\n return false;\n }\n\n // no filtering by types -> allow it\n if (!this.dndDropzone) {\n return true;\n }\n\n // no type set -> allow it\n if (!type) {\n return true;\n }\n\n if (!Array.isArray(this.dndDropzone)) {\n throw new Error(\n 'dndDropzone: bound value to [dndDropzone] must be an array!'\n );\n }\n\n // if dropzone contains type -> allow it\n return this.dndDropzone.indexOf(type) !== -1;\n }\n\n private tryGetPlaceholder(): Element | null {\n if (typeof this.dndPlaceholderRef !== 'undefined') {\n return this.dndPlaceholderRef.elementRef.nativeElement as Element;\n }\n\n // TODO nasty workaround needed because if ng-container / template is used @ContentChild() or DI will fail because\n // of wrong context see angular bug https://github.com/angular/angular/issues/13517\n return this.elementRef.nativeElement.querySelector('[dndPlaceholderRef]');\n }\n\n private removePlaceholderFromDOM() {\n if (this.placeholder !== null && this.placeholder.parentNode !== null) {\n this.placeholder.parentNode.removeChild(this.placeholder);\n }\n }\n\n private checkAndUpdatePlaceholderPosition(event: DragEvent): void {\n if (this.placeholder === null) {\n return;\n }\n\n // make sure the placeholder is in the DOM\n if (this.placeholder.parentNode !== this.elementRef.nativeElement) {\n this.renderer.appendChild(\n this.elementRef.nativeElement,\n this.placeholder\n );\n }\n\n // update the position if the event originates from a child element of the dropzone\n const directChild = getDirectChildElement(\n this.elementRef.nativeElement,\n event.target as Element\n );\n\n // early exit if no direct child or direct child is placeholder\n if (directChild === null || directChild === this.placeholder) {\n return;\n }\n\n const positionPlaceholderBeforeDirectChild =\n shouldPositionPlaceholderBeforeElement(\n event,\n directChild,\n this.dndHorizontal\n );\n\n if (positionPlaceholderBeforeDirectChild) {\n // do insert before only if necessary\n if (directChild.previousSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild\n );\n }\n } else {\n // do insert after only if necessary\n if (directChild.nextSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild.nextSibling\n );\n }\n }\n }\n\n private getPlaceholderIndex(): number | undefined {\n if (this.placeholder === null) {\n return undefined;\n }\n\n const element = this.elementRef.nativeElement as HTMLElement;\n\n return Array.prototype.indexOf.call(element.children, this.placeholder);\n }\n\n private cleanupDragoverState() {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n\n this.removePlaceholderFromDOM();\n }\n}\n","import {\n Directive,\n HostBinding,\n HostListener,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { DndDraggableDirective } from './dnd-draggable.directive';\nimport { DndEvent } from './dnd-utils';\n\n@Directive({ selector: '[dndHandle]', standalone: true })\nexport class DndHandleDirective implements OnInit, OnDestroy {\n @HostBinding('attr.draggable') draggable = true;\n\n dndDraggableDirective = inject(DndDraggableDirective);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragHandle(this);\n }\n\n ngOnDestroy(): void {\n this.dndDraggableDirective.registerDragHandle(undefined);\n }\n\n @HostListener('dragstart', ['$event'])\n @HostListener('dragend', ['$event'])\n onDragEvent(event: DndEvent) {\n event._dndUsingHandle = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n DndDraggableDirective,\n DndDragImageRefDirective,\n} from './dnd-draggable.directive';\nimport {\n DndDropzoneDirective,\n DndPlaceholderRefDirective,\n} from './dnd-dropzone.directive';\nimport { DndHandleDirective } from './dnd-handle.directive';\n\n@NgModule({\n exports: [\n DndDraggableDirective,\n DndDropzoneDirective,\n DndHandleDirective,\n DndPlaceholderRefDirective,\n DndDragImageRefDirective,\n ],\n imports: [\n DndDragImageRefDirective,\n DndDropzoneDirective,\n DndHandleDirective,\n DndPlaceholderRefDirective,\n DndDraggableDirective,\n ],\n})\nexport class DndModule {}\n","/*\n * Public API Surface of dnd\n */\n\nexport * from './lib/dnd-draggable.directive';\nexport * from './lib/dnd-dropzone.directive';\nexport * from './lib/dnd-handle.directive';\nexport * from './lib/dnd-types';\nexport { DndDragImageOffsetFunction } from './lib/dnd-utils';\nexport * from './lib/dnd.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-drag-drop.mjs","sources":["../../../projects/dnd/src/lib/dnd-utils.ts","../../../projects/dnd/src/lib/dnd-state.ts","../../../projects/dnd/src/lib/dnd-draggable.directive.ts","../../../projects/dnd/src/lib/dnd-dropzone.directive.ts","../../../projects/dnd/src/lib/dnd-handle.directive.ts","../../../projects/dnd/src/lib/dnd.module.ts","../../../projects/dnd/src/public-api.ts","../../../projects/dnd/src/ngx-drag-drop.ts"],"sourcesContent":["import { DropEffect, EffectAllowed } from './dnd-types';\n\nexport interface DragDropData {\n data?: any;\n type?: string;\n}\n\nexport interface DndEvent extends DragEvent {\n _dndUsingHandle?: boolean;\n _dndDropzoneActive?: true;\n}\n\nexport type DndDragImageOffsetFunction = (\n event: DragEvent,\n dragImage: Element\n) => { x: number; y: number };\n\nexport const DROP_EFFECTS = ['move', 'copy', 'link'] as DropEffect[];\n\nexport const CUSTOM_MIME_TYPE = 'application/x-dnd';\n\nfunction mimeTypeIsCustom(mimeType: string) {\n return mimeType.substring(0, CUSTOM_MIME_TYPE.length) === CUSTOM_MIME_TYPE;\n}\n\nexport function getWellKnownMimeType(event: DragEvent): string | null {\n if (event.dataTransfer) {\n const types = event.dataTransfer.types;\n\n for (let i = 0; i < types.length; i++) {\n if (mimeTypeIsCustom(types[i])) {\n return types[i];\n }\n }\n }\n\n return null;\n}\n\nexport function setDragData(\n event: DragEvent,\n data: DragDropData,\n effectAllowed: EffectAllowed\n): void {\n const mimeType = CUSTOM_MIME_TYPE + (data.type ? '-' + data.type : '');\n\n const dataString = JSON.stringify(data);\n\n event.dataTransfer?.setData(mimeType, dataString);\n}\n\nexport function getDropData(\n event: DragEvent,\n dragIsExternal: boolean\n): DragDropData {\n const mimeType = getWellKnownMimeType(event);\n\n if (dragIsExternal === true) {\n if (mimeType !== null && mimeTypeIsCustom(mimeType)) {\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n return {};\n }\n\n if (mimeType !== null) {\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n return {};\n}\n\nexport function filterEffects(\n effects: DropEffect[],\n allowed: EffectAllowed | DropEffect\n): DropEffect[] {\n if (allowed === 'all' || allowed === 'uninitialized') {\n return effects;\n }\n\n return effects.filter(function (effect) {\n return allowed.toLowerCase().indexOf(effect) !== -1;\n });\n}\n\nexport function getDirectChildElement(\n parentElement: Element,\n childElement: Element\n): Element | null {\n let directChild: Node = childElement;\n\n while (directChild.parentNode !== parentElement) {\n // reached root node without finding given parent\n if (!directChild.parentNode) {\n return null;\n }\n\n directChild = directChild.parentNode;\n }\n\n return directChild as Element;\n}\n\nexport function shouldPositionPlaceholderBeforeElement(\n event: DragEvent,\n element: Element,\n horizontal: boolean\n) {\n const bounds = element.getBoundingClientRect();\n\n // If the pointer is in the upper half of the list item element,\n // we position the placeholder before the list item, otherwise after it.\n if (horizontal) {\n return event.clientX < bounds.left + bounds.width / 2;\n }\n\n return event.clientY < bounds.top + bounds.height / 2;\n}\n\nexport function calculateDragImageOffset(\n event: DragEvent,\n dragImage: Element\n): { x: number; y: number } {\n const dragImageComputedStyle = window.getComputedStyle(dragImage);\n const paddingTop = parseFloat(dragImageComputedStyle.paddingTop) || 0;\n const paddingLeft = parseFloat(dragImageComputedStyle.paddingLeft) || 0;\n const borderTop = parseFloat(dragImageComputedStyle.borderTopWidth) || 0;\n const borderLeft = parseFloat(dragImageComputedStyle.borderLeftWidth) || 0;\n\n return {\n x: event.offsetX + paddingLeft + borderLeft,\n y: event.offsetY + paddingTop + borderTop,\n };\n}\n\nexport function setDragImage(\n event: DragEvent,\n dragImage: Element,\n offsetFunction: DndDragImageOffsetFunction\n): void {\n const offset = offsetFunction(event, dragImage) || { x: 0, y: 0 };\n\n (event.dataTransfer as any).setDragImage(dragImage, offset.x, offset.y);\n}\n","import { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n CUSTOM_MIME_TYPE,\n DROP_EFFECTS,\n filterEffects,\n getWellKnownMimeType,\n} from './dnd-utils';\n\nexport interface DndState {\n isDragging: boolean;\n dropEffect?: DropEffect;\n effectAllowed?: EffectAllowed;\n type?: string;\n}\n\nconst _dndState: DndState = {\n isDragging: false,\n dropEffect: 'none',\n effectAllowed: 'all',\n type: undefined,\n};\n\nexport function startDrag(\n event: DragEvent,\n effectAllowed: EffectAllowed,\n type: string | undefined\n) {\n _dndState.isDragging = true;\n _dndState.dropEffect = 'none';\n _dndState.effectAllowed = effectAllowed;\n _dndState.type = type;\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = effectAllowed;\n }\n}\n\nexport function endDrag() {\n _dndState.isDragging = false;\n _dndState.dropEffect = undefined;\n _dndState.effectAllowed = undefined;\n _dndState.type = undefined;\n}\n\nexport function setDropEffect(event: DragEvent, dropEffect: DropEffect) {\n if (_dndState.isDragging === true) {\n _dndState.dropEffect = dropEffect;\n }\n\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = dropEffect;\n }\n}\n\nexport function getDropEffect(\n event: DragEvent,\n effectAllowed?: EffectAllowed | DropEffect\n): DropEffect {\n const dataTransferEffectAllowed: EffectAllowed = event.dataTransfer\n ? (event.dataTransfer.effectAllowed as EffectAllowed)\n : 'uninitialized';\n\n let effects = filterEffects(DROP_EFFECTS, dataTransferEffectAllowed);\n\n if (_dndState.isDragging === true) {\n effects = filterEffects(effects, _dndState.effectAllowed!);\n }\n\n if (effectAllowed) {\n effects = filterEffects(effects, effectAllowed);\n }\n\n // MacOS automatically filters dataTransfer.effectAllowed depending on the modifier keys,\n // therefore the following modifier keys will only affect other operating systems.\n if (effects.length === 0) {\n return 'none';\n }\n\n if (event.ctrlKey && effects.indexOf('copy') !== -1) {\n return 'copy';\n }\n\n if (event.altKey && effects.indexOf('link') !== -1) {\n return 'link';\n }\n\n return effects[0] as DropEffect;\n}\n\nexport function getDndType(event: DragEvent): string | undefined {\n if (_dndState.isDragging === true) {\n return _dndState.type;\n }\n\n const mimeType = getWellKnownMimeType(event);\n\n if (mimeType === null) {\n return undefined;\n }\n\n return mimeType.substring(CUSTOM_MIME_TYPE.length + 1) || undefined;\n}\n\nexport function isExternalDrag(): boolean {\n return _dndState.isDragging === false;\n}\n\nexport const dndState: Readonly<DndState> = _dndState as Readonly<DndState>;\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { DndHandleDirective } from './dnd-handle.directive';\nimport { dndState, endDrag, startDrag } from './dnd-state';\nimport { EffectAllowed } from './dnd-types';\nimport {\n calculateDragImageOffset,\n DndDragImageOffsetFunction,\n DndEvent,\n setDragData,\n setDragImage,\n} from './dnd-utils';\n\n@Directive({ selector: '[dndDragImageRef]', standalone: true })\nexport class DndDragImageRefDirective implements OnInit {\n dndDraggableDirective = inject(forwardRef(() => DndDraggableDirective));\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragImage(this.elementRef);\n }\n}\n\n@Directive({ selector: '[dndDraggable]', standalone: true })\nexport class DndDraggableDirective implements AfterViewInit, OnDestroy {\n @Input() dndDraggable: any;\n @Input() dndEffectAllowed: EffectAllowed = 'copy';\n @Input() dndType?: string;\n @Input() dndDraggingClass = 'dndDragging';\n @Input() dndDraggingSourceClass = 'dndDraggingSource';\n @Input() dndDraggableDisabledClass = 'dndDraggableDisabled';\n @Input() dndDragImageOffsetFunction: DndDragImageOffsetFunction =\n calculateDragImageOffset;\n\n @Output() readonly dndStart: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndDrag: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndEnd: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndMoved: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCopied: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndLinked: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCanceled: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @HostBinding('attr.draggable') draggable = true;\n\n private dndHandle?: DndHandleDirective;\n private dndDragImageElementRef?: ElementRef;\n private dragImage: Element | undefined;\n private isDragStarted: boolean = false;\n\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n @Input() set dndDisableIf(value: boolean) {\n this.draggable = !value;\n\n if (this.draggable) {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n } else {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDragIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'drag',\n this.dragEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'drag',\n this.dragEventHandler\n );\n if (this.isDragStarted) {\n endDrag();\n }\n }\n\n @HostListener('dragstart', ['$event']) onDragStart(event: DndEvent): boolean {\n if (!this.draggable) {\n return false;\n }\n\n // check if there is dnd handle and if the dnd handle was used to start the drag\n if (this.dndHandle != null && event._dndUsingHandle == null) {\n event.stopPropagation();\n return false;\n }\n\n // initialize global state\n startDrag(event, this.dndEffectAllowed, this.dndType);\n\n this.isDragStarted = true;\n\n setDragData(\n event,\n { data: this.dndDraggable, type: this.dndType },\n dndState.effectAllowed!\n );\n\n this.dragImage = this.determineDragImage();\n\n // set dragging css class prior to setDragImage so styles are applied before\n // TODO breaking change: add class to elementRef rather than drag image which could be another element\n this.renderer.addClass(this.dragImage, this.dndDraggingClass);\n\n // set custom dragimage if present\n // set dragimage if drag is started from dndHandle\n if (this.dndDragImageElementRef != null || event._dndUsingHandle != null) {\n setDragImage(event, this.dragImage, this.dndDragImageOffsetFunction);\n }\n\n // add dragging source css class on first drag event\n const unregister = this.renderer.listen(\n this.elementRef.nativeElement,\n 'drag',\n () => {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n unregister();\n }\n );\n\n this.dndStart.emit(event);\n\n event.stopPropagation();\n\n setTimeout(() => {\n if (this.isDragStarted) {\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');\n }\n }, 100);\n\n return true;\n }\n\n onDrag(event: DragEvent) {\n this.dndDrag.emit(event);\n }\n\n @HostListener('dragend', ['$event']) onDragEnd(event: DragEvent) {\n if (!this.draggable || !this.isDragStarted) {\n return;\n }\n // get drop effect from custom stored state as its not reliable across browsers\n const dropEffect = dndState.dropEffect;\n\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'unset');\n\n let dropEffectEmitter: EventEmitter<DragEvent>;\n\n switch (dropEffect) {\n case 'copy':\n dropEffectEmitter = this.dndCopied;\n break;\n\n case 'link':\n dropEffectEmitter = this.dndLinked;\n break;\n\n case 'move':\n dropEffectEmitter = this.dndMoved;\n break;\n\n default:\n dropEffectEmitter = this.dndCanceled;\n break;\n }\n\n dropEffectEmitter.emit(event);\n this.dndEnd.emit(event);\n\n // reset global state\n endDrag();\n\n this.isDragStarted = false;\n\n this.renderer.removeClass(this.dragImage, this.dndDraggingClass);\n\n // IE9 special hammering\n window.setTimeout(() => {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n }, 0);\n\n event.stopPropagation();\n }\n\n registerDragHandle(handle: DndHandleDirective | undefined) {\n this.dndHandle = handle;\n }\n\n registerDragImage(elementRef: ElementRef | undefined) {\n this.dndDragImageElementRef = elementRef;\n }\n\n private readonly dragEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDrag(event);\n\n private determineDragImage(): Element {\n // evaluate custom drag image existence\n if (typeof this.dndDragImageElementRef !== 'undefined') {\n return this.dndDragImageElementRef.nativeElement as Element;\n } else {\n return this.elementRef.nativeElement;\n }\n }\n}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n getDndType,\n getDropEffect,\n isExternalDrag,\n setDropEffect,\n} from './dnd-state';\nimport { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n DndEvent,\n DragDropData,\n getDirectChildElement,\n getDropData,\n shouldPositionPlaceholderBeforeElement,\n} from './dnd-utils';\n\nexport interface DndDropEvent {\n event: DragEvent;\n dropEffect: DropEffect;\n isExternal: boolean;\n data?: any;\n index?: number;\n type?: any;\n}\n\n@Directive({ selector: '[dndPlaceholderRef]', standalone: true })\nexport class DndPlaceholderRefDirective implements OnInit {\n constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit() {\n // placeholder has to be \"invisible\" to the cursor, or it would interfere with the dragover detection for the same dropzone\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n }\n}\n\n@Directive({ selector: '[dndDropzone]', standalone: true })\nexport class DndDropzoneDirective implements AfterViewInit, OnDestroy {\n @Input() dndDropzone?: string[] | '' = '';\n\n @Input() dndEffectAllowed: EffectAllowed = 'uninitialized';\n\n @Input() dndAllowExternal: boolean = false;\n\n @Input() dndHorizontal: boolean = false;\n\n @Input() dndDragoverClass: string = 'dndDragover';\n\n @Input() dndDropzoneDisabledClass = 'dndDropzoneDisabled';\n\n @Output() readonly dndDragover: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @Output() readonly dndDrop: EventEmitter<DndDropEvent> =\n new EventEmitter<DndDropEvent>();\n\n @ContentChild(DndPlaceholderRefDirective)\n private readonly dndPlaceholderRef?: DndPlaceholderRefDirective;\n\n private placeholder: Element | null = null;\n\n private disabled: boolean = false;\n\n private enterCount: number = 0;\n\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef,\n private renderer: Renderer2\n ) {}\n\n @Input() set dndDisableIf(value: boolean) {\n this.disabled = value;\n\n if (this.disabled) {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n } else {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDropIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.placeholder = this.tryGetPlaceholder();\n\n this.removePlaceholderFromDOM();\n\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n }\n\n onDragEnter(event: DndEvent) {\n this.enterCount++;\n\n // check if another dropzone is activated\n if (event._dndDropzoneActive === true) {\n this.cleanupDragoverState();\n return;\n }\n\n // set as active if the target element is inside this dropzone\n if (event._dndDropzoneActive == null) {\n // Determine the root node and fetch the element at the drop point\n const rootNode = this.elementRef.nativeElement.getRootNode();\n const newTarget = (rootNode instanceof ShadowRoot ? rootNode : document).elementFromPoint(event.clientX, event.clientY);\n\n // Verify if the new target is within this dropzone\n if (this.elementRef.nativeElement.contains(newTarget)) {\n event._dndDropzoneActive = true;\n }\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n // allow the dragenter\n event.preventDefault();\n }\n\n onDragOver(event: DragEvent) {\n // With nested dropzones, we want to ignore this event if a child dropzone\n // has already handled a dragover. Historically, event.stopPropagation() was\n // used to prevent this bubbling, but that prevents any dragovers outside the\n // ngx-drag-drop component, and stops other use cases such as scrolling on drag.\n // Instead, we can check if the event was already prevented by a child and bail early.\n if (event.defaultPrevented) {\n return;\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n this.checkAndUpdatePlaceholderPosition(event);\n\n const dropEffect = getDropEffect(event, this.dndEffectAllowed);\n\n if (dropEffect === 'none') {\n this.cleanupDragoverState();\n return;\n }\n\n // allow the dragover\n event.preventDefault();\n\n // set the drop effect\n setDropEffect(event, dropEffect);\n\n this.dndDragover.emit(event);\n\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n }\n\n @HostListener('drop', ['$event']) onDrop(event: DragEvent) {\n try {\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n const data: DragDropData = getDropData(event, isExternalDrag());\n\n if (!this.isDropAllowed(data.type)) {\n return;\n }\n\n // signal custom drop handling\n event.preventDefault();\n\n const dropEffect = getDropEffect(event);\n\n setDropEffect(event, dropEffect);\n\n if (dropEffect === 'none') {\n return;\n }\n\n const dropIndex = this.getPlaceholderIndex();\n\n // if for whatever reason the placeholder is not present in the DOM but it should be there\n // we don't allow/emit the drop event since it breaks the contract\n // seems to only happen if drag and drop is executed faster than the DOM updates\n if (dropIndex === -1) {\n return;\n }\n\n this.dndDrop.emit({\n event: event,\n dropEffect: dropEffect,\n isExternal: isExternalDrag(),\n data: data.data,\n index: dropIndex,\n type: type,\n });\n\n event.stopPropagation();\n } finally {\n this.cleanupDragoverState();\n }\n }\n\n onDragLeave(event: DndEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n this.enterCount--;\n\n // check if still inside this dropzone and not yet handled by another dropzone\n if (event._dndDropzoneActive == null) {\n if (this.enterCount !== 0) {\n event._dndDropzoneActive = true;\n return;\n }\n }\n\n this.cleanupDragoverState();\n\n // cleanup drop effect when leaving dropzone\n setDropEffect(event, 'none');\n }\n\n private readonly dragEnterEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragEnter(event);\n\n private readonly dragOverEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragOver(event);\n\n private readonly dragLeaveEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragLeave(event);\n\n private isDropAllowed(type?: string): boolean {\n // dropzone is disabled -> deny it\n if (this.disabled) {\n return false;\n }\n\n // if drag did not start from our directive\n // and external drag sources are not allowed -> deny it\n if (isExternalDrag() && !this.dndAllowExternal) {\n return false;\n }\n\n // no filtering by types -> allow it\n if (!this.dndDropzone) {\n return true;\n }\n\n // no type set -> allow it\n if (!type) {\n return true;\n }\n\n if (!Array.isArray(this.dndDropzone)) {\n throw new Error(\n 'dndDropzone: bound value to [dndDropzone] must be an array!'\n );\n }\n\n // if dropzone contains type -> allow it\n return this.dndDropzone.indexOf(type) !== -1;\n }\n\n private tryGetPlaceholder(): Element | null {\n if (typeof this.dndPlaceholderRef !== 'undefined') {\n return this.dndPlaceholderRef.elementRef.nativeElement as Element;\n }\n\n // TODO nasty workaround needed because if ng-container / template is used @ContentChild() or DI will fail because\n // of wrong context see angular bug https://github.com/angular/angular/issues/13517\n return this.elementRef.nativeElement.querySelector('[dndPlaceholderRef]');\n }\n\n private removePlaceholderFromDOM() {\n if (this.placeholder !== null && this.placeholder.parentNode !== null) {\n this.placeholder.parentNode.removeChild(this.placeholder);\n }\n }\n\n private checkAndUpdatePlaceholderPosition(event: DragEvent): void {\n if (this.placeholder === null) {\n return;\n }\n\n // make sure the placeholder is in the DOM\n if (this.placeholder.parentNode !== this.elementRef.nativeElement) {\n this.renderer.appendChild(\n this.elementRef.nativeElement,\n this.placeholder\n );\n }\n\n // update the position if the event originates from a child element of the dropzone\n const directChild = getDirectChildElement(\n this.elementRef.nativeElement,\n event.target as Element\n );\n\n // early exit if no direct child or direct child is placeholder\n if (directChild === null || directChild === this.placeholder) {\n return;\n }\n\n const positionPlaceholderBeforeDirectChild =\n shouldPositionPlaceholderBeforeElement(\n event,\n directChild,\n this.dndHorizontal\n );\n\n if (positionPlaceholderBeforeDirectChild) {\n // do insert before only if necessary\n if (directChild.previousSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild\n );\n }\n } else {\n // do insert after only if necessary\n if (directChild.nextSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild.nextSibling\n );\n }\n }\n }\n\n private getPlaceholderIndex(): number | undefined {\n if (this.placeholder === null) {\n return undefined;\n }\n\n const element = this.elementRef.nativeElement as HTMLElement;\n\n return Array.prototype.indexOf.call(element.children, this.placeholder);\n }\n\n private cleanupDragoverState() {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n\n this.enterCount = 0;\n this.removePlaceholderFromDOM();\n }\n}\n","import {\n Directive,\n HostBinding,\n HostListener,\n inject,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { DndDraggableDirective } from './dnd-draggable.directive';\nimport { DndEvent } from './dnd-utils';\n\n@Directive({ selector: '[dndHandle]', standalone: true })\nexport class DndHandleDirective implements OnInit, OnDestroy {\n @HostBinding('attr.draggable') draggable = true;\n\n dndDraggableDirective = inject(DndDraggableDirective);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragHandle(this);\n }\n\n ngOnDestroy(): void {\n this.dndDraggableDirective.registerDragHandle(undefined);\n }\n\n @HostListener('dragstart', ['$event'])\n @HostListener('dragend', ['$event'])\n onDragEvent(event: DndEvent) {\n event._dndUsingHandle = true;\n }\n}\n","import { NgModule } from '@angular/core';\nimport {\n DndDraggableDirective,\n DndDragImageRefDirective,\n} from './dnd-draggable.directive';\nimport {\n DndDropzoneDirective,\n DndPlaceholderRefDirective,\n} from './dnd-dropzone.directive';\nimport { DndHandleDirective } from './dnd-handle.directive';\n\n@NgModule({\n exports: [\n DndDraggableDirective,\n DndDropzoneDirective,\n DndHandleDirective,\n DndPlaceholderRefDirective,\n DndDragImageRefDirective,\n ],\n imports: [\n DndDragImageRefDirective,\n DndDropzoneDirective,\n DndHandleDirective,\n DndPlaceholderRefDirective,\n DndDraggableDirective,\n ],\n})\nexport class DndModule {}\n","/*\n * Public API Surface of dnd\n */\n\nexport * from './lib/dnd-draggable.directive';\nexport * from './lib/dnd-dropzone.directive';\nexport * from './lib/dnd-handle.directive';\nexport * from './lib/dnd-types';\nexport { DndDragImageOffsetFunction } from './lib/dnd-utils';\nexport * from './lib/dnd.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAiBO,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAiB;AAE7D,MAAM,gBAAgB,GAAG,mBAAmB;AAEnD,SAAS,gBAAgB,CAAC,QAAgB,EAAA;AACxC,IAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,gBAAgB;AAC5E;AAEM,SAAU,oBAAoB,CAAC,KAAgB,EAAA;AACnD,IAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK;AAEtC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC9B,gBAAA,OAAO,KAAK,CAAC,CAAC,CAAC;YACjB;QACF;IACF;AAEA,IAAA,OAAO,IAAI;AACb;SAEgB,WAAW,CACzB,KAAgB,EAChB,IAAkB,EAClB,aAA4B,EAAA;IAE5B,MAAM,QAAQ,GAAG,gBAAgB,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IAEtE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAEvC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC;AACnD;AAEM,SAAU,WAAW,CACzB,KAAgB,EAChB,cAAuB,EAAA;AAEvB,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,IAAI,cAAc,KAAK,IAAI,EAAE;QAC3B,IAAI,QAAQ,KAAK,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE;AACnD,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;QAClE;AAEA,QAAA,OAAO,EAAE;IACX;AAEA,IAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;IAClE;AAEA,IAAA,OAAO,EAAE;AACX;AAEM,SAAU,aAAa,CAC3B,OAAqB,EACrB,OAAmC,EAAA;IAEnC,IAAI,OAAO,KAAK,KAAK,IAAI,OAAO,KAAK,eAAe,EAAE;AACpD,QAAA,OAAO,OAAO;IAChB;AAEA,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,MAAM,EAAA;AACpC,QAAA,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrD,IAAA,CAAC,CAAC;AACJ;AAEM,SAAU,qBAAqB,CACnC,aAAsB,EACtB,YAAqB,EAAA;IAErB,IAAI,WAAW,GAAS,YAAY;AAEpC,IAAA,OAAO,WAAW,CAAC,UAAU,KAAK,aAAa,EAAE;;AAE/C,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE;AAC3B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,WAAW,GAAG,WAAW,CAAC,UAAU;IACtC;AAEA,IAAA,OAAO,WAAsB;AAC/B;SAEgB,sCAAsC,CACpD,KAAgB,EAChB,OAAgB,EAChB,UAAmB,EAAA;AAEnB,IAAA,MAAM,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE;;;IAI9C,IAAI,UAAU,EAAE;AACd,QAAA,OAAO,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC;IACvD;AAEA,IAAA,OAAO,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;AACvD;AAEM,SAAU,wBAAwB,CACtC,KAAgB,EAChB,SAAkB,EAAA;IAElB,MAAM,sBAAsB,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC;IACjE,MAAM,UAAU,GAAG,UAAU,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC;IACrE,MAAM,WAAW,GAAG,UAAU,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC;IACvE,MAAM,SAAS,GAAG,UAAU,CAAC,sBAAsB,CAAC,cAAc,CAAC,IAAI,CAAC;IACxE,MAAM,UAAU,GAAG,UAAU,CAAC,sBAAsB,CAAC,eAAe,CAAC,IAAI,CAAC;IAE1E,OAAO;AACL,QAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,WAAW,GAAG,UAAU;AAC3C,QAAA,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,UAAU,GAAG,SAAS;KAC1C;AACH;SAEgB,YAAY,CAC1B,KAAgB,EAChB,SAAkB,EAClB,cAA0C,EAAA;AAE1C,IAAA,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAEhE,IAAA,KAAK,CAAC,YAAoB,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACzE;;AChIA,MAAM,SAAS,GAAa;AAC1B,IAAA,UAAU,EAAE,KAAK;AACjB,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,IAAI,EAAE,SAAS;CAChB;SAEe,SAAS,CACvB,KAAgB,EAChB,aAA4B,EAC5B,IAAwB,EAAA;AAExB,IAAA,SAAS,CAAC,UAAU,GAAG,IAAI;AAC3B,IAAA,SAAS,CAAC,UAAU,GAAG,MAAM;AAC7B,IAAA,SAAS,CAAC,aAAa,GAAG,aAAa;AACvC,IAAA,SAAS,CAAC,IAAI,GAAG,IAAI;AAErB,IAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,QAAA,KAAK,CAAC,YAAY,CAAC,aAAa,GAAG,aAAa;IAClD;AACF;SAEgB,OAAO,GAAA;AACrB,IAAA,SAAS,CAAC,UAAU,GAAG,KAAK;AAC5B,IAAA,SAAS,CAAC,UAAU,GAAG,SAAS;AAChC,IAAA,SAAS,CAAC,aAAa,GAAG,SAAS;AACnC,IAAA,SAAS,CAAC,IAAI,GAAG,SAAS;AAC5B;AAEM,SAAU,aAAa,CAAC,KAAgB,EAAE,UAAsB,EAAA;AACpE,IAAA,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE;AACjC,QAAA,SAAS,CAAC,UAAU,GAAG,UAAU;IACnC;AAEA,IAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,QAAA,KAAK,CAAC,YAAY,CAAC,UAAU,GAAG,UAAU;IAC5C;AACF;AAEM,SAAU,aAAa,CAC3B,KAAgB,EAChB,aAA0C,EAAA;AAE1C,IAAA,MAAM,yBAAyB,GAAkB,KAAK,CAAC;AACrD,UAAG,KAAK,CAAC,YAAY,CAAC;UACpB,eAAe;IAEnB,IAAI,OAAO,GAAG,aAAa,CAAC,YAAY,EAAE,yBAAyB,CAAC;AAEpE,IAAA,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE;QACjC,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,aAAc,CAAC;IAC5D;IAEA,IAAI,aAAa,EAAE;AACjB,QAAA,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC;IACjD;;;AAIA,IAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AACnD,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;AAClD,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,OAAO,OAAO,CAAC,CAAC,CAAe;AACjC;AAEM,SAAU,UAAU,CAAC,KAAgB,EAAA;AACzC,IAAA,IAAI,SAAS,CAAC,UAAU,KAAK,IAAI,EAAE;QACjC,OAAO,SAAS,CAAC,IAAI;IACvB;AAEA,IAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC;AAE5C,IAAA,IAAI,QAAQ,KAAK,IAAI,EAAE;AACrB,QAAA,OAAO,SAAS;IAClB;AAEA,IAAA,OAAO,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS;AACrE;SAEgB,cAAc,GAAA;AAC5B,IAAA,OAAO,SAAS,CAAC,UAAU,KAAK,KAAK;AACvC;AAEO,MAAM,QAAQ,GAAuB,SAA+B;;MC/E9D,wBAAwB,CAAA;IACnC,qBAAqB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,qBAAqB,CAAC,CAAC;AACvE,IAAA,UAAU,GAA4B,MAAM,CAAC,UAAU,CAAC;IAExD,QAAQ,GAAA;QACN,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;IAC/D;uGANW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAxB,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,IAAI,EAAE;;MAWjD,qBAAqB,CAAA;AACvB,IAAA,YAAY;IACZ,gBAAgB,GAAkB,MAAM;AACxC,IAAA,OAAO;IACP,gBAAgB,GAAG,aAAa;IAChC,sBAAsB,GAAG,mBAAmB;IAC5C,yBAAyB,GAAG,sBAAsB;IAClD,0BAA0B,GACjC,wBAAwB;AAEP,IAAA,QAAQ,GACzB,IAAI,YAAY,EAAa;AACZ,IAAA,OAAO,GACxB,IAAI,YAAY,EAAa;AACZ,IAAA,MAAM,GACvB,IAAI,YAAY,EAAa;AACZ,IAAA,QAAQ,GACzB,IAAI,YAAY,EAAa;AACZ,IAAA,SAAS,GAC1B,IAAI,YAAY,EAAa;AACZ,IAAA,SAAS,GAC1B,IAAI,YAAY,EAAa;AACZ,IAAA,WAAW,GAC5B,IAAI,YAAY,EAAa;IAEA,SAAS,GAAG,IAAI;AAEvC,IAAA,SAAS;AACT,IAAA,sBAAsB;AACtB,IAAA,SAAS;IACT,aAAa,GAAY,KAAK;AAE9B,IAAA,UAAU,GAA4B,MAAM,CAAC,UAAU,CAAC;AACxD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5B,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,IAAa,YAAY,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK;AAEvB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,yBAAyB,CAC/B;QACH;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,yBAAyB,CAC/B;QACH;IACF;IAEA,IAAa,gBAAgB,CAAC,KAAc,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAC5C,MAAM,EACN,IAAI,CAAC,gBAAgB,CACtB;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAC/C,MAAM,EACN,IAAI,CAAC,gBAAgB,CACtB;AACD,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,OAAO,EAAE;QACX;IACF;AAEuC,IAAA,WAAW,CAAC,KAAe,EAAA;AAChE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,OAAO,KAAK;QACd;;AAGA,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,EAAE;YAC3D,KAAK,CAAC,eAAe,EAAE;AACvB,YAAA,OAAO,KAAK;QACd;;QAGA,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC;AAErD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QAEzB,WAAW,CACT,KAAK,EACL,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,EAC/C,QAAQ,CAAC,aAAc,CACxB;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE;;;AAI1C,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;;;AAI7D,QAAA,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,IAAI,KAAK,CAAC,eAAe,IAAI,IAAI,EAAE;YACxE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,0BAA0B,CAAC;QACtE;;AAGA,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CACrC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,MAAM,EACN,MAAK;AACH,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,sBAAsB,CAC5B;AACD,YAAA,UAAU,EAAE;AACd,QAAA,CAAC,CACF;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAEzB,KAAK,CAAC,eAAe,EAAE;QAEvB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC;YAClE;QACF,CAAC,EAAE,GAAG,CAAC;AAEP,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,CAAC,KAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B;AAEqC,IAAA,SAAS,CAAC,KAAgB,EAAA;QAC7D,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YAC1C;QACF;;AAEA,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU;AAEtC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAC;AAEjE,QAAA,IAAI,iBAA0C;QAE9C,QAAQ,UAAU;AAChB,YAAA,KAAK,MAAM;AACT,gBAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS;gBAClC;AAEF,YAAA,KAAK,MAAM;AACT,gBAAA,iBAAiB,GAAG,IAAI,CAAC,SAAS;gBAClC;AAEF,YAAA,KAAK,MAAM;AACT,gBAAA,iBAAiB,GAAG,IAAI,CAAC,QAAQ;gBACjC;AAEF,YAAA;AACE,gBAAA,iBAAiB,GAAG,IAAI,CAAC,WAAW;gBACpC;;AAGJ,QAAA,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;;AAGvB,QAAA,OAAO,EAAE;AAET,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAE1B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC;;AAGhE,QAAA,MAAM,CAAC,UAAU,CAAC,MAAK;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,sBAAsB,CAC5B;QACH,CAAC,EAAE,CAAC,CAAC;QAEL,KAAK,CAAC,eAAe,EAAE;IACzB;AAEA,IAAA,kBAAkB,CAAC,MAAsC,EAAA;AACvD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM;IACzB;AAEA,IAAA,iBAAiB,CAAC,UAAkC,EAAA;AAClD,QAAA,IAAI,CAAC,sBAAsB,GAAG,UAAU;IAC1C;AAEiB,IAAA,gBAAgB,GAA+B,CAC9D,KAAgB,KACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAEf,kBAAkB,GAAA;;AAExB,QAAA,IAAI,OAAO,IAAI,CAAC,sBAAsB,KAAK,WAAW,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAwB;QAC7D;aAAO;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa;QACtC;IACF;uGAhNW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,4BAAA,EAAA,YAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE;;sBAExD;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAGA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAGA,WAAW;uBAAC,gBAAgB;;sBAW5B;;sBAgBA;;sBAuBA,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBAgEpC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MC1IxB,0BAA0B,CAAA;AACT,IAAA,UAAA;AAA5B,IAAA,WAAA,CAA4B,UAAmC,EAAA;QAAnC,IAAA,CAAA,UAAU,GAAV,UAAU;IAA4B;IAElE,QAAQ,GAAA;;QAEN,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM;IAC5D;uGANW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA1B,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,qBAAqB,EAAE,UAAU,EAAE,IAAI,EAAE;;MAWnD,oBAAoB,CAAA;AA6BrB,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,QAAA;IA9BD,WAAW,GAAmB,EAAE;IAEhC,gBAAgB,GAAkB,eAAe;IAEjD,gBAAgB,GAAY,KAAK;IAEjC,aAAa,GAAY,KAAK;IAE9B,gBAAgB,GAAW,aAAa;IAExC,wBAAwB,GAAG,qBAAqB;AAEtC,IAAA,WAAW,GAC5B,IAAI,YAAY,EAAa;AAEZ,IAAA,OAAO,GACxB,IAAI,YAAY,EAAgB;AAGjB,IAAA,iBAAiB;IAE1B,WAAW,GAAmB,IAAI;IAElC,QAAQ,GAAY,KAAK;IAEzB,UAAU,GAAW,CAAC;AAE9B,IAAA,WAAA,CACU,MAAc,EACd,UAAsB,EACtB,QAAmB,EAAA;QAFnB,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,UAAU,GAAV,UAAU;QACV,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACf;IAEH,IAAa,YAAY,CAAC,KAAc,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AAErB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,wBAAwB,CAC9B;QACH;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,wBAAwB,CAC9B;QACH;IACF;IAEA,IAAa,gBAAgB,CAAC,KAAc,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;IAC3B;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE;QAE3C,IAAI,CAAC,wBAAwB,EAAE;AAE/B,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAC5C,WAAW,EACX,IAAI,CAAC,qBAAqB,CAC3B;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAC5C,UAAU,EACV,IAAI,CAAC,oBAAoB,CAC1B;AACD,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAC5C,WAAW,EACX,IAAI,CAAC,qBAAqB,CAC3B;AACH,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAC/C,WAAW,EACX,IAAI,CAAC,qBAAqB,CAC3B;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAC/C,UAAU,EACV,IAAI,CAAC,oBAAoB,CAC1B;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,mBAAmB,CAC/C,WAAW,EACX,IAAI,CAAC,qBAAqB,CAC3B;IACH;AAEA,IAAA,WAAW,CAAC,KAAe,EAAA;QACzB,IAAI,CAAC,UAAU,EAAE;;AAGjB,QAAA,IAAI,KAAK,CAAC,kBAAkB,KAAK,IAAI,EAAE;YACrC,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;;AAGA,QAAA,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAAE;;YAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,EAAE;YAC5D,MAAM,SAAS,GAAG,CAAC,QAAQ,YAAY,UAAU,GAAG,QAAQ,GAAG,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;;YAGvH,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACrD,gBAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI;YACjC;QACF;;AAGA,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAC7B;QACF;;QAGA,KAAK,CAAC,cAAc,EAAE;IACxB;AAEA,IAAA,UAAU,CAAC,KAAgB,EAAA;;;;;;AAMzB,QAAA,IAAI,KAAK,CAAC,gBAAgB,EAAE;YAC1B;QACF;;AAGA,QAAA,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,iCAAiC,CAAC,KAAK,CAAC;QAE7C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC;AAE9D,QAAA,IAAI,UAAU,KAAK,MAAM,EAAE;YACzB,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;;QAGA,KAAK,CAAC,cAAc,EAAE;;AAGtB,QAAA,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC;AAEhC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAE5B,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CACpB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,gBAAgB,CACtB;IACH;AAEkC,IAAA,MAAM,CAAC,KAAgB,EAAA;AACvD,QAAA,IAAI;;AAEF,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;gBAC7B;YACF;YAEA,MAAM,IAAI,GAAiB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;YAE/D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAClC;YACF;;YAGA,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC;AAEvC,YAAA,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC;AAEhC,YAAA,IAAI,UAAU,KAAK,MAAM,EAAE;gBACzB;YACF;AAEA,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,EAAE;;;;AAK5C,YAAA,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;gBACpB;YACF;AAEA,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAChB,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,UAAU,EAAE,UAAU;gBACtB,UAAU,EAAE,cAAc,EAAE;gBAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE,IAAI;AACX,aAAA,CAAC;YAEF,KAAK,CAAC,eAAe,EAAE;QACzB;gBAAU;YACR,IAAI,CAAC,oBAAoB,EAAE;QAC7B;IACF;AAEA,IAAA,WAAW,CAAC,KAAe,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;QAEvB,IAAI,CAAC,UAAU,EAAE;;AAGjB,QAAA,IAAI,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAAE;AACpC,YAAA,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;AACzB,gBAAA,KAAK,CAAC,kBAAkB,GAAG,IAAI;gBAC/B;YACF;QACF;QAEA,IAAI,CAAC,oBAAoB,EAAE;;AAG3B,QAAA,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;IAC9B;AAEiB,IAAA,qBAAqB,GAA+B,CACnE,KAAgB,KACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEX,IAAA,oBAAoB,GAA+B,CAClE,KAAgB,KACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;AAEV,IAAA,qBAAqB,GAA+B,CACnE,KAAgB,KACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAEpB,IAAA,aAAa,CAAC,IAAa,EAAA;;AAEjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,OAAO,KAAK;QACd;;;QAIA,IAAI,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC9C,YAAA,OAAO,KAAK;QACd;;AAGA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;;QAGA,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D;QACH;;QAGA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C;IAEQ,iBAAiB,GAAA;AACvB,QAAA,IAAI,OAAO,IAAI,CAAC,iBAAiB,KAAK,WAAW,EAAE;AACjD,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAwB;QACnE;;;QAIA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,CAAC;IAC3E;IAEQ,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,EAAE;YACrE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC;QAC3D;IACF;AAEQ,IAAA,iCAAiC,CAAC,KAAgB,EAAA;AACxD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC7B;QACF;;AAGA,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;AACjE,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,WAAW,CACjB;QACH;;AAGA,QAAA,MAAM,WAAW,GAAG,qBAAqB,CACvC,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,KAAK,CAAC,MAAiB,CACxB;;QAGD,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;YAC5D;QACF;AAEA,QAAA,MAAM,oCAAoC,GACxC,sCAAsC,CACpC,KAAK,EACL,WAAW,EACX,IAAI,CAAC,aAAa,CACnB;QAEH,IAAI,oCAAoC,EAAE;;YAExC,IAAI,WAAW,CAAC,eAAe,KAAK,IAAI,CAAC,WAAW,EAAE;AACpD,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,WAAW,EAChB,WAAW,CACZ;YACH;QACF;aAAO;;YAEL,IAAI,WAAW,CAAC,WAAW,KAAK,IAAI,CAAC,WAAW,EAAE;AAChD,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CACxB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,WAAW,EAChB,WAAW,CAAC,WAAW,CACxB;YACH;QACF;IACF;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;AAC7B,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAA4B;AAE5D,QAAA,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC;IACzE;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CACvB,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B,IAAI,CAAC,gBAAgB,CACtB;AAED,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC;QACnB,IAAI,CAAC,wBAAwB,EAAE;IACjC;uGAvWW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,4hBAmBjB,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAnB7B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE;;sBAEvD;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAEA;;sBAGA;;sBAGA,YAAY;uBAAC,0BAA0B;;sBAevC;;sBAgBA;;sBA8GA,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;MCrMrB,kBAAkB,CAAA;IACE,SAAS,GAAG,IAAI;AAE/C,IAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAErD,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACrD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,SAAS,CAAC;IAC1D;AAIA,IAAA,WAAW,CAAC,KAAe,EAAA;AACzB,QAAA,KAAK,CAAC,eAAe,GAAG,IAAI;IAC9B;uGAjBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE;;sBAErD,WAAW;uBAAC,gBAAgB;;sBAY5B,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBACpC,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC;;;MCCxB,SAAS,CAAA;uGAAT,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAT,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,YAPlB,wBAAwB;YACxB,oBAAoB;YACpB,kBAAkB;YAClB,0BAA0B;AAC1B,YAAA,qBAAqB,aAXrB,qBAAqB;YACrB,oBAAoB;YACpB,kBAAkB;YAClB,0BAA0B;YAC1B,wBAAwB,CAAA,EAAA,CAAA;wGAUf,SAAS,EAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAhBrB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB,oBAAoB;wBACpB,kBAAkB;wBAClB,0BAA0B;wBAC1B,wBAAwB;AACzB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,wBAAwB;wBACxB,oBAAoB;wBACpB,kBAAkB;wBAClB,0BAA0B;wBAC1B,qBAAqB;AACtB,qBAAA;AACF,iBAAA;;;AC1BD;;AAEG;;ACFH;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-drag-drop",
|
|
3
|
-
"version": "21.0.
|
|
3
|
+
"version": "21.0.4",
|
|
4
4
|
"description": "Angular directives using the native HTML Drag And Drop API",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"touch"
|
|
25
25
|
],
|
|
26
26
|
"peerDependencies": {
|
|
27
|
-
"@angular/common": "
|
|
28
|
-
"@angular/core": "
|
|
27
|
+
"@angular/common": ">=21.0.0",
|
|
28
|
+
"@angular/core": ">=21.0.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"tslib": "^2.3.0"
|
package/types/ngx-drag-drop.d.ts
CHANGED
|
@@ -98,6 +98,7 @@ declare class DndDropzoneDirective implements AfterViewInit, OnDestroy {
|
|
|
98
98
|
private readonly dndPlaceholderRef?;
|
|
99
99
|
private placeholder;
|
|
100
100
|
private disabled;
|
|
101
|
+
private enterCount;
|
|
101
102
|
constructor(ngZone: NgZone, elementRef: ElementRef, renderer: Renderer2);
|
|
102
103
|
set dndDisableIf(value: boolean);
|
|
103
104
|
set dndDisableDropIf(value: boolean);
|