@libs-ui/components-drag-drop 0.2.10-6.2

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.
@@ -0,0 +1,138 @@
1
+ import { Directive, ElementRef, inject, input, signal } from "@angular/core";
2
+ import { checkMouseOverInContainer, cloneIBoundingClientRect, get } from "@libs-ui/utils";
3
+ import { Subject, takeUntil } from "rxjs";
4
+ import { MoLibsSharedDragDropService } from "./drag-drop.service";
5
+ import * as i0 from "@angular/core";
6
+ export class LibsUiComponentsDragScrollDirective {
7
+ /* PROPERTY */
8
+ stopScroll = signal(false);
9
+ virtualScrollPageInfo = signal(undefined);
10
+ intervalScrollToElement = signal(undefined);
11
+ onDestroy = new Subject();
12
+ /* INPUT */
13
+ ignoreAutoScroll = input();
14
+ widthZoneDetect = input(16, { transform: value => value ?? 16 });
15
+ movementLength = input(6, { transform: value => value ?? 6 });
16
+ rootElementScroll = input();
17
+ virtualScrollerComponent = input();
18
+ /* INJECT */
19
+ elementRef = inject(ElementRef);
20
+ dragDropService = inject(MoLibsSharedDragDropService);
21
+ ngAfterViewInit() {
22
+ this.dragDropService.OnDragging.pipe(takeUntil(this.onDestroy)).subscribe((eventDragging) => this.checkAndScrollElementToPosition(eventDragging, this.ignoreAutoScroll()));
23
+ this.dragDropService.OnDragEnd.pipe(takeUntil(this.onDestroy)).subscribe(() => {
24
+ clearInterval(this.intervalScrollToElement());
25
+ if (this.virtualScrollPageInfo()) {
26
+ const firstElement = get(this.virtualScrollerComponent(), 'element')?.nativeElement.firstElementChild;
27
+ const isHorizontal = get(this.virtualScrollerComponent(), '_horizontal');
28
+ if (isHorizontal) {
29
+ firstElement.style.transform = `scaleX(${this.virtualScrollPageInfo()?.scrollEndPosition})`;
30
+ }
31
+ if (!isHorizontal) {
32
+ firstElement.style.transform = `scaleY(${this.virtualScrollPageInfo()?.scrollEndPosition})`;
33
+ }
34
+ this.virtualScrollPageInfo.set(undefined);
35
+ }
36
+ this.stopScroll.set(false);
37
+ });
38
+ this.dragDropService.OnDragStart.pipe(takeUntil(this.onDestroy)).subscribe(() => {
39
+ if (this.virtualScrollerComponent) {
40
+ this.virtualScrollerComponent()?.scrollToIndex(0);
41
+ }
42
+ });
43
+ if (!this.virtualScrollerComponent) {
44
+ return;
45
+ }
46
+ this.virtualScrollerComponent()?.vsChange.pipe(takeUntil(this.onDestroy)).subscribe(pageInfo => {
47
+ const items = get(this.virtualScrollerComponent, '_items');
48
+ if (items && items.length === pageInfo.endIndex) {
49
+ this.virtualScrollPageInfo.set(pageInfo);
50
+ const elementSetScroll = this.rootElementScroll() || this.elementRef.nativeElement;
51
+ const isHorizontal = get(this.virtualScrollerComponent, '_horizontal');
52
+ if (isHorizontal && pageInfo.scrollEndPosition < elementSetScroll.offsetWidth + elementSetScroll.scrollLeft + 3) {
53
+ this.stopScroll.set(true);
54
+ clearInterval(this.intervalScrollToElement());
55
+ return;
56
+ }
57
+ if (!isHorizontal && pageInfo.scrollEndPosition < elementSetScroll.offsetHeight + elementSetScroll.scrollTop + 3) {
58
+ this.stopScroll.set(true);
59
+ clearInterval(this.intervalScrollToElement());
60
+ return;
61
+ }
62
+ }
63
+ this.stopScroll.set(false);
64
+ });
65
+ }
66
+ /* FUNCTIONS */
67
+ checkAndScrollElementToPosition(eventDragging, ignoreAutoScroll) {
68
+ let elementSetScroll = this.rootElementScroll() || this.elementRef.nativeElement;
69
+ if (ignoreAutoScroll || !checkMouseOverInContainer(eventDragging.mousePosition, elementSetScroll)) {
70
+ return;
71
+ }
72
+ const rectElement = cloneIBoundingClientRect(this.elementRef.nativeElement.getBoundingClientRect());
73
+ if (this.rootElementScroll()) {
74
+ const rectElementScroll = this.rootElementScroll()?.getBoundingClientRect();
75
+ rectElement.left = rectElementScroll.left;
76
+ rectElement.top = rectElementScroll.top;
77
+ }
78
+ const { width, height, top, left } = rectElement;
79
+ const { clientX, clientY } = eventDragging.mousePosition;
80
+ const limitLeft = left + elementSetScroll.offsetWidth;
81
+ const limitTop = top + elementSetScroll.offsetHeight;
82
+ clearInterval(this.intervalScrollToElement());
83
+ if ((clientX < left || clientX > left + width) && (clientY < top || clientY > top + height)) {
84
+ return;
85
+ }
86
+ this.intervalScrollToElement.set(setInterval(() => {
87
+ elementSetScroll = (this.rootElementScroll() || this.elementRef.nativeElement);
88
+ let directionTop = 0;
89
+ let directionLeft = 0;
90
+ if (top <= clientY && clientY <= top + this.widthZoneDetect()) {
91
+ elementSetScroll.scrollTop -= this.movementLength();
92
+ directionTop = -1;
93
+ }
94
+ if (limitTop - this.widthZoneDetect() <= clientY && clientY <= limitTop) {
95
+ if (this.stopScroll()) {
96
+ return;
97
+ }
98
+ elementSetScroll.scrollTop += this.movementLength();
99
+ directionTop = 1;
100
+ }
101
+ if ((limitLeft - this.widthZoneDetect() <= clientX) && (clientX <= limitLeft)) {
102
+ if (this.stopScroll()) {
103
+ return;
104
+ }
105
+ elementSetScroll.scrollLeft += this.movementLength();
106
+ directionLeft = +1;
107
+ }
108
+ if (left <= clientX && clientX <= left + this.widthZoneDetect()) {
109
+ elementSetScroll.scrollLeft -= this.movementLength();
110
+ directionLeft = -1;
111
+ }
112
+ if (elementSetScroll.scrollLeft && (elementSetScroll.scrollLeft + elementSetScroll.offsetWidth >= elementSetScroll.scrollWidth)) {
113
+ elementSetScroll.scrollLeft -= elementSetScroll.scrollLeft + elementSetScroll.offsetWidth - elementSetScroll.scrollWidth;
114
+ }
115
+ if (elementSetScroll.scrollTop && (elementSetScroll.scrollTop + elementSetScroll.offsetHeight >= elementSetScroll.scrollHeight)) {
116
+ elementSetScroll.scrollTop -= elementSetScroll.scrollTop + elementSetScroll.offsetHeight - elementSetScroll.scrollHeight;
117
+ }
118
+ if ((directionTop < 0 && !elementSetScroll.scrollTop) || (!elementSetScroll.scrollLeft && directionLeft < 0) || (directionTop && elementSetScroll.scrollHeight <= elementSetScroll.scrollTop + elementSetScroll.offsetHeight + 3) || (directionLeft && elementSetScroll.scrollWidth <= elementSetScroll.scrollLeft + elementSetScroll.offsetWidth + 3)) {
119
+ return clearInterval(this.intervalScrollToElement());
120
+ }
121
+ }, 10));
122
+ }
123
+ ngOnDestroy() {
124
+ this.onDestroy.next();
125
+ this.onDestroy.complete();
126
+ }
127
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDragScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
128
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: LibsUiComponentsDragScrollDirective, isStandalone: true, selector: "[LibsUiComponentsDragScrollDirective]", inputs: { ignoreAutoScroll: { classPropertyName: "ignoreAutoScroll", publicName: "ignoreAutoScroll", isSignal: true, isRequired: false, transformFunction: null }, widthZoneDetect: { classPropertyName: "widthZoneDetect", publicName: "widthZoneDetect", isSignal: true, isRequired: false, transformFunction: null }, movementLength: { classPropertyName: "movementLength", publicName: "movementLength", isSignal: true, isRequired: false, transformFunction: null }, rootElementScroll: { classPropertyName: "rootElementScroll", publicName: "rootElementScroll", isSignal: true, isRequired: false, transformFunction: null }, virtualScrollerComponent: { classPropertyName: "virtualScrollerComponent", publicName: "virtualScrollerComponent", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
129
+ }
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LibsUiComponentsDragScrollDirective, decorators: [{
131
+ type: Directive,
132
+ args: [{
133
+ // eslint-disable-next-line @angular-eslint/directive-selector
134
+ selector: "[LibsUiComponentsDragScrollDirective]",
135
+ standalone: true
136
+ }]
137
+ }] });
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1zY3JvbGwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RyYWctZHJvcC9zcmMvZHJhZy1zY3JvbGwuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd2RyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUMsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0scUJBQXFCLENBQUM7O0FBT2xFLE1BQU0sT0FBTyxtQ0FBbUM7SUFDOUMsY0FBYztJQUNOLFVBQVUsR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDcEMscUJBQXFCLEdBQUcsTUFBTSxDQUF3QixTQUFTLENBQUMsQ0FBQztJQUMvRCx1QkFBdUIsR0FBRyxNQUFNLENBQXFCLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBRTFDLFdBQVc7SUFDRixnQkFBZ0IsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUNwQyxlQUFlLEdBQUcsS0FBSyxDQUE2QixFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RixjQUFjLEdBQUcsS0FBSyxDQUE2QixDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxRixpQkFBaUIsR0FBRyxLQUFLLEVBQWUsQ0FBQztJQUN6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bUNBQW1DOzs0RkFBbkMsbUNBQW1DO2tCQUwvQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHVDQUF1QztvQkFDakQsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIGluamVjdCwgaW5wdXQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJUGFnZUluZm8sIFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCB9IGZyb20gXCJAaWhhcmJlY2svbmd4LXZpcnR1YWwtc2Nyb2xsZXJcIjtcbmltcG9ydCB7IElCb3VuZGluZ0NsaWVudFJlY3QgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciwgY2xvbmVJQm91bmRpbmdDbGllbnRSZWN0LCBnZXQgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBNb0xpYnNTaGFyZWREcmFnRHJvcFNlcnZpY2UgfSBmcm9tIFwiLi9kcmFnLWRyb3Auc2VydmljZVwiO1xuaW1wb3J0IHsgSURyYWdnaW5nIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2VcIjtcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogXCJbTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmVdXCIsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgTGlic1VpQ29tcG9uZW50c0RyYWdTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKiBQUk9QRVJUWSAqL1xuICBwcml2YXRlIHN0b3BTY3JvbGwgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHZpcnR1YWxTY3JvbGxQYWdlSW5mbyA9IHNpZ25hbDxJUGFnZUluZm8gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBpbnRlcnZhbFNjcm9sbFRvRWxlbWVudCA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByb3RlY3RlZCBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qIElOUFVUICovXG4gIHJlYWRvbmx5IGlnbm9yZUF1dG9TY3JvbGwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSB3aWR0aFpvbmVEZXRlY3QgPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHVuZGVmaW5lZD4oMTYsIHsgdHJhbnNmb3JtOiB2YWx1ZSA9PiB2YWx1ZSA/PyAxNiB9KTtcbiAgcmVhZG9ubHkgbW92ZW1lbnRMZW5ndGggPSBpbnB1dDxudW1iZXIsIG51bWJlciB8IHVuZGVmaW5lZD4oNiwgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/IDYgfSk7XG4gIHJlYWRvbmx5IHJvb3RFbGVtZW50U2Nyb2xsID0gaW5wdXQ8SFRNTEVsZW1lbnQ+KCk7XG4gIHJlYWRvbmx5IHZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCA9IGlucHV0PFZpcnR1YWxTY3JvbGxlckNvbXBvbmVudD4oKTtcblxuICAvKiBJTkpFQ1QgKi9cbiAgcHJvdGVjdGVkIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByb3RlY3RlZCBkcmFnRHJvcFNlcnZpY2UgPSBpbmplY3QoTW9MaWJzU2hhcmVkRHJhZ0Ryb3BTZXJ2aWNlKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnZ2luZy5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoZXZlbnREcmFnZ2luZykgPT4gdGhpcy5jaGVja0FuZFNjcm9sbEVsZW1lbnRUb1Bvc2l0aW9uKGV2ZW50RHJhZ2dpbmcsIHRoaXMuaWdub3JlQXV0b1Njcm9sbCgpKSk7XG4gICAgdGhpcy5kcmFnRHJvcFNlcnZpY2UuT25EcmFnRW5kLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbFNjcm9sbFRvRWxlbWVudCgpKTtcbiAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mbygpKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0RWxlbWVudCA9IGdldCh0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCgpLCAnZWxlbWVudCcpPy5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgICBjb25zdCBpc0hvcml6b250YWwgPSBnZXQodGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQoKSwgJ19ob3Jpem9udGFsJyk7XG4gICAgICAgIGlmIChpc0hvcml6b250YWwpIHtcbiAgICAgICAgICBmaXJzdEVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHNjYWxlWCgke3RoaXMudmlydHVhbFNjcm9sbFBhZ2VJbmZvKCk/LnNjcm9sbEVuZFBvc2l0aW9ufSlgO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNIb3Jpem9udGFsKSB7XG4gICAgICAgICAgZmlyc3RFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGBzY2FsZVkoJHt0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mbygpPy5zY3JvbGxFbmRQb3NpdGlvbn0pYDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxQYWdlSW5mby5zZXQodW5kZWZpbmVkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RvcFNjcm9sbC5zZXQoZmFsc2UpO1xuICAgIH0pO1xuICAgIHRoaXMuZHJhZ0Ryb3BTZXJ2aWNlLk9uRHJhZ1N0YXJ0LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCkge1xuICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxlckNvbXBvbmVudCgpPy5zY3JvbGxUb0luZGV4KDApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmICghdGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQoKT8udnNDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpKS5zdWJzY3JpYmUocGFnZUluZm8gPT4ge1xuICAgICAgY29uc3QgaXRlbXMgPSBnZXQodGhpcy52aXJ0dWFsU2Nyb2xsZXJDb21wb25lbnQsICdfaXRlbXMnKTtcblxuICAgICAgaWYgKGl0ZW1zICYmIGl0ZW1zLmxlbmd0aCA9PT0gcGFnZUluZm8uZW5kSW5kZXgpIHtcbiAgICAgICAgdGhpcy52aXJ0dWFsU2Nyb2xsUGFnZUluZm8uc2V0KHBhZ2VJbmZvKTtcbiAgICAgICAgY29uc3QgZWxlbWVudFNldFNjcm9sbCA9IHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKSB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gZ2V0KHRoaXMudmlydHVhbFNjcm9sbGVyQ29tcG9uZW50LCAnX2hvcml6b250YWwnKTtcblxuICAgICAgICBpZiAoaXNIb3Jpem9udGFsICYmIHBhZ2VJbmZvLnNjcm9sbEVuZFBvc2l0aW9uIDwgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRXaWR0aCArIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCArIDMpIHtcbiAgICAgICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KHRydWUpO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbFNjcm9sbFRvRWxlbWVudCgpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNIb3Jpem9udGFsICYmIHBhZ2VJbmZvLnNjcm9sbEVuZFBvc2l0aW9uIDwgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRIZWlnaHQgKyBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFRvcCArIDMpIHtcbiAgICAgICAgICB0aGlzLnN0b3BTY3JvbGwuc2V0KHRydWUpO1xuICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbFNjcm9sbFRvRWxlbWVudCgpKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5zdG9wU2Nyb2xsLnNldChmYWxzZSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGNoZWNrQW5kU2Nyb2xsRWxlbWVudFRvUG9zaXRpb24oZXZlbnREcmFnZ2luZzogSURyYWdnaW5nLCBpZ25vcmVBdXRvU2Nyb2xsPzogYm9vbGVhbikge1xuICAgIGxldCBlbGVtZW50U2V0U2Nyb2xsID0gdGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKGlnbm9yZUF1dG9TY3JvbGwgfHwgIWNoZWNrTW91c2VPdmVySW5Db250YWluZXIoZXZlbnREcmFnZ2luZy5tb3VzZVBvc2l0aW9uLCBlbGVtZW50U2V0U2Nyb2xsKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCByZWN0RWxlbWVudCA9IGNsb25lSUJvdW5kaW5nQ2xpZW50UmVjdCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgICBpZiAodGhpcy5yb290RWxlbWVudFNjcm9sbCgpKSB7XG4gICAgICBjb25zdCByZWN0RWxlbWVudFNjcm9sbCA9IHRoaXMucm9vdEVsZW1lbnRTY3JvbGwoKT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkgYXMgSUJvdW5kaW5nQ2xpZW50UmVjdDtcblxuICAgICAgcmVjdEVsZW1lbnQubGVmdCA9IHJlY3RFbGVtZW50U2Nyb2xsLmxlZnQ7XG4gICAgICByZWN0RWxlbWVudC50b3AgPSByZWN0RWxlbWVudFNjcm9sbC50b3A7XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0LCB0b3AsIGxlZnQgfSA9IHJlY3RFbGVtZW50O1xuICAgIGNvbnN0IHsgY2xpZW50WCwgY2xpZW50WSB9ID0gZXZlbnREcmFnZ2luZy5tb3VzZVBvc2l0aW9uO1xuICAgIGNvbnN0IGxpbWl0TGVmdCA9IGxlZnQgKyBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldFdpZHRoO1xuICAgIGNvbnN0IGxpbWl0VG9wID0gdG9wICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRIZWlnaHQ7XG5cbiAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxTY3JvbGxUb0VsZW1lbnQoKSk7XG4gICAgaWYgKChjbGllbnRYIDwgbGVmdCB8fCBjbGllbnRYID4gbGVmdCArIHdpZHRoKSAmJiAoY2xpZW50WSA8IHRvcCB8fCBjbGllbnRZID4gdG9wICsgaGVpZ2h0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaW50ZXJ2YWxTY3JvbGxUb0VsZW1lbnQuc2V0KHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIGVsZW1lbnRTZXRTY3JvbGwgPSAodGhpcy5yb290RWxlbWVudFNjcm9sbCgpIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgIGxldCBkaXJlY3Rpb25Ub3AgPSAwO1xuICAgICAgbGV0IGRpcmVjdGlvbkxlZnQgPSAwO1xuXG4gICAgICBpZiAodG9wIDw9IGNsaWVudFkgJiYgY2xpZW50WSA8PSB0b3AgKyB0aGlzLndpZHRoWm9uZURldGVjdCgpKSB7XG4gICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wIC09IHRoaXMubW92ZW1lbnRMZW5ndGgoKTtcbiAgICAgICAgZGlyZWN0aW9uVG9wID0gLTE7XG4gICAgICB9XG5cbiAgICAgIGlmIChsaW1pdFRvcCAtIHRoaXMud2lkdGhab25lRGV0ZWN0KCkgPD0gY2xpZW50WSAmJiBjbGllbnRZIDw9IGxpbWl0VG9wKSB7XG4gICAgICAgIGlmICh0aGlzLnN0b3BTY3JvbGwoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFRvcCArPSB0aGlzLm1vdmVtZW50TGVuZ3RoKCk7XG4gICAgICAgIGRpcmVjdGlvblRvcCA9IDE7XG4gICAgICB9XG5cbiAgICAgIGlmICgobGltaXRMZWZ0IC0gdGhpcy53aWR0aFpvbmVEZXRlY3QoKSA8PSBjbGllbnRYKSAmJiAoY2xpZW50WCA8PSBsaW1pdExlZnQpKSB7XG4gICAgICAgIGlmICh0aGlzLnN0b3BTY3JvbGwoKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgKz0gdGhpcy5tb3ZlbWVudExlbmd0aCgpO1xuICAgICAgICBkaXJlY3Rpb25MZWZ0ID0gKzE7XG5cbiAgICAgIH1cbiAgICAgIGlmIChsZWZ0IDw9IGNsaWVudFggJiYgY2xpZW50WCA8PSBsZWZ0ICsgdGhpcy53aWR0aFpvbmVEZXRlY3QoKSkge1xuICAgICAgICBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgLT0gdGhpcy5tb3ZlbWVudExlbmd0aCgpO1xuICAgICAgICBkaXJlY3Rpb25MZWZ0ID0gLTE7XG4gICAgICB9XG5cbiAgICAgIGlmIChlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgJiYgKGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0V2lkdGggPj0gZWxlbWVudFNldFNjcm9sbC5zY3JvbGxXaWR0aCkpIHtcbiAgICAgICAgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxMZWZ0IC09IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsTGVmdCArIGVsZW1lbnRTZXRTY3JvbGwub2Zmc2V0V2lkdGggLSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFdpZHRoO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgJiYgKGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRIZWlnaHQgPj0gZWxlbWVudFNldFNjcm9sbC5zY3JvbGxIZWlnaHQpKSB7XG4gICAgICAgIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wIC09IGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsVG9wICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRIZWlnaHQgLSBlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbEhlaWdodDtcbiAgICAgIH1cblxuICAgICAgaWYgKChkaXJlY3Rpb25Ub3AgPCAwICYmICFlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbFRvcCkgfHwgKCFlbGVtZW50U2V0U2Nyb2xsLnNjcm9sbExlZnQgJiYgZGlyZWN0aW9uTGVmdCA8IDApIHx8IChkaXJlY3Rpb25Ub3AgJiYgZWxlbWVudFNldFNjcm9sbC5zY3JvbGxIZWlnaHQgPD0gZWxlbWVudFNldFNjcm9sbC5zY3JvbGxUb3AgKyBlbGVtZW50U2V0U2Nyb2xsLm9mZnNldEhlaWdodCArIDMpIHx8IChkaXJlY3Rpb25MZWZ0ICYmIGVsZW1lbnRTZXRTY3JvbGwuc2Nyb2xsV2lkdGggPD0gZWxlbWVudFNldFNjcm9sbC5zY3JvbGxMZWZ0ICsgZWxlbWVudFNldFNjcm9sbC5vZmZzZXRXaWR0aCArIDMpKSB7XG4gICAgICAgIHJldHVybiBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWxTY3JvbGxUb0VsZW1lbnQoKSk7XG4gICAgICB9XG4gICAgfSwgMTApKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './drag-drop.directive';
2
+ export * from './drag-item.directive';
3
+ export * from './drag-scroll.directive';
4
+ export * from './interfaces/event.interface';
5
+ export * from './drag-item-in-container-virtual-scroll.directive';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhZy1kcm9wL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsbURBQW1ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RyYWctZHJvcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWl0ZW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZHJhZy1zY3JvbGwuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWl0ZW0taW4tY29udGFpbmVyLXZpcnR1YWwtc2Nyb2xsLmRpcmVjdGl2ZSc7Il19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RyYWctZHJvcC9zcmMvaW50ZXJmYWNlcy9ldmVudC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdyaXRhYmxlU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJRHJhZ2dpbmcgeyBtb3VzZVBvc2l0aW9uOiBJTW91c2VQb3NpdGlvbjsgZWxlbWVudERyYWc6IEhUTUxFbGVtZW50LCBlbGVtZW50S2VlcENvbnRhaW5lcj86IGJvb2xlYW4sIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm8gfVxuZXhwb3J0IGludGVyZmFjZSBJRHJhZ1N0YXJ0IHsgbW91c2VQb3NpdGlvbjogSU1vdXNlUG9zaXRpb247IGVsZW1lbnREcmFnOiBIVE1MRWxlbWVudCwgaXRlbURyYWdJbmZvPzogSUl0ZW1EcmFnSW5mbyB9XG5leHBvcnQgaW50ZXJmYWNlIElEcmFnT3ZlciB7IG1vdXNlUG9zaXRpb246IElNb3VzZVBvc2l0aW9uOyBlbGVtZW50RHJhZzogSFRNTEVsZW1lbnQ7IGVsZW1lbnREcmFnT3ZlcjogSFRNTEVsZW1lbnQsIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm8gfVxuZXhwb3J0IGludGVyZmFjZSBJRHJhZ0xlYXZlIHsgZWxlbWVudERyYWc6IEhUTUxFbGVtZW50OyBlbGVtZW50RHJhZ0xlYXZlOiBIVE1MRWxlbWVudCwgaXRlbURyYWdJbmZvPzogSUl0ZW1EcmFnSW5mbyB9XG5leHBvcnQgaW50ZXJmYWNlIElEcmFnRW5kIHsgbW91c2VQb3NpdGlvbjogSU1vdXNlUG9zaXRpb247IGVsZW1lbnREcmFnOiBIVE1MRWxlbWVudCwgaXRlbURyYWdJbmZvPzogSUl0ZW1EcmFnSW5mbyB9XG5leHBvcnQgaW50ZXJmYWNlIElEcm9wIHsgZWxlbWVudERyYWc6IEhUTUxFbGVtZW50OyBlbGVtZW50RHJvcDogSFRNTEVsZW1lbnQsIGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm8gfVxuZXhwb3J0IGludGVyZmFjZSBJSXRlbURyYWdJbmZvIHsgaXRlbTogb2JqZWN0OyBpdGVtc01vdmU/OiBXcml0YWJsZVNpZ25hbDxBcnJheTx1bmtub3duPj4sIGluZGV4RHJhZz86IG51bWJlcjsgaW5kZXhEcm9wPzogbnVtYmVyOyBpdGVtc0RyYWc6IFdyaXRhYmxlU2lnbmFsPEFycmF5PHVua25vd24+PjsgaXRlbXNEcm9wPzogV3JpdGFibGVTaWduYWw8QXJyYXk8dW5rbm93bj4+OyBjb250YWluZXJEcmFnPzogSFRNTEVsZW1lbnQ7IGNvbnRhaW5lckRyb3A/OiBIVE1MRWxlbWVudCB9XG5leHBvcnQgaW50ZXJmYWNlIElEcmFnSXRlbUluQ29udGFpbmVyVmlydHVhbFNjcm9sbCB7IGl0ZW1EcmFnSW5mbz86IElJdGVtRHJhZ0luZm87IGVsZW1lbnREcmFnOiBIVE1MRWxlbWVudDsgZGlzdGFuY2VTdGFydEVsZW1lbnRBbmRNb3VzZVRvcDogbnVtYmVyOyBkaXN0YW5jZVN0YXJ0RWxlbWVudEFuZE1vdXNlTGVmdDogbnVtYmVyOyBlbGVtZW50Q29udGFpbmVyPzogSFRNTEVsZW1lbnQ7IGRyYWdCb3VuZGFyeT86IGJvb2xlYW47IGRyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXI/OiBib29sZWFuLCBpZ25vcmVTdG9wRXZlbnQ/OiBib29sZWFuIH1cbmV4cG9ydCBpbnRlcmZhY2UgSU1vdXNlUG9zaXRpb24geyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9XG5leHBvcnQgaW50ZXJmYWNlIElEcmFnRHJvcEZ1bmN0aW9uQ29udHJvbEV2ZW50IHsgc2V0QXR0cmlidXRlRWxlbWVudEFuZEl0ZW1EcmFnOiAoKSA9PiBQcm9taXNlPHZvaWQ+IH0iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLWRyYWctZHJvcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9kcmFnLWRyb3Avc3JjL2xpYnMtdWktY29tcG9uZW50cy1kcmFnLWRyb3AudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=