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