@fundamental-ngx/cdk 0.40.0-rc.13 → 0.40.0-rc.15

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.
Files changed (28) hide show
  1. package/esm2020/forms/cva/cva-control.class.mjs +2 -2
  2. package/esm2020/utils/directives/breakpoints/breakpoint.directive.mjs +168 -0
  3. package/esm2020/utils/directives/breakpoints/responsive-breakpoints.mjs +19 -0
  4. package/esm2020/utils/directives/index.mjs +2 -1
  5. package/esm2020/utils/drag-and-drop/dnd-list/dnd-list.directive.mjs +120 -12
  6. package/esm2020/utils/drag-and-drop/dnd.interfaces.mjs +1 -1
  7. package/esm2020/utils/index.mjs +2 -1
  8. package/esm2020/utils/services/resize-observer.service.mjs +6 -8
  9. package/esm2020/utils/tokens/viewport-size.observable.mjs +20 -0
  10. package/fesm2015/fundamental-ngx-cdk-forms.mjs +1 -1
  11. package/fesm2015/fundamental-ngx-cdk-forms.mjs.map +1 -1
  12. package/fesm2015/fundamental-ngx-cdk-utils.mjs +322 -20
  13. package/fesm2015/fundamental-ngx-cdk-utils.mjs.map +1 -1
  14. package/fesm2020/fundamental-ngx-cdk-forms.mjs +1 -1
  15. package/fesm2020/fundamental-ngx-cdk-forms.mjs.map +1 -1
  16. package/fesm2020/fundamental-ngx-cdk-utils.mjs +322 -20
  17. package/fesm2020/fundamental-ngx-cdk-utils.mjs.map +1 -1
  18. package/forms/cva/cva-control.class.d.ts +1 -1
  19. package/fundamental-ngx-cdk-v0.40.0-rc.15.tgz +0 -0
  20. package/package.json +3 -3
  21. package/utils/directives/breakpoints/breakpoint.directive.d.ts +83 -0
  22. package/utils/directives/breakpoints/responsive-breakpoints.d.ts +10 -0
  23. package/utils/directives/index.d.ts +1 -0
  24. package/utils/drag-and-drop/dnd-list/dnd-list.directive.d.ts +39 -5
  25. package/utils/drag-and-drop/dnd.interfaces.d.ts +4 -0
  26. package/utils/index.d.ts +1 -0
  27. package/utils/tokens/viewport-size.observable.d.ts +8 -0
  28. package/fundamental-ngx-cdk-v0.40.0-rc.13.tgz +0 -0
