@cuby-ui/cdk 0.0.231 → 0.0.232

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,42 @@
1
+ import type { OnDestroy } from '@angular/core';
2
+ import type { CuiNullable } from '../../types';
3
+ import type { CuiDragData, CuiDragDropData } from './drag-drop.options';
4
+ import * as i0 from "@angular/core";
5
+ export declare class CuiDragDropDirective implements OnDestroy {
6
+ private readonly zone;
7
+ private readonly document;
8
+ private readonly renderer;
9
+ private readonly element;
10
+ private readonly dragListDirective;
11
+ private readonly PLACEHOLDER_CLASS;
12
+ private readonly listId;
13
+ private readonly itemAttribute;
14
+ private index;
15
+ private prevIndex;
16
+ private abortController;
17
+ private hostAbortController;
18
+ protected readonly draggingElement: import("@angular/core").WritableSignal<CuiNullable<HTMLElement>>;
19
+ protected readonly placeholderElement: import("@angular/core").WritableSignal<CuiNullable<HTMLElement>>;
20
+ protected readonly dragData: import("@angular/core").WritableSignal<CuiDragData>;
21
+ readonly disabled: import("@angular/core").InputSignal<boolean>;
22
+ readonly elementDragged: import("@angular/core").OutputEmitterRef<CuiDragDropData>;
23
+ constructor();
24
+ ngOnDestroy(): void;
25
+ changePointerEvents(element: HTMLElement): void;
26
+ private onDrag;
27
+ private onDragStart;
28
+ private onDragEnd;
29
+ private initDragItem;
30
+ private initPointerEvents;
31
+ private destroyEvents;
32
+ private prepareMoving;
33
+ private configurateDragData;
34
+ private createDragElement;
35
+ private createPlaceholderElement;
36
+ private removeDragElement;
37
+ private removePlaceholder;
38
+ private calculateIndex;
39
+ private calculatePreviousIndex;
40
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiDragDropDirective, never>;
41
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuiDragDropDirective, "[cuiDragDrop]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "elementDragged": "elementDragged"; }, never, never, true, never>;
42
+ }
@@ -0,0 +1,11 @@
1
+ export interface CuiDragDropData {
2
+ readonly index: number;
3
+ readonly prevIndex: number;
4
+ readonly pointer: CuiDropPointer;
5
+ readonly targetElement: HTMLElement;
6
+ }
7
+ export interface CuiDragData {
8
+ readonly pointer?: CuiDropPointer;
9
+ readonly targetElement?: HTMLElement;
10
+ }
11
+ export type CuiDropPointer = 'BEFORE' | 'AFTER';
@@ -0,0 +1,10 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CuiDragListDirective {
3
+ private readonly renderer;
4
+ private readonly element;
5
+ readonly id: string;
6
+ readonly listId: string;
7
+ constructor();
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiDragListDirective, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuiDragListDirective, "[cuiDragList]", never, {}, {}, never, never, true, never>;
10
+ }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CuiDragPointerDirective {
3
+ private readonly dragDropDirective;
4
+ private readonly element;
5
+ constructor();
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiDragPointerDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuiDragPointerDirective, "[cuiDragPointer]", never, {}, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,4 @@
1
+ export { CuiDragDropData, CuiDragData } from './drag-drop.options';
2
+ export { CuiDragDropDirective } from './drag-drop.directive';
3
+ export { CuiDragListDirective } from './drag-list.directive';
4
+ export { CuiDragPointerDirective } from './drag-pointer.directive';
@@ -0,0 +1,23 @@
1
+ import type { OnDestroy } from '@angular/core';
2
+ import type { CuiNullable } from '../types';
3
+ import * as i0 from "@angular/core";
4
+ export declare class CuiHandleScrollDirective implements OnDestroy {
5
+ private readonly window;
6
+ private readonly document;
7
+ private readonly renderer;
8
+ private readonly zone;
9
+ private abortController;
10
+ private scrollSubscription?;
11
+ protected readonly SCROLL_AREA_HEIGHT = 100;
12
+ protected readonly scrollGapElements: import("@angular/core").WritableSignal<CuiNullable<HTMLDivElement[]>>;
13
+ readonly scrollSpeed: import("@angular/core").InputSignal<number>;
14
+ ngOnDestroy(): void;
15
+ onTargetMove(): void;
16
+ private initScrollEvent;
17
+ private handleScroll;
18
+ private setScrollGapElements;
19
+ private startScrolling;
20
+ private removeSubscription;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiHandleScrollDirective, never>;
22
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuiHandleScrollDirective, "[cuiHandleScroll]", never, { "scrollSpeed": { "alias": "scrollSpeed"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
23
+ }
@@ -1,6 +1,8 @@
1
1
  export * from './active-zone';
2
2
  export * from './hovered';
3
+ export * from './drag-drop';
3
4
  export * from './auto-resizing.directive';
5
+ export * from './handle-scroll.directive';
4
6
  export * from './click-outside.directive';
5
7
  export * from './dimensions-observer.directive';
6
8
  export * from './content-editable-value-accessor.directive';
@@ -0,0 +1,184 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, ElementRef, inject, input, NgZone, output, Renderer2, signal } from '@angular/core';
3
+ import { CuiDragListDirective } from './drag-list.directive';
4
+ import * as i0 from "@angular/core";
5
+ export class CuiDragDropDirective {
6
+ constructor() {
7
+ this.zone = inject(NgZone);
8
+ this.document = inject(DOCUMENT);
9
+ this.renderer = inject(Renderer2);
10
+ this.element = inject(ElementRef).nativeElement;
11
+ this.dragListDirective = inject(CuiDragListDirective);
12
+ this.PLACEHOLDER_CLASS = 'cc-drag-drop-placeholder';
13
+ this.listId = this.dragListDirective.listId;
14
+ this.itemAttribute = `${this.listId}-drag-item`;
15
+ this.abortController = new AbortController();
16
+ this.hostAbortController = new AbortController();
17
+ this.draggingElement = signal(null);
18
+ this.placeholderElement = signal(null);
19
+ this.dragData = signal({});
20
+ this.disabled = input(false);
21
+ this.elementDragged = output();
22
+ this.initDragItem();
23
+ this.initPointerEvents(this.element);
24
+ }
25
+ ngOnDestroy() {
26
+ this.destroyEvents();
27
+ }
28
+ changePointerEvents(element) {
29
+ this.hostAbortController.abort();
30
+ this.hostAbortController = new AbortController();
31
+ this.initPointerEvents(element);
32
+ }
33
+ onDrag(clientX, clientY) {
34
+ if (!this.draggingElement()) {
35
+ return;
36
+ }
37
+ const elementsFromPoint = this.document.elementsFromPoint(clientX, clientY);
38
+ const elementFromPoint = elementsFromPoint.find((element) => element.closest(`#${this.listId}`));
39
+ if (!elementFromPoint) {
40
+ return;
41
+ }
42
+ const targetElement = elementFromPoint.closest(`[${this.itemAttribute}]`);
43
+ if (!targetElement || targetElement === this.draggingElement()) {
44
+ return;
45
+ }
46
+ this.configurateDragData(targetElement, clientY);
47
+ }
48
+ onDragStart(event) {
49
+ if (this.disabled()) {
50
+ return;
51
+ }
52
+ let isClicked = true;
53
+ const elementClientRect = this.element.getBoundingClientRect();
54
+ const shiftX = event.clientX - elementClientRect.left;
55
+ const shiftY = event.clientY - elementClientRect.top;
56
+ this.prevIndex = this.calculatePreviousIndex();
57
+ this.document.addEventListener('pointermove', ({ clientX, clientY }) => {
58
+ if (isClicked) {
59
+ this.prepareMoving();
60
+ isClicked = false;
61
+ }
62
+ const draggingElement = this.draggingElement();
63
+ this.renderer.setStyle(draggingElement, 'left', clientX - shiftX + 'px');
64
+ this.renderer.setStyle(draggingElement, 'top', clientY - shiftY + 'px');
65
+ this.onDrag(clientX, clientY);
66
+ }, { signal: this.abortController.signal });
67
+ }
68
+ onDragEnd() {
69
+ const { targetElement, pointer } = this.dragData();
70
+ if (targetElement && pointer) {
71
+ this.elementDragged.emit({
72
+ index: this.index,
73
+ prevIndex: this.prevIndex,
74
+ targetElement,
75
+ pointer
76
+ });
77
+ }
78
+ // remove document events
79
+ this.abortController.abort();
80
+ this.abortController = new AbortController();
81
+ this.removeDragElement();
82
+ this.removePlaceholder();
83
+ this.dragData.set({});
84
+ }
85
+ initDragItem() {
86
+ this.renderer.setAttribute(this.element, this.itemAttribute, 'true');
87
+ }
88
+ initPointerEvents(element) {
89
+ const signal = this.hostAbortController.signal;
90
+ this.zone.runOutsideAngular(() => {
91
+ element.addEventListener('pointerup', this.onDragEnd.bind(this), { signal });
92
+ element.addEventListener('pointerdown', this.onDragStart.bind(this), { signal });
93
+ });
94
+ }
95
+ destroyEvents() {
96
+ this.hostAbortController.abort();
97
+ this.abortController.abort();
98
+ }
99
+ prepareMoving() {
100
+ const placeholderElement = this.createPlaceholderElement();
101
+ const draggingElement = this.createDragElement();
102
+ this.document.addEventListener('pointerup', this.onDragEnd.bind(this), {
103
+ signal: this.abortController.signal
104
+ });
105
+ this.element.after(placeholderElement);
106
+ this.draggingElement.set(draggingElement);
107
+ this.element.remove();
108
+ this.document.body.append(draggingElement);
109
+ }
110
+ configurateDragData(targetElement, clientY) {
111
+ const placeholderElement = this.placeholderElement();
112
+ const boundingRect = targetElement.getBoundingClientRect();
113
+ const middleY = boundingRect.top + boundingRect.height / 2;
114
+ if (clientY < middleY) {
115
+ targetElement.before(placeholderElement);
116
+ this.dragData.set({ targetElement, pointer: 'BEFORE' });
117
+ }
118
+ else {
119
+ targetElement.after(placeholderElement);
120
+ this.dragData.set({ targetElement, pointer: 'AFTER' });
121
+ }
122
+ this.index = this.calculateIndex(placeholderElement);
123
+ }
124
+ createDragElement() {
125
+ const width = this.element.clientWidth;
126
+ const draggingElement = this.element.cloneNode(true);
127
+ this.renderer.setStyle(draggingElement, 'position', 'fixed');
128
+ this.renderer.setStyle(draggingElement, 'display', 'block');
129
+ this.renderer.setStyle(draggingElement, 'margin', '0');
130
+ this.renderer.setStyle(draggingElement, 'width', `${width}px`);
131
+ return draggingElement;
132
+ }
133
+ createPlaceholderElement() {
134
+ const element = this.placeholderElement();
135
+ if (element) {
136
+ return element;
137
+ }
138
+ const placeholderElement = this.renderer.createElement('div');
139
+ this.renderer.addClass(placeholderElement, this.PLACEHOLDER_CLASS);
140
+ this.placeholderElement.set(placeholderElement);
141
+ return placeholderElement;
142
+ }
143
+ removeDragElement() {
144
+ const draggingElement = this.draggingElement();
145
+ if (!draggingElement) {
146
+ return;
147
+ }
148
+ draggingElement.remove();
149
+ this.draggingElement.set(null);
150
+ }
151
+ removePlaceholder() {
152
+ const placeholderElement = this.placeholderElement();
153
+ if (!placeholderElement) {
154
+ return;
155
+ }
156
+ placeholderElement.after(this.element);
157
+ placeholderElement.remove();
158
+ this.placeholderElement.set(null);
159
+ }
160
+ calculateIndex(placeholderElement) {
161
+ const childNodes = placeholderElement.parentElement.childNodes;
162
+ const elements = Array.from(childNodes).filter((node) => node instanceof HTMLElement);
163
+ return elements.indexOf(placeholderElement);
164
+ }
165
+ calculatePreviousIndex() {
166
+ let index = 0;
167
+ let currentElement = this.element;
168
+ while (currentElement && currentElement.previousElementSibling) {
169
+ index++;
170
+ currentElement = currentElement.previousElementSibling;
171
+ }
172
+ return index;
173
+ }
174
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiDragDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
175
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: CuiDragDropDirective, isStandalone: true, selector: "[cuiDragDrop]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { elementDragged: "elementDragged" }, ngImport: i0 }); }
176
+ }
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiDragDropDirective, decorators: [{
178
+ type: Directive,
179
+ args: [{
180
+ selector: '[cuiDragDrop]',
181
+ standalone: true
182
+ }]
183
+ }], ctorParameters: () => [] });
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLWRyb3AuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUl4RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNN0QsTUFBTSxPQUFPLG9CQUFvQjtJQXlCN0I7UUF4QmlCLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdCLFlBQU8sR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzNDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRWpELHNCQUFpQixHQUFHLDBCQUEwQixDQUFDO1FBRS9DLFdBQU0sR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLGtCQUFhLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxZQUFZLENBQUM7UUFJcEQsb0JBQWUsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3hDLHdCQUFtQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFFakMsb0JBQWUsR0FBRyxNQUFNLENBQTJCLElBQUksQ0FBQyxDQUFDO1FBQ3pELHVCQUFrQixHQUFHLE1BQU0sQ0FBMkIsSUFBSSxDQUFDLENBQUM7UUFDNUQsYUFBUSxHQUFHLE1BQU0sQ0FBYyxFQUFFLENBQUMsQ0FBQztRQUV0QyxhQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLG1CQUFjLEdBQUcsTUFBTSxFQUFtQixDQUFDO1FBR3ZELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxPQUFvQjtRQUMzQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxNQUFNLENBQUMsT0FBZSxFQUFFLE9BQWU7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE9BQU87UUFDWCxDQUFDO1FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RSxNQUFNLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFakcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQWMsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQztRQUV2RixJQUFJLENBQUMsYUFBYSxJQUFJLGFBQWEsS0FBSyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUM3RCxPQUFPO1FBQ1gsQ0FBQztRQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFpQjtRQUNqQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDWCxDQUFDO1FBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXJCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDO1FBRXJELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FDMUIsYUFBYSxFQUNiLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRTtZQUNyQixJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFFckIsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN0QixDQUFDO1lBRUQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRS9DLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxNQUFNLEVBQUUsT0FBTyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQztZQUN6RSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLE9BQU8sR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxFQUNELEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRU8sU0FBUztRQUNiLE1BQU0sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRW5ELElBQUksYUFBYSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDekIsYUFBYTtnQkFDYixPQUFPO2FBQ1YsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELHlCQUF5QjtRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUU3QyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRU8sWUFBWTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVPLGlCQUFpQixDQUFDLE9BQW9CO1FBQzFDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUM7UUFFL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDN0UsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU8sYUFBYTtRQUNqQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzNELE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRWpELElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25FLE1BQU0sRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU07U0FDdEMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsYUFBMEIsRUFBRSxPQUFlO1FBQ25FLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDckQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDM0QsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUUzRCxJQUFJLE9BQU8sR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUNwQixhQUFhLENBQUMsTUFBTSxDQUFDLGtCQUFtQixDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQzthQUFNLENBQUM7WUFDSixhQUFhLENBQUMsS0FBSyxDQUFDLGtCQUFtQixDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBbUIsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxpQkFBaUI7UUFDckIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7UUFDdkMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFnQixDQUFDO1FBRXBFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBRS9ELE9BQU8sZUFBZSxDQUFDO0lBQzNCLENBQUM7SUFFTyx3QkFBd0I7UUFDNUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNWLE9BQU8sT0FBTyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVoRCxPQUFPLGtCQUFrQixDQUFDO0lBQzlCLENBQUM7SUFFTyxpQkFBaUI7UUFDckIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRS9DLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQixPQUFPO1FBQ1gsQ0FBQztRQUVELGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFckQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDdEIsT0FBTztRQUNYLENBQUM7UUFFRCxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVPLGNBQWMsQ0FBQyxrQkFBK0I7UUFDbEQsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUMsYUFBYyxDQUFDLFVBQVUsQ0FBQztRQUNoRSxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxZQUFZLFdBQVcsQ0FBQyxDQUFDO1FBRXRGLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxrQkFBbUIsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTyxzQkFBc0I7UUFDMUIsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxjQUFjLEdBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUUzQyxPQUFPLGNBQWMsSUFBSSxjQUFjLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztZQUM3RCxLQUFLLEVBQUUsQ0FBQztZQUNSLGNBQWMsR0FBRyxjQUFjLENBQUMsc0JBQXNCLENBQUM7UUFDM0QsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBdk9RLG9CQUFvQjttR0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUpoQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxlQUFlO29CQUN6QixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB0eXBlIHsgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgTmdab25lLCBvdXRwdXQsIFJlbmRlcmVyMiwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB0eXBlIHsgQ3VpTnVsbGFibGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcblxyXG5pbXBvcnQgdHlwZSB7IEN1aURyYWdEYXRhLCBDdWlEcmFnRHJvcERhdGEgfSBmcm9tICcuL2RyYWctZHJvcC5vcHRpb25zJztcclxuaW1wb3J0IHsgQ3VpRHJhZ0xpc3REaXJlY3RpdmUgfSBmcm9tICcuL2RyYWctbGlzdC5kaXJlY3RpdmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tjdWlEcmFnRHJvcF0nLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3VpRHJhZ0Ryb3BEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkcmFnTGlzdERpcmVjdGl2ZSA9IGluamVjdChDdWlEcmFnTGlzdERpcmVjdGl2ZSk7XHJcblxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBQTEFDRUhPTERFUl9DTEFTUyA9ICdjYy1kcmFnLWRyb3AtcGxhY2Vob2xkZXInO1xyXG5cclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlzdElkID0gdGhpcy5kcmFnTGlzdERpcmVjdGl2ZS5saXN0SWQ7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1BdHRyaWJ1dGUgPSBgJHt0aGlzLmxpc3RJZH0tZHJhZy1pdGVtYDtcclxuXHJcbiAgICBwcml2YXRlIGluZGV4ITogbnVtYmVyO1xyXG4gICAgcHJpdmF0ZSBwcmV2SW5kZXghOiBudW1iZXI7XHJcbiAgICBwcml2YXRlIGFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcclxuICAgIHByaXZhdGUgaG9zdEFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJhZ2dpbmdFbGVtZW50ID0gc2lnbmFsPEN1aU51bGxhYmxlPEhUTUxFbGVtZW50Pj4obnVsbCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGxhY2Vob2xkZXJFbGVtZW50ID0gc2lnbmFsPEN1aU51bGxhYmxlPEhUTUxFbGVtZW50Pj4obnVsbCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZHJhZ0RhdGEgPSBzaWduYWw8Q3VpRHJhZ0RhdGE+KHt9KTtcclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQgPSBpbnB1dChmYWxzZSk7XHJcblxyXG4gICAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnREcmFnZ2VkID0gb3V0cHV0PEN1aURyYWdEcm9wRGF0YT4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmluaXREcmFnSXRlbSgpO1xyXG4gICAgICAgIHRoaXMuaW5pdFBvaW50ZXJFdmVudHModGhpcy5lbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95RXZlbnRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNoYW5nZVBvaW50ZXJFdmVudHMoZWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhvc3RBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcclxuICAgICAgICB0aGlzLmhvc3RBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdFBvaW50ZXJFdmVudHMoZWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvbkRyYWcoY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuZHJhZ2dpbmdFbGVtZW50KCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZWxlbWVudHNGcm9tUG9pbnQgPSB0aGlzLmRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KGNsaWVudFgsIGNsaWVudFkpO1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnRGcm9tUG9pbnQgPSBlbGVtZW50c0Zyb21Qb2ludC5maW5kKChlbGVtZW50KSA9PiBlbGVtZW50LmNsb3Nlc3QoYCMke3RoaXMubGlzdElkfWApKTtcclxuXHJcbiAgICAgICAgaWYgKCFlbGVtZW50RnJvbVBvaW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSBlbGVtZW50RnJvbVBvaW50LmNsb3Nlc3Q8SFRNTEVsZW1lbnQ+KGBbJHt0aGlzLml0ZW1BdHRyaWJ1dGV9XWApO1xyXG5cclxuICAgICAgICBpZiAoIXRhcmdldEVsZW1lbnQgfHwgdGFyZ2V0RWxlbWVudCA9PT0gdGhpcy5kcmFnZ2luZ0VsZW1lbnQoKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRlRHJhZ0RhdGEodGFyZ2V0RWxlbWVudCwgY2xpZW50WSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvbkRyYWdTdGFydChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGlzQ2xpY2tlZCA9IHRydWU7XHJcblxyXG4gICAgICAgIGNvbnN0IGVsZW1lbnRDbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IHNoaWZ0WCA9IGV2ZW50LmNsaWVudFggLSBlbGVtZW50Q2xpZW50UmVjdC5sZWZ0O1xyXG4gICAgICAgIGNvbnN0IHNoaWZ0WSA9IGV2ZW50LmNsaWVudFkgLSBlbGVtZW50Q2xpZW50UmVjdC50b3A7XHJcblxyXG4gICAgICAgIHRoaXMucHJldkluZGV4ID0gdGhpcy5jYWxjdWxhdGVQcmV2aW91c0luZGV4KCk7XHJcblxyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcclxuICAgICAgICAgICAgJ3BvaW50ZXJtb3ZlJyxcclxuICAgICAgICAgICAgKHsgY2xpZW50WCwgY2xpZW50WSB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNDbGlja2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlTW92aW5nKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlzQ2xpY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IGRyYWdnaW5nRWxlbWVudCA9IHRoaXMuZHJhZ2dpbmdFbGVtZW50KCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkcmFnZ2luZ0VsZW1lbnQsICdsZWZ0JywgY2xpZW50WCAtIHNoaWZ0WCArICdweCcpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkcmFnZ2luZ0VsZW1lbnQsICd0b3AnLCBjbGllbnRZIC0gc2hpZnRZICsgJ3B4Jyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uRHJhZyhjbGllbnRYLCBjbGllbnRZKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgeyBzaWduYWw6IHRoaXMuYWJvcnRDb250cm9sbGVyLnNpZ25hbCB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9uRHJhZ0VuZCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB7IHRhcmdldEVsZW1lbnQsIHBvaW50ZXIgfSA9IHRoaXMuZHJhZ0RhdGEoKTtcclxuXHJcbiAgICAgICAgaWYgKHRhcmdldEVsZW1lbnQgJiYgcG9pbnRlcikge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnREcmFnZ2VkLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgaW5kZXg6IHRoaXMuaW5kZXgsXHJcbiAgICAgICAgICAgICAgICBwcmV2SW5kZXg6IHRoaXMucHJldkluZGV4LFxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0RWxlbWVudCxcclxuICAgICAgICAgICAgICAgIHBvaW50ZXJcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyByZW1vdmUgZG9jdW1lbnQgZXZlbnRzXHJcbiAgICAgICAgdGhpcy5hYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcclxuICAgICAgICB0aGlzLmFib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZW1vdmVEcmFnRWxlbWVudCgpO1xyXG4gICAgICAgIHRoaXMucmVtb3ZlUGxhY2Vob2xkZXIoKTtcclxuICAgICAgICB0aGlzLmRyYWdEYXRhLnNldCh7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0RHJhZ0l0ZW0oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCB0aGlzLml0ZW1BdHRyaWJ1dGUsICd0cnVlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0UG9pbnRlckV2ZW50cyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHNpZ25hbCA9IHRoaXMuaG9zdEFib3J0Q29udHJvbGxlci5zaWduYWw7XHJcblxyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgdGhpcy5vbkRyYWdFbmQuYmluZCh0aGlzKSwgeyBzaWduYWwgfSk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCB0aGlzLm9uRHJhZ1N0YXJ0LmJpbmQodGhpcyksIHsgc2lnbmFsIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveUV2ZW50cygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmhvc3RBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcclxuICAgICAgICB0aGlzLmFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcHJlcGFyZU1vdmluZygpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlckVsZW1lbnQgPSB0aGlzLmNyZWF0ZVBsYWNlaG9sZGVyRWxlbWVudCgpO1xyXG4gICAgICAgIGNvbnN0IGRyYWdnaW5nRWxlbWVudCA9IHRoaXMuY3JlYXRlRHJhZ0VsZW1lbnQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCB0aGlzLm9uRHJhZ0VuZC5iaW5kKHRoaXMpLCB7XHJcbiAgICAgICAgICAgIHNpZ25hbDogdGhpcy5hYm9ydENvbnRyb2xsZXIuc2lnbmFsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudC5hZnRlcihwbGFjZWhvbGRlckVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuZHJhZ2dpbmdFbGVtZW50LnNldChkcmFnZ2luZ0VsZW1lbnQpO1xyXG5cclxuICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZChkcmFnZ2luZ0VsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29uZmlndXJhdGVEcmFnRGF0YSh0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudCwgY2xpZW50WTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJFbGVtZW50ID0gdGhpcy5wbGFjZWhvbGRlckVsZW1lbnQoKTtcclxuICAgICAgICBjb25zdCBib3VuZGluZ1JlY3QgPSB0YXJnZXRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbnN0IG1pZGRsZVkgPSBib3VuZGluZ1JlY3QudG9wICsgYm91bmRpbmdSZWN0LmhlaWdodCAvIDI7XHJcblxyXG4gICAgICAgIGlmIChjbGllbnRZIDwgbWlkZGxlWSkge1xyXG4gICAgICAgICAgICB0YXJnZXRFbGVtZW50LmJlZm9yZShwbGFjZWhvbGRlckVsZW1lbnQhKTtcclxuICAgICAgICAgICAgdGhpcy5kcmFnRGF0YS5zZXQoeyB0YXJnZXRFbGVtZW50LCBwb2ludGVyOiAnQkVGT1JFJyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0YXJnZXRFbGVtZW50LmFmdGVyKHBsYWNlaG9sZGVyRWxlbWVudCEpO1xyXG4gICAgICAgICAgICB0aGlzLmRyYWdEYXRhLnNldCh7IHRhcmdldEVsZW1lbnQsIHBvaW50ZXI6ICdBRlRFUicgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmluZGV4ID0gdGhpcy5jYWxjdWxhdGVJbmRleChwbGFjZWhvbGRlckVsZW1lbnQhKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNyZWF0ZURyYWdFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcclxuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aDtcclxuICAgICAgICBjb25zdCBkcmFnZ2luZ0VsZW1lbnQgPSB0aGlzLmVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRyYWdnaW5nRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkcmFnZ2luZ0VsZW1lbnQsICdkaXNwbGF5JywgJ2Jsb2NrJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkcmFnZ2luZ0VsZW1lbnQsICdtYXJnaW4nLCAnMCcpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZHJhZ2dpbmdFbGVtZW50LCAnd2lkdGgnLCBgJHt3aWR0aH1weGApO1xyXG5cclxuICAgICAgICByZXR1cm4gZHJhZ2dpbmdFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlUGxhY2Vob2xkZXJFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5wbGFjZWhvbGRlckVsZW1lbnQoKTtcclxuXHJcbiAgICAgICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwbGFjZWhvbGRlckVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHBsYWNlaG9sZGVyRWxlbWVudCwgdGhpcy5QTEFDRUhPTERFUl9DTEFTUyk7XHJcbiAgICAgICAgdGhpcy5wbGFjZWhvbGRlckVsZW1lbnQuc2V0KHBsYWNlaG9sZGVyRWxlbWVudCk7XHJcblxyXG4gICAgICAgIHJldHVybiBwbGFjZWhvbGRlckVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVEcmFnRWxlbWVudCgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkcmFnZ2luZ0VsZW1lbnQgPSB0aGlzLmRyYWdnaW5nRWxlbWVudCgpO1xyXG5cclxuICAgICAgICBpZiAoIWRyYWdnaW5nRWxlbWVudCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkcmFnZ2luZ0VsZW1lbnQucmVtb3ZlKCk7XHJcbiAgICAgICAgdGhpcy5kcmFnZ2luZ0VsZW1lbnQuc2V0KG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlUGxhY2Vob2xkZXIoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXJFbGVtZW50ID0gdGhpcy5wbGFjZWhvbGRlckVsZW1lbnQoKTtcclxuXHJcbiAgICAgICAgaWYgKCFwbGFjZWhvbGRlckVsZW1lbnQpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcGxhY2Vob2xkZXJFbGVtZW50LmFmdGVyKHRoaXMuZWxlbWVudCk7XHJcbiAgICAgICAgcGxhY2Vob2xkZXJFbGVtZW50LnJlbW92ZSgpO1xyXG4gICAgICAgIHRoaXMucGxhY2Vob2xkZXJFbGVtZW50LnNldChudWxsKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbGN1bGF0ZUluZGV4KHBsYWNlaG9sZGVyRWxlbWVudDogSFRNTEVsZW1lbnQpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkTm9kZXMgPSBwbGFjZWhvbGRlckVsZW1lbnQucGFyZW50RWxlbWVudCEuY2hpbGROb2RlcztcclxuICAgICAgICBjb25zdCBlbGVtZW50cyA9IEFycmF5LmZyb20oY2hpbGROb2RlcykuZmlsdGVyKChub2RlKSA9PiBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpO1xyXG5cclxuICAgICAgICByZXR1cm4gZWxlbWVudHMuaW5kZXhPZihwbGFjZWhvbGRlckVsZW1lbnQhKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNhbGN1bGF0ZVByZXZpb3VzSW5kZXgoKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG4gICAgICAgIGxldCBjdXJyZW50RWxlbWVudDogRWxlbWVudCA9IHRoaXMuZWxlbWVudDtcclxuXHJcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRFbGVtZW50ICYmIGN1cnJlbnRFbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIHtcclxuICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGluZGV4O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1kcm9wLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9kcmFnLWRyb3AvZHJhZy1kcm9wLm9wdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ3VpRHJhZ0Ryb3BEYXRhIHtcclxuICAgIHJlYWRvbmx5IGluZGV4OiBudW1iZXI7XHJcbiAgICByZWFkb25seSBwcmV2SW5kZXg6IG51bWJlcjtcclxuICAgIHJlYWRvbmx5IHBvaW50ZXI6IEN1aURyb3BQb2ludGVyO1xyXG4gICAgcmVhZG9ubHkgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VpRHJhZ0RhdGEge1xyXG4gICAgcmVhZG9ubHkgcG9pbnRlcj86IEN1aURyb3BQb2ludGVyO1xyXG4gICAgcmVhZG9ubHkgdGFyZ2V0RWxlbWVudD86IEhUTUxFbGVtZW50O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBDdWlEcm9wUG9pbnRlciA9ICdCRUZPUkUnIHwgJ0FGVEVSJztcclxuIl19
@@ -0,0 +1,22 @@
1
+ import { Directive, ElementRef, inject, Renderer2 } from '@angular/core';
2
+ import { CuiIdService } from '../../services';
3
+ import * as i0 from "@angular/core";
4
+ export class CuiDragListDirective {
5
+ constructor() {
6
+ this.renderer = inject(Renderer2);
7
+ this.element = inject(ElementRef).nativeElement;
8
+ this.id = inject(CuiIdService).generate();
9
+ this.listId = `${this.id}-list`;
10
+ this.renderer.setAttribute(this.element, 'id', this.listId);
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiDragListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CuiDragListDirective, isStandalone: true, selector: "[cuiDragList]", ngImport: i0 }); }
14
+ }
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiDragListDirective, decorators: [{
16
+ type: Directive,
17
+ args: [{
18
+ selector: '[cuiDragList]',
19
+ standalone: true
20
+ }]
21
+ }], ctorParameters: () => [] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1saXN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLWxpc3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU05QyxNQUFNLE9BQU8sb0JBQW9CO0lBTzdCO1FBTmlCLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsWUFBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUFhLENBQUM7UUFDNUMsT0FBRSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVyQyxXQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUM7UUFHdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hFLENBQUM7K0dBVFEsb0JBQW9CO21HQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBSmhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGVBQWU7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEN1aUlkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY3VpRHJhZ0xpc3RdJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aURyYWdMaXN0RGlyZWN0aXZlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGlkID0gaW5qZWN0KEN1aUlkU2VydmljZSkuZ2VuZXJhdGUoKTtcclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgbGlzdElkID0gYCR7dGhpcy5pZH0tbGlzdGA7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCAnaWQnLCB0aGlzLmxpc3RJZCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,20 @@
1
+ import { Directive, ElementRef, inject } from '@angular/core';
2
+ import { CuiDragDropDirective } from './drag-drop.directive';
3
+ import * as i0 from "@angular/core";
4
+ export class CuiDragPointerDirective {
5
+ constructor() {
6
+ this.dragDropDirective = inject(CuiDragDropDirective);
7
+ this.element = inject(ElementRef).nativeElement;
8
+ this.dragDropDirective.changePointerEvents(this.element);
9
+ }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiDragPointerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: CuiDragPointerDirective, isStandalone: true, selector: "[cuiDragPointer]", ngImport: i0 }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiDragPointerDirective, decorators: [{
14
+ type: Directive,
15
+ args: [{
16
+ selector: '[cuiDragPointer]',
17
+ standalone: true
18
+ }]
19
+ }], ctorParameters: () => [] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1wb2ludGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9kaXJlY3RpdmVzL2RyYWctZHJvcC9kcmFnLXBvaW50ZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFNN0QsTUFBTSxPQUFPLHVCQUF1QjtJQUloQztRQUhpQixzQkFBaUIsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNqRCxZQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUd4RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7K0dBTlEsdUJBQXVCO21HQUF2Qix1QkFBdUI7OzRGQUF2Qix1QkFBdUI7a0JBSm5DLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IEN1aURyYWdEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi9kcmFnLWRyb3AuZGlyZWN0aXZlJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbY3VpRHJhZ1BvaW50ZXJdJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIEN1aURyYWdQb2ludGVyRGlyZWN0aXZlIHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZHJhZ0Ryb3BEaXJlY3RpdmUgPSBpbmplY3QoQ3VpRHJhZ0Ryb3BEaXJlY3RpdmUpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5kcmFnRHJvcERpcmVjdGl2ZS5jaGFuZ2VQb2ludGVyRXZlbnRzKHRoaXMuZWxlbWVudCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,4 @@
1
+ export { CuiDragDropDirective } from './drag-drop.directive';
2
+ export { CuiDragListDirective } from './drag-list.directive';
3
+ export { CuiDragPointerDirective } from './drag-pointer.directive';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9kcmFnLWRyb3AvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDdWlEcmFnRHJvcERhdGEsIEN1aURyYWdEYXRhIH0gZnJvbSAnLi9kcmFnLWRyb3Aub3B0aW9ucyc7XHJcbmV4cG9ydCB7IEN1aURyYWdEcm9wRGlyZWN0aXZlIH0gZnJvbSAnLi9kcmFnLWRyb3AuZGlyZWN0aXZlJztcclxuZXhwb3J0IHsgQ3VpRHJhZ0xpc3REaXJlY3RpdmUgfSBmcm9tICcuL2RyYWctbGlzdC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgeyBDdWlEcmFnUG9pbnRlckRpcmVjdGl2ZSB9IGZyb20gJy4vZHJhZy1wb2ludGVyLmRpcmVjdGl2ZSc7XHJcbiJdfQ==
@@ -0,0 +1,81 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { Directive, inject, input, NgZone, Renderer2, signal } from '@angular/core';
3
+ import { interval } from 'rxjs';
4
+ import { CUI_WINDOW } from '../tokens';
5
+ import * as i0 from "@angular/core";
6
+ export class CuiHandleScrollDirective {
7
+ constructor() {
8
+ this.window = inject(CUI_WINDOW);
9
+ this.document = inject(DOCUMENT);
10
+ this.renderer = inject(Renderer2);
11
+ this.zone = inject(NgZone);
12
+ this.abortController = new AbortController();
13
+ this.SCROLL_AREA_HEIGHT = 100;
14
+ this.scrollGapElements = signal(null);
15
+ this.scrollSpeed = input(100);
16
+ }
17
+ ngOnDestroy() {
18
+ this.removeSubscription();
19
+ }
20
+ onTargetMove() {
21
+ const signal = this.abortController.signal;
22
+ this.zone.runOutsideAngular(this.initScrollEvent.bind(this, signal));
23
+ }
24
+ initScrollEvent(signal) {
25
+ this.document.addEventListener('pointermove', ({ clientY }) => this.handleScroll(clientY), { signal });
26
+ this.document.addEventListener('pointerup', () => {
27
+ this.scrollGapElements()?.forEach((element) => element.remove());
28
+ this.scrollGapElements.set(null);
29
+ this.removeSubscription();
30
+ this.abortController.abort();
31
+ this.abortController = new AbortController();
32
+ }, { signal });
33
+ }
34
+ handleScroll(clientY) {
35
+ const windowHeight = this.document.documentElement.clientHeight;
36
+ const scrollSpeed = this.scrollSpeed();
37
+ if (!this.scrollGapElements()) {
38
+ this.setScrollGapElements();
39
+ }
40
+ if (clientY <= this.SCROLL_AREA_HEIGHT) {
41
+ this.startScrolling(-scrollSpeed);
42
+ return;
43
+ }
44
+ if (clientY >= windowHeight - this.SCROLL_AREA_HEIGHT) {
45
+ this.startScrolling(scrollSpeed);
46
+ return;
47
+ }
48
+ this.removeSubscription();
49
+ }
50
+ setScrollGapElements() {
51
+ const scrollGapElement = this.renderer.createElement('div');
52
+ this.renderer.setStyle(scrollGapElement, 'position', 'fixed');
53
+ this.renderer.setStyle(scrollGapElement, 'width', '100%');
54
+ this.renderer.setStyle(scrollGapElement, 'height', '48px');
55
+ this.renderer.setStyle(scrollGapElement, 'top', '0');
56
+ const scrollGapBottomElement = scrollGapElement.cloneNode(true);
57
+ this.renderer.appendChild(this.document.body, scrollGapElement);
58
+ this.renderer.appendChild(this.document.body, scrollGapBottomElement);
59
+ this.scrollGapElements.set([scrollGapElement, scrollGapBottomElement]);
60
+ }
61
+ startScrolling(speed) {
62
+ this.removeSubscription();
63
+ this.scrollSubscription = interval(this.scrollSpeed()).subscribe(() => this.window.scrollBy({ top: speed, behavior: 'smooth' }));
64
+ }
65
+ removeSubscription() {
66
+ this.scrollSubscription?.unsubscribe();
67
+ }
68
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiHandleScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
69
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.13", type: CuiHandleScrollDirective, isStandalone: true, selector: "[cuiHandleScroll]", inputs: { scrollSpeed: { classPropertyName: "scrollSpeed", publicName: "scrollSpeed", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointerdown": "onTargetMove()" } }, ngImport: i0 }); }
70
+ }
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CuiHandleScrollDirective, decorators: [{
72
+ type: Directive,
73
+ args: [{
74
+ selector: '[cuiHandleScroll]',
75
+ standalone: true,
76
+ host: {
77
+ '(pointerdown)': 'onTargetMove()'
78
+ }
79
+ }]
80
+ }] });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLXNjcm9sbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9oYW5kbGUtc2Nyb2xsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFTdkMsTUFBTSxPQUFPLHdCQUF3QjtJQVByQztRQVFxQixXQUFNLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9CLG9CQUFlLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUc3Qix1QkFBa0IsR0FBRyxHQUFHLENBQUM7UUFFekIsc0JBQWlCLEdBQUcsTUFBTSxDQUFnQyxJQUFJLENBQUMsQ0FBQztRQUVuRSxnQkFBVyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQThFNUM7SUE1RVUsV0FBVztRQUNkLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTSxZQUFZO1FBQ2YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUM7UUFFM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxD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O1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBRTFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNsRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQzNELENBQUM7SUFDTixDQUFDO0lBRU8sa0JBQWtCO1FBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDOytHQTFGUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFQcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNGLGVBQWUsRUFBRSxnQkFBZ0I7cUJBQ3BDO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgdHlwZSB7IE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIGluamVjdCwgaW5wdXQsIE5nWm9uZSwgUmVuZGVyZXIyLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHR5cGUgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgaW50ZXJ2YWwgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB0eXBlIHsgQ3VpTnVsbGFibGUgfSBmcm9tICcuLi90eXBlcyc7XHJcbmltcG9ydCB7IENVSV9XSU5ET1cgfSBmcm9tICcuLi90b2tlbnMnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tjdWlIYW5kbGVTY3JvbGxdJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJyhwb2ludGVyZG93biknOiAnb25UYXJnZXRNb3ZlKCknXHJcbiAgICB9XHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDdWlIYW5kbGVTY3JvbGxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3cgPSBpbmplY3QoQ1VJX1dJTkRPVyk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgem9uZSA9IGluamVjdChOZ1pvbmUpO1xyXG5cclxuICAgIHByaXZhdGUgYWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xyXG4gICAgcHJpdmF0ZSBzY3JvbGxTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IFNDUk9MTF9BUkVBX0hFSUdIVCA9IDEwMDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2Nyb2xsR2FwRWxlbWVudHMgPSBzaWduYWw8Q3VpTnVsbGFibGU8SFRNTERpdkVsZW1lbnRbXT4+KG51bGwpO1xyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBzY3JvbGxTcGVlZCA9IGlucHV0KDEwMCk7XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uVGFyZ2V0TW92ZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBzaWduYWwgPSB0aGlzLmFib3J0Q29udHJvbGxlci5zaWduYWw7XHJcblxyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcih0aGlzLmluaXRTY3JvbGxFdmVudC5iaW5kKHRoaXMsIHNpZ25hbCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdFNjcm9sbEV2ZW50KHNpZ25hbDogQWJvcnRTaWduYWwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgKHsgY2xpZW50WSB9KSA9PiB0aGlzLmhhbmRsZVNjcm9sbChjbGllbnRZKSwgeyBzaWduYWwgfSk7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxyXG4gICAgICAgICAgICAncG9pbnRlcnVwJyxcclxuICAgICAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxHYXBFbGVtZW50cygpPy5mb3JFYWNoKChlbGVtZW50KSA9PiBlbGVtZW50LnJlbW92ZSgpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsR2FwRWxlbWVudHMuc2V0KG51bGwpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFib3J0Q29udHJvbGxlci5hYm9ydCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgc2lnbmFsIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaGFuZGxlU2Nyb2xsKGNsaWVudFk6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9IHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodDtcclxuICAgICAgICBjb25zdCBzY3JvbGxTcGVlZCA9IHRoaXMuc2Nyb2xsU3BlZWQoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnNjcm9sbEdhcEVsZW1lbnRzKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxHYXBFbGVtZW50cygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNsaWVudFkgPD0gdGhpcy5TQ1JPTExfQVJFQV9IRUlHSFQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFNjcm9sbGluZygtc2Nyb2xsU3BlZWQpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNsaWVudFkgPj0gd2luZG93SGVpZ2h0IC0gdGhpcy5TQ1JPTExfQVJFQV9IRUlHSFQpIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydFNjcm9sbGluZyhzY3JvbGxTcGVlZCk7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlbW92ZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0U2Nyb2xsR2FwRWxlbWVudHMoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsR2FwRWxlbWVudCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2Nyb2xsR2FwRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ2ZpeGVkJyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxHYXBFbGVtZW50LCAnd2lkdGgnLCAnMTAwJScpO1xyXG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2Nyb2xsR2FwRWxlbWVudCwgJ2hlaWdodCcsICc0OHB4Jyk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShzY3JvbGxHYXBFbGVtZW50LCAndG9wJywgJzAnKTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2Nyb2xsR2FwQm90dG9tRWxlbWVudCA9IHNjcm9sbEdhcEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxEaXZFbGVtZW50O1xyXG5cclxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMuZG9jdW1lbnQuYm9keSwgc2Nyb2xsR2FwRWxlbWVudCk7XHJcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmRvY3VtZW50LmJvZHksIHNjcm9sbEdhcEJvdHRvbUVsZW1lbnQpO1xyXG5cclxuICAgICAgICB0aGlzLnNjcm9sbEdhcEVsZW1lbnRzLnNldChbc2Nyb2xsR2FwRWxlbWVudCwgc2Nyb2xsR2FwQm90dG9tRWxlbWVudF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhcnRTY3JvbGxpbmcoc3BlZWQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU3Vic2NyaXB0aW9uKCk7XHJcblxyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uID0gaW50ZXJ2YWwodGhpcy5zY3JvbGxTcGVlZCgpKS5zdWJzY3JpYmUoKCkgPT5cclxuICAgICAgICAgICAgdGhpcy53aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IHNwZWVkLCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,6 +1,8 @@
1
1
  export * from './active-zone';
