ngx-drag-drop 17.0.0 → 18.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,10 +8,10 @@ export class DndDragImageRefDirective {
8
8
  ngOnInit() {
9
9
  this.dndDraggableDirective.registerDragImage(this.elementRef);
10
10
  }
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDragImageRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: DndDragImageRefDirective, isStandalone: true, selector: "[dndDragImageRef]", ngImport: i0 });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDragImageRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
12
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: DndDragImageRefDirective, isStandalone: true, selector: "[dndDragImageRef]", ngImport: i0 });
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDragImageRefDirective, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDragImageRefDirective, decorators: [{
15
15
  type: Directive,
16
16
  args: [{ selector: '[dndDragImageRef]', standalone: true }]
17
17
  }] });
@@ -91,7 +91,9 @@ export class DndDraggableDirective {
91
91
  this.dndStart.emit(event);
92
92
  event.stopPropagation();
93
93
  setTimeout(() => {
94
- this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');
94
+ if (this.isDragStarted) {
95
+ this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');
96
+ }
95
97
  }, 100);
96
98
  return true;
97
99
  }
@@ -148,10 +150,10 @@ export class DndDraggableDirective {
148
150
  return this.elementRef.nativeElement;
149
151
  }
150
152
  }
151
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
152
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", 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 });
153
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
154
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 });
153
155
  }
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDraggableDirective, decorators: [{
156
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDraggableDirective, decorators: [{
155
157
  type: Directive,
156
158
  args: [{ selector: '[dndDraggable]', standalone: true }]
157
159
  }], propDecorators: { dndDraggable: [{
@@ -196,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
196
198
  type: HostListener,
197
199
  args: ['dragend', ['$event']]
198
200
  }] } });
199
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWRyYWdnYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kbmQvc3JjL2xpYi9kbmQtZHJhZ2dhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0QsT0FBTyxFQUNMLHdCQUF3QixFQUd4QixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sYUFBYSxDQUFDOztBQUdyQixNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFVBQVUsR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpELFFBQVE7UUFDTixJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7dUdBTlUsd0JBQXdCOzJGQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs7QUFXOUQsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixZQUFZLENBQU07SUFDbEIsZ0JBQWdCLEdBQWtCLE1BQU0sQ0FBQztJQUN6QyxPQUFPLENBQVU7SUFDakIsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLHNCQUFzQixHQUFHLG1CQUFtQixD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TTtnQkFHd0IsU0FBUztzQkFBdkMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBV2hCLFlBQVk7c0JBQXhCLEtBQUs7Z0JBZ0JPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkF1QmlDLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQThEQSxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEbmRIYW5kbGVEaXJlY3RpdmUgfSBmcm9tICcuL2RuZC1oYW5kbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IGRuZFN0YXRlLCBlbmREcmFnLCBzdGFydERyYWcgfSBmcm9tICcuL2RuZC1zdGF0ZSc7XG5pbXBvcnQgeyBFZmZlY3RBbGxvd2VkIH0gZnJvbSAnLi9kbmQtdHlwZXMnO1xuaW1wb3J0IHtcbiAgY2FsY3VsYXRlRHJhZ0ltYWdlT2Zmc2V0LFxuICBEbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvbixcbiAgRG5kRXZlbnQsXG4gIHNldERyYWdEYXRhLFxuICBzZXREcmFnSW1hZ2UsXG59IGZyb20gJy4vZG5kLXV0aWxzJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2RuZERyYWdJbWFnZVJlZl0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRG5kRHJhZ0ltYWdlUmVmRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgZG5kRHJhZ2dhYmxlRGlyZWN0aXZlID0gaW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gRG5kRHJhZ2dhYmxlRGlyZWN0aXZlKSk7XG4gIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZG5kRHJhZ2dhYmxlRGlyZWN0aXZlLnJlZ2lzdGVyRHJhZ0ltYWdlKHRoaXMuZWxlbWVudFJlZik7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2RuZERyYWdnYWJsZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRG5kRHJhZ2dhYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZG5kRHJhZ2dhYmxlOiBhbnk7XG4gIEBJbnB1dCgpIGRuZEVmZmVjdEFsbG93ZWQ6IEVmZmVjdEFsbG93ZWQgPSAnY29weSc7XG4gIEBJbnB1dCgpIGRuZFR5cGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRuZERyYWdnaW5nQ2xhc3MgPSAnZG5kRHJhZ2dpbmcnO1xuICBASW5wdXQoKSBkbmREcmFnZ2luZ1NvdXJjZUNsYXNzID0gJ2RuZERyYWdnaW5nU291cmNlJztcbiAgQElucHV0KCkgZG5kRHJhZ2dhYmxlRGlzYWJsZWRDbGFzcyA9ICdkbmREcmFnZ2FibGVEaXNhYmxlZCc7XG4gIEBJbnB1dCgpIGRuZERyYWdJbWFnZU9mZnNldEZ1bmN0aW9uOiBEbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvbiA9XG4gICAgY2FsY3VsYXRlRHJhZ0ltYWdlT2Zmc2V0O1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmRTdGFydDogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kRHJhZzogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kRW5kOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmRNb3ZlZDogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kQ29waWVkOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmRMaW5rZWQ6IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRuZENhbmNlbGVkOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRyYWdnYWJsZScpIGRyYWdnYWJsZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBkbmRIYW5kbGU/OiBEbmRIYW5kbGVEaXJlY3RpdmU7XG4gIHByaXZhdGUgZG5kRHJhZ0ltYWdlRWxlbWVudFJlZj86IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgZHJhZ0ltYWdlOiBFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzRHJhZ1N0YXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgQElucHV0KCkgc2V0IGRuZERpc2FibGVJZih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZHJhZ2dhYmxlID0gIXZhbHVlO1xuXG4gICAgaWYgKHRoaXMuZHJhZ2dhYmxlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kbmREcmFnZ2FibGVEaXNhYmxlZENsYXNzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kbmREcmFnZ2FibGVEaXNhYmxlZENsYXNzXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkbmREaXNhYmxlRHJhZ0lmKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kbmREaXNhYmxlSWYgPSB2YWx1ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnZHJhZycsXG4gICAgICAgIHRoaXMuZHJhZ0V2ZW50SGFuZGxlclxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAnZHJhZycsXG4gICAgICB0aGlzLmRyYWdFdmVudEhhbmRsZXJcbiAgICApO1xuICAgIGlmICh0aGlzLmlzRHJhZ1N0YXJ0ZWQpIHtcbiAgICAgIGVuZERyYWcoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnc3RhcnQnLCBbJyRldmVudCddKSBvbkRyYWdTdGFydChldmVudDogRG5kRXZlbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dhYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgZG5kIGhhbmRsZSBhbmQgaWYgdGhlIGRuZCBoYW5kbGUgd2FzIHVzZWQgdG8gc3RhcnQgdGhlIGRyYWdcbiAgICBpZiAodGhpcy5kbmRIYW5kbGUgIT0gbnVsbCAmJiBldmVudC5fZG5kVXNpbmdIYW5kbGUgPT0gbnVsbCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaW5pdGlhbGl6ZSBnbG9iYWwgc3RhdGVcbiAgICBzdGFydERyYWcoZXZlbnQsIHRoaXMuZG5kRWZmZWN0QWxsb3dlZCwgdGhpcy5kbmRUeXBlKTtcblxuICAgIHRoaXMuaXNEcmFnU3RhcnRlZCA9IHRydWU7XG5cbiAgICBzZXREcmFnRGF0YShcbiAgICAgIGV2ZW50LFxuICAgICAgeyBkYXRhOiB0aGlzLmRuZERyYWdnYWJsZSwgdHlwZTogdGhpcy5kbmRUeXBlIH0sXG4gICAgICBkbmRTdGF0ZS5lZmZlY3RBbGxvd2VkIVxuICAgICk7XG5cbiAgICB0aGlzLmRyYWdJbWFnZSA9IHRoaXMuZGV0ZXJtaW5lRHJhZ0ltYWdlKCk7XG5cbiAgICAvLyBzZXQgZHJhZ2dpbmcgY3NzIGNsYXNzIHByaW9yIHRvIHNldERyYWdJbWFnZSBzbyBzdHlsZXMgYXJlIGFwcGxpZWQgYmVmb3JlXG4gICAgLy8gVE9ETyBicmVha2luZyBjaGFuZ2U6IGFkZCBjbGFzcyB0byBlbGVtZW50UmVmIHJhdGhlciB0aGFuIGRyYWcgaW1hZ2Ugd2hpY2ggY291bGQgYmUgYW5vdGhlciBlbGVtZW50XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyYWdJbWFnZSwgdGhpcy5kbmREcmFnZ2luZ0NsYXNzKTtcblxuICAgIC8vIHNldCBjdXN0b20gZHJhZ2ltYWdlIGlmIHByZXNlbnRcbiAgICAvLyBzZXQgZHJhZ2ltYWdlIGlmIGRyYWcgaXMgc3RhcnRlZCBmcm9tIGRuZEhhbmRsZVxuICAgIGlmICh0aGlzLmRuZERyYWdJbWFnZUVsZW1lbnRSZWYgIT0gbnVsbCB8fCBldmVudC5fZG5kVXNpbmdIYW5kbGUgIT0gbnVsbCkge1xuICAgICAgc2V0RHJhZ0ltYWdlKGV2ZW50LCB0aGlzLmRyYWdJbWFnZSwgdGhpcy5kbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvbik7XG4gICAgfVxuXG4gICAgLy8gYWRkIGRyYWdnaW5nIHNvdXJjZSBjc3MgY2xhc3Mgb24gZmlyc3QgZHJhZyBldmVudFxuICAgIGNvbnN0IHVucmVnaXN0ZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2RyYWcnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIHRoaXMuZG5kRHJhZ2dpbmdTb3VyY2VDbGFzc1xuICAgICAgICApO1xuICAgICAgICB1bnJlZ2lzdGVyKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuZG5kU3RhcnQuZW1pdChldmVudCk7XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdJbWFnZSwgJ3BvaW50ZXItZXZlbnRzJywgJ25vbmUnKTtcbiAgICB9LCAxMDApO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBvbkRyYWcoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIHRoaXMuZG5kRHJhZy5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RyYWdlbmQnLCBbJyRldmVudCddKSBvbkRyYWdFbmQoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIGlmICghdGhpcy5kcmFnZ2FibGUgfHwgIXRoaXMuaXNEcmFnU3RhcnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBnZXQgZHJvcCBlZmZlY3QgZnJvbSBjdXN0b20gc3RvcmVkIHN0YXRlIGFzIGl0cyBub3QgcmVsaWFibGUgYWNyb3NzIGJyb3dzZXJzXG4gICAgY29uc3QgZHJvcEVmZmVjdCA9IGRuZFN0YXRlLmRyb3BFZmZlY3Q7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuZHJhZ0ltYWdlLCAncG9pbnRlci1ldmVudHMnLCAndW5zZXQnKTtcblxuICAgIGxldCBkcm9wRWZmZWN0RW1pdHRlcjogRXZlbnRFbWl0dGVyPERyYWdFdmVudD47XG5cbiAgICBzd2l0Y2ggKGRyb3BFZmZlY3QpIHtcbiAgICAgIGNhc2UgJ2NvcHknOlxuICAgICAgICBkcm9wRWZmZWN0RW1pdHRlciA9IHRoaXMuZG5kQ29waWVkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbGluayc6XG4gICAgICAgIGRyb3BFZmZlY3RFbWl0dGVyID0gdGhpcy5kbmRMaW5rZWQ7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdtb3ZlJzpcbiAgICAgICAgZHJvcEVmZmVjdEVtaXR0ZXIgPSB0aGlzLmRuZE1vdmVkO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZHJvcEVmZmVjdEVtaXR0ZXIgPSB0aGlzLmRuZENhbmNlbGVkO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkcm9wRWZmZWN0RW1pdHRlci5lbWl0KGV2ZW50KTtcbiAgICB0aGlzLmRuZEVuZC5lbWl0KGV2ZW50KTtcblxuICAgIC8vIHJlc2V0IGdsb2JhbCBzdGF0ZVxuICAgIGVuZERyYWcoKTtcblxuICAgIHRoaXMuaXNEcmFnU3RhcnRlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLmRyYWdJbWFnZSwgdGhpcy5kbmREcmFnZ2luZ0NsYXNzKTtcblxuICAgIC8vIElFOSBzcGVjaWFsIGhhbW1lcmluZ1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRuZERyYWdnaW5nU291cmNlQ2xhc3NcbiAgICAgICk7XG4gICAgfSwgMCk7XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHJlZ2lzdGVyRHJhZ0hhbmRsZShoYW5kbGU6IERuZEhhbmRsZURpcmVjdGl2ZSB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuZG5kSGFuZGxlID0gaGFuZGxlO1xuICB9XG5cbiAgcmVnaXN0ZXJEcmFnSW1hZ2UoZWxlbWVudFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZCkge1xuICAgIHRoaXMuZG5kRHJhZ0ltYWdlRWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRyYWdFdmVudEhhbmRsZXI6IChldmVudDogRHJhZ0V2ZW50KSA9PiB2b2lkID0gKFxuICAgIGV2ZW50OiBEcmFnRXZlbnRcbiAgKSA9PiB0aGlzLm9uRHJhZyhldmVudCk7XG5cbiAgcHJpdmF0ZSBkZXRlcm1pbmVEcmFnSW1hZ2UoKTogRWxlbWVudCB7XG4gICAgLy8gZXZhbHVhdGUgY3VzdG9tIGRyYWcgaW1hZ2UgZXhpc3RlbmNlXG4gICAgaWYgKHR5cGVvZiB0aGlzLmRuZERyYWdJbWFnZUVsZW1lbnRSZWYgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5kbmREcmFnSW1hZ2VFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgRWxlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cbiAgfVxufVxuIl19
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWRyYWdnYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kbmQvc3JjL2xpYi9kbmQtZHJhZ2dhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0QsT0FBTyxFQUNMLHdCQUF3QixFQUd4QixXQUFXLEVBQ1gsWUFBWSxHQUNiLE1BQU0sYUFBYSxDQUFDOztBQUdyQixNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDO0lBQ3hFLFVBQVUsR0FBNEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXpELFFBQVE7UUFDTixJQUFJLENBQUMscUJBQXFCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7dUdBTlUsd0JBQXdCOzJGQUF4Qix3QkFBd0I7OzJGQUF4Qix3QkFBd0I7a0JBRHBDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRTs7QUFXOUQsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixZQUFZLENBQU07SUFDbEIsZ0JBQWdCLEdBQWtCLE1BQU0sQ0FBQztJQUN6QyxPQUFPLENBQVU7SUFDakIsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDO0lBQ2pDLHNCQUFzQixHQUFHLG1CQUFtQixD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QkFBMUIsTUFBTTtnQkFFWSxPQUFPO3NCQUF6QixNQUFNO2dCQUVZLE1BQU07c0JBQXhCLE1BQU07Z0JBRVksUUFBUTtzQkFBMUIsTUFBTTtnQkFFWSxTQUFTO3NCQUEzQixNQUFNO2dCQUVZLFNBQVM7c0JBQTNCLE1BQU07Z0JBRVksV0FBVztzQkFBN0IsTUFBTTtnQkFHd0IsU0FBUztzQkFBdkMsV0FBVzt1QkFBQyxnQkFBZ0I7Z0JBV2hCLFlBQVk7c0JBQXhCLEtBQUs7Z0JBZ0JPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkF1QmlDLFdBQVc7c0JBQWpELFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWdFQSxTQUFTO3NCQUE3QyxZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEbmRIYW5kbGVEaXJlY3RpdmUgfSBmcm9tICcuL2RuZC1oYW5kbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IGRuZFN0YXRlLCBlbmREcmFnLCBzdGFydERyYWcgfSBmcm9tICcuL2RuZC1zdGF0ZSc7XG5pbXBvcnQgeyBFZmZlY3RBbGxvd2VkIH0gZnJvbSAnLi9kbmQtdHlwZXMnO1xuaW1wb3J0IHtcbiAgY2FsY3VsYXRlRHJhZ0ltYWdlT2Zmc2V0LFxuICBEbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvbixcbiAgRG5kRXZlbnQsXG4gIHNldERyYWdEYXRhLFxuICBzZXREcmFnSW1hZ2UsXG59IGZyb20gJy4vZG5kLXV0aWxzJztcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2RuZERyYWdJbWFnZVJlZl0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRG5kRHJhZ0ltYWdlUmVmRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgZG5kRHJhZ2dhYmxlRGlyZWN0aXZlID0gaW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gRG5kRHJhZ2dhYmxlRGlyZWN0aXZlKSk7XG4gIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZG5kRHJhZ2dhYmxlRGlyZWN0aXZlLnJlZ2lzdGVyRHJhZ0ltYWdlKHRoaXMuZWxlbWVudFJlZik7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2RuZERyYWdnYWJsZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXG5leHBvcnQgY2xhc3MgRG5kRHJhZ2dhYmxlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZG5kRHJhZ2dhYmxlOiBhbnk7XG4gIEBJbnB1dCgpIGRuZEVmZmVjdEFsbG93ZWQ6IEVmZmVjdEFsbG93ZWQgPSAnY29weSc7XG4gIEBJbnB1dCgpIGRuZFR5cGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRuZERyYWdnaW5nQ2xhc3MgPSAnZG5kRHJhZ2dpbmcnO1xuICBASW5wdXQoKSBkbmREcmFnZ2luZ1NvdXJjZUNsYXNzID0gJ2RuZERyYWdnaW5nU291cmNlJztcbiAgQElucHV0KCkgZG5kRHJhZ2dhYmxlRGlzYWJsZWRDbGFzcyA9ICdkbmREcmFnZ2FibGVEaXNhYmxlZCc7XG4gIEBJbnB1dCgpIGRuZERyYWdJbWFnZU9mZnNldEZ1bmN0aW9uOiBEbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvbiA9XG4gICAgY2FsY3VsYXRlRHJhZ0ltYWdlT2Zmc2V0O1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmRTdGFydDogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kRHJhZzogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kRW5kOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmRNb3ZlZDogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kQ29waWVkOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmRMaW5rZWQ6IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGRuZENhbmNlbGVkOiBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRyYWdnYWJsZScpIGRyYWdnYWJsZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBkbmRIYW5kbGU/OiBEbmRIYW5kbGVEaXJlY3RpdmU7XG4gIHByaXZhdGUgZG5kRHJhZ0ltYWdlRWxlbWVudFJlZj86IEVsZW1lbnRSZWY7XG4gIHByaXZhdGUgZHJhZ0ltYWdlOiBFbGVtZW50IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGlzRHJhZ1N0YXJ0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+ID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgQElucHV0KCkgc2V0IGRuZERpc2FibGVJZih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZHJhZ2dhYmxlID0gIXZhbHVlO1xuXG4gICAgaWYgKHRoaXMuZHJhZ2dhYmxlKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kbmREcmFnZ2FibGVEaXNhYmxlZENsYXNzXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kbmREcmFnZ2FibGVEaXNhYmxlZENsYXNzXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkbmREaXNhYmxlRHJhZ0lmKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kbmREaXNhYmxlSWYgPSB2YWx1ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnZHJhZycsXG4gICAgICAgIHRoaXMuZHJhZ0V2ZW50SGFuZGxlclxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAnZHJhZycsXG4gICAgICB0aGlzLmRyYWdFdmVudEhhbmRsZXJcbiAgICApO1xuICAgIGlmICh0aGlzLmlzRHJhZ1N0YXJ0ZWQpIHtcbiAgICAgIGVuZERyYWcoKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnc3RhcnQnLCBbJyRldmVudCddKSBvbkRyYWdTdGFydChldmVudDogRG5kRXZlbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dhYmxlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgZG5kIGhhbmRsZSBhbmQgaWYgdGhlIGRuZCBoYW5kbGUgd2FzIHVzZWQgdG8gc3RhcnQgdGhlIGRyYWdcbiAgICBpZiAodGhpcy5kbmRIYW5kbGUgIT0gbnVsbCAmJiBldmVudC5fZG5kVXNpbmdIYW5kbGUgPT0gbnVsbCkge1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaW5pdGlhbGl6ZSBnbG9iYWwgc3RhdGVcbiAgICBzdGFydERyYWcoZXZlbnQsIHRoaXMuZG5kRWZmZWN0QWxsb3dlZCwgdGhpcy5kbmRUeXBlKTtcblxuICAgIHRoaXMuaXNEcmFnU3RhcnRlZCA9IHRydWU7XG5cbiAgICBzZXREcmFnRGF0YShcbiAgICAgIGV2ZW50LFxuICAgICAgeyBkYXRhOiB0aGlzLmRuZERyYWdnYWJsZSwgdHlwZTogdGhpcy5kbmRUeXBlIH0sXG4gICAgICBkbmRTdGF0ZS5lZmZlY3RBbGxvd2VkIVxuICAgICk7XG5cbiAgICB0aGlzLmRyYWdJbWFnZSA9IHRoaXMuZGV0ZXJtaW5lRHJhZ0ltYWdlKCk7XG5cbiAgICAvLyBzZXQgZHJhZ2dpbmcgY3NzIGNsYXNzIHByaW9yIHRvIHNldERyYWdJbWFnZSBzbyBzdHlsZXMgYXJlIGFwcGxpZWQgYmVmb3JlXG4gICAgLy8gVE9ETyBicmVha2luZyBjaGFuZ2U6IGFkZCBjbGFzcyB0byBlbGVtZW50UmVmIHJhdGhlciB0aGFuIGRyYWcgaW1hZ2Ugd2hpY2ggY291bGQgYmUgYW5vdGhlciBlbGVtZW50XG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLmRyYWdJbWFnZSwgdGhpcy5kbmREcmFnZ2luZ0NsYXNzKTtcblxuICAgIC8vIHNldCBjdXN0b20gZHJhZ2ltYWdlIGlmIHByZXNlbnRcbiAgICAvLyBzZXQgZHJhZ2ltYWdlIGlmIGRyYWcgaXMgc3RhcnRlZCBmcm9tIGRuZEhhbmRsZVxuICAgIGlmICh0aGlzLmRuZERyYWdJbWFnZUVsZW1lbnRSZWYgIT0gbnVsbCB8fCBldmVudC5fZG5kVXNpbmdIYW5kbGUgIT0gbnVsbCkge1xuICAgICAgc2V0RHJhZ0ltYWdlKGV2ZW50LCB0aGlzLmRyYWdJbWFnZSwgdGhpcy5kbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvbik7XG4gICAgfVxuXG4gICAgLy8gYWRkIGRyYWdnaW5nIHNvdXJjZSBjc3MgY2xhc3Mgb24gZmlyc3QgZHJhZyBldmVudFxuICAgIGNvbnN0IHVucmVnaXN0ZXIgPSB0aGlzLnJlbmRlcmVyLmxpc3RlbihcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgJ2RyYWcnLFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIHRoaXMuZG5kRHJhZ2dpbmdTb3VyY2VDbGFzc1xuICAgICAgICApO1xuICAgICAgICB1bnJlZ2lzdGVyKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHRoaXMuZG5kU3RhcnQuZW1pdChldmVudCk7XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYodGhpcy5pc0RyYWdTdGFydGVkKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5kcmFnSW1hZ2UsICdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XG4gICAgICB9XG4gICAgfSwgMTAwKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgb25EcmFnKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICB0aGlzLmRuZERyYWcuZW1pdChldmVudCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcmFnZW5kJywgWyckZXZlbnQnXSkgb25EcmFnRW5kKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMuZHJhZ2dhYmxlIHx8ICF0aGlzLmlzRHJhZ1N0YXJ0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gZ2V0IGRyb3AgZWZmZWN0IGZyb20gY3VzdG9tIHN0b3JlZCBzdGF0ZSBhcyBpdHMgbm90IHJlbGlhYmxlIGFjcm9zcyBicm93c2Vyc1xuICAgIGNvbnN0IGRyb3BFZmZlY3QgPSBkbmRTdGF0ZS5kcm9wRWZmZWN0O1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmRyYWdJbWFnZSwgJ3BvaW50ZXItZXZlbnRzJywgJ3Vuc2V0Jyk7XG5cbiAgICBsZXQgZHJvcEVmZmVjdEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+O1xuXG4gICAgc3dpdGNoIChkcm9wRWZmZWN0KSB7XG4gICAgICBjYXNlICdjb3B5JzpcbiAgICAgICAgZHJvcEVmZmVjdEVtaXR0ZXIgPSB0aGlzLmRuZENvcGllZDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2xpbmsnOlxuICAgICAgICBkcm9wRWZmZWN0RW1pdHRlciA9IHRoaXMuZG5kTGlua2VkO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbW92ZSc6XG4gICAgICAgIGRyb3BFZmZlY3RFbWl0dGVyID0gdGhpcy5kbmRNb3ZlZDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGRyb3BFZmZlY3RFbWl0dGVyID0gdGhpcy5kbmRDYW5jZWxlZDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZHJvcEVmZmVjdEVtaXR0ZXIuZW1pdChldmVudCk7XG4gICAgdGhpcy5kbmRFbmQuZW1pdChldmVudCk7XG5cbiAgICAvLyByZXNldCBnbG9iYWwgc3RhdGVcbiAgICBlbmREcmFnKCk7XG5cbiAgICB0aGlzLmlzRHJhZ1N0YXJ0ZWQgPSBmYWxzZTtcblxuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5kcmFnSW1hZ2UsIHRoaXMuZG5kRHJhZ2dpbmdDbGFzcyk7XG5cbiAgICAvLyBJRTkgc3BlY2lhbCBoYW1tZXJpbmdcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kbmREcmFnZ2luZ1NvdXJjZUNsYXNzXG4gICAgICApO1xuICAgIH0sIDApO1xuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICByZWdpc3RlckRyYWdIYW5kbGUoaGFuZGxlOiBEbmRIYW5kbGVEaXJlY3RpdmUgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmRuZEhhbmRsZSA9IGhhbmRsZTtcbiAgfVxuXG4gIHJlZ2lzdGVyRHJhZ0ltYWdlKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLmRuZERyYWdJbWFnZUVsZW1lbnRSZWYgPSBlbGVtZW50UmVmO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkcmFnRXZlbnRIYW5kbGVyOiAoZXZlbnQ6IERyYWdFdmVudCkgPT4gdm9pZCA9IChcbiAgICBldmVudDogRHJhZ0V2ZW50XG4gICkgPT4gdGhpcy5vbkRyYWcoZXZlbnQpO1xuXG4gIHByaXZhdGUgZGV0ZXJtaW5lRHJhZ0ltYWdlKCk6IEVsZW1lbnQge1xuICAgIC8vIGV2YWx1YXRlIGN1c3RvbSBkcmFnIGltYWdlIGV4aXN0ZW5jZVxuICAgIGlmICh0eXBlb2YgdGhpcy5kbmREcmFnSW1hZ2VFbGVtZW50UmVmICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMuZG5kRHJhZ0ltYWdlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEVsZW1lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -11,10 +11,10 @@ export class DndPlaceholderRefDirective {
11
11
  // placeholder has to be "invisible" to the cursor, or it would interfere with the dragover detection for the same dropzone
12
12
  this.elementRef.nativeElement.style.pointerEvents = 'none';
13
13
  }