@@ -14,7 +14,7 @@ export class CvaControl {
14
14
  /**
15
15
  * Control value accessor directive instance.
16
16
  */
17
- this.cvaDirective = inject((CvaDirective), {
17
+ this.cvaDirective = inject(CvaDirective, {
18
18
  self: true,
19
19
  optional: true
20
20
  });
@@ -40,4 +40,4 @@ CvaControl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version:
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: CvaControl, decorators: [{
41
41
  type: Injectable
42
42
  }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ZhLWNvbnRyb2wuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2Zvcm1zL2N2YS9jdmEtY29udHJvbC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFOUQ7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVJOztXQUVHO1FBQ0ksaUJBQVksR0FBRyxNQUFNLENBQUMsQ0FBQSxZQUFlLENBQUEsRUFBRTtZQUMxQyxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ08sb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV0RCxjQUFjO1FBQ0osY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBWWxEO0lBVkcsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM1RSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUdBMUJRLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdmFEaXJlY3RpdmUgfSBmcm9tICcuL2N2YS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuLyoqXG4gKiBCYXNlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNvbnRyb2wgY2xhc3MuXG4gKiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggQ3ZhRGlyZWN0aXZlLlxuICpcbiAqIFRoaXMgY2xhc3MgcGVyZm9ybXMgZ2VuZXJpYyBjaGFuZ2UgZGV0ZWN0aW9uIGJhc2VkIG9uIGBDdmFEaXJlY3RpdmVgIG91dHB1dHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDdmFDb250cm9sPFQ+IHtcbiAgICAvKipcbiAgICAgKiBDb250cm9sIHZhbHVlIGFjY2Vzc29yIGRpcmVjdGl2ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3ZhRGlyZWN0aXZlID0gaW5qZWN0KEN2YURpcmVjdGl2ZTxUPiwge1xuICAgICAgICBzZWxmOiB0cnVlLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQ2hhbmdlIGRldGVjdG9yIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfY2hhbmdlRGV0ZWN0b3IgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gICAgLyoqIEBIaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3llZFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBsaXN0ZW5Ub0NoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3ZhRGlyZWN0aXZlPy5tYXJrRm9yQ2hlY2sucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmN2YURpcmVjdGl2ZT8uZGV0ZWN0Q2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3ZhLWNvbnRyb2wuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2Zvcm1zL2N2YS9jdmEtY29udHJvbC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFOUQ7Ozs7O0dBS0c7QUFFSCxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVJOztXQUVHO1FBQ0ksaUJBQVksR0FBRyxNQUFNLENBQWtCLFlBQVksRUFBRTtZQUN4RCxJQUFJLEVBQUUsSUFBSTtZQUNWLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUVIOztXQUVHO1FBQ08sb0JBQWUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV0RCxjQUFjO1FBQ0osY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0tBWWxEO0lBVkcsY0FBYztJQUNkLGVBQWU7UUFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDM0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM1RSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7dUdBMUJRLFVBQVU7MkdBQVYsVUFBVTsyRkFBVixVQUFVO2tCQUR0QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDdmFEaXJlY3RpdmUgfSBmcm9tICcuL2N2YS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcblxuLyoqXG4gKiBCYXNlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGNvbnRyb2wgY2xhc3MuXG4gKiBVc2VkIGluIGNvbmp1bmN0aW9uIHdpdGggQ3ZhRGlyZWN0aXZlLlxuICpcbiAqIFRoaXMgY2xhc3MgcGVyZm9ybXMgZ2VuZXJpYyBjaGFuZ2UgZGV0ZWN0aW9uIGJhc2VkIG9uIGBDdmFEaXJlY3RpdmVgIG91dHB1dHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDdmFDb250cm9sPFQ+IHtcbiAgICAvKipcbiAgICAgKiBDb250cm9sIHZhbHVlIGFjY2Vzc29yIGRpcmVjdGl2ZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY3ZhRGlyZWN0aXZlID0gaW5qZWN0PEN2YURpcmVjdGl2ZTxUPj4oQ3ZhRGlyZWN0aXZlLCB7XG4gICAgICAgIHNlbGY6IHRydWUsXG4gICAgICAgIG9wdGlvbmFsOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBDaGFuZ2UgZGV0ZWN0b3IgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKiogQEhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveWVkU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGxpc3RlblRvQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdmFEaXJlY3RpdmU/Lm1hcmtGb3JDaGVjay5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuY3ZhRGlyZWN0aXZlPy5kZXRlY3RDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,168 @@
1
+ /* eslint-disable @angular-eslint/no-input-rename */
2
+ import { Directive, inject, Input, NgModule, TemplateRef, ViewContainerRef } from '@angular/core';
3
+ import { coerceBooleanProperty, coerceElement } from '@angular/cdk/coercion';
4
+ import { ViewportSizeObservable } from '../../tokens/viewport-size.observable';
5
+ import { DestroyedService, ResizeObserverService } from '../../services';
6
+ import { finalize, map, startWith, switchMap, takeUntil, tap } from 'rxjs/operators';
7
+ import { BehaviorSubject, combineLatest, Subject } from 'rxjs';
8
+ import { getBreakpointName } from './responsive-breakpoints';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * Directive to show/hide element on specific breakpoint or range of window width.
12
+ * Uses native ngIf directive to show/hide element.
13
+ */
14
+ export class BreakpointDirective {
15
+ /**
16
+ * Provide list of the breakpoints to show element on.
17
+ * */
18
+ set fdkBreakpoint(value) {
19
+ const providedValues = value.map((v) => v.toLowerCase());
20
+ this.showOnS = providedValues.includes('s');
21
+ this.showOnM = providedValues.includes('m');
22
+ this.showOnL = providedValues.includes('l');
23
+ this.showOnXL = providedValues.includes('xl');
24
+ }
25
+ /**
26
+ * Show element on S breakpoint.
27
+ * S - 0 - 599px
28
+ * */
29
+ set showOnS(value) {
30
+ this._showOnS = coerceBooleanProperty(value);
31
+ }
32
+ /**
33
+ * Show element on M breakpoint.
34
+ * M - 0 - 1023px
35
+ * */
36
+ set showOnM(value) {
37
+ this._showOnM = coerceBooleanProperty(value);
38
+ }
39
+ /**
40
+ * Show element on L breakpoint.
41
+ * L - 0 - 1439px
42
+ * */
43
+ set showOnL(value) {
44
+ this._showOnL = coerceBooleanProperty(value);
45
+ }
46
+ /**
47
+ * Show element on XL breakpoint.
48
+ * */
49
+ set showOnXL(value) {
50
+ this._showOnXL = coerceBooleanProperty(value);
51
+ }
52
+ /**
53
+ * Observe element width changes.
54
+ */
55
+ set observationSource(value) {
56
+ const element = coerceElement(value);
57
+ this._sizeObservable$.next(this._resizeObserverService.observe(value).pipe(map(() => element.offsetWidth), startWith(element.offsetWidth)));
58
+ }
59
+ /** @hidden */
60
+ constructor(templateRef, viewContainer) {
61
+ this.templateRef = templateRef;
62
+ this.viewContainer = viewContainer;
63
+ /** @hidden */
64
+ this._showOnS = false;
65
+ /** @hidden */
66
+ this._showOnM = false;
67
+ /** @hidden */
68
+ this._showOnL = false;
69
+ /** @hidden */
70
+ this._showOnXL = false;
71
+ /** @hidden */
72
+ this.viewportSize$ = inject(ViewportSizeObservable);
73
+ /** @hidden */
74
+ this._destroyed$ = inject(DestroyedService);
75
+ /** @hidden */
76
+ this._resizeObserverService = inject(ResizeObserverService);
77
+ /** @hidden */
78
+ this.onChanges$ = new Subject();
79
+ /** @hidden */
80
+ this._sizeObservable$ = new BehaviorSubject(this.viewportSize$);
81
+ }
82
+ /** @hidden */
83
+ ngAfterViewInit() {
84
+ combineLatest([this._sizeObservable$.pipe(switchMap((obs$) => obs$)), this.onChanges$.pipe(startWith(void 0))])
85
+ .pipe(map(([w]) => [w, getBreakpointName(w)]), map(([width, breakpointName]) => this._shouldShow(width, breakpointName)), tap((shouldShow) => {
86
+ if (shouldShow) {
87
+ if (!this.templateViewRef) {
88
+ this.viewContainer.clear();
89
+ this.templateViewRef = this.viewContainer.createEmbeddedView(this.templateRef);
90
+ this.templateViewRef.detectChanges();
91
+ }
92
+ }
93
+ else {
94
+ this.viewContainer.clear();
95
+ this.templateViewRef = undefined;
96
+ }
97
+ }), takeUntil(this._destroyed$), finalize(() => {
98
+ this.viewContainer.clear();
99
+ this.templateViewRef = undefined;
100
+ }))
101
+ .subscribe();
102
+ }
103
+ /** @hidden */
104
+ ngOnChanges() {
105
+ this.onChanges$.next();
106
+ }
107
+ /** @hidden */
108
+ _shouldShow(width, currentBreakpoint) {
109
+ const shouldShowOnBreakpoints = [
110
+ this._showOnS && 'S',
111
+ this._showOnM && 'M',
112
+ this._showOnL && 'L',
113
+ this._showOnXL && 'XL'
114
+ ].filter(Boolean);
115
+ const shouldShow = shouldShowOnBreakpoints.includes(currentBreakpoint);
116
+ if (this.fdkBreakpointLt) {
117
+ return width < this.fdkBreakpointLt;
118
+ }
119
+ if (this.fdkBreakpointGt) {
120
+ return width > this.fdkBreakpointGt;
121
+ }
122
+ return shouldShow;
123
+ }
124
+ }
125
+ BreakpointDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BreakpointDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
126
+ BreakpointDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: BreakpointDirective, isStandalone: true, selector: "[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]", inputs: { fdkBreakpoint: "fdkBreakpoint", showOnS: ["fdkBreakpointS", "showOnS"], showOnM: ["fdkBreakpointM", "showOnM"], showOnL: ["fdkBreakpointL", "showOnL"], showOnXL: ["fdkBreakpointXL", "showOnXL"], fdkBreakpointLt: "fdkBreakpointLt", fdkBreakpointGt: "fdkBreakpointGt", observationSource: ["fdkBreakpointObserve", "observationSource"] }, providers: [DestroyedService], usesOnChanges: true, ngImport: i0 });
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BreakpointDirective, decorators: [{
128
+ type: Directive,
129
+ args: [{
130
+ selector: '[fdkBreakpoint], [fdkBreakpointS], [fdkBreakpointM], [fdkBreakpointL], [fdkBreakpointXL], [fdkBreakpointLt], [fdkBreakpointGt]',
131
+ standalone: true,
132
+ providers: [DestroyedService]
133
+ }]
134
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { fdkBreakpoint: [{
135
+ type: Input
136
+ }], showOnS: [{
137
+ type: Input,
138
+ args: ['fdkBreakpointS']
139
+ }], showOnM: [{
140
+ type: Input,
141
+ args: ['fdkBreakpointM']
142
+ }], showOnL: [{
143
+ type: Input,
144
+ args: ['fdkBreakpointL']
145
+ }], showOnXL: [{
146
+ type: Input,
147
+ args: ['fdkBreakpointXL']
148
+ }], fdkBreakpointLt: [{
149
+ type: Input
150
+ }], fdkBreakpointGt: [{
151
+ type: Input
152
+ }], observationSource: [{
153
+ type: Input,
154
+ args: ['fdkBreakpointObserve']
155
+ }] } });
156
+ export class BreakpointModule {
157
+ }
158
+ BreakpointModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BreakpointModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
159
+ BreakpointModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.1", ngImport: i0, type: BreakpointModule, imports: [BreakpointDirective], exports: [BreakpointDirective] });
160
+ BreakpointModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BreakpointModule });
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: BreakpointModule, decorators: [{
162
+ type: NgModule,
163
+ args: [{
164
+ imports: [BreakpointDirective],
165
+ exports: [BreakpointDirective]
166
+ }]
167
+ }] });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWtwb2ludC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvYnJlYWtwb2ludHMvYnJlYWtwb2ludC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0RBQW9EO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBR1QsTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBRVIsV0FBVyxFQUNYLGdCQUFnQixFQUNuQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzRSxPQUFPLEVBQWtCLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBRTdFOzs7R0FHRztBQU9ILE1BQU0sT0FBTyxtQkFBbUI7SUFDNUI7O1NBRUs7SUFDTCxJQUNJLGFBQWEsQ0FBQyxLQUF1QjtRQUNyQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFD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dC9uby1pbnB1dC1yZW5hbWUgKi9cbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFbWJlZGRlZFZpZXdSZWYsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZUVsZW1lbnQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgVmlld3BvcnRTaXplT2JzZXJ2YWJsZSB9IGZyb20gJy4uLy4uL3Rva2Vucy92aWV3cG9ydC1zaXplLm9ic2VydmFibGUnO1xuaW1wb3J0IHsgRGVzdHJveWVkU2VydmljZSwgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZmluYWxpemUsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCcmVha3BvaW50TmFtZSwgZ2V0QnJlYWtwb2ludE5hbWUgfSBmcm9tICcuL3Jlc3BvbnNpdmUtYnJlYWtwb2ludHMnO1xuXG4vKipcbiAqIERpcmVjdGl2ZSB0byBzaG93L2hpZGUgZWxlbWVudCBvbiBzcGVjaWZpYyBicmVha3BvaW50IG9yIHJhbmdlIG9mIHdpbmRvdyB3aWR0aC5cbiAqIFVzZXMgbmF0aXZlIG5nSWYgZGlyZWN0aXZlIHRvIHNob3cvaGlkZSBlbGVtZW50LlxuICovXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjpcbiAgICAgICAgJ1tmZGtCcmVha3BvaW50XSwgW2Zka0JyZWFrcG9pbnRTXSwgW2Zka0JyZWFrcG9pbnRNXSwgW2Zka0JyZWFrcG9pbnRMXSwgW2Zka0JyZWFrcG9pbnRYTF0sIFtmZGtCcmVha3BvaW50THRdLCBbZmRrQnJlYWtwb2ludEd0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBwcm92aWRlcnM6IFtEZXN0cm95ZWRTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBCcmVha3BvaW50RGlyZWN0aXZlIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICAvKipcbiAgICAgKiBQcm92aWRlIGxpc3Qgb2YgdGhlIGJyZWFrcG9pbnRzIHRvIHNob3cgZWxlbWVudCBvbi5cbiAgICAgKiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGZka0JyZWFrcG9pbnQodmFsdWU6IEJyZWFrcG9pbnROYW1lW10pIHtcbiAgICAgICAgY29uc3QgcHJvdmlkZWRWYWx1ZXMgPSB2YWx1ZS5tYXAoKHYpID0+IHYudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIHRoaXMuc2hvd09uUyA9IHByb3ZpZGVkVmFsdWVzLmluY2x1ZGVzKCdzJyk7XG4gICAgICAgIHRoaXMuc2hvd09uTSA9IHByb3ZpZGVkVmFsdWVzLmluY2x1ZGVzKCdtJyk7XG4gICAgICAgIHRoaXMuc2hvd09uTCA9IHByb3ZpZGVkVmFsdWVzLmluY2x1ZGVzKCdsJyk7XG4gICAgICAgIHRoaXMuc2hvd09uWEwgPSBwcm92aWRlZFZhbHVlcy5pbmNsdWRlcygneGwnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IGVsZW1lbnQgb24gUyBicmVha3BvaW50LlxuICAgICAqIFMgLSAwIC0gNTk5cHhcbiAgICAgKiAqL1xuICAgIEBJbnB1dCgnZmRrQnJlYWtwb2ludFMnKVxuICAgIHNldCBzaG93T25TKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fc2hvd09uUyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyBlbGVtZW50IG9uIE0gYnJlYWtwb2ludC5cbiAgICAgKiBNIC0gMCAtIDEwMjNweFxuICAgICAqICovXG4gICAgQElucHV0KCdmZGtCcmVha3BvaW50TScpXG4gICAgc2V0IHNob3dPbk0odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9zaG93T25NID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTaG93IGVsZW1lbnQgb24gTCBicmVha3BvaW50LlxuICAgICAqIEwgLSAwIC0gMTQzOXB4XG4gICAgICogKi9cbiAgICBASW5wdXQoJ2Zka0JyZWFrcG9pbnRMJylcbiAgICBzZXQgc2hvd09uTCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3Nob3dPbkwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNob3cgZWxlbWVudCBvbiBYTCBicmVha3BvaW50LlxuICAgICAqICAqL1xuICAgIEBJbnB1dCgnZmRrQnJlYWtwb2ludFhMJylcbiAgICBzZXQgc2hvd09uWEwodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9zaG93T25YTCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2hvdyBlbGVtZW50IG9uIGJyZWFrcG9pbnQgbGVzcyB0aGFuIHByb3ZpZGVkIHZhbHVlLlxuICAgICAqICovXG4gICAgQElucHV0KClcbiAgICBmZGtCcmVha3BvaW50THQ6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFNob3cgZWxlbWVudCBvbiBicmVha3BvaW50IGdyZWF0ZXIgdGhhbiBwcm92aWRlZCB2YWx1ZS5cbiAgICAgKiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGZka0JyZWFrcG9pbnRHdDogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogT2JzZXJ2ZSBlbGVtZW50IHdpZHRoIGNoYW5nZXMuXG4gICAgICovXG4gICAgQElucHV0KCdmZGtCcmVha3BvaW50T2JzZXJ2ZScpXG4gICAgc2V0IG9ic2VydmF0aW9uU291cmNlKHZhbHVlOiBIVE1MRWxlbWVudCB8IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBjb2VyY2VFbGVtZW50KHZhbHVlKTtcbiAgICAgICAgdGhpcy5fc2l6ZU9ic2VydmFibGUkLm5leHQoXG4gICAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlclNlcnZpY2Uub2JzZXJ2ZSh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKCkgPT4gZWxlbWVudC5vZmZzZXRXaWR0aCksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKGVsZW1lbnQub2Zmc2V0V2lkdGgpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICB0ZW1wbGF0ZVZpZXdSZWY/OiBFbWJlZGRlZFZpZXdSZWY8dW5rbm93bj47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dPblMgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dPbk0gPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dPbkwgPSBmYWxzZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dPblhMID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgdmlld3BvcnRTaXplJCA9IGluamVjdChWaWV3cG9ydFNpemVPYnNlcnZhYmxlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGVzdHJveWVkJCA9IGluamVjdChEZXN0cm95ZWRTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KFJlc2l6ZU9ic2VydmVyU2VydmljZSk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG9uQ2hhbmdlcyQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2l6ZU9ic2VydmFibGUkOiBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxudW1iZXI+PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8T2JzZXJ2YWJsZTxudW1iZXI+Pih0aGlzLnZpZXdwb3J0U2l6ZSQpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCBwcml2YXRlIHJlYWRvbmx5IHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fc2l6ZU9ic2VydmFibGUkLnBpcGUoc3dpdGNoTWFwKChvYnMkKSA9PiBvYnMkKSksIHRoaXMub25DaGFuZ2VzJC5waXBlKHN0YXJ0V2l0aCh2b2lkIDApKV0pXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoKFt3XSkgPT4gW3csIGdldEJyZWFrcG9pbnROYW1lKHcpXSBhcyBjb25zdCksXG4gICAgICAgICAgICAgICAgbWFwKChbd2lkdGgsIGJyZWFrcG9pbnROYW1lXSkgPT4gdGhpcy5fc2hvdWxkU2hvdyh3aWR0aCwgYnJlYWtwb2ludE5hbWUpKSxcbiAgICAgICAgICAgICAgICB0YXAoKHNob3VsZFNob3cpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZFNob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy50ZW1wbGF0ZVZpZXdSZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVZpZXdSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlVmlld1JlZiA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkNoYW5nZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VzJC5uZXh0KCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaG91bGRTaG93KHdpZHRoOiBudW1iZXIsIGN1cnJlbnRCcmVha3BvaW50OiBCcmVha3BvaW50TmFtZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBzaG91bGRTaG93T25CcmVha3BvaW50cyA9IFtcbiAgICAgICAgICAgIHRoaXMuX3Nob3dPblMgJiYgJ1MnLFxuICAgICAgICAgICAgdGhpcy5fc2hvd09uTSAmJiAnTScsXG4gICAgICAgICAgICB0aGlzLl9zaG93T25MICYmICdMJyxcbiAgICAgICAgICAgIHRoaXMuX3Nob3dPblhMICYmICdYTCdcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgIGNvbnN0IHNob3VsZFNob3cgPSBzaG91bGRTaG93T25CcmVha3BvaW50cy5pbmNsdWRlcyhjdXJyZW50QnJlYWtwb2ludCk7XG4gICAgICAgIGlmICh0aGlzLmZka0JyZWFrcG9pbnRMdCkge1xuICAgICAgICAgICAgcmV0dXJuIHdpZHRoIDwgdGhpcy5mZGtCcmVha3BvaW50THQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZmRrQnJlYWtwb2ludEd0KSB7XG4gICAgICAgICAgICByZXR1cm4gd2lkdGggPiB0aGlzLmZka0JyZWFrcG9pbnRHdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2hvdWxkU2hvdztcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0JyZWFrcG9pbnREaXJlY3RpdmVdLFxuICAgIGV4cG9ydHM6IFtCcmVha3BvaW50RGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBCcmVha3BvaW50TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,19 @@
1
+ export const ResponsiveBreakpoints = {
2
+ S: 600,
3
+ M: 1024,
4
+ L: 1440
5
+ };
6
+ /** @hidden */
7
+ export function getBreakpointName(width) {
8
+ if (width < ResponsiveBreakpoints.S) {
9
+ return 'S';
10
+ }
11
+ if (width < ResponsiveBreakpoints.M) {
12
+ return 'M';
13
+ }
14
+ if (width < ResponsiveBreakpoints.L) {
15
+ return 'L';
16
+ }
17
+ return 'XL';
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS1icmVha3BvaW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvdXRpbHMvZGlyZWN0aXZlcy9icmVha3BvaW50cy9yZXNwb25zaXZlLWJyZWFrcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHO0lBQ2pDLENBQUMsRUFBRSxHQUFHO0lBQ04sQ0FBQyxFQUFFLElBQUk7SUFDUCxDQUFDLEVBQUUsSUFBSTtDQUNELENBQUM7QUFNWCxjQUFjO0FBQ2QsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDM0MsSUFBSSxLQUFLLEdBQUcscUJBQXFCLENBQUMsQ0FBQyxFQUFFO1FBQ2pDLE9BQU8sR0FBRyxDQUFDO0tBQ2Q7SUFDRCxJQUFJLEtBQUssR0FBRyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUU7UUFDakMsT0FBTyxHQUFHLENBQUM7S0FDZDtJQUNELElBQUksS0FBSyxHQUFHLHFCQUFxQixDQUFDLENBQUMsRUFBRTtRQUNqQyxPQUFPLEdBQUcsQ0FBQztLQUNkO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBSZXNwb25zaXZlQnJlYWtwb2ludHMgPSB7XG4gICAgUzogNjAwLFxuICAgIE06IDEwMjQsXG4gICAgTDogMTQ0MFxufSBhcyBjb25zdDtcblxudHlwZSBicmVha3BvaW50TmFtZSA9IGtleW9mIHR5cGVvZiBSZXNwb25zaXZlQnJlYWtwb2ludHMgfCAnWEwnO1xuXG5leHBvcnQgdHlwZSBCcmVha3BvaW50TmFtZSA9IExvd2VyY2FzZTxicmVha3BvaW50TmFtZT4gfCBVcHBlcmNhc2U8YnJlYWtwb2ludE5hbWU+O1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJyZWFrcG9pbnROYW1lKHdpZHRoOiBudW1iZXIpOiBicmVha3BvaW50TmFtZSB7XG4gICAgaWYgKHdpZHRoIDwgUmVzcG9uc2l2ZUJyZWFrcG9pbnRzLlMpIHtcbiAgICAgICAgcmV0dXJuICdTJztcbiAgICB9XG4gICAgaWYgKHdpZHRoIDwgUmVzcG9uc2l2ZUJyZWFrcG9pbnRzLk0pIHtcbiAgICAgICAgcmV0dXJuICdNJztcbiAgICB9XG4gICAgaWYgKHdpZHRoIDwgUmVzcG9uc2l2ZUJyZWFrcG9pbnRzLkwpIHtcbiAgICAgICAgcmV0dXJuICdMJztcbiAgICB9XG4gICAgcmV0dXJuICdYTCc7XG59XG4iXX0=
@@ -29,4 +29,5 @@ export * from './readonly';
29
29
  export * from './disabled';
30
30
  export * from './clicked';
31
31
  export * from './selectable-list';
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1cy1rZXktbWFuYWdlcic7XG5leHBvcnQgKiBmcm9tICcuL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24ubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi90b2tlbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pbml0aWFsLWZvY3VzL2luaXRpYWwtZm9jdXMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vaW5pdGlhbC1mb2N1cy9pbml0aWFsLWZvY3VzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmUtY2xhbXAvbGluZS1jbGFtcC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saW5lLWNsYW1wL2xpbmUtY2xhbXAubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vb25seS1kaWdpdHMvb25seS1kaWdpdHMuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vb25seS1kaWdpdHMvb25seS1kaWdpdHMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmZsb3ctbGlzdC9vdmVyZmxvdy1saXN0LWl0ZW0uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmZsb3ctbGlzdC9vdmVyZmxvdy1saXN0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL292ZXJmbG93LWxpc3Qvb3ZlcmZsb3ctbGlzdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXBlYXQvcmVwZWF0LmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcGVhdC9yZXBlYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzaXplL3Jlc2l6ZS1oYW5kbGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzaXplL3Jlc2l6ZS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNpemUvcmVzaXplLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlL3RlbXBsYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RlbXBsYXRlL3RlbXBsYXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3RydW5jYXRlL3RydW5jYXRlLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL3RydW5jYXRlL3RydW5jYXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1pdGVtJztcbmV4cG9ydCAqIGZyb20gJy4vZm9jdXNhYmxlLWxpc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUtZ3JpZCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWRvbmx5JztcbmV4cG9ydCAqIGZyb20gJy4vZGlzYWJsZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGlja2VkJztcbmV4cG9ydCAqIGZyb20gJy4vc2VsZWN0YWJsZS1saXN0JztcbiJdfQ==
32
+ export * from './breakpoints/breakpoint.directive';
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RpcmVjdGl2ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG9DQUFvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzLWtleS1tYW5hZ2VyJztcbmV4cG9ydCAqIGZyb20gJy4vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2lnbm9yZS1jbGljay1vbi1zZWxlY3Rpb24vaWdub3JlLWNsaWNrLW9uLXNlbGVjdGlvbi5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9pZ25vcmUtY2xpY2stb24tc2VsZWN0aW9uL3Rva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2luaXRpYWwtZm9jdXMvaW5pdGlhbC1mb2N1cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9pbml0aWFsLWZvY3VzL2luaXRpYWwtZm9jdXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGluZS1jbGFtcC9saW5lLWNsYW1wLmRpcmVjdGl2ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpbmUtY2xhbXAvbGluZS1jbGFtcC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vbmx5LWRpZ2l0cy9vbmx5LWRpZ2l0cy5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9vbmx5LWRpZ2l0cy9vbmx5LWRpZ2l0cy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVyZmxvdy1saXN0L292ZXJmbG93LWxpc3QtaXRlbS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9vdmVyZmxvdy1saXN0L292ZXJmbG93LWxpc3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vb3ZlcmZsb3ctbGlzdC9vdmVyZmxvdy1saXN0Lm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcGVhdC9yZXBlYXQuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwZWF0L3JlcGVhdC5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNpemUvcmVzaXplLWhhbmRsZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNpemUvcmVzaXplLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc2l6ZS9yZXNpemUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGUvdGVtcGxhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdGVtcGxhdGUvdGVtcGxhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJ1bmNhdGUvdHJ1bmNhdGUuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJ1bmNhdGUvdHJ1bmNhdGUubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZm9jdXNhYmxlLWl0ZW0nO1xuZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUtbGlzdCc7XG5leHBvcnQgKiBmcm9tICcuL2ZvY3VzYWJsZS1ncmlkJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhZG9ubHknO1xuZXhwb3J0ICogZnJvbSAnLi9kaXNhYmxlZCc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWNrZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZWxlY3RhYmxlLWxpc3QnO1xuZXhwb3J0ICogZnJvbSAnLi9icmVha3BvaW50cy9icmVha3BvaW50LmRpcmVjdGl2ZSc7XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { ContentChildren, Directive, EventEmitter, forwardRef, Input, Output, QueryList } from '@angular/core';
1
+ import { ContentChildren, Directive, EventEmitter, forwardRef, HostBinding, Input, Output, QueryList } from '@angular/core';
2
2
  import { merge, Subject } from 'rxjs';
3
3
  import { startWith, takeUntil } from 'rxjs/operators';
4
4
  import { DND_ITEM, DND_LIST } from '../tokens';
@@ -6,12 +6,27 @@ import * as i0 from "@angular/core";
6
6
  export class DndListDirective {
7
7
  constructor() {
8
8
  /**
9
- * Defines if the the element is allowed to be dragged in 2 dimensions,
9
+ * Defines if the element is allowed to be dragged in 2 dimensions,
10
10
  * When true - replace indicator will be displayed vertically
11
11
  */
12
12
  this.gridMode = false;
13
- /** When enabled, replace indicator will appear on whole element, instead of horizontal/vertical line before/after element */
14
- this.replaceMode = false;
13
+ /**
14
+ * Defines drop strategy:
15
+ * * `shift` mode will create line after closest drop element.
16
+ * * `group` mode will create replace indicator on whole closest drop element.
17
+ * * `auto` mode will create line after closest drop element,
18
+ * if dragged element coordinates are shifted for 30% from center of the closest drop element.
19
+ * Otherwise, it will create replace indicator on whole closest drop element.
20
+ *
21
+ * `shift` mode is the default.
22
+ */
23
+ this.dropMode = 'shift';
24
+ /**
25
+ * Threshold of dragged item over another item to define which type of `dropMode` should be used.
26
+ */
27
+ this.threshold = 0.3;
28
+ /** @hidden */
29
+ this._replaceMode = false;
15
30
  /** Event that is thrown, when items are reordered */
16
31
  this.itemsChange = new EventEmitter();
17
32
  /** Event that is thrown, when the item is dropped */
@@ -26,6 +41,27 @@ export class DndListDirective {
26
41
  this._onDestroy$ = new Subject();
27
42
  /** @hidden */
28
43
  this._draggable = true;
44
+ /** @hidden */
45
+ this._initialClass = 'fd-dnd-list';
46
+ /** @hidden */
47
+ this._linesRemoved = true;
48
+ /** @hidden */
49
+ this._indicatorsRemoved = true;
50
+ }
51
+ /**
52
+ * @deprecated
53
+ * Use `dropMode` property for better configuration.
54
+ *
55
+ * @description
56
+ * When enabled, replace indicator will appear on whole element, instead of horizontal/vertical line before/after element.
57
+ */
58
+ set replaceMode(value) {
59
+ this._replaceMode = value;
60
+ this.dropMode = value ? 'group' : 'shift';
61
+ this._detectedDropMode = this.dropMode;
62
+ }
63
+ get replaceMode() {
64
+ return this._replaceMode;
29
65
  }
30
66
  /** Defines if drag and drop feature should be enabled for list items */
31
67
  set draggable(draggable) {
@@ -60,8 +96,11 @@ export class DndListDirective {
60
96
  if (!closestItem) {
61
97
  closestItemIndex = null;
62
98
  }
63
- /** If the closest element is different than the old one, new one is picked. It prevents from performance issues */
64
- if ((closestItemIndex || closestItemIndex === 0) && closestItemIndex !== this._closestItemIndex) {
99
+ /** If the closest element is different from the old one, new one is picked. It prevents from performance issues */
100
+ if ((closestItemIndex || closestItemIndex === 0) &&
101
+ (closestItemIndex !== this._closestItemIndex || this.dropMode === 'auto')) {
102
+ this._removeAllLines();
103
+ this._removeAllReplaceIndicators();
65
104
  this._closestItemIndex = closestItemIndex;
66
105
  this._closestItemPosition = this._elementsCoordinates[closestItemIndex].position;
67
106
  // If closest item index is same as dragged item, just remove indicators
@@ -71,18 +110,21 @@ export class DndListDirective {
71
110
  return;
72
111
  }
73
112
  /** Generating line, that shows where the element will be placed, on drop */
74
- if (this.replaceMode) {
113
+ if (this.dropMode === 'group') {
75
114
  this._createReplaceIndicator(this._closestItemIndex);
76
115
  }
77
- else {
116
+ else if (this.dropMode === 'shift') {
78
117
  this._createLine(this._closestItemIndex, this._closestItemPosition);
79
118
  }
119
+ else {
120
+ this._selectDropModeIndicator(draggedItemIndex, closestItem, closestItemIndex);
121
+ }
80
122
  }
81
123
  }
82
124
  /** Method called, when element is started to be dragged */
83
125
  dragStart(index) {
84
126
  const draggedItemElement = this._dndItemReference[index].elementRef;
85
- /** Counting all of the elements's chords */
127
+ /** Counting all the element's chords */
86
128
  this._elementsCoordinates = this._dndItemReference.map((item) => item.getElementCoordinates(this._isBefore(draggedItemElement, item.elementRef), this.gridMode));
87
129
  }
88
130
  /** Method called, when element is released */
@@ -109,7 +151,9 @@ export class DndListDirective {
109
151
  this.itemDropped.emit({
110
152
  replacedItemIndex,
111
153
  draggedItemIndex,
112
- items
154
+ items,
155
+ insertAt: this._closestItemPosition,
156
+ mode: this.dropMode !== 'auto' ? this.dropMode : this._detectedDropMode
113
157
  });
114
158
  this._removeAllLines();
115
159
  this._removeAllReplaceIndicators();
@@ -120,21 +164,54 @@ export class DndListDirective {
120
164
  }
121
165
  }
122
166
  /** @hidden */
167
+ _selectDropModeIndicator(draggedItemIndex, closestItem, closestItemIndex) {
168
+ if (!closestItem || !this._dndItemReference[draggedItemIndex]) {
169
+ return;
170
+ }
171
+ let newDetectedDropMode;
172
+ const draggedElmCoords = this._dndItemReference[draggedItemIndex].elementRef.nativeElement.getBoundingClientRect();
173
+ const closestItemBoundaries = getElementBoundaries(closestItem, this.threshold);
174
+ const draggedItemStartCoords = getElementStartCoords(draggedElmCoords, closestItem.position);
175
+ if (_between(draggedItemStartCoords.x, closestItemBoundaries.x.start, closestItemBoundaries.x.end) &&
176
+ _between(draggedItemStartCoords.y, closestItemBoundaries.y.start, closestItemBoundaries.y.end)) {
177
+ newDetectedDropMode = 'group';
178
+ }
179
+ else {
180
+ newDetectedDropMode = 'shift';
181
+ }
182
+ if (newDetectedDropMode === this._detectedDropMode && (!this._linesRemoved || !this._indicatorsRemoved)) {
183
+ return;
184
+ }
185
+ this._detectedDropMode = newDetectedDropMode;
186
+ if (this._detectedDropMode === 'shift') {
187
+ this._createLine(closestItemIndex, this._elementsCoordinates[closestItemIndex].position);
188
+ }
189
+ else {
190
+ this._createReplaceIndicator(closestItemIndex);
191
+ }
192
+ }
193
+ /** @hidden */
123
194
  _removeAllLines() {
195
+ this._linesRemoved = true;
124
196
  this.dndItems.forEach((item) => item.removeLine());
125
197
  }
126
198
  /** @hidden */
127
199
  _removeAllReplaceIndicators() {
200
+ this._indicatorsRemoved = true;
128
201
  this.dndItems.forEach((item) => item.removeReplaceIndicator());
129
202
  }
130
203
  /** @hidden */
131
204
  _createLine(closestItemIndex, linkPosition) {
132
205
  this._removeAllLines();
206
+ this._removeAllReplaceIndicators();
207
+ this._linesRemoved = false;
133
208
  this._dndItemReference[closestItemIndex].createLine(linkPosition, this.gridMode);
134
209
  }
135
210
  /** @hidden */
136
211
  _createReplaceIndicator(closestItemIndex) {
212
+ this._removeAllLines();
137
213
  this._removeAllReplaceIndicators();
214
+ this._indicatorsRemoved = false;
138
215
  this._dndItemReference[closestItemIndex].createReplaceIndicator();
139
216
  }
140
217
  /** @hidden */
@@ -183,7 +260,7 @@ export class DndListDirective {
183
260
  }
184
261
  }
185
262
  DndListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: DndListDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
186
- DndListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: DndListDirective, selector: "[fdkDndList], [fd-dnd-list]", inputs: { gridMode: "gridMode", replaceMode: "replaceMode", items: "items", draggable: "draggable" }, outputs: { itemsChange: "itemsChange", itemDropped: "itemDropped" }, providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }], queries: [{ propertyName: "dndItems", predicate: DND_ITEM }], ngImport: i0 });
263
+ DndListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.1", type: DndListDirective, selector: "[fdkDndList], [fd-dnd-list]", inputs: { gridMode: "gridMode", dropMode: "dropMode", threshold: "threshold", replaceMode: "replaceMode", items: "items", draggable: "draggable" }, outputs: { itemsChange: "itemsChange", itemDropped: "itemDropped" }, host: { properties: { "class": "this._initialClass" } }, providers: [{ provide: DND_LIST, useExisting: forwardRef(() => DndListDirective) }], queries: [{ propertyName: "dndItems", predicate: DND_ITEM }], ngImport: i0 });
187
264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: DndListDirective, decorators: [{
188
265
  type: Directive,
189
266
  args: [{
@@ -192,6 +269,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
192
269
  }]
193
270
  }], propDecorators: { gridMode: [{
194
271
  type: Input
272
+ }], dropMode: [{
273
+ type: Input
274
+ }], threshold: [{
275
+ type: Input
195
276
  }], replaceMode: [{
196
277
  type: Input
197
278
  }], items: [{
@@ -205,6 +286,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImpor
205
286
  }], dndItems: [{
206
287
  type: ContentChildren,
207
288
  args: [DND_ITEM]
289
+ }], _initialClass: [{
290
+ type: HostBinding,
291
+ args: ['class']
208
292
  }] } });
