ngx-drag-drop 21.0.4 → 21.0.6
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/LICENSE +29 -0
- package/README.md +6 -2
- package/fesm2022/ngx-drag-drop.mjs +26 -34
- package/fesm2022/ngx-drag-drop.mjs.map +1 -1
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021, Stefan Steinhart
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
* Neither the name of the copyright holder nor the names of its
|
|
17
|
+
contributors may be used to endorse or promote products derived from
|
|
18
|
+
this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
21
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
22
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
23
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
24
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
25
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
26
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
27
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
28
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
CHANGED
|
@@ -9,7 +9,11 @@
|
|
|
9
9
|
[_Demo_](https://christoffritz.github.io/ngx-drag-drop/) / [_StackBlitz Issue
|
|
10
10
|
Template_](https://stackblitz.com/edit/ngx-drag-drop-issue-template)
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
```sh
|
|
13
|
+
npm install ngx-drag-drop
|
|
14
|
+
# or
|
|
15
|
+
pnpm add ngx-drag-drop
|
|
16
|
+
```
|
|
13
17
|
|
|
14
18
|
**Angular directives for declarative drag and drop using the HTML5 Drag-And-Drop API**
|
|
15
19
|
|
|
@@ -33,7 +37,7 @@ The idea is that the directive does not handle lists internally so the `dndDropz
|
|
|
33
37
|
Starting with v13, the library major version matches the Angular major version.
|
|
34
38
|
|
|
35
39
|
| Angular | ngx-drag-drop |
|
|
36
|
-
|
|
40
|
+
| ------- | ------------- |
|
|
37
41
|
| 21.x | 21.x |
|
|
38
42
|
| 20.x | 20.x |
|
|
39
43
|
| 19.x | 19.x |
|
|
@@ -153,10 +153,10 @@ class DndDragImageRefDirective {
|
|
|
153
153
|
ngOnInit() {
|
|
154
154
|
this.dndDraggableDirective.registerDragImage(this.elementRef);
|
|
155
155
|
}
|
|
156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
157
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndDragImageRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
157
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: DndDragImageRefDirective, isStandalone: true, selector: "[dndDragImageRef]", ngImport: i0 });
|
|
158
158
|
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndDragImageRefDirective, decorators: [{
|
|
160
160
|
type: Directive,
|
|
161
161
|
args: [{ selector: '[dndDragImageRef]', standalone: true }]
|
|
162
162
|
}] });
|
|
@@ -295,10 +295,10 @@ class DndDraggableDirective {
|
|
|
295
295
|
return this.elementRef.nativeElement;
|
|
296
296
|
}
|
|
297
297
|
}
|
|
298
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
299
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
298
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
299
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", 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 });
|
|
300
300
|
}
|
|
301
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndDraggableDirective, decorators: [{
|
|
302
302
|
type: Directive,
|
|
303
303
|
args: [{ selector: '[dndDraggable]', standalone: true }]
|
|
304
304
|
}], propDecorators: { dndDraggable: [{
|
|
@@ -353,10 +353,10 @@ class DndPlaceholderRefDirective {
|
|
|
353
353
|
// placeholder has to be "invisible" to the cursor, or it would interfere with the dragover detection for the same dropzone
|
|
354
354
|
this.elementRef.nativeElement.style.pointerEvents = 'none';
|
|
355
355
|
}
|
|
356
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
357
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
356
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndPlaceholderRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
357
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: DndPlaceholderRefDirective, isStandalone: true, selector: "[dndPlaceholderRef]", ngImport: i0 });
|
|
358
358
|
}
|
|
359
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
359
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndPlaceholderRefDirective, decorators: [{
|
|
360
360
|
type: Directive,
|
|
361
361
|
args: [{ selector: '[dndPlaceholderRef]', standalone: true }]
|
|
362
362
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
@@ -411,16 +411,13 @@ class DndDropzoneDirective {
|
|
|
411
411
|
this.enterCount++;
|
|
412
412
|
// check if another dropzone is activated
|
|
413
413
|
if (event._dndDropzoneActive === true) {
|
|
414
|
-
this.
|
|
414
|
+
this.removePlaceholderFromDOM();
|
|
415
|
+
this.renderer.removeClass(this.elementRef.nativeElement, this.dndDragoverClass);
|
|
415
416
|
return;
|
|
416
417
|
}
|
|
417
418
|
// set as active if the target element is inside this dropzone
|
|
418
419
|
if (event._dndDropzoneActive == null) {
|
|
419
|
-
|
|
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
|
|
423
|
-
if (this.elementRef.nativeElement.contains(newTarget)) {
|
|
420
|
+
if (this.elementRef.nativeElement.contains(event.target)) {
|
|
424
421
|
event._dndDropzoneActive = true;
|
|
425
422
|
}
|
|
426
423
|
}
|
|
@@ -472,7 +469,7 @@ class DndDropzoneDirective {
|
|
|
472
469
|
}
|
|
473
470
|
// signal custom drop handling
|
|
474
471
|
event.preventDefault();
|
|
475
|
-
const dropEffect = getDropEffect(event);
|
|
472
|
+
const dropEffect = getDropEffect(event, this.dndEffectAllowed);
|
|
476
473
|
setDropEffect(event, dropEffect);
|
|
477
474
|
if (dropEffect === 'none') {
|
|
478
475
|
return;
|
|
@@ -499,15 +496,10 @@ class DndDropzoneDirective {
|
|
|
499
496
|
}
|
|
500
497
|
}
|
|
501
498
|
onDragLeave(event) {
|
|
502
|
-
event.preventDefault();
|
|
503
|
-
event.stopPropagation();
|
|
504
499
|
this.enterCount--;
|
|
505
|
-
//
|
|
506
|
-
if (
|
|
507
|
-
|
|
508
|
-
event._dndDropzoneActive = true;
|
|
509
|
-
return;
|
|
510
|
-
}
|
|
500
|
+
// only clean up when all enter/leave pairs are balanced (cursor has truly left)
|
|
501
|
+
if (this.enterCount > 0) {
|
|
502
|
+
return;
|
|
511
503
|
}
|
|
512
504
|
this.cleanupDragoverState();
|
|
513
505
|
// cleanup drop effect when leaving dropzone
|
|
@@ -593,10 +585,10 @@ class DndDropzoneDirective {
|
|
|
593
585
|
this.enterCount = 0;
|
|
594
586
|
this.removePlaceholderFromDOM();
|
|
595
587
|
}
|
|
596
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
597
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
588
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndDropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
|
|
589
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", 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 });
|
|
598
590
|
}
|
|
599
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
591
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndDropzoneDirective, decorators: [{
|
|
600
592
|
type: Directive,
|
|
601
593
|
args: [{ selector: '[dndDropzone]', standalone: true }]
|
|
602
594
|
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { dndDropzone: [{
|
|
@@ -639,10 +631,10 @@ class DndHandleDirective {
|
|
|
639
631
|
onDragEvent(event) {
|
|
640
632
|
event._dndUsingHandle = true;
|
|
641
633
|
}
|
|
642
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
643
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
634
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
635
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.6", type: DndHandleDirective, isStandalone: true, selector: "[dndHandle]", host: { listeners: { "dragstart": "onDragEvent($event)", "dragend": "onDragEvent($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
|
|
644
636
|
}
|
|
645
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
637
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndHandleDirective, decorators: [{
|
|
646
638
|
type: Directive,
|
|
647
639
|
args: [{ selector: '[dndHandle]', standalone: true }]
|
|
648
640
|
}], propDecorators: { draggable: [{
|
|
@@ -657,8 +649,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
657
649
|
}] } });
|
|
658
650
|
|
|
659
651
|
class DndModule {
|
|
660
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
661
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.
|
|
652
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
653
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.6", ngImport: i0, type: DndModule, imports: [DndDragImageRefDirective,
|
|
662
654
|
DndDropzoneDirective,
|
|
663
655
|
DndHandleDirective,
|
|
664
656
|
DndPlaceholderRefDirective,
|
|
@@ -667,9 +659,9 @@ class DndModule {
|
|
|
667
659
|
DndHandleDirective,
|
|
668
660
|
DndPlaceholderRefDirective,
|
|
669
661
|
DndDragImageRefDirective] });
|
|
670
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.
|
|
662
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndModule });
|
|
671
663
|
}
|
|
672
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
664
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: DndModule, decorators: [{
|
|
673
665
|
type: NgModule,
|
|
674
666
|
args: [{
|
|
675
667
|
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';\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":"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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.removePlaceholderFromDOM();\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n return;\n }\n\n // set as active if the target element is inside this dropzone\n if (event._dndDropzoneActive == null) {\n if (this.elementRef.nativeElement.contains(event.target)) {\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, this.dndEffectAllowed);\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 this.enterCount--;\n\n // only clean up when all enter/leave pairs are balanced (cursor has truly left)\n if (this.enterCount > 0) {\n return;\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":"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"}
|