2
2
  export * from './hovered';
3
+ export * from './drag-drop';
3
4
  export * from './auto-resizing.directive';
5
+ export * from './handle-scroll.directive';
4
6
  export * from './click-outside.directive';
5
7
  export * from './dimensions-observer.directive';
6
8
  export * from './content-editable-value-accessor.directive';
@@ -11,4 +13,4 @@ export * from './let.context';
11
13
  export * from './let.directive';
12
14
  export * from './target.directive';
13
15
  export * from './ladder-list.directive';
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hY3RpdmUtem9uZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaG92ZXJlZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXV0by1yZXNpemluZy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NsaWNrLW91dHNpZGUuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9kaW1lbnNpb25zLW9ic2VydmVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29udGVudC1lZGl0YWJsZS12YWx1ZS1hY2Nlc3Nvci5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2VsZW1lbnQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9mb2N1cy10cmFwLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaXRlbS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xldC5jb250ZXh0JztcclxuZXhwb3J0ICogZnJvbSAnLi9sZXQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi90YXJnZXQuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sYWRkZXItbGlzdC5kaXJlY3RpdmUnO1xyXG4iXX0=
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsMkJBQTJCLENBQUM7QUFDMUMsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNkNBQTZDLENBQUM7QUFDNUQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FjdGl2ZS16b25lJztcclxuZXhwb3J0ICogZnJvbSAnLi9ob3ZlcmVkJztcclxuZXhwb3J0ICogZnJvbSAnLi9kcmFnLWRyb3AnO1xyXG5leHBvcnQgKiBmcm9tICcuL2F1dG8tcmVzaXppbmcuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9oYW5kbGUtc2Nyb2xsLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY2xpY2stb3V0c2lkZS5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpbWVuc2lvbnMtb2JzZXJ2ZXIuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LWVkaXRhYmxlLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZWxlbWVudC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzLXRyYXAuZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi9pdGVtLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGV0LmNvbnRleHQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xldC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RhcmdldC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xhZGRlci1saXN0LmRpcmVjdGl2ZSc7XHJcbiJdfQ==