209
293
  function _isMouseOnElement(element, mousePosition) {
210
294
  const startX = element.x;
@@ -216,4 +300,28 @@ function _isMouseOnElement(element, mousePosition) {
216
300
  function _between(x, min, max) {
217
301
  return x >= min && x <= max;
218
302
  }
219
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kcmFnLWFuZC1kcm9wL2RuZC1saXN0L2RuZC1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBTS9DLE1BQU0sT0FBTyxnQkFBZ0I7SUFKN0I7UUFLSTs7O1dBR0c7UUFFSCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLDZIQUE2SDtRQUU3SCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQWFwQixxREFBcUQ7UUFFNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXBELHFEQUFxRDtRQUU1QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBUzFELGNBQWM7UUFDTixzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBRWhELGNBQWM7UUFDTix5QkFBb0IsR0FBOEIsSUFBSSxDQUFDO1FBRS9ELGtGQUFrRjtRQUNqRSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqRCxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBS25ELGNBQWM7UUFDTixlQUFVLEdBQUcsSUFBSSxDQUFDO0tBK0s3QjtJQXJORyx3RUFBd0U7SUFDeEUsSUFDSSxTQUFTLENBQUMs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QUFROztBQXVNN0IsU0FBUyxpQkFBaUIsQ0FBQyxPQUFxQixFQUFFLGFBQThCO0lBQzVFLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBRXZDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDekIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO0lBRXhDLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5RixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBUyxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQ2pELE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHN0YXJ0V2l0aCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRWxlbWVudENob3JkLCBGZERyb3BFdmVudCwgTGlua1Bvc2l0aW9uLCBFbGVtZW50UG9zaXRpb24sIERuZEl0ZW0gfSBmcm9tICcuLi9kbmQuaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBETkRfSVRFTSwgRE5EX0xJU1QgfSBmcm9tICcuLi90b2tlbnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tmZGtEbmRMaXN0XSwgW2ZkLWRuZC1saXN0XScsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBETkRfTElTVCwgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRG5kTGlzdERpcmVjdGl2ZSkgfV1cbn0pXG5leHBvcnQgY2xhc3MgRG5kTGlzdERpcmVjdGl2ZTxUPiBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBpZiB0aGUgdGhlIGVsZW1lbnQgaXMgYWxsb3dlZCB0byBiZSBkcmFnZ2VkIGluIDIgZGltZW5zaW9ucyxcbiAgICAgKiBXaGVuIHRydWUgLSByZXBsYWNlIGluZGljYXRvciB3aWxsIGJlIGRpc3BsYXllZCB2ZXJ0aWNhbGx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncmlkTW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZW4gZW5hYmxlZCwgcmVwbGFjZSBpbmRpY2F0b3Igd2lsbCBhcHBlYXIgb24gd2hvbGUgZWxlbWVudCwgaW5zdGVhZCBvZiBob3Jpem9udGFsL3ZlcnRpY2FsIGxpbmUgYmVmb3JlL2FmdGVyIGVsZW1lbnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlcGxhY2VNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQXJyYXkgb2YgaXRlbXMsIHRoYXQgd2lsbCBiZSBzb3J0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1zOiBBcnJheTxUPjtcblxuICAgIC8qKiBEZWZpbmVzIGlmIGRyYWcgYW5kIGRyb3AgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZCBmb3IgbGlzdCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZHJhZ2dhYmxlID0gZHJhZ2dhYmxlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2FibGVTdGF0ZShkcmFnZ2FibGUpO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIHRocm93biwgd2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgdGhyb3duLCB3aGVuIHRoZSBpdGVtIGlzIGRyb3BwZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpdGVtRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmREcm9wRXZlbnQ8VD4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRE5EX0lURU0pXG4gICAgZG5kSXRlbXM6IFF1ZXJ5TGlzdDxEbmRJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudHNDb29yZGluYXRlczogRWxlbWVudENob3JkW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Nsb3Nlc3RJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbG9zZXN0SXRlbVBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGN1cnJlbnQgZGF0YSBzdHJlYW0gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gICovXG4gICAgcHJpdmF0ZSBfZG5kSXRlbVJlZmVyZW5jZTogRG5kSXRlbVtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kcmFnZ2FibGUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnYWJsZVN0YXRlKHRoaXMuX2RyYWdnYWJsZSk7XG4gICAgICAgIHRoaXMuZG5kSXRlbXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgc3RhcnRXaXRoKDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVmcmVzaFF1ZXJ5TGlzdCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkLCB3aGVuIHRoZSBpdGVtIGlzIGJlaW5nIG1vdmVkIGJ5IDEgcHggKi9cbiAgICBvbk1vdmUobW91c2VQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uLCBkcmFnZ2VkSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLyoqIFRlbXBvcmFyeSBvYmplY3QsIHRvIHN0b3JlIGxvd2VzdCBkaXN0YW5jZSB2YWx1ZXMgKi9cbiAgICAgICAgbGV0IGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3RJdGVtID0gdGhpcy5fZWxlbWVudHNDb29yZGluYXRlcy5maW5kKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLyoqIENoZWNrIGlmIGVsZW1lbnQgY2FuIGJlIHJlcGxhY2VkICovXG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQuc3RpY2tUb1Bvc2l0aW9uICYmIGNsb3Nlc3RJdGVtSW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNNb3VzZU9uRWxlbWVudCA9IF9pc01vdXNlT25FbGVtZW50KGVsZW1lbnQsIG1vdXNlUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIGlmIChpc01vdXNlT25FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBpbmRleDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIElmIHRoZSBjbG9zZXN0IGVsZW1lbnQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIG9sZCBvbmUsIG5ldyBvbmUgaXMgcGlja2VkLiBJdCBwcmV2ZW50cyBmcm9tIHBlcmZvcm1hbmNlIGlzc3VlcyAqL1xuICAgICAgICBpZiAoKGNsb3Nlc3RJdGVtSW5kZXggfHwgY2xvc2VzdEl0ZW1JbmRleCA9PT0gMCkgJiYgY2xvc2VzdEl0ZW1JbmRleCAhPT0gdGhpcy5fY2xvc2VzdEl0ZW1JbmRleCkge1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VzdEl0ZW1JbmRleCA9IGNsb3Nlc3RJdGVtSW5kZXg7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uID0gdGhpcy5fZWxlbWVudHNDb29yZGluYXRlc1tjbG9zZXN0SXRlbUluZGV4XS5wb3NpdGlvbjtcbiAgICAgICAgICAgIC8vIElmIGNsb3Nlc3QgaXRlbSBpbmRleCBpcyBzYW1lIGFzIGRyYWdnZWQgaXRlbSwganVzdCByZW1vdmUgaW5kaWNhdG9yc1xuICAgICAgICAgICAgaWYgKGNsb3Nlc3RJdGVtSW5kZXggPT09IGRyYWdnZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqIEdlbmVyYXRpbmcgbGluZSwgdGhhdCBzaG93cyB3aGVyZSB0aGUgZWxlbWVudCB3aWxsIGJlIHBsYWNlZCwgb24gZHJvcCAqL1xuICAgICAgICAgICAgaWYgKHRoaXMucmVwbGFjZU1vZGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVMaW5lKHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgsIHRoaXMuX2Nsb3Nlc3RJdGVtUG9zaXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQsIHdoZW4gZWxlbWVudCBpcyBzdGFydGVkIHRvIGJlIGRyYWdnZWQgKi9cbiAgICBkcmFnU3RhcnQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbUVsZW1lbnQgPSB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2luZGV4XS5lbGVtZW50UmVmO1xuICAgICAgICAvKiogQ291bnRpbmcgYWxsIG9mIHRoZSBlbGVtZW50cydzIGNob3JkcyAqL1xuICAgICAgICB0aGlzLl9lbGVtZW50c0Nvb3JkaW5hdGVzID0gdGhpcy5fZG5kSXRlbVJlZmVyZW5jZS5tYXAoKGl0ZW06IERuZEl0ZW0pID0+XG4gICAgICAgICAgICBpdGVtLmdldEVsZW1lbnRDb29yZGluYXRlcyh0aGlzLl9pc0JlZm9yZShkcmFnZ2VkSXRlbUVsZW1lbnQsIGl0ZW0uZWxlbWVudFJlZiksIHRoaXMuZ3JpZE1vZGUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQsIHdoZW4gZWxlbWVudCBpcyByZWxlYXNlZCAqL1xuICAgIGRyYWdFbmQoZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtcy5zbGljZSgpO1xuICAgICAgICBjb25zdCByZXBsYWNlZEl0ZW1JbmRleCA9IHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXg7XG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtID0gaXRlbXNbZHJhZ2dlZEl0ZW1JbmRleF07XG5cbiAgICAgICAgaWYgKHJlcGxhY2VkSXRlbUluZGV4IHx8IHJlcGxhY2VkSXRlbUluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoZHJhZ2dlZEl0ZW1JbmRleCAhPT0gcmVwbGFjZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBpZiAoZHJhZ2dlZEl0ZW1JbmRleCA8IHJlcGxhY2VkSXRlbUluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkcmFnZ2VkSXRlbUluZGV4OyBpIDwgcmVwbGFjZWRJdGVtSW5kZXg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpICsgMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gZHJhZ2dlZEl0ZW1JbmRleDsgaSA+IHJlcGxhY2VkSXRlbUluZGV4OyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zW2ldID0gaXRlbXNbaSAtIDFdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqIFJlcGxhY2luZyBpdGVtcyAqL1xuICAgICAgICAgICAgICAgIGl0ZW1zW3JlcGxhY2VkSXRlbUluZGV4XSA9IGRyYWdnZWRJdGVtO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtc0NoYW5nZS5lbWl0KGl0ZW1zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5pdGVtRHJvcHBlZC5lbWl0KHtcbiAgICAgICAgICAgICAgICByZXBsYWNlZEl0ZW1JbmRleCxcbiAgICAgICAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGl0ZW1zXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsTGluZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG5cbiAgICAgICAgICAgIC8qKiBSZXNldCAqL1xuICAgICAgICAgICAgdGhpcy5fZWxlbWVudHNDb29yZGluYXRlcyA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VzdEl0ZW1JbmRleCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVtb3ZlQWxsTGluZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5yZW1vdmVMaW5lKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVtb3ZlQWxsUmVwbGFjZUluZGljYXRvcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4gaXRlbS5yZW1vdmVSZXBsYWNlSW5kaWNhdG9yKCkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlTGluZShjbG9zZXN0SXRlbUluZGV4OiBudW1iZXIsIGxpbmtQb3NpdGlvbjogTGlua1Bvc2l0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgIHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2VbY2xvc2VzdEl0ZW1JbmRleF0uY3JlYXRlTGluZShsaW5rUG9zaXRpb24sIHRoaXMuZ3JpZE1vZGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY3JlYXRlUmVwbGFjZUluZGljYXRvcihjbG9zZXN0SXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fcmVtb3ZlQWxsUmVwbGFjZUluZGljYXRvcnMoKTtcbiAgICAgICAgdGhpcy5fZG5kSXRlbVJlZmVyZW5jZVtjbG9zZXN0SXRlbUluZGV4XS5jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZWZyZXNoUXVlcnlMaXN0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWZyZXNoJCA9IG1lcmdlKHRoaXMuX3JlZnJlc2gkLCB0aGlzLl9vbkRlc3Ryb3kkKTtcbiAgICAgICAgdGhpcy5fcmVmcmVzaCQubmV4dCgpO1xuXG4gICAgICAgIHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2UgPSB0aGlzLmRuZEl0ZW1zLnRvQXJyYXkoKTtcblxuICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2FibGVTdGF0ZSh0aGlzLl9kcmFnZ2FibGUpO1xuXG4gICAgICAgIHRoaXMuZG5kSXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGl0ZW0ubW92ZWQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoKHBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pID0+IHRoaXMub25Nb3ZlKHBvc2l0aW9uLCBpbmRleCkpO1xuICAgICAgICAgICAgaXRlbS5zdGFydGVkLnBpcGUodGFrZVVudGlsKHJlZnJlc2gkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHJhZ1N0YXJ0KGluZGV4KSk7XG4gICAgICAgICAgICBpdGVtLnJlbGVhc2VkLnBpcGUodGFrZVVudGlsKHJlZnJlc2gkKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuZHJhZ0VuZChpbmRleCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQGhpZGRlblxuICAgICAqIFJldHVybiBpbmZvcm1hdGlvbiBpZiBlbGVtZW50IGlzIHBsYWNlZCBiZWZvcmUgdGhlIGRyYWdnZWQgZWxlbWVudFxuICAgICAqL1xuICAgIHByaXZhdGUgX2lzQmVmb3JlKGRyYWdnZWRFbGVtZW50OiBFbGVtZW50UmVmLCB0YXJnZXRFbGVtZW50OiBFbGVtZW50UmVmKTogYm9vbGVhbiB7XG4gICAgICAgIC8qKiBTb21ldGltZXMgdGhlIGVsZW1lbnQgYXJlIG5vdCBzdHJhaWdodCBpbiBvbmUgY29sdW1uLCB0aGF0J3Mgd2h5IG9mZnNldCBpcyBuZWVkZWQgKi9cbiAgICAgICAgY29uc3QgVkVSVElDQUxfT0ZGU0VUID0gMjA7XG5cbiAgICAgICAgLyoqIERpc3RhbmNlcyBmcm9tIHRoZSB0b3Agb2Ygc2NyZWVuICovXG4gICAgICAgIGNvbnN0IGRyYWdnZWRFbGVtZW50Qm91bmQgPSA8RE9NUmVjdD5kcmFnZ2VkRWxlbWVudC5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50Qm91bmQgPSA8RE9NUmVjdD50YXJnZXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgaWYgKGRyYWdnZWRFbGVtZW50Qm91bmQudG9wIC0gdGFyZ2V0RWxlbWVudEJvdW5kLnRvcCA+IFZFUlRJQ0FMX09GRlNFVCkge1xuICAgICAgICAgICAgLyoqIElmIGVsZW1lbnQgaXMgaGlnaGVyIHRoYW4gdGhlIGRyYWdnZWQgZWxlbWVudCwgaXQncyBmb3Igc3VyZSBiZWZvcmUgKi9cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRhcmdldEVsZW1lbnRCb3VuZC50b3AgLSBkcmFnZ2VkRWxlbWVudEJvdW5kLnRvcCA+IFZFUlRJQ0FMX09GRlNFVCkge1xuICAgICAgICAgICAgLyoqIElmIGVsZW1lbnQgaXMgbG93ZXIgdGhhbiB0aGUgZHJhZ2dlZCBlbGVtZW50LCBpdCdzIGZvciBzdXJlIGFmdGVyICovXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvKiogSWYgZWxlbWVudHMgYXJlIGluIHNhbWUgbGV2ZWwsIHRoZSBob3Jpem9udGFsIHBvc2l0aW9uIGRlY2lkZXMgaWYgaXQncyBiZWZvcmUvYWZ0ZXIgKi9cbiAgICAgICAgICAgIHJldHVybiBkcmFnZ2VkRWxlbWVudEJvdW5kLmxlZnQgLSB0YXJnZXRFbGVtZW50Qm91bmQubGVmdCA+IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NoYW5nZURyYWdnYWJsZVN0YXRlKGRyYWdnYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kbmRJdGVtcykge1xuICAgICAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5saXN0RHJhZ2dhYmxlID0gZHJhZ2dhYmxlO1xuICAgICAgICAgICAgICAgIGl0ZW0uY2hhbmdlQ0RLRHJhZ1N0YXRlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gX2lzTW91c2VPbkVsZW1lbnQoZWxlbWVudDogRWxlbWVudENob3JkLCBtb3VzZVBvc2l0aW9uOiBFbGVtZW50UG9zaXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBzdGFydFggPSBlbGVtZW50Lng7XG4gICAgY29uc3QgZW5kWCA9IGVsZW1lbnQueCArIGVsZW1lbnQud2lkdGg7XG5cbiAgICBjb25zdCBzdGFydFkgPSBlbGVtZW50Lnk7XG4gICAgY29uc3QgZW5kWSA9IGVsZW1lbnQueSArIGVsZW1lbnQuaGVpZ2h0O1xuXG4gICAgcmV0dXJuIF9iZXR3ZWVuKG1vdXNlUG9zaXRpb24ueCwgc3RhcnRYLCBlbmRYKSAmJiBfYmV0d2Vlbihtb3VzZVBvc2l0aW9uLnksIHN0YXJ0WSwgZW5kWSk7XG59XG5cbmZ1bmN0aW9uIF9iZXR3ZWVuKHg6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHggPj0gbWluICYmIHggPD0gbWF4O1xufVxuIl19
303
+ function getElementStartCoords(rect, position) {
304
+ return {
305
+ x: position === 'after' ? rect.x + rect.width : rect.x,
306
+ y: position === 'after' ? rect.y + rect.height : rect.y
307
+ };
308
+ }
309
+ function getElementBoundaries(coordinates, threshold) {
310
+ const widthOffset = coordinates.width * (coordinates.position === 'after' ? 1 : -1);
311
+ const heightOffset = coordinates.height * (coordinates.position === 'after' ? 1 : -1);
312
+ const xStart = coordinates.position === 'after' ? coordinates.x : coordinates.x + coordinates.width;
313
+ const xEnd = xStart + widthOffset + (widthOffset / 2) * threshold;
314
+ const yStart = coordinates.position === 'after' ? coordinates.y : coordinates.y + coordinates.height;
315
+ const yEnd = yStart + heightOffset + (heightOffset / 2) * threshold;
316
+ return {
317
+ x: {
318
+ start: xStart > xEnd ? xEnd : xStart,
319
+ end: xStart > xEnd ? xStart : xEnd
320
+ },
321
+ y: {
322
+ start: yStart > yEnd ? yEnd : yStart,
323
+ end: yStart > yEnd ? yStart : yEnd
324
+ }
325
+ };
326
+ }
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi91dGlscy9kcmFnLWFuZC1kcm9wL2RuZC1saXN0L2RuZC1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRELE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQU0vQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSjdCO1FBS0k7OztXQUdHO1FBRUgsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7Ozs7Ozs7O1dBU0c7UUFFSCxhQUFRLEdBQWtCLE9BQU8sQ0FBQztRQUVsQzs7V0FFRztRQUVILGNBQVMsR0FBRyxHQUFHLENBQUM7UUFvQmhCLGNBQWM7UUFDTixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQWE3QixxREFBcUQ7UUFFNUMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBWSxDQUFDO1FBRXBELHFEQUFxRDtRQUU1QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO1FBUzFELGNBQWM7UUFDTixzQkFBaUIsR0FBa0IsSUFBSSxDQUFDO1FBRWhELGNBQWM7UUFDTix5QkFBb0IsR0FBOEIsSUFBSSxDQUFDO1FBRS9ELGtGQUFrRjtRQUNqRSxjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUVqRCxjQUFjO1FBQ0csZ0JBQVcsR0FBRyxJQUFJLE9B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LENBQUM7SUFDckcsTUFBTSxJQUFJLEdBQUcsTUFBTSxHQUFHLFlBQVksR0FBRyxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7SUFDcEUsT0FBTztRQUNILENBQUMsRUFBRTtZQUNDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDcEMsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNyQztRQUNELENBQUMsRUFBRTtZQUNDLEtBQUssRUFBRSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU07WUFDcEMsR0FBRyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSTtTQUNyQztLQUNKLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1lcmdlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzdGFydFdpdGgsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVsZW1lbnRDaG9yZCwgRmREcm9wRXZlbnQsIExpbmtQb3NpdGlvbiwgRWxlbWVudFBvc2l0aW9uLCBEbmRJdGVtLCBGZERuZERyb3BUeXBlIH0gZnJvbSAnLi4vZG5kLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRE5EX0lURU0sIERORF9MSVNUIH0gZnJvbSAnLi4vdG9rZW5zJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbZmRrRG5kTGlzdF0sIFtmZC1kbmQtbGlzdF0nLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogRE5EX0xJU1QsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERuZExpc3REaXJlY3RpdmUpIH1dXG59KVxuZXhwb3J0IGNsYXNzIERuZExpc3REaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgaWYgdGhlIGVsZW1lbnQgaXMgYWxsb3dlZCB0byBiZSBkcmFnZ2VkIGluIDIgZGltZW5zaW9ucyxcbiAgICAgKiBXaGVuIHRydWUgLSByZXBsYWNlIGluZGljYXRvciB3aWxsIGJlIGRpc3BsYXllZCB2ZXJ0aWNhbGx5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBncmlkTW9kZSA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBkcm9wIHN0cmF0ZWd5OlxuICAgICAqICogYHNoaWZ0YCBtb2RlIHdpbGwgY3JlYXRlIGxpbmUgYWZ0ZXIgY2xvc2VzdCBkcm9wIGVsZW1lbnQuXG4gICAgICogKiBgZ3JvdXBgIG1vZGUgd2lsbCBjcmVhdGUgcmVwbGFjZSBpbmRpY2F0b3Igb24gd2hvbGUgY2xvc2VzdCBkcm9wIGVsZW1lbnQuXG4gICAgICogKiBgYXV0b2AgbW9kZSB3aWxsIGNyZWF0ZSBsaW5lIGFmdGVyIGNsb3Nlc3QgZHJvcCBlbGVtZW50LFxuICAgICAqIGlmIGRyYWdnZWQgZWxlbWVudCBjb29yZGluYXRlcyBhcmUgc2hpZnRlZCBmb3IgMzAlIGZyb20gY2VudGVyIG9mIHRoZSBjbG9zZXN0IGRyb3AgZWxlbWVudC5cbiAgICAgKiBPdGhlcndpc2UsIGl0IHdpbGwgY3JlYXRlIHJlcGxhY2UgaW5kaWNhdG9yIG9uIHdob2xlIGNsb3Nlc3QgZHJvcCBlbGVtZW50LlxuICAgICAqXG4gICAgICogYHNoaWZ0YCBtb2RlIGlzIHRoZSBkZWZhdWx0LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZHJvcE1vZGU6IEZkRG5kRHJvcFR5cGUgPSAnc2hpZnQnO1xuXG4gICAgLyoqXG4gICAgICogVGhyZXNob2xkIG9mIGRyYWdnZWQgaXRlbSBvdmVyIGFub3RoZXIgaXRlbSB0byBkZWZpbmUgd2hpY2ggdHlwZSBvZiBgZHJvcE1vZGVgIHNob3VsZCBiZSB1c2VkLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgdGhyZXNob2xkID0gMC4zO1xuXG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWRcbiAgICAgKiBVc2UgYGRyb3BNb2RlYCBwcm9wZXJ0eSBmb3IgYmV0dGVyIGNvbmZpZ3VyYXRpb24uXG4gICAgICpcbiAgICAgKiBAZGVzY3JpcHRpb25cbiAgICAgKiBXaGVuIGVuYWJsZWQsIHJlcGxhY2UgaW5kaWNhdG9yIHdpbGwgYXBwZWFyIG9uIHdob2xlIGVsZW1lbnQsIGluc3RlYWQgb2YgaG9yaXpvbnRhbC92ZXJ0aWNhbCBsaW5lIGJlZm9yZS9hZnRlciBlbGVtZW50LlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHJlcGxhY2VNb2RlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VNb2RlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuZHJvcE1vZGUgPSB2YWx1ZSA/ICdncm91cCcgOiAnc2hpZnQnO1xuICAgICAgICB0aGlzLl9kZXRlY3RlZERyb3BNb2RlID0gdGhpcy5kcm9wTW9kZTtcbiAgICB9XG5cbiAgICBnZXQgcmVwbGFjZU1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXBsYWNlTW9kZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlcGxhY2VNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQXJyYXkgb2YgaXRlbXMsIHRoYXQgd2lsbCBiZSBzb3J0ZWQgKi9cbiAgICBASW5wdXQoKVxuICAgIGl0ZW1zOiBBcnJheTxUPjtcblxuICAgIC8qKiBEZWZpbmVzIGlmIGRyYWcgYW5kIGRyb3AgZmVhdHVyZSBzaG91bGQgYmUgZW5hYmxlZCBmb3IgbGlzdCBpdGVtcyAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGRyYWdnYWJsZShkcmFnZ2FibGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fZHJhZ2dhYmxlID0gZHJhZ2dhYmxlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEcmFnZ2FibGVTdGF0ZShkcmFnZ2FibGUpO1xuICAgIH1cblxuICAgIC8qKiBFdmVudCB0aGF0IGlzIHRocm93biwgd2hlbiBpdGVtcyBhcmUgcmVvcmRlcmVkICovXG4gICAgQE91dHB1dCgpXG4gICAgcmVhZG9ubHkgaXRlbXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFycmF5PFQ+PigpO1xuXG4gICAgLyoqIEV2ZW50IHRoYXQgaXMgdGhyb3duLCB3aGVuIHRoZSBpdGVtIGlzIGRyb3BwZWQgKi9cbiAgICBAT3V0cHV0KClcbiAgICByZWFkb25seSBpdGVtRHJvcHBlZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmREcm9wRXZlbnQ8VD4+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oRE5EX0lURU0pXG4gICAgZG5kSXRlbXM6IFF1ZXJ5TGlzdDxEbmRJdGVtPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZWxlbWVudHNDb29yZGluYXRlczogRWxlbWVudENob3JkW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2Nsb3Nlc3RJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jbG9zZXN0SXRlbVBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKiBBbiBSeEpTIFN1YmplY3QgdGhhdCB3aWxsIGtpbGwgdGhlIGN1cnJlbnQgZGF0YSBzdHJlYW0gKGZvciB1bnN1YnNjcmliaW5nKSAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX29uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqIEBoaWRkZW4gICovXG4gICAgcHJpdmF0ZSBfZG5kSXRlbVJlZmVyZW5jZTogRG5kSXRlbVtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kcmFnZ2FibGUgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9pbml0aWFsQ2xhc3MgPSAnZmQtZG5kLWxpc3QnO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9kZXRlY3RlZERyb3BNb2RlOiAnc2hpZnQnIHwgJ2dyb3VwJztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfbGluZXNSZW1vdmVkID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaW5kaWNhdG9yc1JlbW92ZWQgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnYWJsZVN0YXRlKHRoaXMuX2RyYWdnYWJsZSk7XG4gICAgICAgIHRoaXMuZG5kSXRlbXMuY2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSwgc3RhcnRXaXRoKDApKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fcmVmcmVzaFF1ZXJ5TGlzdCgpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKiBNZXRob2QgY2FsbGVkLCB3aGVuIHRoZSBpdGVtIGlzIGJlaW5nIG1vdmVkIGJ5IDEgcHggKi9cbiAgICBvbk1vdmUobW91c2VQb3NpdGlvbjogRWxlbWVudFBvc2l0aW9uLCBkcmFnZ2VkSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgLyoqIFRlbXBvcmFyeSBvYmplY3QsIHRvIHN0b3JlIGxvd2VzdCBkaXN0YW5jZSB2YWx1ZXMgKi9cbiAgICAgICAgbGV0IGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3RJdGVtID0gdGhpcy5fZWxlbWVudHNDb29yZGluYXRlcy5maW5kKChlbGVtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgLyoqIENoZWNrIGlmIGVsZW1lbnQgY2FuIGJlIHJlcGxhY2VkICovXG4gICAgICAgICAgICBpZiAoIWVsZW1lbnQuc3RpY2tUb1Bvc2l0aW9uICYmIGNsb3Nlc3RJdGVtSW5kZXggIT09IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNNb3VzZU9uRWxlbWVudCA9IF9pc01vdXNlT25FbGVtZW50KGVsZW1lbnQsIG1vdXNlUG9zaXRpb24pO1xuICAgICAgICAgICAgICAgIGlmIChpc01vdXNlT25FbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBpbmRleDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghY2xvc2VzdEl0ZW0pIHtcbiAgICAgICAgICAgIGNsb3Nlc3RJdGVtSW5kZXggPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqIElmIHRoZSBjbG9zZXN0IGVsZW1lbnQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG9sZCBvbmUsIG5ldyBvbmUgaXMgcGlja2VkLiBJdCBwcmV2ZW50cyBmcm9tIHBlcmZvcm1hbmNlIGlzc3VlcyAqL1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAoY2xvc2VzdEl0ZW1JbmRleCB8fCBjbG9zZXN0SXRlbUluZGV4ID09PSAwKSAmJlxuICAgICAgICAgICAgKGNsb3Nlc3RJdGVtSW5kZXggIT09IHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXggfHwgdGhpcy5kcm9wTW9kZSA9PT0gJ2F1dG8nKVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbExpbmVzKCk7XG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuICAgICAgICAgICAgdGhpcy5fY2xvc2VzdEl0ZW1JbmRleCA9IGNsb3Nlc3RJdGVtSW5kZXg7XG4gICAgICAgICAgICB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uID0gdGhpcy5fZWxlbWVudHNDb29yZGluYXRlc1tjbG9zZXN0SXRlbUluZGV4XS5wb3NpdGlvbjtcbiAgICAgICAgICAgIC8vIElmIGNsb3Nlc3QgaXRlbSBpbmRleCBpcyBzYW1lIGFzIGRyYWdnZWQgaXRlbSwganVzdCByZW1vdmUgaW5kaWNhdG9yc1xuICAgICAgICAgICAgaWYgKGNsb3Nlc3RJdGVtSW5kZXggPT09IGRyYWdnZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUFsbFJlcGxhY2VJbmRpY2F0b3JzKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyoqIEdlbmVyYXRpbmcgbGluZSwgdGhhdCBzaG93cyB3aGVyZSB0aGUgZWxlbWVudCB3aWxsIGJlIHBsYWNlZCwgb24gZHJvcCAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuZHJvcE1vZGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKHRoaXMuX2Nsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyb3BNb2RlID09PSAnc2hpZnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlTGluZSh0aGlzLl9jbG9zZXN0SXRlbUluZGV4LCB0aGlzLl9jbG9zZXN0SXRlbVBvc2l0aW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0RHJvcE1vZGVJbmRpY2F0b3IoZHJhZ2dlZEl0ZW1JbmRleCwgY2xvc2VzdEl0ZW0sIGNsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIE1ldGhvZCBjYWxsZWQsIHdoZW4gZWxlbWVudCBpcyBzdGFydGVkIHRvIGJlIGRyYWdnZWQgKi9cbiAgICBkcmFnU3RhcnQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBkcmFnZ2VkSXRlbUVsZW1lbnQgPSB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2luZGV4XS5lbGVtZW50UmVmO1xuICAgICAgICAvKiogQ291bnRpbmcgYWxsIHRoZSBlbGVtZW50J3MgY2hvcmRzICovXG4gICAgICAgIHRoaXMuX2VsZW1lbnRzQ29vcmRpbmF0ZXMgPSB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlLm1hcCgoaXRlbTogRG5kSXRlbSkgPT5cbiAgICAgICAgICAgIGl0ZW0uZ2V0RWxlbWVudENvb3JkaW5hdGVzKHRoaXMuX2lzQmVmb3JlKGRyYWdnZWRJdGVtRWxlbWVudCwgaXRlbS5lbGVtZW50UmVmKSwgdGhpcy5ncmlkTW9kZSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogTWV0aG9kIGNhbGxlZCwgd2hlbiBlbGVtZW50IGlzIHJlbGVhc2VkICovXG4gICAgZHJhZ0VuZChkcmFnZ2VkSXRlbUluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLml0ZW1zLnNsaWNlKCk7XG4gICAgICAgIGNvbnN0IHJlcGxhY2VkSXRlbUluZGV4ID0gdGhpcy5fY2xvc2VzdEl0ZW1JbmRleDtcbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW0gPSBpdGVtc1tkcmFnZ2VkSXRlbUluZGV4XTtcblxuICAgICAgICBpZiAocmVwbGFjZWRJdGVtSW5kZXggfHwgcmVwbGFjZWRJdGVtSW5kZXggPT09IDApIHtcbiAgICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4ICE9PSByZXBsYWNlZEl0ZW1JbmRleCkge1xuICAgICAgICAgICAgICAgIGlmIChkcmFnZ2VkSXRlbUluZGV4IDwgcmVwbGFjZWRJdGVtSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGRyYWdnZWRJdGVtSW5kZXg7IGkgPCByZXBsYWNlZEl0ZW1JbmRleDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IGl0ZW1zW2kgKyAxXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBkcmFnZ2VkSXRlbUluZGV4OyBpID4gcmVwbGFjZWRJdGVtSW5kZXg7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpIC0gMV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvKiogUmVwbGFjaW5nIGl0ZW1zICovXG4gICAgICAgICAgICAgICAgaXRlbXNbcmVwbGFjZWRJdGVtSW5kZXhdID0gZHJhZ2dlZEl0ZW07XG5cbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zQ2hhbmdlLmVtaXQoaXRlbXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLml0ZW1Ecm9wcGVkLmVtaXQoe1xuICAgICAgICAgICAgICAgIHJlcGxhY2VkSXRlbUluZGV4LFxuICAgICAgICAgICAgICAgIGRyYWdnZWRJdGVtSW5kZXgsXG4gICAgICAgICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgICAgICAgaW5zZXJ0QXQ6IHRoaXMuX2Nsb3Nlc3RJdGVtUG9zaXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZTogdGhpcy5kcm9wTW9kZSAhPT0gJ2F1dG8nID8gdGhpcy5kcm9wTW9kZSA6IHRoaXMuX2RldGVjdGVkRHJvcE1vZGVcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICAgICAgdGhpcy5fcmVtb3ZlQWxsUmVwbGFjZUluZGljYXRvcnMoKTtcblxuICAgICAgICAgICAgLyoqIFJlc2V0ICovXG4gICAgICAgICAgICB0aGlzLl9lbGVtZW50c0Nvb3JkaW5hdGVzID0gW107XG4gICAgICAgICAgICB0aGlzLl9jbG9zZXN0SXRlbUluZGV4ID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX2Nsb3Nlc3RJdGVtUG9zaXRpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZWxlY3REcm9wTW9kZUluZGljYXRvcihcbiAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyLFxuICAgICAgICBjbG9zZXN0SXRlbTogRWxlbWVudENob3JkIHwgdW5kZWZpbmVkLFxuICAgICAgICBjbG9zZXN0SXRlbUluZGV4OiBudW1iZXJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjbG9zZXN0SXRlbSB8fCAhdGhpcy5fZG5kSXRlbVJlZmVyZW5jZVtkcmFnZ2VkSXRlbUluZGV4XSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG5ld0RldGVjdGVkRHJvcE1vZGU6ICdzaGlmdCcgfCAnZ3JvdXAnO1xuICAgICAgICBjb25zdCBkcmFnZ2VkRWxtQ29vcmRzID1cbiAgICAgICAgICAgIHRoaXMuX2RuZEl0ZW1SZWZlcmVuY2VbZHJhZ2dlZEl0ZW1JbmRleF0uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGNvbnN0IGNsb3Nlc3RJdGVtQm91bmRhcmllcyA9IGdldEVsZW1lbnRCb3VuZGFyaWVzKGNsb3Nlc3RJdGVtLCB0aGlzLnRocmVzaG9sZCk7XG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtU3RhcnRDb29yZHMgPSBnZXRFbGVtZW50U3RhcnRDb29yZHMoZHJhZ2dlZEVsbUNvb3JkcywgY2xvc2VzdEl0ZW0ucG9zaXRpb24pO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIF9iZXR3ZWVuKGRyYWdnZWRJdGVtU3RhcnRDb29yZHMueCwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnguc3RhcnQsIGNsb3Nlc3RJdGVtQm91bmRhcmllcy54LmVuZCkgJiZcbiAgICAgICAgICAgIF9iZXR3ZWVuKGRyYWdnZWRJdGVtU3RhcnRDb29yZHMueSwgY2xvc2VzdEl0ZW1Cb3VuZGFyaWVzLnkuc3RhcnQsIGNsb3Nlc3RJdGVtQm91bmRhcmllcy55LmVuZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBuZXdEZXRlY3RlZERyb3BNb2RlID0gJ2dyb3VwJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0RldGVjdGVkRHJvcE1vZGUgPSAnc2hpZnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5ld0RldGVjdGVkRHJvcE1vZGUgPT09IHRoaXMuX2RldGVjdGVkRHJvcE1vZGUgJiYgKCF0aGlzLl9saW5lc1JlbW92ZWQgfHwgIXRoaXMuX2luZGljYXRvcnNSZW1vdmVkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fZGV0ZWN0ZWREcm9wTW9kZSA9IG5ld0RldGVjdGVkRHJvcE1vZGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RldGVjdGVkRHJvcE1vZGUgPT09ICdzaGlmdCcpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUxpbmUoY2xvc2VzdEl0ZW1JbmRleCwgdGhpcy5fZWxlbWVudHNDb29yZGluYXRlc1tjbG9zZXN0SXRlbUluZGV4XS5wb3NpdGlvbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKGNsb3Nlc3RJdGVtSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZW1vdmVBbGxMaW5lcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fbGluZXNSZW1vdmVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiBpdGVtLnJlbW92ZUxpbmUoKSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5faW5kaWNhdG9yc1JlbW92ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmRuZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IGl0ZW0ucmVtb3ZlUmVwbGFjZUluZGljYXRvcigpKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZUxpbmUoY2xvc2VzdEl0ZW1JbmRleDogbnVtYmVyLCBsaW5rUG9zaXRpb246IExpbmtQb3NpdGlvbik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuICAgICAgICB0aGlzLl9saW5lc1JlbW92ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fZG5kSXRlbVJlZmVyZW5jZVtjbG9zZXN0SXRlbUluZGV4XS5jcmVhdGVMaW5lKGxpbmtQb3NpdGlvbiwgdGhpcy5ncmlkTW9kZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9jcmVhdGVSZXBsYWNlSW5kaWNhdG9yKGNsb3Nlc3RJdGVtSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxMaW5lcygpO1xuICAgICAgICB0aGlzLl9yZW1vdmVBbGxSZXBsYWNlSW5kaWNhdG9ycygpO1xuICAgICAgICB0aGlzLl9pbmRpY2F0b3JzUmVtb3ZlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9kbmRJdGVtUmVmZXJlbmNlW2Nsb3Nlc3RJdGVtSW5kZXhdLmNyZWF0ZVJlcGxhY2VJbmRpY2F0b3IoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3JlZnJlc2hRdWVyeUxpc3QoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZnJlc2gkID0gbWVyZ2UodGhpcy5fcmVmcmVzaCQsIHRoaXMuX29uRGVzdHJveSQpO1xuICAgICAgICB0aGlzLl9yZWZyZXNoJC5uZXh0KCk7XG5cbiAgICAgICAgdGhpcy5fZG5kSXRlbVJlZmVyZW5jZSA9IHRoaXMuZG5kSXRlbXMudG9BcnJheSgpO1xuXG4gICAgICAgIHRoaXMuX2NoYW5nZURyYWdnYWJsZVN0YXRlKHRoaXMuX2RyYWdnYWJsZSk7XG5cbiAgICAgICAgdGhpcy5kbmRJdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaXRlbS5tb3ZlZC5waXBlKHRha2VVbnRpbChyZWZyZXNoJCkpLnN1YnNjcmliZSgocG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbikgPT4gdGhpcy5vbk1vdmUocG9zaXRpb24sIGluZGV4KSk7XG4gICAgICAgICAgICBpdGVtLnN0YXJ0ZWQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kcmFnU3RhcnQoaW5kZXgpKTtcbiAgICAgICAgICAgIGl0ZW0ucmVsZWFzZWQucGlwZSh0YWtlVW50aWwocmVmcmVzaCQpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5kcmFnRW5kKGluZGV4KSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBAaGlkZGVuXG4gICAgICogUmV0dXJuIGluZm9ybWF0aW9uIGlmIGVsZW1lbnQgaXMgcGxhY2VkIGJlZm9yZSB0aGUgZHJhZ2dlZCBlbGVtZW50XG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXNCZWZvcmUoZHJhZ2dlZEVsZW1lbnQ6IEVsZW1lbnRSZWYsIHRhcmdldEVsZW1lbnQ6IEVsZW1lbnRSZWYpOiBib29sZWFuIHtcbiAgICAgICAgLyoqIFNvbWV0aW1lcyB0aGUgZWxlbWVudCBhcmUgbm90IHN0cmFpZ2h0IGluIG9uZSBjb2x1bW4sIHRoYXQncyB3aHkgb2Zmc2V0IGlzIG5lZWRlZCAqL1xuICAgICAgICBjb25zdCBWRVJUSUNBTF9PRkZTRVQgPSAyMDtcblxuICAgICAgICAvKiogRGlzdGFuY2VzIGZyb20gdGhlIHRvcCBvZiBzY3JlZW4gKi9cbiAgICAgICAgY29uc3QgZHJhZ2dlZEVsZW1lbnRCb3VuZCA9IDxET01SZWN0PmRyYWdnZWRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnRCb3VuZCA9IDxET01SZWN0PnRhcmdldEVsZW1lbnQubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgICBpZiAoZHJhZ2dlZEVsZW1lbnRCb3VuZC50b3AgLSB0YXJnZXRFbGVtZW50Qm91bmQudG9wID4gVkVSVElDQUxfT0ZGU0VUKSB7XG4gICAgICAgICAgICAvKiogSWYgZWxlbWVudCBpcyBoaWdoZXIgdGhhbiB0aGUgZHJhZ2dlZCBlbGVtZW50LCBpdCdzIGZvciBzdXJlIGJlZm9yZSAqL1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0RWxlbWVudEJvdW5kLnRvcCAtIGRyYWdnZWRFbGVtZW50Qm91bmQudG9wID4gVkVSVElDQUxfT0ZGU0VUKSB7XG4gICAgICAgICAgICAvKiogSWYgZWxlbWVudCBpcyBsb3dlciB0aGFuIHRoZSBkcmFnZ2VkIGVsZW1lbnQsIGl0J3MgZm9yIHN1cmUgYWZ0ZXIgKi9cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8qKiBJZiBlbGVtZW50cyBhcmUgaW4gc2FtZSBsZXZlbCwgdGhlIGhvcml6b250YWwgcG9zaXRpb24gZGVjaWRlcyBpZiBpdCdzIGJlZm9yZS9hZnRlciAqL1xuICAgICAgICAgICAgcmV0dXJuIGRyYWdnZWRFbGVtZW50Qm91bmQubGVmdCAtIHRhcmdldEVsZW1lbnRCb3VuZC5sZWZ0ID4gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfY2hhbmdlRHJhZ2dhYmxlU3RhdGUoZHJhZ2dhYmxlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRuZEl0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLmRuZEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICBpdGVtLmxpc3REcmFnZ2FibGUgPSBkcmFnZ2FibGU7XG4gICAgICAgICAgICAgICAgaXRlbS5jaGFuZ2VDREtEcmFnU3RhdGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5mdW5jdGlvbiBfaXNNb3VzZU9uRWxlbWVudChlbGVtZW50OiBFbGVtZW50Q2hvcmQsIG1vdXNlUG9zaXRpb246IEVsZW1lbnRQb3NpdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHN0YXJ0WCA9IGVsZW1lbnQueDtcbiAgICBjb25zdCBlbmRYID0gZWxlbWVudC54ICsgZWxlbWVudC53aWR0aDtcblxuICAgIGNvbnN0IHN0YXJ0WSA9IGVsZW1lbnQueTtcbiAgICBjb25zdCBlbmRZID0gZWxlbWVudC55ICsgZWxlbWVudC5oZWlnaHQ7XG5cbiAgICByZXR1cm4gX2JldHdlZW4obW91c2VQb3NpdGlvbi54LCBzdGFydFgsIGVuZFgpICYmIF9iZXR3ZWVuKG1vdXNlUG9zaXRpb24ueSwgc3RhcnRZLCBlbmRZKTtcbn1cblxuZnVuY3Rpb24gX2JldHdlZW4oeDogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4geCA+PSBtaW4gJiYgeCA8PSBtYXg7XG59XG5cbmludGVyZmFjZSBFbGVtZW50Qm91bmRhcmllcyB7XG4gICAgeDoge1xuICAgICAgICBzdGFydDogbnVtYmVyO1xuICAgICAgICBlbmQ6IG51bWJlcjtcbiAgICB9O1xuICAgIHk6IHtcbiAgICAgICAgc3RhcnQ6IG51bWJlcjtcbiAgICAgICAgZW5kOiBudW1iZXI7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudFN0YXJ0Q29vcmRzKHJlY3Q6IERPTVJlY3QsIHBvc2l0aW9uOiBFbGVtZW50Q2hvcmRbJ3Bvc2l0aW9uJ10pOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAgIHg6IHBvc2l0aW9uID09PSAnYWZ0ZXInID8gcmVjdC54ICsgcmVjdC53aWR0aCA6IHJlY3QueCxcbiAgICAgICAgeTogcG9zaXRpb24gPT09ICdhZnRlcicgPyByZWN0LnkgKyByZWN0LmhlaWdodCA6IHJlY3QueVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRCb3VuZGFyaWVzKGNvb3JkaW5hdGVzOiBFbGVtZW50Q2hvcmQsIHRocmVzaG9sZDogbnVtYmVyKTogRWxlbWVudEJvdW5kYXJpZXMge1xuICAgIGNvbnN0IHdpZHRoT2Zmc2V0ID0gY29vcmRpbmF0ZXMud2lkdGggKiAoY29vcmRpbmF0ZXMucG9zaXRpb24gPT09ICdhZnRlcicgPyAxIDogLTEpO1xuICAgIGNvbnN0IGhlaWdodE9mZnNldCA9IGNvb3JkaW5hdGVzLmhlaWdodCAqIChjb29yZGluYXRlcy5wb3NpdGlvbiA9PT0gJ2FmdGVyJyA/IDEgOiAtMSk7XG4gICAgY29uc3QgeFN0YXJ0ID0gY29vcmRpbmF0ZXMucG9zaXRpb24gPT09ICdhZnRlcicgPyBjb29yZGluYXRlcy54IDogY29vcmRpbmF0ZXMueCArIGNvb3JkaW5hdGVzLndpZHRoO1xuICAgIGNvbnN0IHhFbmQgPSB4U3RhcnQgKyB3aWR0aE9mZnNldCArICh3aWR0aE9mZnNldCAvIDIpICogdGhyZXNob2xkO1xuICAgIGNvbnN0IHlTdGFydCA9IGNvb3JkaW5hdGVzLnBvc2l0aW9uID09PSAnYWZ0ZXInID8gY29vcmRpbmF0ZXMueSA6IGNvb3JkaW5hdGVzLnkgKyBjb29yZGluYXRlcy5oZWlnaHQ7XG4gICAgY29uc3QgeUVuZCA9IHlTdGFydCArIGhlaWdodE9mZnNldCArIChoZWlnaHRPZmZzZXQgLyAyKSAqIHRocmVzaG9sZDtcbiAgICByZXR1cm4ge1xuICAgICAgICB4OiB7XG4gICAgICAgICAgICBzdGFydDogeFN0YXJ0ID4geEVuZCA/IHhFbmQgOiB4U3RhcnQsXG4gICAgICAgICAgICBlbmQ6IHhTdGFydCA+IHhFbmQgPyB4U3RhcnQgOiB4RW5kXG4gICAgICAgIH0sXG4gICAgICAgIHk6IHtcbiAgICAgICAgICAgIHN0YXJ0OiB5U3RhcnQgPiB5RW5kID8geUVuZCA6IHlTdGFydCxcbiAgICAgICAgICAgIGVuZDogeVN0YXJ0ID4geUVuZCA/IHlTdGFydCA6IHlFbmRcbiAgICAgICAgfVxuICAgIH07XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RyYWctYW5kLWRyb3AvZG5kLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTGlua1Bvc2l0aW9uID0gJ2FmdGVyJyB8ICdiZWZvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRDaG9yZCB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICBwb3NpdGlvbjogTGlua1Bvc2l0aW9uO1xuICAgIHN0aWNrVG9Qb3NpdGlvbj86IGJvb2xlYW47XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZERyb3BFdmVudDxUPiB7XG4gICAgaXRlbXM6IEFycmF5PFQ+O1xuICAgIHJlcGxhY2VkSXRlbUluZGV4OiBudW1iZXI7XG4gICAgZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRQb3NpdGlvbiB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEbmRJdGVtIHtcbiAgICBlbGVtZW50UmVmOiBFbGVtZW50UmVmO1xuICAgIGdldEVsZW1lbnRDb29yZGluYXRlczogKGlzQmVmb3JlOiBib29sZWFuLCBncmlkTW9kZTogYm9vbGVhbikgPT4gRWxlbWVudENob3JkO1xuICAgIHJlbW92ZUxpbmU6ICgpID0+IHZvaWQ7XG4gICAgcmVtb3ZlUmVwbGFjZUluZGljYXRvcjogKCkgPT4gdm9pZDtcbiAgICBjcmVhdGVMaW5lOiAobGlua1Bvc2l0aW9uOiBMaW5rUG9zaXRpb24sIGdyaWRNb2RlOiBib29sZWFuKSA9PiB2b2lkO1xuICAgIGNyZWF0ZVJlcGxhY2VJbmRpY2F0b3I6ICgpID0+IHZvaWQ7XG4gICAgbW92ZWQ6IE9ic2VydmFibGU8RWxlbWVudFBvc2l0aW9uPjtcbiAgICByZWxlYXNlZDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICBzdGFydGVkOiBPYnNlcnZhYmxlPHZvaWQ+O1xuICAgIGxpc3REcmFnZ2FibGU6IGJvb2xlYW47XG4gICAgY2hhbmdlQ0RLRHJhZ1N0YXRlOiAoKSA9PiB2b2lkO1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5kLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL3V0aWxzL2RyYWctYW5kLWRyb3AvZG5kLmludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IHR5cGUgTGlua1Bvc2l0aW9uID0gJ2FmdGVyJyB8ICdiZWZvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVsZW1lbnRDaG9yZCB7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICBwb3NpdGlvbjogTGlua1Bvc2l0aW9uO1xuICAgIHN0aWNrVG9Qb3NpdGlvbj86IGJvb2xlYW47XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGZERyb3BFdmVudDxUPiB7XG4gICAgaXRlbXM6IEFycmF5PFQ+O1xuICAgIHJlcGxhY2VkSXRlbUluZGV4OiBudW1iZXI7XG4gICAgZHJhZ2dlZEl0ZW1JbmRleDogbnVtYmVyO1xuICAgIGluc2VydEF0OiAnYmVmb3JlJyB8ICdhZnRlcicgfCBudWxsO1xuICAgIG1vZGU6IEZkRG5kRHJvcEV2ZW50TW9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50UG9zaXRpb24ge1xuICAgIHg6IG51bWJlcjtcbiAgICB5OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG5kSXRlbSB7XG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcbiAgICBnZXRFbGVtZW50Q29vcmRpbmF0ZXM6IChpc0JlZm9yZTogYm9vbGVhbiwgZ3JpZE1vZGU6IGJvb2xlYW4pID0+IEVsZW1lbnRDaG9yZDtcbiAgICByZW1vdmVMaW5lOiAoKSA9PiB2b2lkO1xuICAgIHJlbW92ZVJlcGxhY2VJbmRpY2F0b3I6ICgpID0+IHZvaWQ7XG4gICAgY3JlYXRlTGluZTogKGxpbmtQb3NpdGlvbjogTGlua1Bvc2l0aW9uLCBncmlkTW9kZTogYm9vbGVhbikgPT4gdm9pZDtcbiAgICBjcmVhdGVSZXBsYWNlSW5kaWNhdG9yOiAoKSA9PiB2b2lkO1xuICAgIG1vdmVkOiBPYnNlcnZhYmxlPEVsZW1lbnRQb3NpdGlvbj47XG4gICAgcmVsZWFzZWQ6IE9ic2VydmFibGU8dm9pZD47XG4gICAgc3RhcnRlZDogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICBsaXN0RHJhZ2dhYmxlOiBib29sZWFuO1xuICAgIGNoYW5nZUNES0RyYWdTdGF0ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgRmREbmREcm9wVHlwZSA9ICdzaGlmdCcgfCAnZ3JvdXAnIHwgJ2F1dG8nO1xuZXhwb3J0IHR5cGUgRmREbmREcm9wRXZlbnRNb2RlID0gJ3NoaWZ0JyB8ICdncm91cCc7XG4iXX0=