ngx-drag-drop 21.0.5 → 22.0.0
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 +30 -42
- package/fesm2022/ngx-drag-drop.mjs.map +1 -1
- package/package.json +5 -4
- package/types/ngx-drag-drop.d.ts +4 -6
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: "
|
|
157
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndDragImageRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
157
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: DndDragImageRefDirective, isStandalone: true, selector: "[dndDragImageRef]", ngImport: i0 });
|
|
158
158
|
}
|
|
159
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", 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: "
|
|
299
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
298
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
299
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", 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: "
|
|
301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndDraggableDirective, decorators: [{
|
|
302
302
|
type: Directive,
|
|
303
303
|
args: [{ selector: '[dndDraggable]', standalone: true }]
|
|
304
304
|
}], propDecorators: { dndDraggable: [{
|
|
@@ -345,25 +345,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
345
345
|
}] } });
|
|
346
346
|
|
|
347
347
|
class DndPlaceholderRefDirective {
|
|
348
|
-
elementRef;
|
|
349
|
-
constructor(elementRef) {
|
|
350
|
-
this.elementRef = elementRef;
|
|
351
|
-
}
|
|
348
|
+
elementRef = inject(ElementRef);
|
|
352
349
|
ngOnInit() {
|
|
353
350
|
// placeholder has to be "invisible" to the cursor, or it would interfere with the dragover detection for the same dropzone
|
|
354
351
|
this.elementRef.nativeElement.style.pointerEvents = 'none';
|
|
355
352
|
}
|
|
356
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
357
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
353
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndPlaceholderRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
354
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: DndPlaceholderRefDirective, isStandalone: true, selector: "[dndPlaceholderRef]", ngImport: i0 });
|
|
358
355
|
}
|
|
359
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndPlaceholderRefDirective, decorators: [{
|
|
360
357
|
type: Directive,
|
|
361
358
|
args: [{ selector: '[dndPlaceholderRef]', standalone: true }]
|
|
362
|
-
}]
|
|
359
|
+
}] });
|
|
363
360
|
class DndDropzoneDirective {
|
|
364
|
-
ngZone;
|
|
365
|
-
elementRef;
|
|
366
|
-
renderer;
|
|
367
361
|
dndDropzone = '';
|
|
368
362
|
dndEffectAllowed = 'uninitialized';
|
|
369
363
|
dndAllowExternal = false;
|
|
@@ -376,11 +370,9 @@ class DndDropzoneDirective {
|
|
|
376
370
|
placeholder = null;
|
|
377
371
|
disabled = false;
|
|
378
372
|
enterCount = 0;
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
this.renderer = renderer;
|
|
383
|
-
}
|
|
373
|
+
ngZone = inject(NgZone);
|
|
374
|
+
elementRef = inject(ElementRef);
|
|
375
|
+
renderer = inject(Renderer2);
|
|
384
376
|
set dndDisableIf(value) {
|
|
385
377
|
this.disabled = value;
|
|
386
378
|
if (this.disabled) {
|
|
@@ -411,7 +403,8 @@ class DndDropzoneDirective {
|
|
|
411
403
|
this.enterCount++;
|
|
412
404
|
// check if another dropzone is activated
|
|
413
405
|
if (event._dndDropzoneActive === true) {
|
|
414
|
-
this.
|
|
406
|
+
this.removePlaceholderFromDOM();
|
|
407
|
+
this.renderer.removeClass(this.elementRef.nativeElement, this.dndDragoverClass);
|
|
415
408
|
return;
|
|
416
409
|
}
|
|
417
410
|
// set as active if the target element is inside this dropzone
|
|
@@ -495,15 +488,10 @@ class DndDropzoneDirective {
|
|
|
495
488
|
}
|
|
496
489
|
}
|
|
497
490
|
onDragLeave(event) {
|
|
498
|
-
event.preventDefault();
|
|
499
|
-
event.stopPropagation();
|
|
500
491
|
this.enterCount--;
|
|
501
|
-
//
|
|
502
|
-
if (
|
|
503
|
-
|
|
504
|
-
event._dndDropzoneActive = true;
|
|
505
|
-
return;
|
|
506
|
-
}
|
|
492
|
+
// only clean up when all enter/leave pairs are balanced (cursor has truly left)
|
|
493
|
+
if (this.enterCount > 0) {
|
|
494
|
+
return;
|
|
507
495
|
}
|
|
508
496
|
this.cleanupDragoverState();
|
|
509
497
|
// cleanup drop effect when leaving dropzone
|
|
@@ -589,13 +577,13 @@ class DndDropzoneDirective {
|
|
|
589
577
|
this.enterCount = 0;
|
|
590
578
|
this.removePlaceholderFromDOM();
|
|
591
579
|
}
|
|
592
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
593
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
580
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndDropzoneDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
581
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", 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 });
|
|
594
582
|
}
|
|
595
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndDropzoneDirective, decorators: [{
|
|
596
584
|
type: Directive,
|
|
597
585
|
args: [{ selector: '[dndDropzone]', standalone: true }]
|
|
598
|
-
}],
|
|
586
|
+
}], propDecorators: { dndDropzone: [{
|
|
599
587
|
type: Input
|
|
600
588
|
}], dndEffectAllowed: [{
|
|
601
589
|
type: Input
|
|
@@ -635,10 +623,10 @@ class DndHandleDirective {
|
|
|
635
623
|
onDragEvent(event) {
|
|
636
624
|
event._dndUsingHandle = true;
|
|
637
625
|
}
|
|
638
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
639
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
626
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
627
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.1", type: DndHandleDirective, isStandalone: true, selector: "[dndHandle]", host: { listeners: { "dragstart": "onDragEvent($event)", "dragend": "onDragEvent($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
|
|
640
628
|
}
|
|
641
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
629
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndHandleDirective, decorators: [{
|
|
642
630
|
type: Directive,
|
|
643
631
|
args: [{ selector: '[dndHandle]', standalone: true }]
|
|
644
632
|
}], propDecorators: { draggable: [{
|
|
@@ -653,8 +641,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.5", ngImpor
|
|
|
653
641
|
}] } });
|
|
654
642
|
|
|
655
643
|
class DndModule {
|
|
656
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
657
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
644
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
645
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.0.1", ngImport: i0, type: DndModule, imports: [DndDragImageRefDirective,
|
|
658
646
|
DndDropzoneDirective,
|
|
659
647
|
DndHandleDirective,
|
|
660
648
|
DndPlaceholderRefDirective,
|
|
@@ -663,9 +651,9 @@ class DndModule {
|
|
|
663
651
|
DndHandleDirective,
|
|
664
652
|
DndPlaceholderRefDirective,
|
|
665
653
|
DndDragImageRefDirective] });
|
|
666
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
654
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndModule });
|
|
667
655
|
}
|
|
668
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
656
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.1", ngImport: i0, type: DndModule, decorators: [{
|
|
669
657
|
type: NgModule,
|
|
670
658
|
args: [{
|
|
671
659
|
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 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 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 inject,\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 readonly elementRef: ElementRef<HTMLElement> = inject(ElementRef);\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 private ngZone = inject(NgZone);\n private elementRef: ElementRef = inject(ElementRef);\n private renderer = inject(Renderer2);\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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-drag-drop",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "22.0.0",
|
|
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": ">=22.0.0",
|
|
28
|
+
"@angular/core": ">=22.0.0"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"tslib": "^2.3.0"
|
|
@@ -41,5 +41,6 @@
|
|
|
41
41
|
"default": "./fesm2022/ngx-drag-drop.mjs"
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
|
-
"sideEffects": false
|
|
44
|
+
"sideEffects": false,
|
|
45
|
+
"type": "module"
|
|
45
46
|
}
|
package/types/ngx-drag-drop.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { OnInit, OnDestroy, ElementRef, AfterViewInit, EventEmitter
|
|
2
|
+
import { OnInit, OnDestroy, ElementRef, AfterViewInit, EventEmitter } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
type DropEffect = 'move' | 'copy' | 'link' | 'none';
|
|
5
5
|
type EffectAllowed = DropEffect | 'copyMove' | 'copyLink' | 'linkMove' | 'all' | 'uninitialized';
|
|
@@ -78,15 +78,11 @@ interface DndDropEvent {
|
|
|
78
78
|
}
|
|
79
79
|
declare class DndPlaceholderRefDirective implements OnInit {
|
|
80
80
|
readonly elementRef: ElementRef<HTMLElement>;
|
|
81
|
-
constructor(elementRef: ElementRef<HTMLElement>);
|
|
82
81
|
ngOnInit(): void;
|
|
83
82
|
static ɵfac: i0.ɵɵFactoryDeclaration<DndPlaceholderRefDirective, never>;
|
|
84
83
|
static ɵdir: i0.ɵɵDirectiveDeclaration<DndPlaceholderRefDirective, "[dndPlaceholderRef]", never, {}, {}, never, never, true, never>;
|
|
85
84
|
}
|
|
86
85
|
declare class DndDropzoneDirective implements AfterViewInit, OnDestroy {
|
|
87
|
-
private ngZone;
|
|
88
|
-
private elementRef;
|
|
89
|
-
private renderer;
|
|
90
86
|
dndDropzone?: string[] | '';
|
|
91
87
|
dndEffectAllowed: EffectAllowed;
|
|
92
88
|
dndAllowExternal: boolean;
|
|
@@ -99,7 +95,9 @@ declare class DndDropzoneDirective implements AfterViewInit, OnDestroy {
|
|
|
99
95
|
private placeholder;
|
|
100
96
|
private disabled;
|
|
101
97
|
private enterCount;
|
|
102
|
-
|
|
98
|
+
private ngZone;
|
|
99
|
+
private elementRef;
|
|
100
|
+
private renderer;
|
|
103
101
|
set dndDisableIf(value: boolean);
|
|
104
102
|
set dndDisableDropIf(value: boolean);
|
|
105
103
|
ngAfterViewInit(): void;
|