14
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndPlaceholderRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
15
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: DndPlaceholderRefDirective, isStandalone: true, selector: "[dndPlaceholderRef]", ngImport: i0 });
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndPlaceholderRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
15
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: DndPlaceholderRefDirective, isStandalone: true, selector: "[dndPlaceholderRef]", ngImport: i0 });
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndPlaceholderRefDirective, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndPlaceholderRefDirective, decorators: [{
18
18
  type: Directive,
19
19
  args: [{ selector: '[dndPlaceholderRef]', standalone: true }]
20
20
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
@@ -244,10 +244,10 @@ export class DndDropzoneDirective {
244
244
  this.renderer.removeClass(this.elementRef.nativeElement, this.dndDragoverClass);
245
245
  this.removePlaceholderFromDOM();
246
246
  }
247
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
248
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", 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 });
247
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
248
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 });
249
249
  }
250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDropzoneDirective, decorators: [{
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDropzoneDirective, decorators: [{
251
251
  type: Directive,
252
252
  args: [{ selector: '[dndDropzone]', standalone: true }]
253
253
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { dndDropzone: [{
@@ -277,4 +277,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
277
277
  type: HostListener,
278
278
  args: ['drop', ['$event']]
279
279
  }] } });
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWRyb3B6b25lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RuZC9zcmMvbGliL2RuZC1kcm9wem9uZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUdMLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsc0NBQXNDLEdBQ3ZDLE1BQU0sYUFBYSxDQUFDOztBQVlyQixNQUFNLE9BQU8sMEJBQTBCO0lBQ1Q7SUFBNUIsWUFBNEIsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFBRyxDQUFDO0lBRW5FLFFBQVE7UUFDTiwySEFBMkg7UUFDM0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDN0QsQ0FBQzt1R0FOVSwwQkFBMEI7MkZBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOztBQVdoRSxNQUFNLE9BQU8sb0JBQW9CO0lBMkJyQjtJQUNBO0lBQ0E7SUE1QkQsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFakMsZ0JBQWdCLEdBQWtCLGVBQWUsQ0FBQztJQUVsRCxnQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFFbEMsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUUvQixnQkFBZ0IsR0FBVyxhQUFhLENBQUM7SUFFekMsd0JBQXdCLEdBQUcscUJBQXFCLENBQUM7SUFFdkMsV0FBVyxH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Q3ZCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQ3RCLENBQUM7UUFFRixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO3VHQTdWVSxvQkFBb0I7MkZBQXBCLG9CQUFvQiw0aEJBbUJqQiwwQkFBMEI7OzJGQW5CN0Isb0JBQW9CO2tCQURoQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOzRIQUUvQyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsYUFBYTtzQkFBckIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRUcsd0JBQXdCO3NCQUFoQyxLQUFLO2dCQUVhLFdBQVc7c0JBQTdCLE1BQU07Z0JBR1ksT0FBTztzQkFBekIsTUFBTTtnQkFJVSxpQkFBaUI7c0JBRGpDLFlBQVk7dUJBQUMsMEJBQTBCO2dCQWEzQixZQUFZO3NCQUF4QixLQUFLO2dCQWdCTyxnQkFBZ0I7c0JBQTVCLEtBQUs7Z0JBeUc0QixNQUFNO3NCQUF2QyxZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGdldERuZFR5cGUsXG4gIGdldERyb3BFZmZlY3QsXG4gIGlzRXh0ZXJuYWxEcmFnLFxuICBzZXREcm9wRWZmZWN0LFxufSBmcm9tICcuL2RuZC1zdGF0ZSc7XG5pbXBvcnQgeyBEcm9wRWZmZWN0LCBFZmZlY3RBbGxvd2VkIH0gZnJvbSAnLi9kbmQtdHlwZXMnO1xuaW1wb3J0IHtcbiAgRG5kRXZlbnQsXG4gIERyYWdEcm9wRGF0YSxcbiAgZ2V0RGlyZWN0Q2hpbGRFbGVtZW50LFxuICBnZXREcm9wRGF0YSxcbiAgc2hvdWxkUG9zaXRpb25QbGFjZWhvbGRlckJlZm9yZUVsZW1lbnQsXG59IGZyb20gJy4vZG5kLXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBEbmREcm9wRXZlbnQge1xuICBldmVudDogRHJhZ0V2ZW50O1xuICBkcm9wRWZmZWN0OiBEcm9wRWZmZWN0O1xuICBpc0V4dGVybmFsOiBib29sZWFuO1xuICBkYXRhPzogYW55O1xuICBpbmRleD86IG51bWJlcjtcbiAgdHlwZT86IGFueTtcbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2RuZFBsYWNlaG9sZGVyUmVmXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBEbmRQbGFjZWhvbGRlclJlZkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBwbGFjZWhvbGRlciBoYXMgdG8gYmUgXCJpbnZpc2libGVcIiB0byB0aGUgY3Vyc29yLCBvciBpdCB3b3VsZCBpbnRlcmZlcmUgd2l0aCB0aGUgZHJhZ292ZXIgZGV0ZWN0aW9uIGZvciB0aGUgc2FtZSBkcm9wem9uZVxuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gIH1cbn1cblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2RuZERyb3B6b25lXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBEbmREcm9wem9uZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGRuZERyb3B6b25lPzogc3RyaW5nW10gfCAnJyA9ICcnO1xuXG4gIEBJbnB1dCgpIGRuZEVmZmVjdEFsbG93ZWQ6IEVmZmVjdEFsbG93ZWQgPSAndW5pbml0aWFsaXplZCc7XG5cbiAgQElucHV0KCkgZG5kQWxsb3dFeHRlcm5hbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGRuZEhvcml6b250YWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBkbmREcmFnb3ZlckNsYXNzOiBzdHJpbmcgPSAnZG5kRHJhZ292ZXInO1xuXG4gIEBJbnB1dCgpIGRuZERyb3B6b25lRGlzYWJsZWRDbGFzcyA9ICdkbmREcm9wem9uZURpc2FibGVkJztcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kRHJhZ292ZXI6IEV2ZW50RW1pdHRlcjxEcmFnRXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPERyYWdFdmVudD4oKTtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgZG5kRHJvcDogRXZlbnRFbWl0dGVyPERuZERyb3BFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RG5kRHJvcEV2ZW50PigpO1xuXG4gIEBDb250ZW50Q2hpbGQoRG5kUGxhY2Vob2xkZXJSZWZEaXJlY3RpdmUpXG4gIHByaXZhdGUgcmVhZG9ubHkgZG5kUGxhY2Vob2xkZXJSZWY/OiBEbmRQbGFjZWhvbGRlclJlZkRpcmVjdGl2ZTtcblxuICBwcml2YXRlIHBsYWNlaG9sZGVyOiBFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgQElucHV0KCkgc2V0IGRuZERpc2FibGVJZih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKFxuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgdGhpcy5kbmREcm9wem9uZURpc2FibGVkQ2xhc3NcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRuZERyb3B6b25lRGlzYWJsZWRDbGFzc1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBzZXQgZG5kRGlzYWJsZURyb3BJZih2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZG5kRGlzYWJsZUlmID0gdmFsdWU7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMudHJ5R2V0UGxhY2Vob2xkZXIoKTtcblxuICAgIHRoaXMucmVtb3ZlUGxhY2Vob2xkZXJGcm9tRE9NKCk7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnZHJhZ2VudGVyJyxcbiAgICAgICAgdGhpcy5kcmFnRW50ZXJFdmVudEhhbmRsZXJcbiAgICAgICk7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnZHJhZ292ZXInLFxuICAgICAgICB0aGlzLmRyYWdPdmVyRXZlbnRIYW5kbGVyXG4gICAgICApO1xuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ2RyYWdsZWF2ZScsXG4gICAgICAgIHRoaXMuZHJhZ0xlYXZlRXZlbnRIYW5kbGVyXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkcmFnZW50ZXInLFxuICAgICAgdGhpcy5kcmFnRW50ZXJFdmVudEhhbmRsZXJcbiAgICApO1xuICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAnZHJhZ292ZXInLFxuICAgICAgdGhpcy5kcmFnT3ZlckV2ZW50SGFuZGxlclxuICAgICk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkcmFnbGVhdmUnLFxuICAgICAgdGhpcy5kcmFnTGVhdmVFdmVudEhhbmRsZXJcbiAgICApO1xuICB9XG5cbiAgb25EcmFnRW50ZXIoZXZlbnQ6IERuZEV2ZW50KSB7XG4gICAgLy8gY2hlY2sgaWYgYW5vdGhlciBkcm9wem9uZSBpcyBhY3RpdmF0ZWRcbiAgICBpZiAoZXZlbnQuX2RuZERyb3B6b25lQWN0aXZlID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmNsZWFudXBEcmFnb3ZlclN0YXRlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gc2V0IGFzIGFjdGl2ZSBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgaXMgaW5zaWRlIHRoaXMgZHJvcHpvbmVcbiAgICBpZiAoZXZlbnQuX2RuZERyb3B6b25lQWN0aXZlID09IG51bGwpIHtcbiAgICAgIGNvbnN0IG5ld1RhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XG5cbiAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhuZXdUYXJnZXQpKSB7XG4gICAgICAgIGV2ZW50Ll9kbmREcm9wem9uZUFjdGl2ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgdGhpcyBkcmFnIGV2ZW50IGlzIGFsbG93ZWQgdG8gZHJvcCBvbiB0aGlzIGRyb3B6b25lXG4gICAgY29uc3QgdHlwZSA9IGdldERuZFR5cGUoZXZlbnQpO1xuICAgIGlmICghdGhpcy5pc0Ryb3BBbGxvd2VkKHR5cGUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYWxsb3cgdGhlIGRyYWdlbnRlclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAvLyBXaXRoIG5lc3RlZCBkcm9wem9uZXMsIHdlIHdhbnQgdG8gaWdub3JlIHRoaXMgZXZlbnQgaWYgYSBjaGlsZCBkcm9wem9uZVxuICAgIC8vIGhhcyBhbHJlYWR5IGhhbmRsZWQgYSBkcmFnb3Zlci4gIEhpc3RvcmljYWxseSwgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgd2FzXG4gICAgLy8gdXNlZCB0byBwcmV2ZW50IHRoaXMgYnViYmxpbmcsIGJ1dCB0aGF0IHByZXZlbnRzIGFueSBkcmFnb3ZlcnMgb3V0c2lkZSB0aGVcbiAgICAvLyBuZ3gtZHJhZy1kcm9wIGNvbXBvbmVudCwgYW5kIHN0b3BzIG90aGVyIHVzZSBjYXNlcyBzdWNoIGFzIHNjcm9sbGluZyBvbiBkcmFnLlxuICAgIC8vIEluc3RlYWQsIHdlIGNhbiBjaGVjayBpZiB0aGUgZXZlbnQgd2FzIGFscmVhZHkgcHJldmVudGVkIGJ5IGEgY2hpbGQgYW5kIGJhaWwgZWFybHkuXG4gICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiB0aGlzIGRyYWcgZXZlbnQgaXMgYWxsb3dlZCB0byBkcm9wIG9uIHRoaXMgZHJvcHpvbmVcbiAgICBjb25zdCB0eXBlID0gZ2V0RG5kVHlwZShldmVudCk7XG4gICAgaWYgKCF0aGlzLmlzRHJvcEFsbG93ZWQodHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlUGxhY2Vob2xkZXJQb3NpdGlvbihldmVudCk7XG5cbiAgICBjb25zdCBkcm9wRWZmZWN0ID0gZ2V0RHJvcEVmZmVjdChldmVudCwgdGhpcy5kbmRFZmZlY3RBbGxvd2VkKTtcblxuICAgIGlmIChkcm9wRWZmZWN0ID09PSAnbm9uZScpIHtcbiAgICAgIHRoaXMuY2xlYW51cERyYWdvdmVyU3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyB0aGUgZHJhZ292ZXJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gc2V0IHRoZSBkcm9wIGVmZmVjdFxuICAgIHNldERyb3BFZmZlY3QoZXZlbnQsIGRyb3BFZmZlY3QpO1xuXG4gICAgdGhpcy5kbmREcmFnb3Zlci5lbWl0KGV2ZW50KTtcblxuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMuZG5kRHJhZ292ZXJDbGFzc1xuICAgICk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdkcm9wJywgWyckZXZlbnQnXSkgb25Ecm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICB0cnkge1xuICAgICAgLy8gY2hlY2sgaWYgdGhpcyBkcmFnIGV2ZW50IGlzIGFsbG93ZWQgdG8gZHJvcCBvbiB0aGlzIGRyb3B6b25lXG4gICAgICBjb25zdCB0eXBlID0gZ2V0RG5kVHlwZShldmVudCk7XG4gICAgICBpZiAoIXRoaXMuaXNEcm9wQWxsb3dlZCh0eXBlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGE6IERyYWdEcm9wRGF0YSA9IGdldERyb3BEYXRhKGV2ZW50LCBpc0V4dGVybmFsRHJhZygpKTtcblxuICAgICAgaWYgKCF0aGlzLmlzRHJvcEFsbG93ZWQoZGF0YS50eXBlKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNpZ25hbCBjdXN0b20gZHJvcCBoYW5kbGluZ1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgY29uc3QgZHJvcEVmZmVjdCA9IGdldERyb3BFZmZlY3QoZXZlbnQpO1xuXG4gICAgICBzZXREcm9wRWZmZWN0KGV2ZW50LCBkcm9wRWZmZWN0KTtcblxuICAgICAgaWYgKGRyb3BFZmZlY3QgPT09ICdub25lJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRyb3BJbmRleCA9IHRoaXMuZ2V0UGxhY2Vob2xkZXJJbmRleCgpO1xuXG4gICAgICAvLyBpZiBmb3Igd2hhdGV2ZXIgcmVhc29uIHRoZSBwbGFjZWhvbGRlciBpcyBub3QgcHJlc2VudCBpbiB0aGUgRE9NIGJ1dCBpdCBzaG91bGQgYmUgdGhlcmVcbiAgICAgIC8vIHdlIGRvbid0IGFsbG93L2VtaXQgdGhlIGRyb3AgZXZlbnQgc2luY2UgaXQgYnJlYWtzIHRoZSBjb250cmFjdFxuICAgICAgLy8gc2VlbXMgdG8gb25seSBoYXBwZW4gaWYgZHJhZyBhbmQgZHJvcCBpcyBleGVjdXRlZCBmYXN0ZXIgdGhhbiB0aGUgRE9NIHVwZGF0ZXNcbiAgICAgIGlmIChkcm9wSW5kZXggPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5kbmREcm9wLmVtaXQoe1xuICAgICAgICBldmVudDogZXZlbnQsXG4gICAgICAgIGRyb3BFZmZlY3Q6IGRyb3BFZmZlY3QsXG4gICAgICAgIGlzRXh0ZXJuYWw6IGlzRXh0ZXJuYWxEcmFnKCksXG4gICAgICAgIGRhdGE6IGRhdGEuZGF0YSxcbiAgICAgICAgaW5kZXg6IGRyb3BJbmRleCxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgIH0pO1xuXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5jbGVhbnVwRHJhZ292ZXJTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEbmRFdmVudCkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAvLyBjaGVjayBpZiBzdGlsbCBpbnNpZGUgdGhpcyBkcm9wem9uZSBhbmQgbm90IHlldCBoYW5kbGVkIGJ5IGFub3RoZXIgZHJvcHpvbmVcbiAgICBpZiAoZXZlbnQuX2RuZERyb3B6b25lQWN0aXZlID09IG51bGwpIHtcbiAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICBldmVudC5fZG5kRHJvcHpvbmVBY3RpdmUgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhbnVwRHJhZ292ZXJTdGF0ZSgpO1xuXG4gICAgLy8gY2xlYW51cCBkcm9wIGVmZmVjdCB3aGVuIGxlYXZpbmcgZHJvcHpvbmVcbiAgICBzZXREcm9wRWZmZWN0KGV2ZW50LCAnbm9uZScpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBkcmFnRW50ZXJFdmVudEhhbmRsZXI6IChldmVudDogRHJhZ0V2ZW50KSA9PiB2b2lkID0gKFxuICAgIGV2ZW50OiBEcmFnRXZlbnRcbiAgKSA9PiB0aGlzLm9uRHJhZ0VudGVyKGV2ZW50KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRyYWdPdmVyRXZlbnRIYW5kbGVyOiAoZXZlbnQ6IERyYWdFdmVudCkgPT4gdm9pZCA9IChcbiAgICBldmVudDogRHJhZ0V2ZW50XG4gICkgPT4gdGhpcy5vbkRyYWdPdmVyKGV2ZW50KTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGRyYWdMZWF2ZUV2ZW50SGFuZGxlcjogKGV2ZW50OiBEcmFnRXZlbnQpID0+IHZvaWQgPSAoXG4gICAgZXZlbnQ6IERyYWdFdmVudFxuICApID0+IHRoaXMub25EcmFnTGVhdmUoZXZlbnQpO1xuXG4gIHByaXZhdGUgaXNEcm9wQWxsb3dlZCh0eXBlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgLy8gZHJvcHpvbmUgaXMgZGlzYWJsZWQgLT4gZGVueSBpdFxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gaWYgZHJhZyBkaWQgbm90IHN0YXJ0IGZyb20gb3VyIGRpcmVjdGl2ZVxuICAgIC8vIGFuZCBleHRlcm5hbCBkcmFnIHNvdXJjZXMgYXJlIG5vdCBhbGxvd2VkIC0+IGRlbnkgaXRcbiAgICBpZiAoaXNFeHRlcm5hbERyYWcoKSAmJiAhdGhpcy5kbmRBbGxvd0V4dGVybmFsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gbm8gZmlsdGVyaW5nIGJ5IHR5cGVzIC0+IGFsbG93IGl0XG4gICAgaWYgKCF0aGlzLmRuZERyb3B6b25lKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBubyB0eXBlIHNldCAtPiBhbGxvdyBpdFxuICAgIGlmICghdHlwZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuZG5kRHJvcHpvbmUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdkbmREcm9wem9uZTogYm91bmQgdmFsdWUgdG8gW2RuZERyb3B6b25lXSBtdXN0IGJlIGFuIGFycmF5ISdcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gaWYgZHJvcHpvbmUgY29udGFpbnMgdHlwZSAtPiBhbGxvdyBpdFxuICAgIHJldHVybiB0aGlzLmRuZERyb3B6b25lLmluZGV4T2YodHlwZSkgIT09IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSB0cnlHZXRQbGFjZWhvbGRlcigpOiBFbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmRuZFBsYWNlaG9sZGVyUmVmICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHRoaXMuZG5kUGxhY2Vob2xkZXJSZWYuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETyBuYXN0eSB3b3JrYXJvdW5kIG5lZWRlZCBiZWNhdXNlIGlmIG5nLWNvbnRhaW5lciAvIHRlbXBsYXRlIGlzIHVzZWQgQENvbnRlbnRDaGlsZCgpIG9yIERJIHdpbGwgZmFpbCBiZWNhdXNlXG4gICAgLy8gb2Ygd3JvbmcgY29udGV4dCBzZWUgYW5ndWxhciBidWcgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTM1MTdcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignW2RuZFBsYWNlaG9sZGVyUmVmXScpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVQbGFjZWhvbGRlckZyb21ET00oKSB7XG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgIT09IG51bGwgJiYgdGhpcy5wbGFjZWhvbGRlci5wYXJlbnROb2RlICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnBsYWNlaG9sZGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wbGFjZWhvbGRlcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0FuZFVwZGF0ZVBsYWNlaG9sZGVyUG9zaXRpb24oZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRoZSBwbGFjZWhvbGRlciBpcyBpbiB0aGUgRE9NXG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIucGFyZW50Tm9kZSAhPT0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLnBsYWNlaG9sZGVyXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB0aGUgcG9zaXRpb24gaWYgdGhlIGV2ZW50IG9yaWdpbmF0ZXMgZnJvbSBhIGNoaWxkIGVsZW1lbnQgb2YgdGhlIGRyb3B6b25lXG4gICAgY29uc3QgZGlyZWN0Q2hpbGQgPSBnZXREaXJlY3RDaGlsZEVsZW1lbnQoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIGV2ZW50LnRhcmdldCBhcyBFbGVtZW50XG4gICAgKTtcblxuICAgIC8vIGVhcmx5IGV4aXQgaWYgbm8gZGlyZWN0IGNoaWxkIG9yIGRpcmVjdCBjaGlsZCBpcyBwbGFjZWhvbGRlclxuICAgIGlmIChkaXJlY3RDaGlsZCA9PT0gbnVsbCB8fCBkaXJlY3RDaGlsZCA9PT0gdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBvc2l0aW9uUGxhY2Vob2xkZXJCZWZvcmVEaXJlY3RDaGlsZCA9XG4gICAgICBzaG91bGRQb3NpdGlvblBsYWNlaG9sZGVyQmVmb3JlRWxlbWVudChcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIGRpcmVjdENoaWxkLFxuICAgICAgICB0aGlzLmRuZEhvcml6b250YWxcbiAgICAgICk7XG5cbiAgICBpZiAocG9zaXRpb25QbGFjZWhvbGRlckJlZm9yZURpcmVjdENoaWxkKSB7XG4gICAgICAvLyBkbyBpbnNlcnQgYmVmb3JlIG9ubHkgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAoZGlyZWN0Q2hpbGQucHJldmlvdXNTaWJsaW5nICE9PSB0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuaW5zZXJ0QmVmb3JlKFxuICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIsXG4gICAgICAgICAgZGlyZWN0Q2hpbGRcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gZG8gaW5zZXJ0IGFmdGVyIG9ubHkgaWYgbmVjZXNzYXJ5XG4gICAgICBpZiAoZGlyZWN0Q2hpbGQubmV4dFNpYmxpbmcgIT09IHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5wbGFjZWhvbGRlcixcbiAgICAgICAgICBkaXJlY3RDaGlsZC5uZXh0U2libGluZ1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGxhY2Vob2xkZXJJbmRleCgpOiBudW1iZXIgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGVsZW1lbnQuY2hpbGRyZW4sIHRoaXMucGxhY2Vob2xkZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbnVwRHJhZ292ZXJTdGF0ZSgpIHtcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKFxuICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLmRuZERyYWdvdmVyQ2xhc3NcbiAgICApO1xuXG4gICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlckZyb21ET00oKTtcbiAgfVxufVxuIl19
280
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWRyb3B6b25lLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RuZC9zcmMvbGliL2RuZC1kcm9wem9uZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFlBQVksRUFDWixTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxVQUFVLEVBQ1YsYUFBYSxFQUNiLGNBQWMsRUFDZCxhQUFhLEdBQ2QsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUdMLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsc0NBQXNDLEdBQ3ZDLE1BQU0sYUFBYSxDQUFDOztBQVlyQixNQUFNLE9BQU8sMEJBQTBCO0lBQ1Q7SUFBNUIsWUFBNEIsVUFBbUM7UUFBbkMsZUFBVSxHQUFWLFVBQVUsQ0FBeUI7SUFBRyxDQUFDO0lBRW5FLFFBQVE7UUFDTiwySEFBMkg7UUFDM0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDN0QsQ0FBQzt1R0FOVSwwQkFBMEI7MkZBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFOztBQVdoRSxNQUFNLE9BQU8sb0JBQW9CO0lBMkJyQjtJQUNBO0lBQ0E7SUE1QkQsV0FBVyxHQUFtQixFQUFFLENBQUM7SUFFakMsZ0JBQWdCLEdBQWtCLGVBQWUsQ0FBQztJQUVsRCxnQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFFbEMsYUFBYSxHQUFZLEtBQUssQ0FBQztJQUUvQixnQkFBZ0IsR0FBVyxhQUFhLENBQUM7SUFFekMsd0JBQXdCLEdBQUcscUJBQXFCLENBQUM7SUFFdkMsV0FBVyxH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bnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29udGVudENoaWxkLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgZ2V0RG5kVHlwZSxcbiAgZ2V0RHJvcEVmZmVjdCxcbiAgaXNFeHRlcm5hbERyYWcsXG4gIHNldERyb3BFZmZlY3QsXG59IGZyb20gJy4vZG5kLXN0YXRlJztcbmltcG9ydCB7IERyb3BFZmZlY3QsIEVmZmVjdEFsbG93ZWQgfSBmcm9tICcuL2RuZC10eXBlcyc7XG5pbXBvcnQge1xuICBEbmRFdmVudCxcbiAgRHJhZ0Ryb3BEYXRhLFxuICBnZXREaXJlY3RDaGlsZEVsZW1lbnQsXG4gIGdldERyb3BEYXRhLFxuICBzaG91bGRQb3NpdGlvblBsYWNlaG9sZGVyQmVmb3JlRWxlbWVudCxcbn0gZnJvbSAnLi9kbmQtdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERuZERyb3BFdmVudCB7XG4gIGV2ZW50OiBEcmFnRXZlbnQ7XG4gIGRyb3BFZmZlY3Q6IERyb3BFZmZlY3Q7XG4gIGlzRXh0ZXJuYWw6IGJvb2xlYW47XG4gIGRhdGE/OiBhbnk7XG4gIGluZGV4PzogbnVtYmVyO1xuICB0eXBlPzogYW55O1xufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZG5kUGxhY2Vob2xkZXJSZWZdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIERuZFBsYWNlaG9sZGVyUmVmRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIHBsYWNlaG9sZGVyIGhhcyB0byBiZSBcImludmlzaWJsZVwiIHRvIHRoZSBjdXJzb3IsIG9yIGl0IHdvdWxkIGludGVyZmVyZSB3aXRoIHRoZSBkcmFnb3ZlciBkZXRlY3Rpb24gZm9yIHRoZSBzYW1lIGRyb3B6b25lXG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgfVxufVxuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbZG5kRHJvcHpvbmVdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIERuZERyb3B6b25lRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZG5kRHJvcHpvbmU/OiBzdHJpbmdbXSB8ICcnID0gJyc7XG5cbiAgQElucHV0KCkgZG5kRWZmZWN0QWxsb3dlZDogRWZmZWN0QWxsb3dlZCA9ICd1bmluaXRpYWxpemVkJztcblxuICBASW5wdXQoKSBkbmRBbGxvd0V4dGVybmFsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZG5kSG9yaXpvbnRhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGRuZERyYWdvdmVyQ2xhc3M6IHN0cmluZyA9ICdkbmREcmFnb3Zlcic7XG5cbiAgQElucHV0KCkgZG5kRHJvcHpvbmVEaXNhYmxlZENsYXNzID0gJ2RuZERyb3B6b25lRGlzYWJsZWQnO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmREcmFnb3ZlcjogRXZlbnRFbWl0dGVyPERyYWdFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8RHJhZ0V2ZW50PigpO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBkbmREcm9wOiBFdmVudEVtaXR0ZXI8RG5kRHJvcEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxEbmREcm9wRXZlbnQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChEbmRQbGFjZWhvbGRlclJlZkRpcmVjdGl2ZSlcbiAgcHJpdmF0ZSByZWFkb25seSBkbmRQbGFjZWhvbGRlclJlZj86IERuZFBsYWNlaG9sZGVyUmVmRGlyZWN0aXZlO1xuXG4gIHByaXZhdGUgcGxhY2Vob2xkZXI6IEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge31cblxuICBASW5wdXQoKSBzZXQgZG5kRGlzYWJsZUlmKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRuZERyb3B6b25lRGlzYWJsZWRDbGFzc1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuZG5kRHJvcHpvbmVEaXNhYmxlZENsYXNzXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHNldCBkbmREaXNhYmxlRHJvcElmKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5kbmREaXNhYmxlSWYgPSB2YWx1ZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy50cnlHZXRQbGFjZWhvbGRlcigpO1xuXG4gICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlckZyb21ET00oKTtcblxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdkcmFnZW50ZXInLFxuICAgICAgICB0aGlzLmRyYWdFbnRlckV2ZW50SGFuZGxlclxuICAgICAgKTtcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdkcmFnb3ZlcicsXG4gICAgICAgIHRoaXMuZHJhZ092ZXJFdmVudEhhbmRsZXJcbiAgICAgICk7XG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnZHJhZ2xlYXZlJyxcbiAgICAgICAgdGhpcy5kcmFnTGVhdmVFdmVudEhhbmRsZXJcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgJ2RyYWdlbnRlcicsXG4gICAgICB0aGlzLmRyYWdFbnRlckV2ZW50SGFuZGxlclxuICAgICk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICdkcmFnb3ZlcicsXG4gICAgICB0aGlzLmRyYWdPdmVyRXZlbnRIYW5kbGVyXG4gICAgKTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgJ2RyYWdsZWF2ZScsXG4gICAgICB0aGlzLmRyYWdMZWF2ZUV2ZW50SGFuZGxlclxuICAgICk7XG4gIH1cblxuICBvbkRyYWdFbnRlcihldmVudDogRG5kRXZlbnQpIHtcbiAgICAvLyBjaGVjayBpZiBhbm90aGVyIGRyb3B6b25lIGlzIGFjdGl2YXRlZFxuICAgIGlmIChldmVudC5fZG5kRHJvcHpvbmVBY3RpdmUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuY2xlYW51cERyYWdvdmVyU3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzZXQgYXMgYWN0aXZlIGlmIHRoZSB0YXJnZXQgZWxlbWVudCBpcyBpbnNpZGUgdGhpcyBkcm9wem9uZVxuICAgIGlmIChldmVudC5fZG5kRHJvcHpvbmVBY3RpdmUgPT0gbnVsbCkge1xuICAgICAgY29uc3QgbmV3VGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcblxuICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKG5ld1RhcmdldCkpIHtcbiAgICAgICAgZXZlbnQuX2RuZERyb3B6b25lQWN0aXZlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiB0aGlzIGRyYWcgZXZlbnQgaXMgYWxsb3dlZCB0byBkcm9wIG9uIHRoaXMgZHJvcHpvbmVcbiAgICBjb25zdCB0eXBlID0gZ2V0RG5kVHlwZShldmVudCk7XG4gICAgaWYgKCF0aGlzLmlzRHJvcEFsbG93ZWQodHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBhbGxvdyB0aGUgZHJhZ2VudGVyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIC8vIFdpdGggbmVzdGVkIGRyb3B6b25lcywgd2Ugd2FudCB0byBpZ25vcmUgdGhpcyBldmVudCBpZiBhIGNoaWxkIGRyb3B6b25lXG4gICAgLy8gaGFzIGFscmVhZHkgaGFuZGxlZCBhIGRyYWdvdmVyLiAgSGlzdG9yaWNhbGx5LCBldmVudC5zdG9wUHJvcGFnYXRpb24oKSB3YXNcbiAgICAvLyB1c2VkIHRvIHByZXZlbnQgdGhpcyBidWJibGluZywgYnV0IHRoYXQgcHJldmVudHMgYW55IGRyYWdvdmVycyBvdXRzaWRlIHRoZVxuICAgIC8vIG5neC1kcmFnLWRyb3AgY29tcG9uZW50LCBhbmQgc3RvcHMgb3RoZXIgdXNlIGNhc2VzIHN1Y2ggYXMgc2Nyb2xsaW5nIG9uIGRyYWcuXG4gICAgLy8gSW5zdGVhZCwgd2UgY2FuIGNoZWNrIGlmIHRoZSBldmVudCB3YXMgYWxyZWFkeSBwcmV2ZW50ZWQgYnkgYSBjaGlsZCBhbmQgYmFpbCBlYXJseS5cbiAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIGlmIHRoaXMgZHJhZyBldmVudCBpcyBhbGxvd2VkIHRvIGRyb3Agb24gdGhpcyBkcm9wem9uZVxuICAgIGNvbnN0IHR5cGUgPSBnZXREbmRUeXBlKGV2ZW50KTtcbiAgICBpZiAoIXRoaXMuaXNEcm9wQWxsb3dlZCh0eXBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGVQbGFjZWhvbGRlclBvc2l0aW9uKGV2ZW50KTtcblxuICAgIGNvbnN0IGRyb3BFZmZlY3QgPSBnZXREcm9wRWZmZWN0KGV2ZW50LCB0aGlzLmRuZEVmZmVjdEFsbG93ZWQpO1xuXG4gICAgaWYgKGRyb3BFZmZlY3QgPT09ICdub25lJykge1xuICAgICAgdGhpcy5jbGVhbnVwRHJhZ292ZXJTdGF0ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGFsbG93IHRoZSBkcmFnb3ZlclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAvLyBzZXQgdGhlIGRyb3AgZWZmZWN0XG4gICAgc2V0RHJvcEVmZmVjdChldmVudCwgZHJvcEVmZmVjdCk7XG5cbiAgICB0aGlzLmRuZERyYWdvdmVyLmVtaXQoZXZlbnQpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyhcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5kbmREcmFnb3ZlckNsYXNzXG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKSBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xuICAgIHRyeSB7XG4gICAgICAvLyBjaGVjayBpZiB0aGlzIGRyYWcgZXZlbnQgaXMgYWxsb3dlZCB0byBkcm9wIG9uIHRoaXMgZHJvcHpvbmVcbiAgICAgIGNvbnN0IHR5cGUgPSBnZXREbmRUeXBlKGV2ZW50KTtcbiAgICAgIGlmICghdGhpcy5pc0Ryb3BBbGxvd2VkKHR5cGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YTogRHJhZ0Ryb3BEYXRhID0gZ2V0RHJvcERhdGEoZXZlbnQsIGlzRXh0ZXJuYWxEcmFnKCkpO1xuXG4gICAgICBpZiAoIXRoaXMuaXNEcm9wQWxsb3dlZChkYXRhLnR5cGUpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gc2lnbmFsIGN1c3RvbSBkcm9wIGhhbmRsaW5nXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBjb25zdCBkcm9wRWZmZWN0ID0gZ2V0RHJvcEVmZmVjdChldmVudCk7XG5cbiAgICAgIHNldERyb3BFZmZlY3QoZXZlbnQsIGRyb3BFZmZlY3QpO1xuXG4gICAgICBpZiAoZHJvcEVmZmVjdCA9PT0gJ25vbmUnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZHJvcEluZGV4ID0gdGhpcy5nZXRQbGFjZWhvbGRlckluZGV4KCk7XG5cbiAgICAgIC8vIGlmIGZvciB3aGF0ZXZlciByZWFzb24gdGhlIHBsYWNlaG9sZGVyIGlzIG5vdCBwcmVzZW50IGluIHRoZSBET00gYnV0IGl0IHNob3VsZCBiZSB0aGVyZVxuICAgICAgLy8gd2UgZG9uJ3QgYWxsb3cvZW1pdCB0aGUgZHJvcCBldmVudCBzaW5jZSBpdCBicmVha3MgdGhlIGNvbnRyYWN0XG4gICAgICAvLyBzZWVtcyB0byBvbmx5IGhhcHBlbiBpZiBkcmFnIGFuZCBkcm9wIGlzIGV4ZWN1dGVkIGZhc3RlciB0aGFuIHRoZSBET00gdXBkYXRlc1xuICAgICAgaWYgKGRyb3BJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRuZERyb3AuZW1pdCh7XG4gICAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgICAgZHJvcEVmZmVjdDogZHJvcEVmZmVjdCxcbiAgICAgICAgaXNFeHRlcm5hbDogaXNFeHRlcm5hbERyYWcoKSxcbiAgICAgICAgZGF0YTogZGF0YS5kYXRhLFxuICAgICAgICBpbmRleDogZHJvcEluZGV4LFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgfSk7XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmNsZWFudXBEcmFnb3ZlclN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgb25EcmFnTGVhdmUoZXZlbnQ6IERuZEV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIGNoZWNrIGlmIHN0aWxsIGluc2lkZSB0aGlzIGRyb3B6b25lIGFuZCBub3QgeWV0IGhhbmRsZWQgYnkgYW5vdGhlciBkcm9wem9uZVxuICAgIGlmIChldmVudC5fZG5kRHJvcHpvbmVBY3RpdmUgPT0gbnVsbCkge1xuICAgICAgaWYgKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgIGV2ZW50Ll9kbmREcm9wem9uZUFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNsZWFudXBEcmFnb3ZlclN0YXRlKCk7XG5cbiAgICAvLyBjbGVhbnVwIGRyb3AgZWZmZWN0IHdoZW4gbGVhdmluZyBkcm9wem9uZVxuICAgIHNldERyb3BFZmZlY3QoZXZlbnQsICdub25lJyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGRyYWdFbnRlckV2ZW50SGFuZGxlcjogKGV2ZW50OiBEcmFnRXZlbnQpID0+IHZvaWQgPSAoXG4gICAgZXZlbnQ6IERyYWdFdmVudFxuICApID0+IHRoaXMub25EcmFnRW50ZXIoZXZlbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZHJhZ092ZXJFdmVudEhhbmRsZXI6IChldmVudDogRHJhZ0V2ZW50KSA9PiB2b2lkID0gKFxuICAgIGV2ZW50OiBEcmFnRXZlbnRcbiAgKSA9PiB0aGlzLm9uRHJhZ092ZXIoZXZlbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZHJhZ0xlYXZlRXZlbnRIYW5kbGVyOiAoZXZlbnQ6IERyYWdFdmVudCkgPT4gdm9pZCA9IChcbiAgICBldmVudDogRHJhZ0V2ZW50XG4gICkgPT4gdGhpcy5vbkRyYWdMZWF2ZShldmVudCk7XG5cbiAgcHJpdmF0ZSBpc0Ryb3BBbGxvd2VkKHR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBkcm9wem9uZSBpcyBkaXNhYmxlZCAtPiBkZW55IGl0XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBpZiBkcmFnIGRpZCBub3Qgc3RhcnQgZnJvbSBvdXIgZGlyZWN0aXZlXG4gICAgLy8gYW5kIGV4dGVybmFsIGRyYWcgc291cmNlcyBhcmUgbm90IGFsbG93ZWQgLT4gZGVueSBpdFxuICAgIGlmIChpc0V4dGVybmFsRHJhZygpICYmICF0aGlzLmRuZEFsbG93RXh0ZXJuYWwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBubyBmaWx0ZXJpbmcgYnkgdHlwZXMgLT4gYWxsb3cgaXRcbiAgICBpZiAoIXRoaXMuZG5kRHJvcHpvbmUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIG5vIHR5cGUgc2V0IC0+IGFsbG93IGl0XG4gICAgaWYgKCF0eXBlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5kbmREcm9wem9uZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2RuZERyb3B6b25lOiBib3VuZCB2YWx1ZSB0byBbZG5kRHJvcHpvbmVdIG11c3QgYmUgYW4gYXJyYXkhJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBpZiBkcm9wem9uZSBjb250YWlucyB0eXBlIC0+IGFsbG93IGl0XG4gICAgcmV0dXJuIHRoaXMuZG5kRHJvcHpvbmUuaW5kZXhPZih0eXBlKSAhPT0gLTE7XG4gIH1cblxuICBwcml2YXRlIHRyeUdldFBsYWNlaG9sZGVyKCk6IEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuZG5kUGxhY2Vob2xkZXJSZWYgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5kbmRQbGFjZWhvbGRlclJlZi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgYXMgRWxlbWVudDtcbiAgICB9XG5cbiAgICAvLyBUT0RPIG5hc3R5IHdvcmthcm91bmQgbmVlZGVkIGJlY2F1c2UgaWYgbmctY29udGFpbmVyIC8gdGVtcGxhdGUgaXMgdXNlZCBAQ29udGVudENoaWxkKCkgb3IgREkgd2lsbCBmYWlsIGJlY2F1c2VcbiAgICAvLyBvZiB3cm9uZyBjb250ZXh0IHNlZSBhbmd1bGFyIGJ1ZyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8xMzUxN1xuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdbZG5kUGxhY2Vob2xkZXJSZWZdJyk7XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVBsYWNlaG9sZGVyRnJvbURPTSgpIHtcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciAhPT0gbnVsbCAmJiB0aGlzLnBsYWNlaG9sZGVyLnBhcmVudE5vZGUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoZWNrQW5kVXBkYXRlUGxhY2Vob2xkZXJQb3NpdGlvbihldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBtYWtlIHN1cmUgdGhlIHBsYWNlaG9sZGVyIGlzIGluIHRoZSBET01cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlci5wYXJlbnROb2RlICE9PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlIHRoZSBwb3NpdGlvbiBpZiB0aGUgZXZlbnQgb3JpZ2luYXRlcyBmcm9tIGEgY2hpbGQgZWxlbWVudCBvZiB0aGUgZHJvcHpvbmVcbiAgICBjb25zdCBkaXJlY3RDaGlsZCA9IGdldERpcmVjdENoaWxkRWxlbWVudChcbiAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnRcbiAgICApO1xuXG4gICAgLy8gZWFybHkgZXhpdCBpZiBubyBkaXJlY3QgY2hpbGQgb3IgZGlyZWN0IGNoaWxkIGlzIHBsYWNlaG9sZGVyXG4gICAgaWYgKGRpcmVjdENoaWxkID09PSBudWxsIHx8IGRpcmVjdENoaWxkID09PSB0aGlzLnBsYWNlaG9sZGVyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcG9zaXRpb25QbGFjZWhvbGRlckJlZm9yZURpcmVjdENoaWxkID1cbiAgICAgIHNob3VsZFBvc2l0aW9uUGxhY2Vob2xkZXJCZWZvcmVFbGVtZW50KFxuICAgICAgICBldmVudCxcbiAgICAgICAgZGlyZWN0Q2hpbGQsXG4gICAgICAgIHRoaXMuZG5kSG9yaXpvbnRhbFxuICAgICAgKTtcblxuICAgIGlmIChwb3NpdGlvblBsYWNlaG9sZGVyQmVmb3JlRGlyZWN0Q2hpbGQpIHtcbiAgICAgIC8vIGRvIGluc2VydCBiZWZvcmUgb25seSBpZiBuZWNlc3NhcnlcbiAgICAgIGlmIChkaXJlY3RDaGlsZC5wcmV2aW91c1NpYmxpbmcgIT09IHRoaXMucGxhY2Vob2xkZXIpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgdGhpcy5wbGFjZWhvbGRlcixcbiAgICAgICAgICBkaXJlY3RDaGlsZFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkbyBpbnNlcnQgYWZ0ZXIgb25seSBpZiBuZWNlc3NhcnlcbiAgICAgIGlmIChkaXJlY3RDaGlsZC5uZXh0U2libGluZyAhPT0gdGhpcy5wbGFjZWhvbGRlcikge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLmluc2VydEJlZm9yZShcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyLFxuICAgICAgICAgIGRpcmVjdENoaWxkLm5leHRTaWJsaW5nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQbGFjZWhvbGRlckluZGV4KCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoZWxlbWVudC5jaGlsZHJlbiwgdGhpcy5wbGFjZWhvbGRlcik7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXBEcmFnb3ZlclN0YXRlKCkge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoXG4gICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgIHRoaXMuZG5kRHJhZ292ZXJDbGFzc1xuICAgICk7XG5cbiAgICB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyRnJvbURPTSgpO1xuICB9XG59XG4iXX0=
@@ -10,10 +10,10 @@ export class DndHandleDirective {
10
10
  onDragEvent(event) {
11
11
  event._dndUsingHandle = true;
12
12
  }
13
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: DndHandleDirective, isStandalone: true, selector: "[dndHandle]", host: { listeners: { "dragstart": "onDragEvent($event)", "dragend": "onDragEvent($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: DndHandleDirective, isStandalone: true, selector: "[dndHandle]", host: { listeners: { "dragstart": "onDragEvent($event)", "dragend": "onDragEvent($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
15
15
  }
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndHandleDirective, decorators: [{
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndHandleDirective, decorators: [{
17
17
  type: Directive,
18
18
  args: [{ selector: '[dndHandle]', standalone: true }]
19
19
  }], propDecorators: { draggable: [{
@@ -69,4 +69,4 @@ export function isExternalDrag() {
69
69
  return _dndState.isDragging === false;
70
70
  }
71
71
  export const dndState = _dndState;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZG5kL3NyYy9saWIvZG5kLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQztBQVNyQixNQUFNLFNBQVMsR0FBYTtJQUMxQixVQUFVLEVBQUUsS0FBSztJQUNqQixVQUFVLEVBQUUsTUFBTTtJQUNsQixhQUFhLEVBQUUsS0FBSztJQUNwQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsS0FBZ0IsRUFDaEIsYUFBNEIsRUFDNUIsSUFBd0I7SUFFeEIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDNUIsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDOUIsU0FBUyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDeEMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFFdEIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO1FBQ3RCLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztLQUNsRDtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTztJQUNyQixTQUFTLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUM3QixTQUFTLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUNqQyxTQUFTLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztJQUNwQyxTQUFTLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztBQUM3QixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxLQUFnQixFQUFFLFVBQXNCO0lBQ3BFLElBQUksU0FBUyxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7UUFDakMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7S0FDbkM7SUFFRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7UUFDdEIsS0FBSyxDQUFDLFlBQVksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0tBQzVDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQWdCLEVBQ2hCLGFBQTBDO0lBRTFDLE1BQU0seUJBQXlCLEdBQWtCLEtBQUssQ0FBQyxZQUFZO1FBQ2pFLENBQUMsQ0FBRSxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQStCO1FBQ3JELENBQUMsQ0FBQyxlQUFlLENBQUM7SUFFcEIsSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBRXJFLElBQUksU0FBUyxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUU7UUFDakMsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLGFBQWMsQ0FBQyxDQUFDO0tBQzVEO0lBRUQsSUFBSSxhQUFhLEVBQUU7UUFDakIsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDakQ7SUFFRCx5RkFBeUY7SUFDekYsa0ZBQWtGO0lBQ2xGLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDeEIsT0FBTyxNQUFNLENBQUM7S0FDZjtJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQ25ELE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUNsRCxPQUFPLE1BQU0sQ0FBQztLQUNmO0lBRUQsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFlLENBQUM7QUFDbEMsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQUMsS0FBZ0I7SUFDekMsSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLElBQUksRUFBRTtRQUNqQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUM7S0FDdkI7SUFFRCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3QyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUU7UUFDckIsT0FBTyxTQUFTLENBQUM7S0FDbEI7SUFFRCxJQUFJLFFBQVEsS0FBSyxjQUFjLElBQUksUUFBUSxLQUFLLGNBQWMsRUFBRTtRQUM5RCxPQUFPLFNBQVMsQ0FBQztLQUNsQjtJQUVELE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDO0FBQ25FLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYztJQUM1QixPQUFPLFNBQVMsQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQXVCLFNBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcm9wRWZmZWN0LCBFZmZlY3RBbGxvd2VkIH0gZnJvbSAnLi9kbmQtdHlwZXMnO1xuaW1wb3J0IHtcbiAgQ1VTVE9NX01JTUVfVFlQRSxcbiAgRFJPUF9FRkZFQ1RTLFxuICBmaWx0ZXJFZmZlY3RzLFxuICBnZXRXZWxsS25vd25NaW1lVHlwZSxcbiAgSlNPTl9NSU1FX1RZUEUsXG4gIE1TSUVfTUlNRV9UWVBFLFxufSBmcm9tICcuL2RuZC11dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG5kU3RhdGUge1xuICBpc0RyYWdnaW5nOiBib29sZWFuO1xuICBkcm9wRWZmZWN0PzogRHJvcEVmZmVjdDtcbiAgZWZmZWN0QWxsb3dlZD86IEVmZmVjdEFsbG93ZWQ7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbmNvbnN0IF9kbmRTdGF0ZTogRG5kU3RhdGUgPSB7XG4gIGlzRHJhZ2dpbmc6IGZhbHNlLFxuICBkcm9wRWZmZWN0OiAnbm9uZScsXG4gIGVmZmVjdEFsbG93ZWQ6ICdhbGwnLFxuICB0eXBlOiB1bmRlZmluZWQsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gc3RhcnREcmFnKFxuICBldmVudDogRHJhZ0V2ZW50LFxuICBlZmZlY3RBbGxvd2VkOiBFZmZlY3RBbGxvd2VkLFxuICB0eXBlOiBzdHJpbmcgfCB1bmRlZmluZWRcbikge1xuICBfZG5kU3RhdGUuaXNEcmFnZ2luZyA9IHRydWU7XG4gIF9kbmRTdGF0ZS5kcm9wRWZmZWN0ID0gJ25vbmUnO1xuICBfZG5kU3RhdGUuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWQ7XG4gIF9kbmRTdGF0ZS50eXBlID0gdHlwZTtcblxuICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBlZmZlY3RBbGxvd2VkO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbmREcmFnKCkge1xuICBfZG5kU3RhdGUuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBfZG5kU3RhdGUuZHJvcEVmZmVjdCA9IHVuZGVmaW5lZDtcbiAgX2RuZFN0YXRlLmVmZmVjdEFsbG93ZWQgPSB1bmRlZmluZWQ7XG4gIF9kbmRTdGF0ZS50eXBlID0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RHJvcEVmZmVjdChldmVudDogRHJhZ0V2ZW50LCBkcm9wRWZmZWN0OiBEcm9wRWZmZWN0KSB7XG4gIGlmIChfZG5kU3RhdGUuaXNEcmFnZ2luZyA9PT0gdHJ1ZSkge1xuICAgIF9kbmRTdGF0ZS5kcm9wRWZmZWN0ID0gZHJvcEVmZmVjdDtcbiAgfVxuXG4gIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9IGRyb3BFZmZlY3Q7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERyb3BFZmZlY3QoXG4gIGV2ZW50OiBEcmFnRXZlbnQsXG4gIGVmZmVjdEFsbG93ZWQ/OiBFZmZlY3RBbGxvd2VkIHwgRHJvcEVmZmVjdFxuKTogRHJvcEVmZmVjdCB7XG4gIGNvbnN0IGRhdGFUcmFuc2ZlckVmZmVjdEFsbG93ZWQ6IEVmZmVjdEFsbG93ZWQgPSBldmVudC5kYXRhVHJhbnNmZXJcbiAgICA/IChldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCBhcyBFZmZlY3RBbGxvd2VkKVxuICAgIDogJ3VuaW5pdGlhbGl6ZWQnO1xuXG4gIGxldCBlZmZlY3RzID0gZmlsdGVyRWZmZWN0cyhEUk9QX0VGRkVDVFMsIGRhdGFUcmFuc2ZlckVmZmVjdEFsbG93ZWQpO1xuXG4gIGlmIChfZG5kU3RhdGUuaXNEcmFnZ2luZyA9PT0gdHJ1ZSkge1xuICAgIGVmZmVjdHMgPSBmaWx0ZXJFZmZlY3RzKGVmZmVjdHMsIF9kbmRTdGF0ZS5lZmZlY3RBbGxvd2VkISk7XG4gIH1cblxuICBpZiAoZWZmZWN0QWxsb3dlZCkge1xuICAgIGVmZmVjdHMgPSBmaWx0ZXJFZmZlY3RzKGVmZmVjdHMsIGVmZmVjdEFsbG93ZWQpO1xuICB9XG5cbiAgLy8gTWFjT1MgYXV0b21hdGljYWxseSBmaWx0ZXJzIGRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkIGRlcGVuZGluZyBvbiB0aGUgbW9kaWZpZXIga2V5cyxcbiAgLy8gdGhlcmVmb3JlIHRoZSBmb2xsb3dpbmcgbW9kaWZpZXIga2V5cyB3aWxsIG9ubHkgYWZmZWN0IG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLlxuICBpZiAoZWZmZWN0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gJ25vbmUnO1xuICB9XG5cbiAgaWYgKGV2ZW50LmN0cmxLZXkgJiYgZWZmZWN0cy5pbmRleE9mKCdjb3B5JykgIT09IC0xKSB7XG4gICAgcmV0dXJuICdjb3B5JztcbiAgfVxuXG4gIGlmIChldmVudC5hbHRLZXkgJiYgZWZmZWN0cy5pbmRleE9mKCdsaW5rJykgIT09IC0xKSB7XG4gICAgcmV0dXJuICdsaW5rJztcbiAgfVxuXG4gIHJldHVybiBlZmZlY3RzWzBdIGFzIERyb3BFZmZlY3Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREbmRUeXBlKGV2ZW50OiBEcmFnRXZlbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoX2RuZFN0YXRlLmlzRHJhZ2dpbmcgPT09IHRydWUpIHtcbiAgICByZXR1cm4gX2RuZFN0YXRlLnR5cGU7XG4gIH1cblxuICBjb25zdCBtaW1lVHlwZSA9IGdldFdlbGxLbm93bk1pbWVUeXBlKGV2ZW50KTtcblxuICBpZiAobWltZVR5cGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKG1pbWVUeXBlID09PSBNU0lFX01JTUVfVFlQRSB8fCBtaW1lVHlwZSA9PT0gSlNPTl9NSU1FX1RZUEUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIG1pbWVUeXBlLnN1YnN0cihDVVNUT01fTUlNRV9UWVBFLmxlbmd0aCArIDEpIHx8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWxEcmFnKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gX2RuZFN0YXRlLmlzRHJhZ2dpbmcgPT09IGZhbHNlO1xufVxuXG5leHBvcnQgY29uc3QgZG5kU3RhdGU6IFJlYWRvbmx5PERuZFN0YXRlPiA9IF9kbmRTdGF0ZSBhcyBSZWFkb25seTxEbmRTdGF0ZT47XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZG5kL3NyYy9saWIvZG5kLXN0YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLGNBQWMsR0FDZixNQUFNLGFBQWEsQ0FBQztBQVNyQixNQUFNLFNBQVMsR0FBYTtJQUMxQixVQUFVLEVBQUUsS0FBSztJQUNqQixVQUFVLEVBQUUsTUFBTTtJQUNsQixhQUFhLEVBQUUsS0FBSztJQUNwQixJQUFJLEVBQUUsU0FBUztDQUNoQixDQUFDO0FBRUYsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsS0FBZ0IsRUFDaEIsYUFBNEIsRUFDNUIsSUFBd0I7SUFFeEIsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDNUIsU0FBUyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDOUIsU0FBUyxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDeEMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFFdEIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkIsS0FBSyxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO0lBQ25ELENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLE9BQU87SUFDckIsU0FBUyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDN0IsU0FBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDakMsU0FBUyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7SUFDcEMsU0FBUyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBZ0IsRUFBRSxVQUFzQjtJQUNwRSxJQUFJLFNBQVMsQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbEMsU0FBUyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztJQUM3QyxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQzNCLEtBQWdCLEVBQ2hCLGFBQTBDO0lBRTFDLE1BQU0seUJBQXlCLEdBQWtCLEtBQUssQ0FBQyxZQUFZO1FBQ2pFLENBQUMsQ0FBRSxLQUFLLENBQUMsWUFBWSxDQUFDLGFBQStCO1FBQ3JELENBQUMsQ0FBQyxlQUFlLENBQUM7SUFFcEIsSUFBSSxPQUFPLEdBQUcsYUFBYSxDQUFDLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO0lBRXJFLElBQUksU0FBUyxDQUFDLFVBQVUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEdBQUcsYUFBYSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsYUFBYyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksYUFBYSxFQUFFLENBQUM7UUFDbEIsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELHlGQUF5RjtJQUN6RixrRkFBa0Y7SUFDbEYsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQWUsQ0FBQztBQUNsQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUFnQjtJQUN6QyxJQUFJLFNBQVMsQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbEMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3QyxJQUFJLFFBQVEsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN0QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsSUFBSSxRQUFRLEtBQUssY0FBYyxJQUFJLFFBQVEsS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUMvRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbkUsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjO0lBQzVCLE9BQU8sU0FBUyxDQUFDLFVBQVUsS0FBSyxLQUFLLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBdUIsU0FBK0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyb3BFZmZlY3QsIEVmZmVjdEFsbG93ZWQgfSBmcm9tICcuL2RuZC10eXBlcyc7XG5pbXBvcnQge1xuICBDVVNUT01fTUlNRV9UWVBFLFxuICBEUk9QX0VGRkVDVFMsXG4gIGZpbHRlckVmZmVjdHMsXG4gIGdldFdlbGxLbm93bk1pbWVUeXBlLFxuICBKU09OX01JTUVfVFlQRSxcbiAgTVNJRV9NSU1FX1RZUEUsXG59IGZyb20gJy4vZG5kLXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBEbmRTdGF0ZSB7XG4gIGlzRHJhZ2dpbmc6IGJvb2xlYW47XG4gIGRyb3BFZmZlY3Q/OiBEcm9wRWZmZWN0O1xuICBlZmZlY3RBbGxvd2VkPzogRWZmZWN0QWxsb3dlZDtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuY29uc3QgX2RuZFN0YXRlOiBEbmRTdGF0ZSA9IHtcbiAgaXNEcmFnZ2luZzogZmFsc2UsXG4gIGRyb3BFZmZlY3Q6ICdub25lJyxcbiAgZWZmZWN0QWxsb3dlZDogJ2FsbCcsXG4gIHR5cGU6IHVuZGVmaW5lZCxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGFydERyYWcoXG4gIGV2ZW50OiBEcmFnRXZlbnQsXG4gIGVmZmVjdEFsbG93ZWQ6IEVmZmVjdEFsbG93ZWQsXG4gIHR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZFxuKSB7XG4gIF9kbmRTdGF0ZS5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgX2RuZFN0YXRlLmRyb3BFZmZlY3QgPSAnbm9uZSc7XG4gIF9kbmRTdGF0ZS5lZmZlY3RBbGxvd2VkID0gZWZmZWN0QWxsb3dlZDtcbiAgX2RuZFN0YXRlLnR5cGUgPSB0eXBlO1xuXG4gIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdEFsbG93ZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuZERyYWcoKSB7XG4gIF9kbmRTdGF0ZS5pc0RyYWdnaW5nID0gZmFsc2U7XG4gIF9kbmRTdGF0ZS5kcm9wRWZmZWN0ID0gdW5kZWZpbmVkO1xuICBfZG5kU3RhdGUuZWZmZWN0QWxsb3dlZCA9IHVuZGVmaW5lZDtcbiAgX2RuZFN0YXRlLnR5cGUgPSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREcm9wRWZmZWN0KGV2ZW50OiBEcmFnRXZlbnQsIGRyb3BFZmZlY3Q6IERyb3BFZmZlY3QpIHtcbiAgaWYgKF9kbmRTdGF0ZS5pc0RyYWdnaW5nID09PSB0cnVlKSB7XG4gICAgX2RuZFN0YXRlLmRyb3BFZmZlY3QgPSBkcm9wRWZmZWN0O1xuICB9XG5cbiAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gZHJvcEVmZmVjdDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHJvcEVmZmVjdChcbiAgZXZlbnQ6IERyYWdFdmVudCxcbiAgZWZmZWN0QWxsb3dlZD86IEVmZmVjdEFsbG93ZWQgfCBEcm9wRWZmZWN0XG4pOiBEcm9wRWZmZWN0IHtcbiAgY29uc3QgZGF0YVRyYW5zZmVyRWZmZWN0QWxsb3dlZDogRWZmZWN0QWxsb3dlZCA9IGV2ZW50LmRhdGFUcmFuc2ZlclxuICAgID8gKGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkIGFzIEVmZmVjdEFsbG93ZWQpXG4gICAgOiAndW5pbml0aWFsaXplZCc7XG5cbiAgbGV0IGVmZmVjdHMgPSBmaWx0ZXJFZmZlY3RzKERST1BfRUZGRUNUUywgZGF0YVRyYW5zZmVyRWZmZWN0QWxsb3dlZCk7XG5cbiAgaWYgKF9kbmRTdGF0ZS5pc0RyYWdnaW5nID09PSB0cnVlKSB7XG4gICAgZWZmZWN0cyA9IGZpbHRlckVmZmVjdHMoZWZmZWN0cywgX2RuZFN0YXRlLmVmZmVjdEFsbG93ZWQhKTtcbiAgfVxuXG4gIGlmIChlZmZlY3RBbGxvd2VkKSB7XG4gICAgZWZmZWN0cyA9IGZpbHRlckVmZmVjdHMoZWZmZWN0cywgZWZmZWN0QWxsb3dlZCk7XG4gIH1cblxuICAvLyBNYWNPUyBhdXRvbWF0aWNhbGx5IGZpbHRlcnMgZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgZGVwZW5kaW5nIG9uIHRoZSBtb2RpZmllciBrZXlzLFxuICAvLyB0aGVyZWZvcmUgdGhlIGZvbGxvd2luZyBtb2RpZmllciBrZXlzIHdpbGwgb25seSBhZmZlY3Qgb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMuXG4gIGlmIChlZmZlY3RzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnbm9uZSc7XG4gIH1cblxuICBpZiAoZXZlbnQuY3RybEtleSAmJiBlZmZlY3RzLmluZGV4T2YoJ2NvcHknKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gJ2NvcHknO1xuICB9XG5cbiAgaWYgKGV2ZW50LmFsdEtleSAmJiBlZmZlY3RzLmluZGV4T2YoJ2xpbmsnKSAhPT0gLTEpIHtcbiAgICByZXR1cm4gJ2xpbmsnO1xuICB9XG5cbiAgcmV0dXJuIGVmZmVjdHNbMF0gYXMgRHJvcEVmZmVjdDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERuZFR5cGUoZXZlbnQ6IERyYWdFdmVudCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChfZG5kU3RhdGUuaXNEcmFnZ2luZyA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBfZG5kU3RhdGUudHlwZTtcbiAgfVxuXG4gIGNvbnN0IG1pbWVUeXBlID0gZ2V0V2VsbEtub3duTWltZVR5cGUoZXZlbnQpO1xuXG4gIGlmIChtaW1lVHlwZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAobWltZVR5cGUgPT09IE1TSUVfTUlNRV9UWVBFIHx8IG1pbWVUeXBlID09PSBKU09OX01JTUVfVFlQRSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gbWltZVR5cGUuc3Vic3RyKENVU1RPTV9NSU1FX1RZUEUubGVuZ3RoICsgMSkgfHwgdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbERyYWcoKTogYm9vbGVhbiB7XG4gIHJldHVybiBfZG5kU3RhdGUuaXNEcmFnZ2luZyA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBjb25zdCBkbmRTdGF0ZTogUmVhZG9ubHk8RG5kU3RhdGU+ID0gX2RuZFN0YXRlIGFzIFJlYWRvbmx5PERuZFN0YXRlPjtcbiJdfQ==
@@ -109,4 +109,4 @@ export function setDragImage(event, dragImage, offsetFunction) {
109
109
  const offset = offsetFunction(event, dragImage) || { x: 0, y: 0 };
110
110
  event.dataTransfer.setDragImage(dragImage, offset.x, offset.y);
111
111
  }
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZG5kL3NyYy9saWIvZG5kLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBaUIsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUVyQyxTQUFTLGdCQUFnQixDQUFDLFFBQWdCO0lBQ3hDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssZ0JBQWdCLENBQUM7QUFDMUUsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFnQjtJQUNuRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7UUFDdEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFdkMsbUJBQW1CO1FBQ25CLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLGNBQWMsQ0FBQztTQUN2QjtRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLElBQ0UsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLGNBQWM7Z0JBQzNCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxjQUFjO2dCQUMzQixnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDMUI7Z0JBQ0EsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakI7U0FDRjtLQUNGO0lBRUQs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Q0FDMUIsS0FBZ0IsRUFDaEIsU0FBa0IsRUFDbEIsY0FBMEM7SUFFMUMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBRWpFLEtBQUssQ0FBQyxZQUFvQixDQUFDLFlBQVksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyb3BFZmZlY3QsIEVmZmVjdEFsbG93ZWQgfSBmcm9tICcuL2RuZC10eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhZ0Ryb3BEYXRhIHtcbiAgZGF0YT86IGFueTtcbiAgdHlwZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEbmRFdmVudCBleHRlbmRzIERyYWdFdmVudCB7XG4gIF9kbmRVc2luZ0hhbmRsZT86IGJvb2xlYW47XG4gIF9kbmREcm9wem9uZUFjdGl2ZT86IHRydWU7XG59XG5cbmV4cG9ydCB0eXBlIERuZERyYWdJbWFnZU9mZnNldEZ1bmN0aW9uID0gKFxuICBldmVudDogRHJhZ0V2ZW50LFxuICBkcmFnSW1hZ2U6IEVsZW1lbnRcbikgPT4geyB4OiBudW1iZXI7IHk6IG51bWJlciB9O1xuXG5leHBvcnQgY29uc3QgRFJPUF9FRkZFQ1RTID0gWydtb3ZlJywgJ2NvcHknLCAnbGluayddIGFzIERyb3BFZmZlY3RbXTtcblxuZXhwb3J0IGNvbnN0IENVU1RPTV9NSU1FX1RZUEUgPSAnYXBwbGljYXRpb24veC1kbmQnO1xuZXhwb3J0IGNvbnN0IEpTT05fTUlNRV9UWVBFID0gJ2FwcGxpY2F0aW9uL2pzb24nO1xuZXhwb3J0IGNvbnN0IE1TSUVfTUlNRV9UWVBFID0gJ1RleHQnO1xuXG5mdW5jdGlvbiBtaW1lVHlwZUlzQ3VzdG9tKG1pbWVUeXBlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG1pbWVUeXBlLnN1YnN0cigwLCBDVVNUT01fTUlNRV9UWVBFLmxlbmd0aCkgPT09IENVU1RPTV9NSU1FX1RZUEU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWxsS25vd25NaW1lVHlwZShldmVudDogRHJhZ0V2ZW50KTogc3RyaW5nIHwgbnVsbCB7XG4gIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICBjb25zdCB0eXBlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcztcblxuICAgIC8vIElFIDkgd29ya2Fyb3VuZC5cbiAgICBpZiAoIXR5cGVzKSB7XG4gICAgICByZXR1cm4gTVNJRV9NSU1FX1RZUEU7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0eXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKFxuICAgICAgICB0eXBlc1tpXSA9PT0gTVNJRV9NSU1FX1RZUEUgfHxcbiAgICAgICAgdHlwZXNbaV0gPT09IEpTT05fTUlNRV9UWVBFIHx8XG4gICAgICAgIG1pbWVUeXBlSXNDdXN0b20odHlwZXNbaV0pXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHR5cGVzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RHJhZ0RhdGEoXG4gIGV2ZW50OiBEcmFnRXZlbnQsXG4gIGRhdGE6IERyYWdEcm9wRGF0YSxcbiAgZWZmZWN0QWxsb3dlZDogRWZmZWN0QWxsb3dlZFxuKTogdm9pZCB7XG4gIC8vIEludGVybmV0IEV4cGxvcmVyIGFuZCBNaWNyb3NvZnQgRWRnZSBkb24ndCBzdXBwb3J0IGN1c3RvbSBtaW1lIHR5cGVzLCBzZWUgZGVzaWduIGRvYzpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hcmNlbGp1ZW5lbWFubi9hbmd1bGFyLWRyYWctYW5kLWRyb3AtbGlzdHMvd2lraS9EYXRhLVRyYW5zZmVyLURlc2lnblxuICBjb25zdCBtaW1lVHlwZSA9IENVU1RPTV9NSU1FX1RZUEUgKyAoZGF0YS50eXBlID8gJy0nICsgZGF0YS50eXBlIDogJycpO1xuXG4gIGNvbnN0IGRhdGFTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcblxuICB0cnkge1xuICAgIGV2ZW50LmRhdGFUcmFuc2Zlcj8uc2V0RGF0YShtaW1lVHlwZSwgZGF0YVN0cmluZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyAgIFNldHRpbmcgYSBjdXN0b20gTUlNRSB0eXBlIGRpZCBub3Qgd29yaywgd2UgYXJlIHByb2JhYmx5IGluIElFIG9yIEVkZ2UuXG4gICAgdHJ5IHtcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlcj8uc2V0RGF0YShKU09OX01JTUVfVFlQRSwgZGF0YVN0cmluZyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gICBXZSBhcmUgaW4gSW50ZXJuZXQgRXhwbG9yZXIgYW5kIGNhbiBvbmx5IHVzZSB0aGUgVGV4dCBNSU1FIHR5cGUuIEFsc28gbm90ZSB0aGF0IElFXG4gICAgICAvLyAgIGRvZXMgbm90IGFsbG93IGNoYW5naW5nIHRoZSBjdXJzb3IgaW4gdGhlIGRyYWdvdmVyIGV2ZW50LCB0aGVyZWZvcmUgd2UgaGF2ZSB0byBjaG9vc2VcbiAgICAgIC8vICAgdGhlIG9uZSB3ZSB3YW50IHRvIGRpc3BsYXkgbm93IGJ5IHNldHRpbmcgZWZmZWN0QWxsb3dlZC5cbiAgICAgIGNvbnN0IGVmZmVjdHNBbGxvd2VkID0gZmlsdGVyRWZmZWN0cyhEUk9QX0VGRkVDVFMsIGVmZmVjdEFsbG93ZWQpO1xuICAgICAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9IGVmZmVjdHNBbGxvd2VkWzBdO1xuICAgICAgfVxuXG4gICAgICBldmVudC5kYXRhVHJhbnNmZXI/LnNldERhdGEoTVNJRV9NSU1FX1RZUEUsIGRhdGFTdHJpbmcpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHJvcERhdGEoXG4gIGV2ZW50OiBEcmFnRXZlbnQsXG4gIGRyYWdJc0V4dGVybmFsOiBib29sZWFuXG4pOiBEcmFnRHJvcERhdGEge1xuICAvLyBjaGVjayBpZiB0aGUgbWltZSB0eXBlIGlzIHdlbGwga25vd25cbiAgY29uc3QgbWltZVR5cGUgPSBnZXRXZWxsS25vd25NaW1lVHlwZShldmVudCk7XG5cbiAgLy8gZHJhZyBkaWQgbm90IG9yaWdpbmF0ZSBmcm9tIFtkbmREcmFnZ2FibGVdXG4gIGlmIChkcmFnSXNFeHRlcm5hbCA9PT0gdHJ1ZSkge1xuICAgIGlmIChtaW1lVHlwZSAhPT0gbnVsbCAmJiBtaW1lVHlwZUlzQ3VzdG9tKG1pbWVUeXBlKSkge1xuICAgICAgLy8gdGhlIHR5cGUgb2YgY29udGVudCBpcyB3ZWxsIGtub3duIGFuZCBzYWZlIHRvIGhhbmRsZVxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZXZlbnQuZGF0YVRyYW5zZmVyPy5nZXREYXRhKG1pbWVUeXBlKSA/PyAne30nKTtcbiAgICB9XG5cbiAgICAvLyB0aGUgY29udGFpbmVkIGRhdGEgaXMgdW5rbm93biwgbGV0IHVzZXIgaGFuZGxlIGl0XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaWYgKG1pbWVUeXBlICE9PSBudWxsKSB7XG4gICAgLy8gdGhlIHR5cGUgb2YgY29udGVudCBpcyB3ZWxsIGtub3duIGFuZCBzYWZlIHRvIGhhbmRsZVxuICAgIHJldHVybiBKU09OLnBhcnNlKGV2ZW50LmRhdGFUcmFuc2Zlcj8uZ2V0RGF0YShtaW1lVHlwZSkgPz8gJ3t9Jyk7XG4gIH1cblxuICAvLyB0aGUgY29udGFpbmVkIGRhdGEgaXMgdW5rbm93biwgbGV0IHVzZXIgaGFuZGxlIGl0XG4gIHJldHVybiB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckVmZmVjdHMoXG4gIGVmZmVjdHM6IERyb3BFZmZlY3RbXSxcbiAgYWxsb3dlZDogRWZmZWN0QWxsb3dlZCB8IERyb3BFZmZlY3Rcbik6IERyb3BFZmZlY3RbXSB7XG4gIGlmIChhbGxvd2VkID09PSAnYWxsJyB8fCBhbGxvd2VkID09PSAndW5pbml0aWFsaXplZCcpIHtcbiAgICByZXR1cm4gZWZmZWN0cztcbiAgfVxuXG4gIHJldHVybiBlZmZlY3RzLmZpbHRlcihmdW5jdGlvbiAoZWZmZWN0KSB7XG4gICAgcmV0dXJuIGFsbG93ZWQudG9Mb3dlckNhc2UoKS5pbmRleE9mKGVmZmVjdCkgIT09IC0xO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERpcmVjdENoaWxkRWxlbWVudChcbiAgcGFyZW50RWxlbWVudDogRWxlbWVudCxcbiAgY2hpbGRFbGVtZW50OiBFbGVtZW50XG4pOiBFbGVtZW50IHwgbnVsbCB7XG4gIGxldCBkaXJlY3RDaGlsZDogTm9kZSA9IGNoaWxkRWxlbWVudDtcblxuICB3aGlsZSAoZGlyZWN0Q2hpbGQucGFyZW50Tm9kZSAhPT0gcGFyZW50RWxlbWVudCkge1xuICAgIC8vIHJlYWNoZWQgcm9vdCBub2RlIHdpdGhvdXQgZmluZGluZyBnaXZlbiBwYXJlbnRcbiAgICBpZiAoIWRpcmVjdENoaWxkLnBhcmVudE5vZGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGRpcmVjdENoaWxkID0gZGlyZWN0Q2hpbGQucGFyZW50Tm9kZTtcbiAgfVxuXG4gIHJldHVybiBkaXJlY3RDaGlsZCBhcyBFbGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkUG9zaXRpb25QbGFjZWhvbGRlckJlZm9yZUVsZW1lbnQoXG4gIGV2ZW50OiBEcmFnRXZlbnQsXG4gIGVsZW1lbnQ6IEVsZW1lbnQsXG4gIGhvcml6b250YWw6IGJvb2xlYW5cbikge1xuICBjb25zdCBib3VuZHMgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gIC8vIElmIHRoZSBwb2ludGVyIGlzIGluIHRoZSB1cHBlciBoYWxmIG9mIHRoZSBsaXN0IGl0ZW0gZWxlbWVudCxcbiAgLy8gd2UgcG9zaXRpb24gdGhlIHBsYWNlaG9sZGVyIGJlZm9yZSB0aGUgbGlzdCBpdGVtLCBvdGhlcndpc2UgYWZ0ZXIgaXQuXG4gIGlmIChob3Jpem9udGFsKSB7XG4gICAgcmV0dXJuIGV2ZW50LmNsaWVudFggPCBib3VuZHMubGVmdCArIGJvdW5kcy53aWR0aCAvIDI7XG4gIH1cblxuICByZXR1cm4gZXZlbnQuY2xpZW50WSA8IGJvdW5kcy50b3AgKyBib3VuZHMuaGVpZ2h0IC8gMjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZURyYWdJbWFnZU9mZnNldChcbiAgZXZlbnQ6IERyYWdFdmVudCxcbiAgZHJhZ0ltYWdlOiBFbGVtZW50XG4pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0ge1xuICBjb25zdCBkcmFnSW1hZ2VDb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZHJhZ0ltYWdlKTtcbiAgY29uc3QgcGFkZGluZ1RvcCA9IHBhcnNlRmxvYXQoZHJhZ0ltYWdlQ29tcHV0ZWRTdHlsZS5wYWRkaW5nVG9wKSB8fCAwO1xuICBjb25zdCBwYWRkaW5nTGVmdCA9IHBhcnNlRmxvYXQoZHJhZ0ltYWdlQ29tcHV0ZWRTdHlsZS5wYWRkaW5nTGVmdCkgfHwgMDtcbiAgY29uc3QgYm9yZGVyVG9wID0gcGFyc2VGbG9hdChkcmFnSW1hZ2VDb21wdXRlZFN0eWxlLmJvcmRlclRvcFdpZHRoKSB8fCAwO1xuICBjb25zdCBib3JkZXJMZWZ0ID0gcGFyc2VGbG9hdChkcmFnSW1hZ2VDb21wdXRlZFN0eWxlLmJvcmRlckxlZnRXaWR0aCkgfHwgMDtcblxuICByZXR1cm4ge1xuICAgIHg6IGV2ZW50Lm9mZnNldFggKyBwYWRkaW5nTGVmdCArIGJvcmRlckxlZnQsXG4gICAgeTogZXZlbnQub2Zmc2V0WSArIHBhZGRpbmdUb3AgKyBib3JkZXJUb3AsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXREcmFnSW1hZ2UoXG4gIGV2ZW50OiBEcmFnRXZlbnQsXG4gIGRyYWdJbWFnZTogRWxlbWVudCxcbiAgb2Zmc2V0RnVuY3Rpb246IERuZERyYWdJbWFnZU9mZnNldEZ1bmN0aW9uXG4pOiB2b2lkIHtcbiAgY29uc3Qgb2Zmc2V0ID0gb2Zmc2V0RnVuY3Rpb24oZXZlbnQsIGRyYWdJbWFnZSkgfHwgeyB4OiAwLCB5OiAwIH07XG5cbiAgKGV2ZW50LmRhdGFUcmFuc2ZlciBhcyBhbnkpLnNldERyYWdJbWFnZShkcmFnSW1hZ2UsIG9mZnNldC54LCBvZmZzZXQueSk7XG59XG4iXX0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZG5kL3NyYy9saWIvZG5kLXV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlCQSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBaUIsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQztBQUNwRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsa0JBQWtCLENBQUM7QUFDakQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQztBQUVyQyxTQUFTLGdCQUFnQixDQUFDLFFBQWdCO0lBQ3hDLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssZ0JBQWdCLENBQUM7QUFDMUUsQ0FBQztBQUVELE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxLQUFnQjtJQUNuRCxJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUV2QyxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTyxjQUFjLENBQUM7UUFDeEIsQ0FBQztRQUVELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDdEMsSUFDRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssY0FBYztnQkFDM0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLGNBQWM7Z0JBQzNCLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUMxQixDQUFDO2dCQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxD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QyxDQUFDO0lBRTNFLE9BQU87UUFDTCxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sR0FBRyxXQUFXLEdBQUcsVUFBVTtRQUMzQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sR0FBRyxVQUFVLEdBQUcsU0FBUztLQUMxQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQWdCLEVBQ2hCLFNBQWtCLEVBQ2xCLGNBQTBDO0lBRTFDLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUVqRSxLQUFLLENBQUMsWUFBb0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcm9wRWZmZWN0LCBFZmZlY3RBbGxvd2VkIH0gZnJvbSAnLi9kbmQtdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyYWdEcm9wRGF0YSB7XG4gIGRhdGE/OiBhbnk7XG4gIHR5cGU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG5kRXZlbnQgZXh0ZW5kcyBEcmFnRXZlbnQge1xuICBfZG5kVXNpbmdIYW5kbGU/OiBib29sZWFuO1xuICBfZG5kRHJvcHpvbmVBY3RpdmU/OiB0cnVlO1xufVxuXG5leHBvcnQgdHlwZSBEbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvbiA9IChcbiAgZXZlbnQ6IERyYWdFdmVudCxcbiAgZHJhZ0ltYWdlOiBFbGVtZW50XG4pID0+IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfTtcblxuZXhwb3J0IGNvbnN0IERST1BfRUZGRUNUUyA9IFsnbW92ZScsICdjb3B5JywgJ2xpbmsnXSBhcyBEcm9wRWZmZWN0W107XG5cbmV4cG9ydCBjb25zdCBDVVNUT01fTUlNRV9UWVBFID0gJ2FwcGxpY2F0aW9uL3gtZG5kJztcbmV4cG9ydCBjb25zdCBKU09OX01JTUVfVFlQRSA9ICdhcHBsaWNhdGlvbi9qc29uJztcbmV4cG9ydCBjb25zdCBNU0lFX01JTUVfVFlQRSA9ICdUZXh0JztcblxuZnVuY3Rpb24gbWltZVR5cGVJc0N1c3RvbShtaW1lVHlwZTogc3RyaW5nKSB7XG4gIHJldHVybiBtaW1lVHlwZS5zdWJzdHIoMCwgQ1VTVE9NX01JTUVfVFlQRS5sZW5ndGgpID09PSBDVVNUT01fTUlNRV9UWVBFO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2VsbEtub3duTWltZVR5cGUoZXZlbnQ6IERyYWdFdmVudCk6IHN0cmluZyB8IG51bGwge1xuICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgY29uc3QgdHlwZXMgPSBldmVudC5kYXRhVHJhbnNmZXIudHlwZXM7XG5cbiAgICAvLyBJRSA5IHdvcmthcm91bmQuXG4gICAgaWYgKCF0eXBlcykge1xuICAgICAgcmV0dXJuIE1TSUVfTUlNRV9UWVBFO1xuICAgIH1cblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZXNbaV0gPT09IE1TSUVfTUlNRV9UWVBFIHx8XG4gICAgICAgIHR5cGVzW2ldID09PSBKU09OX01JTUVfVFlQRSB8fFxuICAgICAgICBtaW1lVHlwZUlzQ3VzdG9tKHR5cGVzW2ldKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0eXBlc1tpXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERyYWdEYXRhKFxuICBldmVudDogRHJhZ0V2ZW50LFxuICBkYXRhOiBEcmFnRHJvcERhdGEsXG4gIGVmZmVjdEFsbG93ZWQ6IEVmZmVjdEFsbG93ZWRcbik6IHZvaWQge1xuICAvLyBJbnRlcm5ldCBFeHBsb3JlciBhbmQgTWljcm9zb2Z0IEVkZ2UgZG9uJ3Qgc3VwcG9ydCBjdXN0b20gbWltZSB0eXBlcywgc2VlIGRlc2lnbiBkb2M6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJjZWxqdWVuZW1hbm4vYW5ndWxhci1kcmFnLWFuZC1kcm9wLWxpc3RzL3dpa2kvRGF0YS1UcmFuc2Zlci1EZXNpZ25cbiAgY29uc3QgbWltZVR5cGUgPSBDVVNUT01fTUlNRV9UWVBFICsgKGRhdGEudHlwZSA/ICctJyArIGRhdGEudHlwZSA6ICcnKTtcblxuICBjb25zdCBkYXRhU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG5cbiAgdHJ5IHtcbiAgICBldmVudC5kYXRhVHJhbnNmZXI/LnNldERhdGEobWltZVR5cGUsIGRhdGFTdHJpbmcpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gICBTZXR0aW5nIGEgY3VzdG9tIE1JTUUgdHlwZSBkaWQgbm90IHdvcmssIHdlIGFyZSBwcm9iYWJseSBpbiBJRSBvciBFZGdlLlxuICAgIHRyeSB7XG4gICAgICBldmVudC5kYXRhVHJhbnNmZXI/LnNldERhdGEoSlNPTl9NSU1FX1RZUEUsIGRhdGFTdHJpbmcpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vICAgV2UgYXJlIGluIEludGVybmV0IEV4cGxvcmVyIGFuZCBjYW4gb25seSB1c2UgdGhlIFRleHQgTUlNRSB0eXBlLiBBbHNvIG5vdGUgdGhhdCBJRVxuICAgICAgLy8gICBkb2VzIG5vdCBhbGxvdyBjaGFuZ2luZyB0aGUgY3Vyc29yIGluIHRoZSBkcmFnb3ZlciBldmVudCwgdGhlcmVmb3JlIHdlIGhhdmUgdG8gY2hvb3NlXG4gICAgICAvLyAgIHRoZSBvbmUgd2Ugd2FudCB0byBkaXNwbGF5IG5vdyBieSBzZXR0aW5nIGVmZmVjdEFsbG93ZWQuXG4gICAgICBjb25zdCBlZmZlY3RzQWxsb3dlZCA9IGZpbHRlckVmZmVjdHMoRFJPUF9FRkZFQ1RTLCBlZmZlY3RBbGxvd2VkKTtcbiAgICAgIGlmIChldmVudC5kYXRhVHJhbnNmZXIpIHtcbiAgICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBlZmZlY3RzQWxsb3dlZFswXTtcbiAgICAgIH1cblxuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyPy5zZXREYXRhKE1TSUVfTUlNRV9UWVBFLCBkYXRhU3RyaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERyb3BEYXRhKFxuICBldmVudDogRHJhZ0V2ZW50LFxuICBkcmFnSXNFeHRlcm5hbDogYm9vbGVhblxuKTogRHJhZ0Ryb3BEYXRhIHtcbiAgLy8gY2hlY2sgaWYgdGhlIG1pbWUgdHlwZSBpcyB3ZWxsIGtub3duXG4gIGNvbnN0IG1pbWVUeXBlID0gZ2V0V2VsbEtub3duTWltZVR5cGUoZXZlbnQpO1xuXG4gIC8vIGRyYWcgZGlkIG5vdCBvcmlnaW5hdGUgZnJvbSBbZG5kRHJhZ2dhYmxlXVxuICBpZiAoZHJhZ0lzRXh0ZXJuYWwgPT09IHRydWUpIHtcbiAgICBpZiAobWltZVR5cGUgIT09IG51bGwgJiYgbWltZVR5cGVJc0N1c3RvbShtaW1lVHlwZSkpIHtcbiAgICAgIC8vIHRoZSB0eXBlIG9mIGNvbnRlbnQgaXMgd2VsbCBrbm93biBhbmQgc2FmZSB0byBoYW5kbGVcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKGV2ZW50LmRhdGFUcmFuc2Zlcj8uZ2V0RGF0YShtaW1lVHlwZSkgPz8gJ3t9Jyk7XG4gICAgfVxuXG4gICAgLy8gdGhlIGNvbnRhaW5lZCBkYXRhIGlzIHVua25vd24sIGxldCB1c2VyIGhhbmRsZSBpdFxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGlmIChtaW1lVHlwZSAhPT0gbnVsbCkge1xuICAgIC8vIHRoZSB0eXBlIG9mIGNvbnRlbnQgaXMgd2VsbCBrbm93biBhbmQgc2FmZSB0byBoYW5kbGVcbiAgICByZXR1cm4gSlNPTi5wYXJzZShldmVudC5kYXRhVHJhbnNmZXI/LmdldERhdGEobWltZVR5cGUpID8/ICd7fScpO1xuICB9XG5cbiAgLy8gdGhlIGNvbnRhaW5lZCBkYXRhIGlzIHVua25vd24sIGxldCB1c2VyIGhhbmRsZSBpdFxuICByZXR1cm4ge307XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJFZmZlY3RzKFxuICBlZmZlY3RzOiBEcm9wRWZmZWN0W10sXG4gIGFsbG93ZWQ6IEVmZmVjdEFsbG93ZWQgfCBEcm9wRWZmZWN0XG4pOiBEcm9wRWZmZWN0W10ge1xuICBpZiAoYWxsb3dlZCA9PT0gJ2FsbCcgfHwgYWxsb3dlZCA9PT0gJ3VuaW5pdGlhbGl6ZWQnKSB7XG4gICAgcmV0dXJuIGVmZmVjdHM7XG4gIH1cblxuICByZXR1cm4gZWZmZWN0cy5maWx0ZXIoZnVuY3Rpb24gKGVmZmVjdCkge1xuICAgIHJldHVybiBhbGxvd2VkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihlZmZlY3QpICE9PSAtMTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREaXJlY3RDaGlsZEVsZW1lbnQoXG4gIHBhcmVudEVsZW1lbnQ6IEVsZW1lbnQsXG4gIGNoaWxkRWxlbWVudDogRWxlbWVudFxuKTogRWxlbWVudCB8IG51bGwge1xuICBsZXQgZGlyZWN0Q2hpbGQ6IE5vZGUgPSBjaGlsZEVsZW1lbnQ7XG5cbiAgd2hpbGUgKGRpcmVjdENoaWxkLnBhcmVudE5vZGUgIT09IHBhcmVudEVsZW1lbnQpIHtcbiAgICAvLyByZWFjaGVkIHJvb3Qgbm9kZSB3aXRob3V0IGZpbmRpbmcgZ2l2ZW4gcGFyZW50XG4gICAgaWYgKCFkaXJlY3RDaGlsZC5wYXJlbnROb2RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBkaXJlY3RDaGlsZCA9IGRpcmVjdENoaWxkLnBhcmVudE5vZGU7XG4gIH1cblxuICByZXR1cm4gZGlyZWN0Q2hpbGQgYXMgRWxlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFBvc2l0aW9uUGxhY2Vob2xkZXJCZWZvcmVFbGVtZW50KFxuICBldmVudDogRHJhZ0V2ZW50LFxuICBlbGVtZW50OiBFbGVtZW50LFxuICBob3Jpem9udGFsOiBib29sZWFuXG4pIHtcbiAgY29uc3QgYm91bmRzID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAvLyBJZiB0aGUgcG9pbnRlciBpcyBpbiB0aGUgdXBwZXIgaGFsZiBvZiB0aGUgbGlzdCBpdGVtIGVsZW1lbnQsXG4gIC8vIHdlIHBvc2l0aW9uIHRoZSBwbGFjZWhvbGRlciBiZWZvcmUgdGhlIGxpc3QgaXRlbSwgb3RoZXJ3aXNlIGFmdGVyIGl0LlxuICBpZiAoaG9yaXpvbnRhbCkge1xuICAgIHJldHVybiBldmVudC5jbGllbnRYIDwgYm91bmRzLmxlZnQgKyBib3VuZHMud2lkdGggLyAyO1xuICB9XG5cbiAgcmV0dXJuIGV2ZW50LmNsaWVudFkgPCBib3VuZHMudG9wICsgYm91bmRzLmhlaWdodCAvIDI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVEcmFnSW1hZ2VPZmZzZXQoXG4gIGV2ZW50OiBEcmFnRXZlbnQsXG4gIGRyYWdJbWFnZTogRWxlbWVudFxuKTogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHtcbiAgY29uc3QgZHJhZ0ltYWdlQ29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRyYWdJbWFnZSk7XG4gIGNvbnN0IHBhZGRpbmdUb3AgPSBwYXJzZUZsb2F0KGRyYWdJbWFnZUNvbXB1dGVkU3R5bGUucGFkZGluZ1RvcCkgfHwgMDtcbiAgY29uc3QgcGFkZGluZ0xlZnQgPSBwYXJzZUZsb2F0KGRyYWdJbWFnZUNvbXB1dGVkU3R5bGUucGFkZGluZ0xlZnQpIHx8IDA7XG4gIGNvbnN0IGJvcmRlclRvcCA9IHBhcnNlRmxvYXQoZHJhZ0ltYWdlQ29tcHV0ZWRTdHlsZS5ib3JkZXJUb3BXaWR0aCkgfHwgMDtcbiAgY29uc3QgYm9yZGVyTGVmdCA9IHBhcnNlRmxvYXQoZHJhZ0ltYWdlQ29tcHV0ZWRTdHlsZS5ib3JkZXJMZWZ0V2lkdGgpIHx8IDA7XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBldmVudC5vZmZzZXRYICsgcGFkZGluZ0xlZnQgKyBib3JkZXJMZWZ0LFxuICAgIHk6IGV2ZW50Lm9mZnNldFkgKyBwYWRkaW5nVG9wICsgYm9yZGVyVG9wLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0RHJhZ0ltYWdlKFxuICBldmVudDogRHJhZ0V2ZW50LFxuICBkcmFnSW1hZ2U6IEVsZW1lbnQsXG4gIG9mZnNldEZ1bmN0aW9uOiBEbmREcmFnSW1hZ2VPZmZzZXRGdW5jdGlvblxuKTogdm9pZCB7XG4gIGNvbnN0IG9mZnNldCA9IG9mZnNldEZ1bmN0aW9uKGV2ZW50LCBkcmFnSW1hZ2UpIHx8IHsgeDogMCwgeTogMCB9O1xuXG4gIChldmVudC5kYXRhVHJhbnNmZXIgYXMgYW55KS5zZXREcmFnSW1hZ2UoZHJhZ0ltYWdlLCBvZmZzZXQueCwgb2Zmc2V0LnkpO1xufVxuIl19
@@ -4,8 +4,8 @@ import { DndDropzoneDirective, DndPlaceholderRefDirective, } from './dnd-dropzon
4
4
  import { DndHandleDirective } from './dnd-handle.directive';
5
5
  import * as i0 from "@angular/core";
6
6
  export class DndModule {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: DndModule, imports: [DndDragImageRefDirective,
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: DndModule, imports: [DndDragImageRefDirective,
9
9
  DndDropzoneDirective,
10
10
  DndHandleDirective,
11
11
  DndPlaceholderRefDirective,
@@ -14,9 +14,9 @@ export class DndModule {
14
14
  DndHandleDirective,
15
15
  DndPlaceholderRefDirective,
16
16
  DndDragImageRefDirective] });
17
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndModule });
17
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndModule });
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndModule, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndModule, decorators: [{
20
20
  type: NgModule,
21
21
  args: [{
22
22
  exports: [
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { forwardRef, inject, ElementRef, Directive, EventEmitter, Renderer2, NgZone, Input, Output, HostBinding, HostListener, ContentChild, NgModule } from '@angular/core';
2
+ import { inject, forwardRef, ElementRef, Directive, EventEmitter, Renderer2, NgZone, Input, Output, HostBinding, HostListener, ContentChild, NgModule } from '@angular/core';
3
3
 
4
4
  const DROP_EFFECTS = ['move', 'copy', 'link'];
5
5
  const CUSTOM_MIME_TYPE = 'application/x-dnd';
@@ -190,10 +190,10 @@ class DndDragImageRefDirective {
190
190
  ngOnInit() {
191
191
  this.dndDraggableDirective.registerDragImage(this.elementRef);
192
192
  }
193
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDragImageRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
194
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: DndDragImageRefDirective, isStandalone: true, selector: "[dndDragImageRef]", ngImport: i0 });
193
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDragImageRefDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
194
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: DndDragImageRefDirective, isStandalone: true, selector: "[dndDragImageRef]", ngImport: i0 });
195
195
  }
196
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDragImageRefDirective, decorators: [{
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDragImageRefDirective, decorators: [{
197
197
  type: Directive,
198
198
  args: [{ selector: '[dndDragImageRef]', standalone: true }]
199
199
  }] });
@@ -273,7 +273,9 @@ class DndDraggableDirective {
273
273
  this.dndStart.emit(event);
274
274
  event.stopPropagation();
275
275
  setTimeout(() => {
276
- this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');
276
+ if (this.isDragStarted) {
277
+ this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');
278
+ }
277
279
  }, 100);
278
280
  return true;
279
281
  }
@@ -330,10 +332,10 @@ class DndDraggableDirective {
330
332
  return this.elementRef.nativeElement;
331
333
  }
332
334
  }
333
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
334
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", 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 });
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDraggableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
336
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 });
335
337
  }
336
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDraggableDirective, decorators: [{
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDraggableDirective, decorators: [{
337
339
  type: Directive,
338
340
  args: [{ selector: '[dndDraggable]', standalone: true }]
339
341
  }], propDecorators: { dndDraggable: [{
@@ -388,10 +390,10 @@ class DndPlaceholderRefDirective {
388
390
  // placeholder has to be "invisible" to the cursor, or it would interfere with the dragover detection for the same dropzone
389
391
  this.elementRef.nativeElement.style.pointerEvents = 'none';
390
392
  }
391
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndPlaceholderRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
392
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: DndPlaceholderRefDirective, isStandalone: true, selector: "[dndPlaceholderRef]", ngImport: i0 });
393
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndPlaceholderRefDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
394
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: DndPlaceholderRefDirective, isStandalone: true, selector: "[dndPlaceholderRef]", ngImport: i0 });
393
395
  }
394
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndPlaceholderRefDirective, decorators: [{
396
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndPlaceholderRefDirective, decorators: [{
395
397
  type: Directive,
396
398
  args: [{ selector: '[dndPlaceholderRef]', standalone: true }]
397
399
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
@@ -621,10 +623,10 @@ class DndDropzoneDirective {
621
623
  this.renderer.removeClass(this.elementRef.nativeElement, this.dndDragoverClass);
622
624
  this.removePlaceholderFromDOM();
623
625
  }
624
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
625
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", 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 });
626
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDropzoneDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
627
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.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 });
626
628
  }
627
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndDropzoneDirective, decorators: [{
629
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndDropzoneDirective, decorators: [{
628
630
  type: Directive,
629
631
  args: [{ selector: '[dndDropzone]', standalone: true }]
630
632
  }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { dndDropzone: [{
@@ -664,10 +666,10 @@ class DndHandleDirective {
664
666
  onDragEvent(event) {
665
667
  event._dndUsingHandle = true;
666
668
  }
667
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
668
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: DndHandleDirective, isStandalone: true, selector: "[dndHandle]", host: { listeners: { "dragstart": "onDragEvent($event)", "dragend": "onDragEvent($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
669
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndHandleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
670
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: DndHandleDirective, isStandalone: true, selector: "[dndHandle]", host: { listeners: { "dragstart": "onDragEvent($event)", "dragend": "onDragEvent($event)" }, properties: { "attr.draggable": "this.draggable" } }, ngImport: i0 });
669
671
  }
670
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndHandleDirective, decorators: [{
672
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndHandleDirective, decorators: [{
671
673
  type: Directive,
672
674
  args: [{ selector: '[dndHandle]', standalone: true }]
673
675
  }], propDecorators: { draggable: [{
@@ -682,8 +684,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
682
684
  }] } });
683
685
 
684
686
  class DndModule {
685
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
686
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.4", ngImport: i0, type: DndModule, imports: [DndDragImageRefDirective,
687
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
688
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: DndModule, imports: [DndDragImageRefDirective,
687
689
  DndDropzoneDirective,
688
690
  DndHandleDirective,
689
691
  DndPlaceholderRefDirective,
@@ -692,9 +694,9 @@ class DndModule {
692
694
  DndHandleDirective,
693
695
  DndPlaceholderRefDirective,
694
696
  DndDragImageRefDirective] });
695
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndModule });
697
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndModule });
696
698
  }
697
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DndModule, decorators: [{
699
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: DndModule, decorators: [{
698
700
  type: NgModule,
699
701
  args: [{
700
702
  exports: [
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-drag-drop.mjs","sources":["../../../projects/dnd/src/lib/dnd-utils.ts","../../../projects/dnd/src/lib/dnd-state.ts","../../../projects/dnd/src/lib/dnd-draggable.directive.ts","../../../projects/dnd/src/lib/dnd-dropzone.directive.ts","../../../projects/dnd/src/lib/dnd-handle.directive.ts","../../../projects/dnd/src/lib/dnd.module.ts","../../../projects/dnd/src/public-api.ts","../../../projects/dnd/src/ngx-drag-drop.ts"],"sourcesContent":["import { DropEffect, EffectAllowed } from './dnd-types';\n\nexport interface DragDropData {\n data?: any;\n type?: string;\n}\n\nexport interface DndEvent extends DragEvent {\n _dndUsingHandle?: boolean;\n _dndDropzoneActive?: true;\n}\n\nexport type DndDragImageOffsetFunction = (\n event: DragEvent,\n dragImage: Element\n) => { x: number; y: number };\n\nexport const DROP_EFFECTS = ['move', 'copy', 'link'] as DropEffect[];\n\nexport const CUSTOM_MIME_TYPE = 'application/x-dnd';\nexport const JSON_MIME_TYPE = 'application/json';\nexport const MSIE_MIME_TYPE = 'Text';\n\nfunction mimeTypeIsCustom(mimeType: string) {\n return mimeType.substr(0, CUSTOM_MIME_TYPE.length) === CUSTOM_MIME_TYPE;\n}\n\nexport function getWellKnownMimeType(event: DragEvent): string | null {\n if (event.dataTransfer) {\n const types = event.dataTransfer.types;\n\n // IE 9 workaround.\n if (!types) {\n return MSIE_MIME_TYPE;\n }\n\n for (let i = 0; i < types.length; i++) {\n if (\n types[i] === MSIE_MIME_TYPE ||\n types[i] === JSON_MIME_TYPE ||\n mimeTypeIsCustom(types[i])\n ) {\n return types[i];\n }\n }\n }\n\n return null;\n}\n\nexport function setDragData(\n event: DragEvent,\n data: DragDropData,\n effectAllowed: EffectAllowed\n): void {\n // Internet Explorer and Microsoft Edge don't support custom mime types, see design doc:\n // https://github.com/marceljuenemann/angular-drag-and-drop-lists/wiki/Data-Transfer-Design\n const mimeType = CUSTOM_MIME_TYPE + (data.type ? '-' + data.type : '');\n\n const dataString = JSON.stringify(data);\n\n try {\n event.dataTransfer?.setData(mimeType, dataString);\n } catch (e) {\n // Setting a custom MIME type did not work, we are probably in IE or Edge.\n try {\n event.dataTransfer?.setData(JSON_MIME_TYPE, dataString);\n } catch (e) {\n // We are in Internet Explorer and can only use the Text MIME type. Also note that IE\n // does not allow changing the cursor in the dragover event, therefore we have to choose\n // the one we want to display now by setting effectAllowed.\n const effectsAllowed = filterEffects(DROP_EFFECTS, effectAllowed);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = effectsAllowed[0];\n }\n\n event.dataTransfer?.setData(MSIE_MIME_TYPE, dataString);\n }\n }\n}\n\nexport function getDropData(\n event: DragEvent,\n dragIsExternal: boolean\n): DragDropData {\n // check if the mime type is well known\n const mimeType = getWellKnownMimeType(event);\n\n // drag did not originate from [dndDraggable]\n if (dragIsExternal === true) {\n if (mimeType !== null && mimeTypeIsCustom(mimeType)) {\n // the type of content is well known and safe to handle\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n // the contained data is unknown, let user handle it\n return {};\n }\n\n if (mimeType !== null) {\n // the type of content is well known and safe to handle\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n // the contained data is unknown, let user handle it\n return {};\n}\n\nexport function filterEffects(\n effects: DropEffect[],\n allowed: EffectAllowed | DropEffect\n): DropEffect[] {\n if (allowed === 'all' || allowed === 'uninitialized') {\n return effects;\n }\n\n return effects.filter(function (effect) {\n return allowed.toLowerCase().indexOf(effect) !== -1;\n });\n}\n\nexport function getDirectChildElement(\n parentElement: Element,\n childElement: Element\n): Element | null {\n let directChild: Node = childElement;\n\n while (directChild.parentNode !== parentElement) {\n // reached root node without finding given parent\n if (!directChild.parentNode) {\n return null;\n }\n\n directChild = directChild.parentNode;\n }\n\n return directChild as Element;\n}\n\nexport function shouldPositionPlaceholderBeforeElement(\n event: DragEvent,\n element: Element,\n horizontal: boolean\n) {\n const bounds = element.getBoundingClientRect();\n\n // If the pointer is in the upper half of the list item element,\n // we position the placeholder before the list item, otherwise after it.\n if (horizontal) {\n return event.clientX < bounds.left + bounds.width / 2;\n }\n\n return event.clientY < bounds.top + bounds.height / 2;\n}\n\nexport function calculateDragImageOffset(\n event: DragEvent,\n dragImage: Element\n): { x: number; y: number } {\n const dragImageComputedStyle = window.getComputedStyle(dragImage);\n const paddingTop = parseFloat(dragImageComputedStyle.paddingTop) || 0;\n const paddingLeft = parseFloat(dragImageComputedStyle.paddingLeft) || 0;\n const borderTop = parseFloat(dragImageComputedStyle.borderTopWidth) || 0;\n const borderLeft = parseFloat(dragImageComputedStyle.borderLeftWidth) || 0;\n\n return {\n x: event.offsetX + paddingLeft + borderLeft,\n y: event.offsetY + paddingTop + borderTop,\n };\n}\n\nexport function setDragImage(\n event: DragEvent,\n dragImage: Element,\n offsetFunction: DndDragImageOffsetFunction\n): void {\n const offset = offsetFunction(event, dragImage) || { x: 0, y: 0 };\n\n (event.dataTransfer as any).setDragImage(dragImage, offset.x, offset.y);\n}\n","import { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n CUSTOM_MIME_TYPE,\n DROP_EFFECTS,\n filterEffects,\n getWellKnownMimeType,\n JSON_MIME_TYPE,\n MSIE_MIME_TYPE,\n} from './dnd-utils';\n\nexport interface DndState {\n isDragging: boolean;\n dropEffect?: DropEffect;\n effectAllowed?: EffectAllowed;\n type?: string;\n}\n\nconst _dndState: DndState = {\n isDragging: false,\n dropEffect: 'none',\n effectAllowed: 'all',\n type: undefined,\n};\n\nexport function startDrag(\n event: DragEvent,\n effectAllowed: EffectAllowed,\n type: string | undefined\n) {\n _dndState.isDragging = true;\n _dndState.dropEffect = 'none';\n _dndState.effectAllowed = effectAllowed;\n _dndState.type = type;\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = effectAllowed;\n }\n}\n\nexport function endDrag() {\n _dndState.isDragging = false;\n _dndState.dropEffect = undefined;\n _dndState.effectAllowed = undefined;\n _dndState.type = undefined;\n}\n\nexport function setDropEffect(event: DragEvent, dropEffect: DropEffect) {\n if (_dndState.isDragging === true) {\n _dndState.dropEffect = dropEffect;\n }\n\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = dropEffect;\n }\n}\n\nexport function getDropEffect(\n event: DragEvent,\n effectAllowed?: EffectAllowed | DropEffect\n): DropEffect {\n const dataTransferEffectAllowed: EffectAllowed = event.dataTransfer\n ? (event.dataTransfer.effectAllowed as EffectAllowed)\n : 'uninitialized';\n\n let effects = filterEffects(DROP_EFFECTS, dataTransferEffectAllowed);\n\n if (_dndState.isDragging === true) {\n effects = filterEffects(effects, _dndState.effectAllowed!);\n }\n\n if (effectAllowed) {\n effects = filterEffects(effects, effectAllowed);\n }\n\n // MacOS automatically filters dataTransfer.effectAllowed depending on the modifier keys,\n // therefore the following modifier keys will only affect other operating systems.\n if (effects.length === 0) {\n return 'none';\n }\n\n if (event.ctrlKey && effects.indexOf('copy') !== -1) {\n return 'copy';\n }\n\n if (event.altKey && effects.indexOf('link') !== -1) {\n return 'link';\n }\n\n return effects[0] as DropEffect;\n}\n\nexport function getDndType(event: DragEvent): string | undefined {\n if (_dndState.isDragging === true) {\n return _dndState.type;\n }\n\n const mimeType = getWellKnownMimeType(event);\n\n if (mimeType === null) {\n return undefined;\n }\n\n if (mimeType === MSIE_MIME_TYPE || mimeType === JSON_MIME_TYPE) {\n return undefined;\n }\n\n return mimeType.substr(CUSTOM_MIME_TYPE.length + 1) || undefined;\n}\n\nexport function isExternalDrag(): boolean {\n return _dndState.isDragging === false;\n}\n\nexport const dndState: Readonly<DndState> = _dndState as Readonly<DndState>;\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { DndHandleDirective } from './dnd-handle.directive';\nimport { dndState, endDrag, startDrag } from './dnd-state';\nimport { EffectAllowed } from './dnd-types';\nimport {\n calculateDragImageOffset,\n DndDragImageOffsetFunction,\n DndEvent,\n setDragData,\n setDragImage,\n} from './dnd-utils';\n\n@Directive({ selector: '[dndDragImageRef]', standalone: true })\nexport class DndDragImageRefDirective implements OnInit {\n dndDraggableDirective = inject(forwardRef(() => DndDraggableDirective));\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragImage(this.elementRef);\n }\n}\n\n@Directive({ selector: '[dndDraggable]', standalone: true })\nexport class DndDraggableDirective implements AfterViewInit, OnDestroy {\n @Input() dndDraggable: any;\n @Input() dndEffectAllowed: EffectAllowed = 'copy';\n @Input() dndType?: string;\n @Input() dndDraggingClass = 'dndDragging';\n @Input() dndDraggingSourceClass = 'dndDraggingSource';\n @Input() dndDraggableDisabledClass = 'dndDraggableDisabled';\n @Input() dndDragImageOffsetFunction: DndDragImageOffsetFunction =\n calculateDragImageOffset;\n\n @Output() readonly dndStart: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndDrag: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndEnd: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndMoved: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCopied: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndLinked: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCanceled: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @HostBinding('attr.draggable') draggable = true;\n\n private dndHandle?: DndHandleDirective;\n private dndDragImageElementRef?: ElementRef;\n private dragImage: Element | undefined;\n private isDragStarted: boolean = false;\n\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n @Input() set dndDisableIf(value: boolean) {\n this.draggable = !value;\n\n if (this.draggable) {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n } else {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDragIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'drag',\n this.dragEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'drag',\n this.dragEventHandler\n );\n if (this.isDragStarted) {\n endDrag();\n }\n }\n\n @HostListener('dragstart', ['$event']) onDragStart(event: DndEvent): boolean {\n if (!this.draggable) {\n return false;\n }\n\n // check if there is dnd handle and if the dnd handle was used to start the drag\n if (this.dndHandle != null && event._dndUsingHandle == null) {\n event.stopPropagation();\n return false;\n }\n\n // initialize global state\n startDrag(event, this.dndEffectAllowed, this.dndType);\n\n this.isDragStarted = true;\n\n setDragData(\n event,\n { data: this.dndDraggable, type: this.dndType },\n dndState.effectAllowed!\n );\n\n this.dragImage = this.determineDragImage();\n\n // set dragging css class prior to setDragImage so styles are applied before\n // TODO breaking change: add class to elementRef rather than drag image which could be another element\n this.renderer.addClass(this.dragImage, this.dndDraggingClass);\n\n // set custom dragimage if present\n // set dragimage if drag is started from dndHandle\n if (this.dndDragImageElementRef != null || event._dndUsingHandle != null) {\n setDragImage(event, this.dragImage, this.dndDragImageOffsetFunction);\n }\n\n // add dragging source css class on first drag event\n const unregister = this.renderer.listen(\n this.elementRef.nativeElement,\n 'drag',\n () => {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n unregister();\n }\n );\n\n this.dndStart.emit(event);\n\n event.stopPropagation();\n\n setTimeout(() => {\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');\n }, 100);\n\n return true;\n }\n\n onDrag(event: DragEvent) {\n this.dndDrag.emit(event);\n }\n\n @HostListener('dragend', ['$event']) onDragEnd(event: DragEvent) {\n if (!this.draggable || !this.isDragStarted) {\n return;\n }\n // get drop effect from custom stored state as its not reliable across browsers\n const dropEffect = dndState.dropEffect;\n\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'unset');\n\n let dropEffectEmitter: EventEmitter<DragEvent>;\n\n switch (dropEffect) {\n case 'copy':\n dropEffectEmitter = this.dndCopied;\n break;\n\n case 'link':\n dropEffectEmitter = this.dndLinked;\n break;\n\n case 'move':\n dropEffectEmitter = this.dndMoved;\n break;\n\n default:\n dropEffectEmitter = this.dndCanceled;\n break;\n }\n\n dropEffectEmitter.emit(event);\n this.dndEnd.emit(event);\n\n // reset global state\n endDrag();\n\n this.isDragStarted = false;\n\n this.renderer.removeClass(this.dragImage, this.dndDraggingClass);\n\n // IE9 special hammering\n window.setTimeout(() => {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n }, 0);\n\n event.stopPropagation();\n }\n\n registerDragHandle(handle: DndHandleDirective | undefined) {\n this.dndHandle = handle;\n }\n\n registerDragImage(elementRef: ElementRef | undefined) {\n this.dndDragImageElementRef = elementRef;\n }\n\n private readonly dragEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDrag(event);\n\n private determineDragImage(): Element {\n // evaluate custom drag image existence\n if (typeof this.dndDragImageElementRef !== 'undefined') {\n return this.dndDragImageElementRef.nativeElement as Element;\n } else {\n return this.elementRef.nativeElement;\n }\n }\n}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n getDndType,\n getDropEffect,\n isExternalDrag,\n setDropEffect,\n} from './dnd-state';\nimport { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n DndEvent,\n DragDropData,\n getDirectChildElement,\n getDropData,\n shouldPositionPlaceholderBeforeElement,\n} from './dnd-utils';\n\nexport interface DndDropEvent {\n event: DragEvent;\n dropEffect: DropEffect;\n isExternal: boolean;\n data?: any;\n index?: number;\n type?: any;\n}\n\n@Directive({ selector: '[dndPlaceholderRef]', standalone: true })\nexport class DndPlaceholderRefDirective implements OnInit {\n constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit() {\n // placeholder has to be \"invisible\" to the cursor, or it would interfere with the dragover detection for the same dropzone\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n }\n}\n\n@Directive({ selector: '[dndDropzone]', standalone: true })\nexport class DndDropzoneDirective implements AfterViewInit, OnDestroy {\n @Input() dndDropzone?: string[] | '' = '';\n\n @Input() dndEffectAllowed: EffectAllowed = 'uninitialized';\n\n @Input() dndAllowExternal: boolean = false;\n\n @Input() dndHorizontal: boolean = false;\n\n @Input() dndDragoverClass: string = 'dndDragover';\n\n @Input() dndDropzoneDisabledClass = 'dndDropzoneDisabled';\n\n @Output() readonly dndDragover: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @Output() readonly dndDrop: EventEmitter<DndDropEvent> =\n new EventEmitter<DndDropEvent>();\n\n @ContentChild(DndPlaceholderRefDirective)\n private readonly dndPlaceholderRef?: DndPlaceholderRefDirective;\n\n private placeholder: Element | null = null;\n\n private disabled: boolean = false;\n\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef,\n private renderer: Renderer2\n ) {}\n\n @Input() set dndDisableIf(value: boolean) {\n this.disabled = value;\n\n if (this.disabled) {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n } else {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDropIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.placeholder = this.tryGetPlaceholder();\n\n this.removePlaceholderFromDOM();\n\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n }\n\n onDragEnter(event: DndEvent) {\n // check if another dropzone is activated\n if (event._dndDropzoneActive === true) {\n this.cleanupDragoverState();\n return;\n }\n\n // set as active if the target element is inside this dropzone\n if (event._dndDropzoneActive == null) {\n const newTarget = document.elementFromPoint(event.clientX, event.clientY);\n\n if (this.elementRef.nativeElement.contains(newTarget)) {\n event._dndDropzoneActive = true;\n }\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n // allow the dragenter\n event.preventDefault();\n }\n\n onDragOver(event: DragEvent) {\n // With nested dropzones, we want to ignore this event if a child dropzone\n // has already handled a dragover. Historically, event.stopPropagation() was\n // used to prevent this bubbling, but that prevents any dragovers outside the\n // ngx-drag-drop component, and stops other use cases such as scrolling on drag.\n // Instead, we can check if the event was already prevented by a child and bail early.\n if (event.defaultPrevented) {\n return;\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n this.checkAndUpdatePlaceholderPosition(event);\n\n const dropEffect = getDropEffect(event, this.dndEffectAllowed);\n\n if (dropEffect === 'none') {\n this.cleanupDragoverState();\n return;\n }\n\n // allow the dragover\n event.preventDefault();\n\n // set the drop effect\n setDropEffect(event, dropEffect);\n\n this.dndDragover.emit(event);\n\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n }\n\n @HostListener('drop', ['$event']) onDrop(event: DragEvent) {\n try {\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n const data: DragDropData = getDropData(event, isExternalDrag());\n\n if (!this.isDropAllowed(data.type)) {\n return;\n }\n\n // signal custom drop handling\n event.preventDefault();\n\n const dropEffect = getDropEffect(event);\n\n setDropEffect(event, dropEffect);\n\n if (dropEffect === 'none') {\n return;\n }\n\n const dropIndex = this.getPlaceholderIndex();\n\n // if for whatever reason the placeholder is not present in the DOM but it should be there\n // we don't allow/emit the drop event since it breaks the contract\n // seems to only happen if drag and drop is executed faster than the DOM updates\n if (dropIndex === -1) {\n return;\n }\n\n this.dndDrop.emit({\n event: event,\n dropEffect: dropEffect,\n isExternal: isExternalDrag(),\n data: data.data,\n index: dropIndex,\n type: type,\n });\n\n event.stopPropagation();\n } finally {\n this.cleanupDragoverState();\n }\n }\n\n onDragLeave(event: DndEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n // check if still inside this dropzone and not yet handled by another dropzone\n if (event._dndDropzoneActive == null) {\n if (this.elementRef.nativeElement.contains(event.relatedTarget)) {\n event._dndDropzoneActive = true;\n return;\n }\n }\n\n this.cleanupDragoverState();\n\n // cleanup drop effect when leaving dropzone\n setDropEffect(event, 'none');\n }\n\n private readonly dragEnterEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragEnter(event);\n\n private readonly dragOverEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragOver(event);\n\n private readonly dragLeaveEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragLeave(event);\n\n private isDropAllowed(type?: string): boolean {\n // dropzone is disabled -> deny it\n if (this.disabled) {\n return false;\n }\n\n // if drag did not start from our directive\n // and external drag sources are not allowed -> deny it\n if (isExternalDrag() && !this.dndAllowExternal) {\n return false;\n }\n\n // no filtering by types -> allow it\n if (!this.dndDropzone) {\n return true;\n }\n\n // no type set -> allow it\n if (!type) {\n return true;\n }\n\n if (!Array.isArray(this.dndDropzone)) {\n throw new Error(\n 'dndDropzone: bound value to [dndDropzone] must be an array!'\n );\n }\n\n // if dropzone contains type -> allow it\n return this.dndDropzone.indexOf(type) !== -1;\n }\n\n private tryGetPlaceholder(): Element | null {\n if (typeof this.dndPlaceholderRef !== 'undefined') {\n return this.dndPlaceholderRef.elementRef.nativeElement as Element;\n }\n\n // TODO nasty workaround needed because if ng-container / template is used @ContentChild() or DI will fail because\n // of wrong context see angular bug https://github.com/angular/angular/issues/13517\n return this.elementRef.nativeElement.querySelector('[dndPlaceholderRef]');\n }\n\n private removePlaceholderFromDOM() {\n if (this.placeholder !== null && this.placeholder.parentNode !== null) {\n this.placeholder.parentNode.removeChild(this.placeholder);\n }\n }\n\n private checkAndUpdatePlaceholderPosition(event: DragEvent): void {\n if (this.placeholder === null) {\n return;\n }\n\n // make sure the placeholder is in the DOM\n if (this.placeholder.parentNode !== this.elementRef.nativeElement) {\n this.renderer.appendChild(\n this.elementRef.nativeElement,\n this.placeholder\n );\n }\n\n // update the position if the event originates from a child element of the dropzone\n const directChild = getDirectChildElement(\n this.elementRef.nativeElement,\n event.target as Element\n );\n\n // early exit if no direct child or direct child is placeholder\n if (directChild === null || directChild === this.placeholder) {\n return;\n }\n\n const positionPlaceholderBeforeDirectChild =\n shouldPositionPlaceholderBeforeElement(\n event,\n directChild,\n this.dndHorizontal\n );\n\n if (positionPlaceholderBeforeDirectChild) {\n // do insert before only if necessary\n if (directChild.previousSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild\n );\n }\n } else {\n // do insert after only if necessary\n if (directChild.nextSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild.nextSibling\n );\n }\n }\n }\n\n private getPlaceholderIndex(): number | undefined {\n if (this.placeholder === null) {\n return undefined;\n }\n\n const element = this.elementRef.nativeElement as HTMLElement;\n\n return Array.prototype.indexOf.call(element.children, this.placeholder);\n }\n\n private cleanupDragoverState() {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n\n this.removePlaceholderFromDOM();\n }\n}\n","import {\n Directive,\n HostBinding,\n HostListener,\n inject,\n 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 {\n @HostBinding('attr.draggable') draggable = true;\n\n dndDraggableDirective = inject(DndDraggableDirective);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragHandle(this);\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';\nexport const JSON_MIME_TYPE = 'application/json';\nexport const MSIE_MIME_TYPE = 'Text';\n\nfunction mimeTypeIsCustom(mimeType: string) {\n return mimeType.substr(0, CUSTOM_MIME_TYPE.length) === CUSTOM_MIME_TYPE;\n}\n\nexport function getWellKnownMimeType(event: DragEvent): string | null {\n if (event.dataTransfer) {\n const types = event.dataTransfer.types;\n\n // IE 9 workaround.\n if (!types) {\n return MSIE_MIME_TYPE;\n }\n\n for (let i = 0; i < types.length; i++) {\n if (\n types[i] === MSIE_MIME_TYPE ||\n types[i] === JSON_MIME_TYPE ||\n mimeTypeIsCustom(types[i])\n ) {\n return types[i];\n }\n }\n }\n\n return null;\n}\n\nexport function setDragData(\n event: DragEvent,\n data: DragDropData,\n effectAllowed: EffectAllowed\n): void {\n // Internet Explorer and Microsoft Edge don't support custom mime types, see design doc:\n // https://github.com/marceljuenemann/angular-drag-and-drop-lists/wiki/Data-Transfer-Design\n const mimeType = CUSTOM_MIME_TYPE + (data.type ? '-' + data.type : '');\n\n const dataString = JSON.stringify(data);\n\n try {\n event.dataTransfer?.setData(mimeType, dataString);\n } catch (e) {\n // Setting a custom MIME type did not work, we are probably in IE or Edge.\n try {\n event.dataTransfer?.setData(JSON_MIME_TYPE, dataString);\n } catch (e) {\n // We are in Internet Explorer and can only use the Text MIME type. Also note that IE\n // does not allow changing the cursor in the dragover event, therefore we have to choose\n // the one we want to display now by setting effectAllowed.\n const effectsAllowed = filterEffects(DROP_EFFECTS, effectAllowed);\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = effectsAllowed[0];\n }\n\n event.dataTransfer?.setData(MSIE_MIME_TYPE, dataString);\n }\n }\n}\n\nexport function getDropData(\n event: DragEvent,\n dragIsExternal: boolean\n): DragDropData {\n // check if the mime type is well known\n const mimeType = getWellKnownMimeType(event);\n\n // drag did not originate from [dndDraggable]\n if (dragIsExternal === true) {\n if (mimeType !== null && mimeTypeIsCustom(mimeType)) {\n // the type of content is well known and safe to handle\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n // the contained data is unknown, let user handle it\n return {};\n }\n\n if (mimeType !== null) {\n // the type of content is well known and safe to handle\n return JSON.parse(event.dataTransfer?.getData(mimeType) ?? '{}');\n }\n\n // the contained data is unknown, let user handle it\n return {};\n}\n\nexport function filterEffects(\n effects: DropEffect[],\n allowed: EffectAllowed | DropEffect\n): DropEffect[] {\n if (allowed === 'all' || allowed === 'uninitialized') {\n return effects;\n }\n\n return effects.filter(function (effect) {\n return allowed.toLowerCase().indexOf(effect) !== -1;\n });\n}\n\nexport function getDirectChildElement(\n parentElement: Element,\n childElement: Element\n): Element | null {\n let directChild: Node = childElement;\n\n while (directChild.parentNode !== parentElement) {\n // reached root node without finding given parent\n if (!directChild.parentNode) {\n return null;\n }\n\n directChild = directChild.parentNode;\n }\n\n return directChild as Element;\n}\n\nexport function shouldPositionPlaceholderBeforeElement(\n event: DragEvent,\n element: Element,\n horizontal: boolean\n) {\n const bounds = element.getBoundingClientRect();\n\n // If the pointer is in the upper half of the list item element,\n // we position the placeholder before the list item, otherwise after it.\n if (horizontal) {\n return event.clientX < bounds.left + bounds.width / 2;\n }\n\n return event.clientY < bounds.top + bounds.height / 2;\n}\n\nexport function calculateDragImageOffset(\n event: DragEvent,\n dragImage: Element\n): { x: number; y: number } {\n const dragImageComputedStyle = window.getComputedStyle(dragImage);\n const paddingTop = parseFloat(dragImageComputedStyle.paddingTop) || 0;\n const paddingLeft = parseFloat(dragImageComputedStyle.paddingLeft) || 0;\n const borderTop = parseFloat(dragImageComputedStyle.borderTopWidth) || 0;\n const borderLeft = parseFloat(dragImageComputedStyle.borderLeftWidth) || 0;\n\n return {\n x: event.offsetX + paddingLeft + borderLeft,\n y: event.offsetY + paddingTop + borderTop,\n };\n}\n\nexport function setDragImage(\n event: DragEvent,\n dragImage: Element,\n offsetFunction: DndDragImageOffsetFunction\n): void {\n const offset = offsetFunction(event, dragImage) || { x: 0, y: 0 };\n\n (event.dataTransfer as any).setDragImage(dragImage, offset.x, offset.y);\n}\n","import { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n CUSTOM_MIME_TYPE,\n DROP_EFFECTS,\n filterEffects,\n getWellKnownMimeType,\n JSON_MIME_TYPE,\n MSIE_MIME_TYPE,\n} from './dnd-utils';\n\nexport interface DndState {\n isDragging: boolean;\n dropEffect?: DropEffect;\n effectAllowed?: EffectAllowed;\n type?: string;\n}\n\nconst _dndState: DndState = {\n isDragging: false,\n dropEffect: 'none',\n effectAllowed: 'all',\n type: undefined,\n};\n\nexport function startDrag(\n event: DragEvent,\n effectAllowed: EffectAllowed,\n type: string | undefined\n) {\n _dndState.isDragging = true;\n _dndState.dropEffect = 'none';\n _dndState.effectAllowed = effectAllowed;\n _dndState.type = type;\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = effectAllowed;\n }\n}\n\nexport function endDrag() {\n _dndState.isDragging = false;\n _dndState.dropEffect = undefined;\n _dndState.effectAllowed = undefined;\n _dndState.type = undefined;\n}\n\nexport function setDropEffect(event: DragEvent, dropEffect: DropEffect) {\n if (_dndState.isDragging === true) {\n _dndState.dropEffect = dropEffect;\n }\n\n if (event.dataTransfer) {\n event.dataTransfer.dropEffect = dropEffect;\n }\n}\n\nexport function getDropEffect(\n event: DragEvent,\n effectAllowed?: EffectAllowed | DropEffect\n): DropEffect {\n const dataTransferEffectAllowed: EffectAllowed = event.dataTransfer\n ? (event.dataTransfer.effectAllowed as EffectAllowed)\n : 'uninitialized';\n\n let effects = filterEffects(DROP_EFFECTS, dataTransferEffectAllowed);\n\n if (_dndState.isDragging === true) {\n effects = filterEffects(effects, _dndState.effectAllowed!);\n }\n\n if (effectAllowed) {\n effects = filterEffects(effects, effectAllowed);\n }\n\n // MacOS automatically filters dataTransfer.effectAllowed depending on the modifier keys,\n // therefore the following modifier keys will only affect other operating systems.\n if (effects.length === 0) {\n return 'none';\n }\n\n if (event.ctrlKey && effects.indexOf('copy') !== -1) {\n return 'copy';\n }\n\n if (event.altKey && effects.indexOf('link') !== -1) {\n return 'link';\n }\n\n return effects[0] as DropEffect;\n}\n\nexport function getDndType(event: DragEvent): string | undefined {\n if (_dndState.isDragging === true) {\n return _dndState.type;\n }\n\n const mimeType = getWellKnownMimeType(event);\n\n if (mimeType === null) {\n return undefined;\n }\n\n if (mimeType === MSIE_MIME_TYPE || mimeType === JSON_MIME_TYPE) {\n return undefined;\n }\n\n return mimeType.substr(CUSTOM_MIME_TYPE.length + 1) || undefined;\n}\n\nexport function isExternalDrag(): boolean {\n return _dndState.isDragging === false;\n}\n\nexport const dndState: Readonly<DndState> = _dndState as Readonly<DndState>;\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport { DndHandleDirective } from './dnd-handle.directive';\nimport { dndState, endDrag, startDrag } from './dnd-state';\nimport { EffectAllowed } from './dnd-types';\nimport {\n calculateDragImageOffset,\n DndDragImageOffsetFunction,\n DndEvent,\n setDragData,\n setDragImage,\n} from './dnd-utils';\n\n@Directive({ selector: '[dndDragImageRef]', standalone: true })\nexport class DndDragImageRefDirective implements OnInit {\n dndDraggableDirective = inject(forwardRef(() => DndDraggableDirective));\n elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragImage(this.elementRef);\n }\n}\n\n@Directive({ selector: '[dndDraggable]', standalone: true })\nexport class DndDraggableDirective implements AfterViewInit, OnDestroy {\n @Input() dndDraggable: any;\n @Input() dndEffectAllowed: EffectAllowed = 'copy';\n @Input() dndType?: string;\n @Input() dndDraggingClass = 'dndDragging';\n @Input() dndDraggingSourceClass = 'dndDraggingSource';\n @Input() dndDraggableDisabledClass = 'dndDraggableDisabled';\n @Input() dndDragImageOffsetFunction: DndDragImageOffsetFunction =\n calculateDragImageOffset;\n\n @Output() readonly dndStart: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndDrag: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndEnd: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndMoved: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCopied: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndLinked: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n @Output() readonly dndCanceled: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @HostBinding('attr.draggable') draggable = true;\n\n private dndHandle?: DndHandleDirective;\n private dndDragImageElementRef?: ElementRef;\n private dragImage: Element | undefined;\n private isDragStarted: boolean = false;\n\n private elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n private renderer = inject(Renderer2);\n private ngZone = inject(NgZone);\n\n @Input() set dndDisableIf(value: boolean) {\n this.draggable = !value;\n\n if (this.draggable) {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n } else {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggableDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDragIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'drag',\n this.dragEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'drag',\n this.dragEventHandler\n );\n if (this.isDragStarted) {\n endDrag();\n }\n }\n\n @HostListener('dragstart', ['$event']) onDragStart(event: DndEvent): boolean {\n if (!this.draggable) {\n return false;\n }\n\n // check if there is dnd handle and if the dnd handle was used to start the drag\n if (this.dndHandle != null && event._dndUsingHandle == null) {\n event.stopPropagation();\n return false;\n }\n\n // initialize global state\n startDrag(event, this.dndEffectAllowed, this.dndType);\n\n this.isDragStarted = true;\n\n setDragData(\n event,\n { data: this.dndDraggable, type: this.dndType },\n dndState.effectAllowed!\n );\n\n this.dragImage = this.determineDragImage();\n\n // set dragging css class prior to setDragImage so styles are applied before\n // TODO breaking change: add class to elementRef rather than drag image which could be another element\n this.renderer.addClass(this.dragImage, this.dndDraggingClass);\n\n // set custom dragimage if present\n // set dragimage if drag is started from dndHandle\n if (this.dndDragImageElementRef != null || event._dndUsingHandle != null) {\n setDragImage(event, this.dragImage, this.dndDragImageOffsetFunction);\n }\n\n // add dragging source css class on first drag event\n const unregister = this.renderer.listen(\n this.elementRef.nativeElement,\n 'drag',\n () => {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n unregister();\n }\n );\n\n this.dndStart.emit(event);\n\n event.stopPropagation();\n\n setTimeout(() => {\n if(this.isDragStarted) {\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'none');\n }\n }, 100);\n\n return true;\n }\n\n onDrag(event: DragEvent) {\n this.dndDrag.emit(event);\n }\n\n @HostListener('dragend', ['$event']) onDragEnd(event: DragEvent) {\n if (!this.draggable || !this.isDragStarted) {\n return;\n }\n // get drop effect from custom stored state as its not reliable across browsers\n const dropEffect = dndState.dropEffect;\n\n this.renderer.setStyle(this.dragImage, 'pointer-events', 'unset');\n\n let dropEffectEmitter: EventEmitter<DragEvent>;\n\n switch (dropEffect) {\n case 'copy':\n dropEffectEmitter = this.dndCopied;\n break;\n\n case 'link':\n dropEffectEmitter = this.dndLinked;\n break;\n\n case 'move':\n dropEffectEmitter = this.dndMoved;\n break;\n\n default:\n dropEffectEmitter = this.dndCanceled;\n break;\n }\n\n dropEffectEmitter.emit(event);\n this.dndEnd.emit(event);\n\n // reset global state\n endDrag();\n\n this.isDragStarted = false;\n\n this.renderer.removeClass(this.dragImage, this.dndDraggingClass);\n\n // IE9 special hammering\n window.setTimeout(() => {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDraggingSourceClass\n );\n }, 0);\n\n event.stopPropagation();\n }\n\n registerDragHandle(handle: DndHandleDirective | undefined) {\n this.dndHandle = handle;\n }\n\n registerDragImage(elementRef: ElementRef | undefined) {\n this.dndDragImageElementRef = elementRef;\n }\n\n private readonly dragEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDrag(event);\n\n private determineDragImage(): Element {\n // evaluate custom drag image existence\n if (typeof this.dndDragImageElementRef !== 'undefined') {\n return this.dndDragImageElementRef.nativeElement as Element;\n } else {\n return this.elementRef.nativeElement;\n }\n }\n}\n","import {\n AfterViewInit,\n ContentChild,\n Directive,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n} from '@angular/core';\nimport {\n getDndType,\n getDropEffect,\n isExternalDrag,\n setDropEffect,\n} from './dnd-state';\nimport { DropEffect, EffectAllowed } from './dnd-types';\nimport {\n DndEvent,\n DragDropData,\n getDirectChildElement,\n getDropData,\n shouldPositionPlaceholderBeforeElement,\n} from './dnd-utils';\n\nexport interface DndDropEvent {\n event: DragEvent;\n dropEffect: DropEffect;\n isExternal: boolean;\n data?: any;\n index?: number;\n type?: any;\n}\n\n@Directive({ selector: '[dndPlaceholderRef]', standalone: true })\nexport class DndPlaceholderRefDirective implements OnInit {\n constructor(public readonly elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit() {\n // placeholder has to be \"invisible\" to the cursor, or it would interfere with the dragover detection for the same dropzone\n this.elementRef.nativeElement.style.pointerEvents = 'none';\n }\n}\n\n@Directive({ selector: '[dndDropzone]', standalone: true })\nexport class DndDropzoneDirective implements AfterViewInit, OnDestroy {\n @Input() dndDropzone?: string[] | '' = '';\n\n @Input() dndEffectAllowed: EffectAllowed = 'uninitialized';\n\n @Input() dndAllowExternal: boolean = false;\n\n @Input() dndHorizontal: boolean = false;\n\n @Input() dndDragoverClass: string = 'dndDragover';\n\n @Input() dndDropzoneDisabledClass = 'dndDropzoneDisabled';\n\n @Output() readonly dndDragover: EventEmitter<DragEvent> =\n new EventEmitter<DragEvent>();\n\n @Output() readonly dndDrop: EventEmitter<DndDropEvent> =\n new EventEmitter<DndDropEvent>();\n\n @ContentChild(DndPlaceholderRefDirective)\n private readonly dndPlaceholderRef?: DndPlaceholderRefDirective;\n\n private placeholder: Element | null = null;\n\n private disabled: boolean = false;\n\n constructor(\n private ngZone: NgZone,\n private elementRef: ElementRef,\n private renderer: Renderer2\n ) {}\n\n @Input() set dndDisableIf(value: boolean) {\n this.disabled = value;\n\n if (this.disabled) {\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n } else {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDropzoneDisabledClass\n );\n }\n }\n\n @Input() set dndDisableDropIf(value: boolean) {\n this.dndDisableIf = value;\n }\n\n ngAfterViewInit(): void {\n this.placeholder = this.tryGetPlaceholder();\n\n this.removePlaceholderFromDOM();\n\n this.ngZone.runOutsideAngular(() => {\n this.elementRef.nativeElement.addEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.addEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n });\n }\n\n ngOnDestroy(): void {\n this.elementRef.nativeElement.removeEventListener(\n 'dragenter',\n this.dragEnterEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragover',\n this.dragOverEventHandler\n );\n this.elementRef.nativeElement.removeEventListener(\n 'dragleave',\n this.dragLeaveEventHandler\n );\n }\n\n onDragEnter(event: DndEvent) {\n // check if another dropzone is activated\n if (event._dndDropzoneActive === true) {\n this.cleanupDragoverState();\n return;\n }\n\n // set as active if the target element is inside this dropzone\n if (event._dndDropzoneActive == null) {\n const newTarget = document.elementFromPoint(event.clientX, event.clientY);\n\n if (this.elementRef.nativeElement.contains(newTarget)) {\n event._dndDropzoneActive = true;\n }\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n // allow the dragenter\n event.preventDefault();\n }\n\n onDragOver(event: DragEvent) {\n // With nested dropzones, we want to ignore this event if a child dropzone\n // has already handled a dragover. Historically, event.stopPropagation() was\n // used to prevent this bubbling, but that prevents any dragovers outside the\n // ngx-drag-drop component, and stops other use cases such as scrolling on drag.\n // Instead, we can check if the event was already prevented by a child and bail early.\n if (event.defaultPrevented) {\n return;\n }\n\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n this.checkAndUpdatePlaceholderPosition(event);\n\n const dropEffect = getDropEffect(event, this.dndEffectAllowed);\n\n if (dropEffect === 'none') {\n this.cleanupDragoverState();\n return;\n }\n\n // allow the dragover\n event.preventDefault();\n\n // set the drop effect\n setDropEffect(event, dropEffect);\n\n this.dndDragover.emit(event);\n\n this.renderer.addClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n }\n\n @HostListener('drop', ['$event']) onDrop(event: DragEvent) {\n try {\n // check if this drag event is allowed to drop on this dropzone\n const type = getDndType(event);\n if (!this.isDropAllowed(type)) {\n return;\n }\n\n const data: DragDropData = getDropData(event, isExternalDrag());\n\n if (!this.isDropAllowed(data.type)) {\n return;\n }\n\n // signal custom drop handling\n event.preventDefault();\n\n const dropEffect = getDropEffect(event);\n\n setDropEffect(event, dropEffect);\n\n if (dropEffect === 'none') {\n return;\n }\n\n const dropIndex = this.getPlaceholderIndex();\n\n // if for whatever reason the placeholder is not present in the DOM but it should be there\n // we don't allow/emit the drop event since it breaks the contract\n // seems to only happen if drag and drop is executed faster than the DOM updates\n if (dropIndex === -1) {\n return;\n }\n\n this.dndDrop.emit({\n event: event,\n dropEffect: dropEffect,\n isExternal: isExternalDrag(),\n data: data.data,\n index: dropIndex,\n type: type,\n });\n\n event.stopPropagation();\n } finally {\n this.cleanupDragoverState();\n }\n }\n\n onDragLeave(event: DndEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n // check if still inside this dropzone and not yet handled by another dropzone\n if (event._dndDropzoneActive == null) {\n if (this.elementRef.nativeElement.contains(event.relatedTarget)) {\n event._dndDropzoneActive = true;\n return;\n }\n }\n\n this.cleanupDragoverState();\n\n // cleanup drop effect when leaving dropzone\n setDropEffect(event, 'none');\n }\n\n private readonly dragEnterEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragEnter(event);\n\n private readonly dragOverEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragOver(event);\n\n private readonly dragLeaveEventHandler: (event: DragEvent) => void = (\n event: DragEvent\n ) => this.onDragLeave(event);\n\n private isDropAllowed(type?: string): boolean {\n // dropzone is disabled -> deny it\n if (this.disabled) {\n return false;\n }\n\n // if drag did not start from our directive\n // and external drag sources are not allowed -> deny it\n if (isExternalDrag() && !this.dndAllowExternal) {\n return false;\n }\n\n // no filtering by types -> allow it\n if (!this.dndDropzone) {\n return true;\n }\n\n // no type set -> allow it\n if (!type) {\n return true;\n }\n\n if (!Array.isArray(this.dndDropzone)) {\n throw new Error(\n 'dndDropzone: bound value to [dndDropzone] must be an array!'\n );\n }\n\n // if dropzone contains type -> allow it\n return this.dndDropzone.indexOf(type) !== -1;\n }\n\n private tryGetPlaceholder(): Element | null {\n if (typeof this.dndPlaceholderRef !== 'undefined') {\n return this.dndPlaceholderRef.elementRef.nativeElement as Element;\n }\n\n // TODO nasty workaround needed because if ng-container / template is used @ContentChild() or DI will fail because\n // of wrong context see angular bug https://github.com/angular/angular/issues/13517\n return this.elementRef.nativeElement.querySelector('[dndPlaceholderRef]');\n }\n\n private removePlaceholderFromDOM() {\n if (this.placeholder !== null && this.placeholder.parentNode !== null) {\n this.placeholder.parentNode.removeChild(this.placeholder);\n }\n }\n\n private checkAndUpdatePlaceholderPosition(event: DragEvent): void {\n if (this.placeholder === null) {\n return;\n }\n\n // make sure the placeholder is in the DOM\n if (this.placeholder.parentNode !== this.elementRef.nativeElement) {\n this.renderer.appendChild(\n this.elementRef.nativeElement,\n this.placeholder\n );\n }\n\n // update the position if the event originates from a child element of the dropzone\n const directChild = getDirectChildElement(\n this.elementRef.nativeElement,\n event.target as Element\n );\n\n // early exit if no direct child or direct child is placeholder\n if (directChild === null || directChild === this.placeholder) {\n return;\n }\n\n const positionPlaceholderBeforeDirectChild =\n shouldPositionPlaceholderBeforeElement(\n event,\n directChild,\n this.dndHorizontal\n );\n\n if (positionPlaceholderBeforeDirectChild) {\n // do insert before only if necessary\n if (directChild.previousSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild\n );\n }\n } else {\n // do insert after only if necessary\n if (directChild.nextSibling !== this.placeholder) {\n this.renderer.insertBefore(\n this.elementRef.nativeElement,\n this.placeholder,\n directChild.nextSibling\n );\n }\n }\n }\n\n private getPlaceholderIndex(): number | undefined {\n if (this.placeholder === null) {\n return undefined;\n }\n\n const element = this.elementRef.nativeElement as HTMLElement;\n\n return Array.prototype.indexOf.call(element.children, this.placeholder);\n }\n\n private cleanupDragoverState() {\n this.renderer.removeClass(\n this.elementRef.nativeElement,\n this.dndDragoverClass\n );\n\n this.removePlaceholderFromDOM();\n }\n}\n","import {\n Directive,\n HostBinding,\n HostListener,\n inject,\n 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 {\n @HostBinding('attr.draggable') draggable = true;\n\n dndDraggableDirective = inject(DndDraggableDirective);\n\n ngOnInit() {\n this.dndDraggableDirective.registerDragHandle(this);\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": "17.0.0",
3
+ "version": "18.0.1",
4
4
  "description": "Angular directives using the native HTML Drag And Drop API",
5
5
  "repository": {
6
6
  "type": "git",
@@ -30,8 +30,8 @@
30
30
  "touch"
31
31
  ],
32
32
  "peerDependencies": {
33
- "@angular/common": "^17.0.0",
34
- "@angular/core": "^17.0.0"
33
+ "@angular/common": "^18.0.0",
34
+ "@angular/core": "^18.0.0"
35
35
  },
36
36
  "dependencies": {
37
37
  "tslib": "^2.3.0"