@libs-ui/components-popover 0.2.298 → 0.2.300
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.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { ChangeDetectionStrategy, Component, ElementRef, effect, inject, input, output, signal, untracked } from '@angular/core';
|
|
3
3
|
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
4
|
-
import { checkMouseOverInContainer, get, getViewport, isNil, set } from '@libs-ui/utils';
|
|
4
|
+
import { checkMouseOverInContainer, get, getEventNameHandleClick, getViewport, isNil, set } from '@libs-ui/utils';
|
|
5
5
|
import { Subject, Subscription, fromEvent } from 'rxjs';
|
|
6
6
|
import { debounceTime, takeUntil, tap } from 'rxjs/operators';
|
|
7
7
|
import { getPopoverTimerDestroyInQueryUrl } from './defines/constants.define';
|
|
@@ -18,7 +18,6 @@ export class LibsUiComponentsPopoverComponent {
|
|
|
18
18
|
windowClick;
|
|
19
19
|
windowMouseUp;
|
|
20
20
|
windowMousemove;
|
|
21
|
-
windowTouch;
|
|
22
21
|
popoverOverlayComponent;
|
|
23
22
|
subsEventPopup = new Subscription();
|
|
24
23
|
onDestroy = new Subject();
|
|
@@ -103,14 +102,13 @@ export class LibsUiComponentsPopoverComponent {
|
|
|
103
102
|
ngAfterContentInit() {
|
|
104
103
|
const nativeEl = this.Element;
|
|
105
104
|
this.mouseEnter = this.initObservable(nativeEl, 'mouseenter');
|
|
106
|
-
this.mouseClick = this.initObservable(nativeEl,
|
|
105
|
+
this.mouseClick = this.initObservable(nativeEl, getEventNameHandleClick);
|
|
107
106
|
this.mouseWheel = this.initObservable(window, 'wheel');
|
|
108
107
|
this.windowResize = this.initObservable(window, 'resize');
|
|
109
108
|
this.windowWheel = this.initObservable(window, 'wheel');
|
|
110
109
|
this.windowMouseDown = this.initObservable(window, 'mousedown');
|
|
111
|
-
this.windowClick = this.initObservable(window,
|
|
110
|
+
this.windowClick = this.initObservable(window, getEventNameHandleClick);
|
|
112
111
|
this.windowMouseUp = this.initObservable(window, 'mouseup');
|
|
113
|
-
this.windowTouch = this.initObservable(window, 'touchstart');
|
|
114
112
|
this.windowMousemove = this.initObservable(window, 'mousemove');
|
|
115
113
|
this.mouseEnter.subscribe(() => {
|
|
116
114
|
if (!this.mode().includes('hover')) {
|
|
@@ -236,9 +234,6 @@ export class LibsUiComponentsPopoverComponent {
|
|
|
236
234
|
this.handlerWindowEventRemovePopoverOverlay(this.windowMouseDown, flagsMouses);
|
|
237
235
|
this.handlerWindowEventRemovePopoverOverlay(this.windowMouseUp, flagsMouses);
|
|
238
236
|
this.handlerWindowEventRemovePopoverOverlay(this.windowWheel, flagsMouses);
|
|
239
|
-
this.subsEventPopup.add(this.windowTouch.subscribe(() => {
|
|
240
|
-
this.removePopoverOverlay();
|
|
241
|
-
}));
|
|
242
237
|
}
|
|
243
238
|
handlerWindowEventRemovePopoverOverlay(obs, flagsMouses) {
|
|
244
239
|
this.subsEventPopup.add(obs.pipe(debounceTime(10)).subscribe(() => {
|
|
@@ -316,4 +311,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
316
311
|
type: Component,
|
|
317
312
|
args: [{ selector: 'libs_ui-components-popover,[LibsUiComponentsPopoverDirective]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content />\n", styles: ["::ng-deep .popover-text-ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .cursor-pointer{cursor:pointer}\n"] }]
|
|
318
313
|
}], ctorParameters: () => [] });
|
|
319
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQWdCLFVBQVUsRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEwsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUs5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFVdEYsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxtQkFBbUI7SUFDWCxVQUFVLENBQTBCO0lBQ3BDLFVBQVUsQ0FBMEI7SUFDcEMsVUFBVSxDQUEwQjtJQUNwQyxZQUFZLENBQTBCO0lBQ3RDLFdBQVcsQ0FBMEI7SUFDckMsZUFBZSxDQUEwQjtJQUN6QyxXQUFXLENBQTBCO0lBQ3JDLGFBQWEsQ0FBMEI7SUFDdkMsZUFBZSxD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LElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7d0dBdFZVLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLHc5RUNyQjdDLGtCQUNBOzs0RkRvQmEsZ0NBQWdDO2tCQVI1QyxTQUFTOytCQUVFLCtEQUErRCxjQUc3RCxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgT25Jbml0LCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsLCB1bnRyYWNrZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExpYnNVaUR5bmFtaWNDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnQGxpYnMtdWkvc2VydmljZXMtZHluYW1pYy1jb21wb25lbnQnO1xuaW1wb3J0IHsgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lciwgZ2V0LCBnZXRWaWV3cG9ydCwgaXNOaWwsIHNldCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgZ2V0UG9wb3ZlclRpbWVyRGVzdHJveUluUXVlcnlVcmwgfSBmcm9tICcuL2RlZmluZXMvY29uc3RhbnRzLmRlZmluZSc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2ZsYWctbW91c2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZXMvZnVuY3Rpb24tY29udHJvbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVBvcG92ZXJPdmVybGF5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL292ZXJsYXkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04sIFRZUEVfUE9QT1ZFUl9FVkVOVCwgVFlQRV9QT1BPVkVSX01PREUsIFRZUEVfUE9QT1ZFUl9UWVBFIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvcG92ZXIudHlwZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQgfSBmcm9tICcuL292ZXJsYXkvb3ZlcmxheS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlcixbTGlic1VpQ29tcG9uZW50c1BvcG92ZXJEaXJlY3RpdmVdJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvcG92ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuc2NzcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcml2YXRlIG1vdXNlRW50ZXIhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIG1vdXNlV2hlZWwhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIG1vdXNlQ2xpY2shOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd1Jlc2l6ZSE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93V2hlZWwhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlRG93biE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93Q2xpY2shOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlVXAhOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHdpbmRvd01vdXNlbW92ZSE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93VG91Y2ghOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+O1xuICBwcml2YXRlIHBvcG92ZXJPdmVybGF5Q29tcG9uZW50ITogQ29tcG9uZW50UmVmPExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic0V2ZW50UG9wdXAgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHByaXZhdGUgb25EZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBmdW5jdGlvbnNDb250cm9sPzogSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudDtcbiAgcHJpdmF0ZSBmaXJzdENsaWNrID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBjb250ZW50SW5uZXJIdG1sID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcml2YXRlIHRpbWVyID0gc2lnbmFsPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSBkaXJlY3Rpb25Qb3BvdmVyID0gc2lnbmFsPFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgZnJhbWVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcblxuICAvLyAjcmVnaW9uIElOUFVUXG4gIHJlYWRvbmx5IGRlYnVnSWQgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGZsYWdNb3VzZSA9IGlucHV0PElGbGFnTW91c2UsIElGbGFnTW91c2U+KHsgaXNNb3VzZUVudGVyOiBmYWxzZSwgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UsIGlzQ29udGFpbmVySGFzU2Nyb2xsOiBmYWxzZSB9LCB7XG4gICAgdHJhbnNmb3JtOiAodmFsdWU6IGFueSkgPT4gdmFsdWUgPyB2YWx1ZSA6IHsgaXNNb3VzZUVudGVyOiBmYWxzZSwgaXNNb3VzZUVudGVyQ29udGVudDogZmFsc2UsIGlzQ29udGFpbmVySGFzU2Nyb2xsOiBmYWxzZSB9XG4gIH0pO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQ8VFlQRV9QT1BPVkVSX1RZUEU+KCdvdGhlcicpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8VFlQRV9QT1BPVkVSX01PREU+KCdob3ZlcicpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dCh7fSwgeyB0cmFuc2Zvcm06ICh2YWx1ZTogSVBvcG92ZXJPdmVybGF5IHwgdW5kZWZpbmVkKSA9PiB2YWx1ZSA/IHZhbHVlIDoge30gfSk7XG4gIHJlYWRvbmx5IGlnbm9yZVNob3dQb3BvdmVyID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZWxlbWVudFJlZkN1c3RvbSA9IGlucHV0PEhUTUxFbGVtZW50PigpO1xuICByZWFkb25seSBpbml0RXZlbnRJbkVsZW1lbnRSZWZDdXN0b20gPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGNsYXNzSW5jbHVkZSA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZCwgc3RyaW5nIHwgdW5kZWZpbmVkPignJywgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gJycgfSk7XG4gIHJlYWRvbmx5IGlnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUN1cnNvclBvaW50ZXJNb2RlTGlrZUNsaWNrID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNsaWNrT3V0c2lkZSA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0RXZlbnQgPSBvdXRwdXQ8VFlQRV9QT1BPVkVSX0VWRU5UPigpO1xuICByZWFkb25seSBvdXRDaGFuZ1N0YWdlRmxhZ01vdXNlID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dEV2ZW50UG9wb3ZlckNvbnRlbnQgPSBvdXRwdXQ8VFlQRV9QT1BPVkVSX0RJUkVDVElPTj4oKTtcbiAgcmVhZG9ubHkgb3V0RnVuY3Rpb25zQ29udHJvbCA9IG91dHB1dDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50PigpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBkeW5hbWljU2VydmljZSA9IGluamVjdChMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgbGV0IGNsYXNzRGVmYXVsdDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoY2xhc3NEZWZhdWx0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2xhc3NEZWZhdWx0ID0gdGhpcy5FbGVtZW50LmNsYXNzTmFtZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmVsZW1lbnRSZWZDdXN0b20oKSAhPT0gdGhpcy5FbGVtZW50KSB7XG4gICAgICAgIHRoaXMuRWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc0RlZmF1bHQgfHwgJyc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICd0ZXh0Jykge1xuICAgICAgICB0aGlzLkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncG9wb3Zlci10ZXh0LWVsbGlwc2lzJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5tb2RlKCkuaW5jbHVkZXMoJ2NsaWNrJykgJiYgIXRoaXMuaWdub3JlQ3Vyc29yUG9pbnRlck1vZGVMaWtlQ2xpY2soKSkge1xuICAgICAgICB0aGlzLkVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnY3Vyc29yLXBvaW50ZXInKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNsYXNzSW5jbHVkZSgpKSB7XG4gICAgICAgIHRoaXMuY2xhc3NJbmNsdWRlKCk/LnNwbGl0KCcgJykuZm9yRWFjaChjbGFzc05hbWUgPT4ge1xuICAgICAgICAgIGlmICghY2xhc3NOYW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuRWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgZmlyc3QgPSB0cnVlO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZygpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQ/Lmluc3RhbmNlICYmICFmaXJzdCkge1xuICAgICAgICAgIHRoaXMudXBkYXRlUG9wb3Zlck92ZXJsYXlQb3NpdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGZpcnN0ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3V0RXZlbnRQb3BvdmVyQ29udGVudC5zdWJzY3JpYmUoZGlyZWN0aW9uID0+IHRoaXMuZGlyZWN0aW9uUG9wb3Zlci5zZXQoZGlyZWN0aW9uKSk7XG4gICAgdGhpcy5mdW5jdGlvbnNDb250cm9sID0ge1xuICAgICAgcmVtb3ZlUG9wb3Zlck92ZXJsYXk6IHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkuYmluZCh0aGlzKSxcbiAgICAgIHVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb246IHRoaXMudXBkYXRlUG9wb3Zlck92ZXJsYXlQb3NpdGlvbi5iaW5kKHRoaXMpLFxuICAgICAgZ2V0UmVjdENvbnRhaW5lcjogYXN5bmMgKCkgPT4gKHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBnZXRSZWN0Q29udGVudDogYXN5bmMgKCkgPT4gKHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQ/Lmluc3RhbmNlPy5Db250YWluZXJFbGVtZW50KT8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksXG4gICAgICBzaG93UG9wb3ZlcjogdGhpcy5hZGRQb3BvdmVyQ29udGVudC5iaW5kKHRoaXMpLFxuICAgICAgdXBkYXRlUG9wb3Zlck92ZXJsYXk6IHRoaXMudXBkYXRlUG9wb3Zlck92ZXJsYXkuYmluZCh0aGlzKSxcbiAgICB9O1xuICAgIHRoaXMub3V0RnVuY3Rpb25zQ29udHJvbC5lbWl0KHRoaXMuZnVuY3Rpb25zQ29udHJvbCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgY29uc3QgbmF0aXZlRWwgPSB0aGlzLkVsZW1lbnQ7XG4gICAgdGhpcy5tb3VzZUVudGVyID0gdGhpcy5pbml0T2JzZXJ2YWJsZShuYXRpdmVFbCwgJ21vdXNlZW50ZXInKTtcbiAgICB0aGlzLm1vdXNlQ2xpY2sgPSB0aGlzLmluaXRPYnNlcnZhYmxlKG5hdGl2ZUVsLCAnY2xpY2snKTtcbiAgICB0aGlzLm1vdXNlV2hlZWwgPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ3doZWVsJyk7XG4gICAgdGhpcy53aW5kb3dSZXNpemUgPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ3Jlc2l6ZScpO1xuICAgIHRoaXMud2luZG93V2hlZWwgPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ3doZWVsJyk7XG4gICAgdGhpcy53aW5kb3dNb3VzZURvd24gPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ21vdXNlZG93bicpO1xuICAgIHRoaXMud2luZG93Q2xpY2sgPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ2NsaWNrJyk7XG4gICAgdGhpcy53aW5kb3dNb3VzZVVwID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdtb3VzZXVwJyk7XG4gICAgdGhpcy53aW5kb3dUb3VjaCA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAndG91Y2hzdGFydCcpO1xuICAgIHRoaXMud2luZG93TW91c2Vtb3ZlID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdtb3VzZW1vdmUnKTtcbiAgICB0aGlzLm1vdXNlRW50ZXIuc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgaWYgKCF0aGlzLm1vZGUoKS5pbmNsdWRlcygnaG92ZXInKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3RleHQnICYmIG5hdGl2ZUVsPy5jbGllbnRXaWR0aCA+PSBuYXRpdmVFbC5zY3JvbGxXaWR0aCAmJiAhdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmFkZFBvcG92ZXJDb250ZW50KCk7XG4gICAgfSk7XG4gICAgdGhpcy5tb3VzZUNsaWNrLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpcnN0Q2xpY2sudXBkYXRlKHZhbCA9PiB0aGlzLmlnbm9yZVNob3dQb3BvdmVyKCkgPyBmYWxzZSA6ICF2YWwpO1xuICAgICAgdGhpcy5vdXRFdmVudC5lbWl0KCdjbGljaycpO1xuXG4gICAgICBpZiAoIXRoaXMubW9kZSgpLnN0YXJ0c1dpdGgoJ2NsaWNrJykpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5tb2RlKCkgPT09ICdjbGljay10b2dnbGUnICYmICF0aGlzLmZpcnN0Q2xpY2soKSkge1xuICAgICAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRQb3BvdmVyQ29udGVudCgpO1xuICAgIH0pO1xuICAgIHRoaXMud2luZG93UmVzaXplLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb24uYmluZCh0aGlzKSk7XG4gIH1cblxuICAvLyAjcmVnaW9uIEZVTkNUSU9OU1xuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVBvcG92ZXJPdmVybGF5KCkge1xuICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgICAgaWYgKCF0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50IHx8ICF0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlIHx8ICF0aGlzLmNvbmZpZygpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudC5pbnN0YW5jZTtcbiAgICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5lbGVtZW50UmVmQ3VzdG9tKCkgfHwgdGhpcy5FbGVtZW50O1xuXG4gICAgICBpbnN0YW5jZS5zZXRDb25maWcobmF0aXZlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHsgLi4uICh0aGlzLmNvbmZpZygpIHx8IHt9KSwgLi4udGhpcy5nZXREZWZhdWx0Q29uZmlncygpIH0sIHRoaXMuaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCgpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUG9wb3Zlck92ZXJsYXlQb3NpdGlvbigpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcigpKTtcbiAgICB0aGlzLnRpbWVyLnNldChzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGlmICghdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCB8fCAhdGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudC5pbnN0YW5jZSB8fCAhdGhpcy5jb25maWcoKSB8fCAhdGhpcy5mdW5jdGlvbnNDb250cm9sKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZpZXdQb3J0ID0gZ2V0Vmlld3BvcnQoKTtcbiAgICAgIGNvbnN0IHJlY3RMaXN0VmlldyA9IGF3YWl0IHRoaXMuZnVuY3Rpb25zQ29udHJvbC5nZXRSZWN0Q29udGVudCgpO1xuXG4gICAgICBpZiAoIXJlY3RMaXN0Vmlldykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCByZWN0Q29udGFpbmVyID0gYXdhaXQgdGhpcy5mdW5jdGlvbnNDb250cm9sLmdldFJlY3RDb250YWluZXIoKTtcbiAgICAgIGNvbnN0IGRpc3RhbmNlTGlzdFZpZXdBbmRDb250YWluZXIgPSB0aGlzLmNvbmZpZygpPy5pZ25vcmVBcnJvdyA9PT0gZmFsc2UgPyAxNCA6IDQ7XG4gICAgICBzd2l0Y2ggKHRoaXMuZGlyZWN0aW9uUG9wb3ZlcigpKSB7XG4gICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgICAgaWYgKCgocmVjdExpc3RWaWV3LnRvcCArIHJlY3RMaXN0Vmlldy5oZWlnaHQgPiB2aWV3UG9ydC5oZWlnaHQpIHx8IChyZWN0TGlzdFZpZXcudG9wIDwgKHJlY3RDb250YWluZXIudG9wICsgcmVjdENvbnRhaW5lci5oZWlnaHQpKSB8fCAocmVjdExpc3RWaWV3LnRvcCAtIChyZWN0Q29udGFpbmVyLnRvcCArIHJlY3RDb250YWluZXIuaGVpZ2h0KSA+IGRpc3RhbmNlTGlzdFZpZXdBbmRDb250YWluZXIpKSB8fCAoKHJlY3RMaXN0Vmlldy5sZWZ0ICsgcmVjdExpc3RWaWV3LndpZHRoID4gdmlld1BvcnQud2lkdGgpKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3BvdmVyT3ZlcmxheSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICd0b3AnOlxuICAgICAgICAgIGlmICgocmVjdENvbnRhaW5lci50b3AgLSAocmVjdExpc3RWaWV3LnRvcCArIHJlY3RMaXN0Vmlldy5oZWlnaHQpID4gZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lcikgfHwgKHJlY3RMaXN0Vmlldy50b3AgKyByZWN0TGlzdFZpZXcuaGVpZ2h0ICsgZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lciA+IHJlY3RDb250YWluZXIudG9wICsgMikgfHwgKChyZWN0TGlzdFZpZXcubGVmdCArIHJlY3RMaXN0Vmlldy53aWR0aCA+IHZpZXdQb3J0LndpZHRoKSkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSwgMjUwKSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGlmICh0aGlzLmluaXRFdmVudEluRWxlbWVudFJlZkN1c3RvbSgpICYmIHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmQ3VzdG9tKCkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE9ic2VydmFibGUoZWw6IGFueSwgZXZlbnROYW1lOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQ+IHtcbiAgICByZXR1cm4gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsLCBldmVudE5hbWUpLnBpcGUoXG4gICAgICB0YXAoZSA9PiAhdGhpcy5pZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCgpICYmIGUuc3RvcFByb3BhZ2F0aW9uKCkpLFxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFkZFBvcG92ZXJDb250ZW50KG5hdGl2ZUVsPzogSFRNTEVsZW1lbnQpIHtcbiAgICBpZiAodGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCB8fCB0aGlzLmlnbm9yZVNob3dQb3BvdmVyKCkgfHwgIXRoaXMuY29uZmlnKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50ID0gdGhpcy5keW5hbWljU2VydmljZS5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQpO1xuICAgIHRoaXMuZnJhbWVJZC5zZXQodGhpcy5keW5hbWljU2VydmljZS5hZGRUb0JvZHkodGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCwgdGhpcy5pc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KCkgfHwgdGhpcy5jb25maWcoKS5pc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KSk7XG4gICAgdGhpcy5vdXRFdmVudC5lbWl0KCdzaG93Jyk7XG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlO1xuXG4gICAgbmF0aXZlRWwgPSBuYXRpdmVFbCB8fCB0aGlzLmVsZW1lbnRSZWZDdXN0b20oKSB8fCB0aGlzLkVsZW1lbnQ7XG4gICAgaW5zdGFuY2Uuc2V0Q29uZmlnKG5hdGl2ZUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCB7IC4uLiAodGhpcy5jb25maWcoKSB8fCB7fSksIC4uLnRoaXMuZ2V0RGVmYXVsdENvbmZpZ3MoKSB9LCB0aGlzLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQoKSk7XG4gICAgY29uc3QgZmxhZ3NNb3VzZXM6IElGbGFnTW91c2UgPSB7XG4gICAgICBpc01vdXNlRW50ZXI6IHRydWUsXG4gICAgICBpc01vdXNlRW50ZXJDb250ZW50OiBmYWxzZSxcbiAgICAgIGlzQ29udGFpbmVySGFzU2Nyb2xsOiBuYXRpdmVFbC5vZmZzZXRIZWlnaHQgPCBuYXRpdmVFbC5zY3JvbGxIZWlnaHRcbiAgICB9O1xuICAgIGNvbnN0IG5hdGl2ZUVsQ29udGFpbmVyID0gaW5zdGFuY2UuRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IG1vdXNlRW50ZXJDb250ZW50ID0gdGhpcy5pbml0T2JzZXJ2YWJsZShuYXRpdmVFbENvbnRhaW5lciwgJ21vdXNlZW50ZXInKTtcbiAgICBjb25zdCBtb3VzZUxlYXZlQ29udGVudCA9IHRoaXMuaW5pdE9ic2VydmFibGUobmF0aXZlRWxDb250YWluZXIsICdtb3VzZWxlYXZlJyk7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQoaW5zdGFuY2Uub3V0RXZlbnQuc3Vic2NyaWJlKChkaXJlY3Rpb246IFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04pID0+IHtcbiAgICAgIHRoaXMub3V0RXZlbnRQb3BvdmVyQ29udGVudC5lbWl0KGRpcmVjdGlvbik7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQobW91c2VFbnRlckNvbnRlbnQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMub3V0RXZlbnQuZW1pdCgnbW91c2VlbnRlci1jb250ZW50Jyk7XG4gICAgICBmbGFnc01vdXNlcy5pc01vdXNlRW50ZXJDb250ZW50ID0gdHJ1ZTtcbiAgICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZS5lbWl0KGZsYWdzTW91c2VzKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZCh0aGlzLm1vdXNlRW50ZXIuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMub3V0RXZlbnQuZW1pdCgnbW91c2VlbnRlci1lbGVtZW50Jyk7XG4gICAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2UuZW1pdChmbGFnc01vdXNlcyk7XG4gICAgfSkpO1xuXG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQodGhpcy5tb3VzZVdoZWVsLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBmbGFnc01vdXNlcy5pc0NvbnRhaW5lckhhc1Njcm9sbCA9IGZhbHNlO1xuXG4gICAgICBpZiAobmF0aXZlRWwub2Zmc2V0SGVpZ2h0IDwgbmF0aXZlRWwuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgIGZsYWdzTW91c2VzLmlzQ29udGFpbmVySGFzU2Nyb2xsID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICgoZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyICYmIGZsYWdzTW91c2VzLmlzQ29udGFpbmVySGFzU2Nyb2xsKSB8fCBmbGFnc01vdXNlcy5pc01vdXNlRW50ZXJDb250ZW50IHx8IHRoaXMuZmxhZ01vdXNlKCkuaXNNb3VzZUVudGVyIHx8IHRoaXMuZmxhZ01vdXNlKCkuaXNNb3VzZUVudGVyQ29udGVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgfSkpO1xuICAgIHRoaXMuaGFuZGxlck1vdXNlTGVhdmVSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd01vdXNlbW92ZSwgZmxhZ3NNb3VzZXMsICdpc01vdXNlRW50ZXInLCAnaXNNb3VzZUVudGVyQ29udGVudCcsICdtb3VzZWxlYXZlLWVsZW1lbnQnKTtcbiAgICB0aGlzLmhhbmRsZXJNb3VzZUxlYXZlUmVtb3ZlUG9wb3Zlck92ZXJsYXkobW91c2VMZWF2ZUNvbnRlbnQsIGZsYWdzTW91c2VzLCAnaXNNb3VzZUVudGVyQ29udGVudCcsICdpc01vdXNlRW50ZXInLCAnbW91c2VsZWF2ZS1jb250ZW50Jyk7XG5cbiAgICBpZiAodGhpcy5tb2RlKCkgPT09ICdjbGlja19vcGVuX2FuZF9jbGlja19wYW5lbF9jb250ZW50X2hpZGRlbicpIHtcbiAgICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKHRoaXMuaW5pdE9ic2VydmFibGUobmF0aXZlRWxDb250YWluZXIsICdjbGljaycpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICB0aGlzLmhhbmRsZXJXaW5kb3dFdmVudFJlbW92ZVBvcG92ZXJPdmVybGF5KHRoaXMud2luZG93Q2xpY2ssIGZsYWdzTW91c2VzKTtcbiAgICB0aGlzLmhhbmRsZXJXaW5kb3dFdmVudFJlbW92ZVBvcG92ZXJPdmVybGF5KHRoaXMud2luZG93TW91c2VEb3duLCBmbGFnc01vdXNlcyk7XG4gICAgdGhpcy5oYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheSh0aGlzLndpbmRvd01vdXNlVXAsIGZsYWdzTW91c2VzKTtcbiAgICB0aGlzLmhhbmRsZXJXaW5kb3dFdmVudFJlbW92ZVBvcG92ZXJPdmVybGF5KHRoaXMud2luZG93V2hlZWwsIGZsYWdzTW91c2VzKTtcbiAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZCh0aGlzLndpbmRvd1RvdWNoLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheShvYnM6IE9ic2VydmFibGU8TW91c2VFdmVudD4sIGZsYWdzTW91c2VzOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQob2JzLnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChmbGFnc01vdXNlcy5pc01vdXNlRW50ZXIgfHwgZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyQ29udGVudCB8fCB0aGlzLmlnbm9yZUNsaWNrT3V0c2lkZSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZsYWdNb3VzZSgpICYmICh0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlciB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlckNvbnRlbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlyc3RDbGljay5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlck1vdXNlTGVhdmVSZW1vdmVQb3BvdmVyT3ZlcmxheShvYnM6IE9ic2VydmFibGU8TW91c2VFdmVudD4sIGZsYWdzTW91c2VzOiB7IGlzTW91c2VFbnRlcjogYm9vbGVhbiwgaXNNb3VzZUVudGVyQ29udGVudDogYm9vbGVhbiB9LCBmbGFnS2V5Q2hhbmdlVmFsdWU6IHN0cmluZywgZmxhZ0tleUNoZWNrOiBzdHJpbmcsIG91dEV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZChvYnMucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLm91dEV2ZW50LmVtaXQob3V0RXZlbnQpKSxcbiAgICAgIGRlYm91bmNlVGltZShnZXRQb3BvdmVyVGltZXJEZXN0cm95SW5RdWVyeVVybCgpIHx8IHRoaXMuY29uZmlnKCk/LnRpbWVyRGVzdHJveSB8fCAwKVxuICAgICkuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAob3V0RXZlbnQgPT09ICdtb3VzZWxlYXZlLWVsZW1lbnQnICYmIChjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGUsIHRoaXMuRWxlbWVudCkgfHwgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcih7IGNsaWVudFg6IGUuY2xpZW50WCArIDIsIGNsaWVudFk6IGUuY2xpZW50WSArIDIgfSwgdGhpcy5FbGVtZW50KSB8fCBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKHsgY2xpZW50WDogZS5jbGllbnRYIC0gMiwgY2xpZW50WTogZS5jbGllbnRZIC0gMiB9LCB0aGlzLkVsZW1lbnQpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZXQoZmxhZ3NNb3VzZXMsIGZsYWdLZXlDaGFuZ2VWYWx1ZSwgZmFsc2UpO1xuICAgICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ3NNb3VzZXMpO1xuICAgICAgaWYgKHRoaXMuZmxhZ01vdXNlKCkgJiYgKHRoaXMuZmxhZ01vdXNlKCkuaXNNb3VzZUVudGVyIHx8IHRoaXMuZmxhZ01vdXNlKCkuaXNNb3VzZUVudGVyQ29udGVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2V0KGZsYWdzTW91c2VzLCBmbGFnS2V5Q2hlY2spIHx8IHRoaXMuaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDb25maWdzKCk6IElQb3BvdmVyT3ZlcmxheSB7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmNvbmZpZygpIHx8IHt9O1xuICAgIGlmICgoaXNOaWwoY29uZmlnVmFsdWUuY29udGVudCkpIHx8IChjb25maWdWYWx1ZS5jb250ZW50ID09PSB0aGlzLmNvbnRlbnRJbm5lckh0bWwoKSAmJiB0aGlzLmNvbnRlbnRJbm5lckh0bWwoKSAhPT0gdGhpcy5FbGVtZW50LmlubmVySFRNTCkpIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLmNvbnRlbnQgPSB0aGlzLkVsZW1lbnQuaW5uZXJIVE1MO1xuICAgIH1cbiAgICB0aGlzLmNvbnRlbnRJbm5lckh0bWwuc2V0KHRoaXMuRWxlbWVudC5pbm5lckhUTUwpO1xuICAgIGlmICghY29uZmlnVmFsdWUubWF4V2lkdGgpIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLm1heFdpZHRoID0gMjUwO1xuICAgIH1cbiAgICBpZiAoY29uZmlnVmFsdWUubWF4SGVpZ2h0ID09PSB1bmRlZmluZWQgfHwgY29uZmlnVmFsdWUubWF4SGVpZ2h0ID09PSAwKSB7XG4gICAgICBjb25maWdWYWx1ZS5tYXhIZWlnaHQgPSAxNDA7XG4gICAgfVxuICAgIGlmICghY29uZmlnVmFsdWUuZGlyZWN0aW9uKSB7XG4gICAgICBjb25maWdWYWx1ZS5kaXJlY3Rpb24gPSAnYm90dG9tJztcbiAgICB9XG4gICAgaWYgKCFjb25maWdWYWx1ZS5wb3NpdGlvbikge1xuICAgICAgY29uZmlnVmFsdWUucG9zaXRpb24gPSB7XG4gICAgICAgIG1vZGU6ICdjZW50ZXInLFxuICAgICAgICBkaXN0YW5jZTogMFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbW92ZVBvcG92ZXJPdmVybGF5KCkge1xuICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ3JlbW92ZScpO1xuICAgICAgdGhpcy5zdWJzRXZlbnRQb3B1cC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdWJzRXZlbnRQb3B1cCA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5keW5hbWljU2VydmljZS5yZW1vdmUodGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCwgdGhpcy5mcmFtZUlkKCkpO1xuICAgIHRoaXMuZnJhbWVJZC5zZXQoJycpO1xuICAgIHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5maXJzdENsaWNrLnNldChmYWxzZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcigpKTtcbiAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGVudCAvPlxuIl19
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvcG9wb3Zlci9zcmMvcG9wb3Zlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFvQix1QkFBdUIsRUFBRSxTQUFTLEVBQWdCLFVBQVUsRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEwsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xILE9BQU8sRUFBYyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUs5RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFVdEYsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxtQkFBbUI7SUFDWCxVQUFVLENBQTBCO0lBQ3BDLFVBQVUsQ0FBMEI7SUFDcEMsVUFBVSxDQUEwQjtJQUNwQyxZQUFZLENBQTBCO0lBQ3RDLFdBQVcsQ0FBMEI7SUFDckMsZUFBZSxDQUEwQjtJQUN6QyxXQUFXLENBQTBCO0lBQ3JDLGFBQWEsQ0FBMEI7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Q0FBZ0M7NEZBQWhDLGdDQUFnQyx3OUVDckI3QyxrQkFDQTs7NEZEb0JhLGdDQUFnQztrQkFSNUMsU0FBUzsrQkFFRSwrREFBK0QsY0FHN0QsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQWZ0ZXJDb250ZW50SW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29tcG9uZW50UmVmLCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIE9uSW5pdCwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBvdXRwdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlEeW5hbWljQ29tcG9uZW50U2VydmljZSB9IGZyb20gJ0BsaWJzLXVpL3NlcnZpY2VzLWR5bmFtaWMtY29tcG9uZW50JztcbmltcG9ydCB7IGNoZWNrTW91c2VPdmVySW5Db250YWluZXIsIGdldCwgZ2V0RXZlbnROYW1lSGFuZGxlQ2xpY2ssIGdldFZpZXdwb3J0LCBpc05pbCwgc2V0IH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBnZXRQb3BvdmVyVGltZXJEZXN0cm95SW5RdWVyeVVybCB9IGZyb20gJy4vZGVmaW5lcy9jb25zdGFudHMuZGVmaW5lJztcbmltcG9ydCB7IElGbGFnTW91c2UgfSBmcm9tICcuL2ludGVyZmFjZXMvZmxhZy1tb3VzZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCB9IGZyb20gJy4vaW50ZXJmYWNlcy9mdW5jdGlvbi1jb250cm9sLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJUG9wb3Zlck92ZXJsYXkgfSBmcm9tICcuL2ludGVyZmFjZXMvb3ZlcmxheS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVFlQRV9QT1BPVkVSX0RJUkVDVElPTiwgVFlQRV9QT1BPVkVSX0VWRU5ULCBUWVBFX1BPUE9WRVJfTU9ERSwgVFlQRV9QT1BPVkVSX1RZUEUgfSBmcm9tICcuL2ludGVyZmFjZXMvcG9wb3Zlci50eXBlJztcbmltcG9ydCB7IExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudCB9IGZyb20gJy4vb3ZlcmxheS9vdmVybGF5LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyLFtMaWJzVWlDb21wb25lbnRzUG9wb3ZlckRpcmVjdGl2ZV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9wb3Zlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9wb3BvdmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByaXZhdGUgbW91c2VFbnRlciE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgbW91c2VXaGVlbCE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgbW91c2VDbGljayE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93UmVzaXplITogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcbiAgcHJpdmF0ZSB3aW5kb3dXaGVlbCE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93TW91c2VEb3duITogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcbiAgcHJpdmF0ZSB3aW5kb3dDbGljayE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93TW91c2VVcCE6IE9ic2VydmFibGU8TW91c2VFdmVudD47XG4gIHByaXZhdGUgd2luZG93TW91c2Vtb3ZlITogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50PjtcbiAgcHJpdmF0ZSBwb3BvdmVyT3ZlcmxheUNvbXBvbmVudCE6IENvbXBvbmVudFJlZjxMaWJzVWlDb21wb25lbnRzUG9wb3Zlck92ZXJsYXlDb21wb25lbnQ+IHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHN1YnNFdmVudFBvcHVwID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgZnVuY3Rpb25zQ29udHJvbD86IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQ7XG4gIHByaXZhdGUgZmlyc3RDbGljayA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgY29udGVudElubmVySHRtbCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSB0aW1lciA9IHNpZ25hbDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgZGlyZWN0aW9uUG9wb3ZlciA9IHNpZ25hbDxUWVBFX1BPUE9WRVJfRElSRUNUSU9OIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIGZyYW1lSWQgPSBzaWduYWw8c3RyaW5nPignJyk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSBkZWJ1Z0lkID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBmbGFnTW91c2UgPSBpbnB1dDxJRmxhZ01vdXNlLCBJRmxhZ01vdXNlPih7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlLCBpc0NvbnRhaW5lckhhc1Njcm9sbDogZmFsc2UgfSwge1xuICAgIHRyYW5zZm9ybTogKHZhbHVlOiBhbnkpID0+IHZhbHVlID8gdmFsdWUgOiB7IGlzTW91c2VFbnRlcjogZmFsc2UsIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlLCBpc0NvbnRhaW5lckhhc1Njcm9sbDogZmFsc2UgfVxuICB9KTtcbiAgcmVhZG9ubHkgdHlwZSA9IGlucHV0PFRZUEVfUE9QT1ZFUl9UWVBFPignb3RoZXInKTtcbiAgcmVhZG9ubHkgbW9kZSA9IGlucHV0PFRZUEVfUE9QT1ZFUl9NT0RFPignaG92ZXInKTtcbiAgcmVhZG9ubHkgY29uZmlnID0gaW5wdXQoe30sIHsgdHJhbnNmb3JtOiAodmFsdWU6IElQb3BvdmVyT3ZlcmxheSB8IHVuZGVmaW5lZCkgPT4gdmFsdWUgPyB2YWx1ZSA6IHt9IH0pO1xuICByZWFkb25seSBpZ25vcmVTaG93UG9wb3ZlciA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGVsZW1lbnRSZWZDdXN0b20gPSBpbnB1dDxIVE1MRWxlbWVudD4oKTtcbiAgcmVhZG9ubHkgaW5pdEV2ZW50SW5FbGVtZW50UmVmQ3VzdG9tID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBjbGFzc0luY2x1ZGUgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQsIHN0cmluZyB8IHVuZGVmaW5lZD4oJycsIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/ICcnIH0pO1xuICByZWFkb25seSBpZ25vcmVIaWRkZW5Qb3BvdmVyQ29udGVudFdoZW5Nb3VzZUxlYXZlID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDdXJzb3JQb2ludGVyTW9kZUxpa2VDbGljayA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDbGlja091dHNpZGUgPSBpbnB1dDxib29sZWFuPigpO1xuXG4gIC8vICNyZWdpb24gT1VUUFVUXG4gIHJlYWRvbmx5IG91dEV2ZW50ID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9FVkVOVD4oKTtcbiAgcmVhZG9ubHkgb3V0Q2hhbmdTdGFnZUZsYWdNb3VzZSA9IG91dHB1dDxJRmxhZ01vdXNlPigpO1xuICByZWFkb25seSBvdXRFdmVudFBvcG92ZXJDb250ZW50ID0gb3V0cHV0PFRZUEVfUE9QT1ZFUl9ESVJFQ1RJT04+KCk7XG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uc0NvbnRyb2wgPSBvdXRwdXQ8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcblxuICAvLyAjcmVnaW9uIElOSkVDVFxuICBwcml2YXRlIGVsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgZHluYW1pY1NlcnZpY2UgPSBpbmplY3QoTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBjbGFzc0RlZmF1bHQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGNsYXNzRGVmYXVsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsYXNzRGVmYXVsdCA9IHRoaXMuRWxlbWVudC5jbGFzc05hbWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5lbGVtZW50UmVmQ3VzdG9tKCkgIT09IHRoaXMuRWxlbWVudCkge1xuICAgICAgICB0aGlzLkVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NEZWZhdWx0IHx8ICcnO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAndGV4dCcpIHtcbiAgICAgICAgdGhpcy5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3BvcG92ZXItdGV4dC1lbGxpcHNpcycpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubW9kZSgpLmluY2x1ZGVzKCdjbGljaycpICYmICF0aGlzLmlnbm9yZUN1cnNvclBvaW50ZXJNb2RlTGlrZUNsaWNrKCkpIHtcbiAgICAgICAgdGhpcy5FbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2N1cnNvci1wb2ludGVyJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5jbGFzc0luY2x1ZGUoKSkge1xuICAgICAgICB0aGlzLmNsYXNzSW5jbHVkZSgpPy5zcGxpdCgnICcpLmZvckVhY2goY2xhc3NOYW1lID0+IHtcbiAgICAgICAgICBpZiAoIWNsYXNzTmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLkVsZW1lbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGZpcnN0ID0gdHJ1ZTtcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5jb25maWcoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZSAmJiAhZmlyc3QpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm91dEV2ZW50UG9wb3ZlckNvbnRlbnQuc3Vic2NyaWJlKGRpcmVjdGlvbiA9PiB0aGlzLmRpcmVjdGlvblBvcG92ZXIuc2V0KGRpcmVjdGlvbikpO1xuICAgIHRoaXMuZnVuY3Rpb25zQ29udHJvbCA9IHtcbiAgICAgIHJlbW92ZVBvcG92ZXJPdmVybGF5OiB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5LmJpbmQodGhpcyksXG4gICAgICB1cGRhdGVQb3BvdmVyT3ZlcmxheVBvc2l0aW9uOiB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5UG9zaXRpb24uYmluZCh0aGlzKSxcbiAgICAgIGdldFJlY3RDb250YWluZXI6IGFzeW5jICgpID0+ICh0aGlzLmVsZW1lbnRSZWZDdXN0b20oKSB8fCB0aGlzLkVsZW1lbnQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgZ2V0UmVjdENvbnRlbnQ6IGFzeW5jICgpID0+ICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Py5pbnN0YW5jZT8uQ29udGFpbmVyRWxlbWVudCk/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgc2hvd1BvcG92ZXI6IHRoaXMuYWRkUG9wb3ZlckNvbnRlbnQuYmluZCh0aGlzKSxcbiAgICAgIHVwZGF0ZVBvcG92ZXJPdmVybGF5OiB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5LmJpbmQodGhpcyksXG4gICAgfTtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdCh0aGlzLmZ1bmN0aW9uc0NvbnRyb2wpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGNvbnN0IG5hdGl2ZUVsID0gdGhpcy5FbGVtZW50O1xuICAgIHRoaXMubW91c2VFbnRlciA9IHRoaXMuaW5pdE9ic2VydmFibGUobmF0aXZlRWwsICdtb3VzZWVudGVyJyk7XG4gICAgdGhpcy5tb3VzZUNsaWNrID0gdGhpcy5pbml0T2JzZXJ2YWJsZShuYXRpdmVFbCwgZ2V0RXZlbnROYW1lSGFuZGxlQ2xpY2spO1xuICAgIHRoaXMubW91c2VXaGVlbCA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAnd2hlZWwnKTtcbiAgICB0aGlzLndpbmRvd1Jlc2l6ZSA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAncmVzaXplJyk7XG4gICAgdGhpcy53aW5kb3dXaGVlbCA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAnd2hlZWwnKTtcbiAgICB0aGlzLndpbmRvd01vdXNlRG93biA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCAnbW91c2Vkb3duJyk7XG4gICAgdGhpcy53aW5kb3dDbGljayA9IHRoaXMuaW5pdE9ic2VydmFibGUod2luZG93LCBnZXRFdmVudE5hbWVIYW5kbGVDbGljayk7XG4gICAgdGhpcy53aW5kb3dNb3VzZVVwID0gdGhpcy5pbml0T2JzZXJ2YWJsZSh3aW5kb3csICdtb3VzZXVwJyk7XG4gICAgdGhpcy53aW5kb3dNb3VzZW1vdmUgPSB0aGlzLmluaXRPYnNlcnZhYmxlKHdpbmRvdywgJ21vdXNlbW92ZScpO1xuICAgIHRoaXMubW91c2VFbnRlci5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICBpZiAoIXRoaXMubW9kZSgpLmluY2x1ZGVzKCdob3ZlcicpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMudHlwZSgpID09PSAndGV4dCcgJiYgbmF0aXZlRWw/LmNsaWVudFdpZHRoID49IG5hdGl2ZUVsLnNjcm9sbFdpZHRoICYmICF0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkUG9wb3ZlckNvbnRlbnQoKTtcbiAgICB9KTtcbiAgICB0aGlzLm1vdXNlQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZmlyc3RDbGljay51cGRhdGUodmFsID0+IHRoaXMuaWdub3JlU2hvd1BvcG92ZXIoKSA/IGZhbHNlIDogIXZhbCk7XG4gICAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ2NsaWNrJyk7XG5cbiAgICAgIGlmICghdGhpcy5tb2RlKCkuc3RhcnRzV2l0aCgnY2xpY2snKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm1vZGUoKSA9PT0gJ2NsaWNrLXRvZ2dsZScgJiYgIXRoaXMuZmlyc3RDbGljaygpKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmFkZFBvcG92ZXJDb250ZW50KCk7XG4gICAgfSk7XG4gICAgdGhpcy53aW5kb3dSZXNpemUucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKHRoaXMudXBkYXRlUG9wb3Zlck92ZXJsYXlQb3NpdGlvbi5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIC8vICNyZWdpb24gRlVOQ1RJT05TXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUG9wb3Zlck92ZXJsYXkoKSB7XG4gICAgY29uc3QgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICBpZiAoIXRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQgfHwgIXRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQuaW5zdGFuY2UgfHwgIXRoaXMuY29uZmlnKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlO1xuICAgICAgY29uc3QgbmF0aXZlRWwgPSB0aGlzLmVsZW1lbnRSZWZDdXN0b20oKSB8fCB0aGlzLkVsZW1lbnQ7XG5cbiAgICAgIGluc3RhbmNlLnNldENvbmZpZyhuYXRpdmVFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgeyAuLi4gKHRoaXMuY29uZmlnKCkgfHwge30pLCAuLi50aGlzLmdldERlZmF1bHRDb25maWdzKCkgfSwgdGhpcy5pc0FkZENvbnRlbnRUb1BhcmVudERvY3VtZW50KCkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVQb3BvdmVyT3ZlcmxheVBvc2l0aW9uKCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKCkpO1xuICAgIHRoaXMudGltZXIuc2V0KHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50IHx8ICF0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50Lmluc3RhbmNlIHx8ICF0aGlzLmNvbmZpZygpIHx8ICF0aGlzLmZ1bmN0aW9uc0NvbnRyb2wpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qgdmlld1BvcnQgPSBnZXRWaWV3cG9ydCgpO1xuICAgICAgY29uc3QgcmVjdExpc3RWaWV3ID0gYXdhaXQgdGhpcy5mdW5jdGlvbnNDb250cm9sLmdldFJlY3RDb250ZW50KCk7XG5cbiAgICAgIGlmICghcmVjdExpc3RWaWV3KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlY3RDb250YWluZXIgPSBhd2FpdCB0aGlzLmZ1bmN0aW9uc0NvbnRyb2wuZ2V0UmVjdENvbnRhaW5lcigpO1xuICAgICAgY29uc3QgZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lciA9IHRoaXMuY29uZmlnKCk/Lmlnbm9yZUFycm93ID09PSBmYWxzZSA/IDE0IDogNDtcbiAgICAgIHN3aXRjaCAodGhpcy5kaXJlY3Rpb25Qb3BvdmVyKCkpIHtcbiAgICAgICAgY2FzZSAncmlnaHQnOlxuICAgICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgY2FzZSAnYm90dG9tJzpcbiAgICAgICAgICBpZiAoKChyZWN0TGlzdFZpZXcudG9wICsgcmVjdExpc3RWaWV3LmhlaWdodCA+IHZpZXdQb3J0LmhlaWdodCkgfHwgKHJlY3RMaXN0Vmlldy50b3AgPCAocmVjdENvbnRhaW5lci50b3AgKyByZWN0Q29udGFpbmVyLmhlaWdodCkpIHx8IChyZWN0TGlzdFZpZXcudG9wIC0gKHJlY3RDb250YWluZXIudG9wICsgcmVjdENvbnRhaW5lci5oZWlnaHQpID4gZGlzdGFuY2VMaXN0Vmlld0FuZENvbnRhaW5lcikpIHx8ICgocmVjdExpc3RWaWV3LmxlZnQgKyByZWN0TGlzdFZpZXcud2lkdGggPiB2aWV3UG9ydC53aWR0aCkpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgaWYgKChyZWN0Q29udGFpbmVyLnRvcCAtIChyZWN0TGlzdFZpZXcudG9wICsgcmVjdExpc3RWaWV3LmhlaWdodCkgPiBkaXN0YW5jZUxpc3RWaWV3QW5kQ29udGFpbmVyKSB8fCAocmVjdExpc3RWaWV3LnRvcCArIHJlY3RMaXN0Vmlldy5oZWlnaHQgKyBkaXN0YW5jZUxpc3RWaWV3QW5kQ29udGFpbmVyID4gcmVjdENvbnRhaW5lci50b3AgKyAyKSB8fCAoKHJlY3RMaXN0Vmlldy5sZWZ0ICsgcmVjdExpc3RWaWV3LndpZHRoID4gdmlld1BvcnQud2lkdGgpKSkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVQb3BvdmVyT3ZlcmxheSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9LCAyNTApKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgaWYgKHRoaXMuaW5pdEV2ZW50SW5FbGVtZW50UmVmQ3VzdG9tKCkgJiYgdGhpcy5lbGVtZW50UmVmQ3VzdG9tKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmVsZW1lbnRSZWZDdXN0b20oKSBhcyBIVE1MRWxlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmZpcnN0RWxlbWVudENoaWxkIHx8IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0T2JzZXJ2YWJsZShlbDogYW55LCBldmVudE5hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8TW91c2VFdmVudD4ge1xuICAgIHJldHVybiBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWwsIGV2ZW50TmFtZSkucGlwZShcbiAgICAgIHRhcChlID0+ICF0aGlzLmlnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50KCkgJiYgZS5zdG9wUHJvcGFnYXRpb24oKSksXG4gICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkUG9wb3ZlckNvbnRlbnQobmF0aXZlRWw/OiBIVE1MRWxlbWVudCkge1xuICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50IHx8IHRoaXMuaWdub3JlU2hvd1BvcG92ZXIoKSB8fCAhdGhpcy5jb25maWcoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQgPSB0aGlzLmR5bmFtaWNTZXJ2aWNlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KExpYnNVaUNvbXBvbmVudHNQb3BvdmVyT3ZlcmxheUNvbXBvbmVudCk7XG4gICAgdGhpcy5mcmFtZUlkLnNldCh0aGlzLmR5bmFtaWNTZXJ2aWNlLmFkZFRvQm9keSh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50LCB0aGlzLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQoKSB8fCB0aGlzLmNvbmZpZygpLmlzQWRkQ29udGVudFRvUGFyZW50RG9jdW1lbnQpKTtcbiAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ3Nob3cnKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQuaW5zdGFuY2U7XG5cbiAgICBuYXRpdmVFbCA9IG5hdGl2ZUVsIHx8IHRoaXMuZWxlbWVudFJlZkN1c3RvbSgpIHx8IHRoaXMuRWxlbWVudDtcbiAgICBpbnN0YW5jZS5zZXRDb25maWcobmF0aXZlRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIHsgLi4uICh0aGlzLmNvbmZpZygpIHx8IHt9KSwgLi4udGhpcy5nZXREZWZhdWx0Q29uZmlncygpIH0sIHRoaXMuaXNBZGRDb250ZW50VG9QYXJlbnREb2N1bWVudCgpKTtcbiAgICBjb25zdCBmbGFnc01vdXNlczogSUZsYWdNb3VzZSA9IHtcbiAgICAgIGlzTW91c2VFbnRlcjogdHJ1ZSxcbiAgICAgIGlzTW91c2VFbnRlckNvbnRlbnQ6IGZhbHNlLFxuICAgICAgaXNDb250YWluZXJIYXNTY3JvbGw6IG5hdGl2ZUVsLm9mZnNldEhlaWdodCA8IG5hdGl2ZUVsLnNjcm9sbEhlaWdodFxuICAgIH07XG4gICAgY29uc3QgbmF0aXZlRWxDb250YWluZXIgPSBpbnN0YW5jZS5FbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgbW91c2VFbnRlckNvbnRlbnQgPSB0aGlzLmluaXRPYnNlcnZhYmxlKG5hdGl2ZUVsQ29udGFpbmVyLCAnbW91c2VlbnRlcicpO1xuICAgIGNvbnN0IG1vdXNlTGVhdmVDb250ZW50ID0gdGhpcy5pbml0T2JzZXJ2YWJsZShuYXRpdmVFbENvbnRhaW5lciwgJ21vdXNlbGVhdmUnKTtcbiAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZChpbnN0YW5jZS5vdXRFdmVudC5zdWJzY3JpYmUoKGRpcmVjdGlvbjogVFlQRV9QT1BPVkVSX0RJUkVDVElPTikgPT4ge1xuICAgICAgdGhpcy5vdXRFdmVudFBvcG92ZXJDb250ZW50LmVtaXQoZGlyZWN0aW9uKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZChtb3VzZUVudGVyQ29udGVudC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vdXRFdmVudC5lbWl0KCdtb3VzZWVudGVyLWNvbnRlbnQnKTtcbiAgICAgIGZsYWdzTW91c2VzLmlzTW91c2VFbnRlckNvbnRlbnQgPSB0cnVlO1xuICAgICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ3NNb3VzZXMpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3Vic0V2ZW50UG9wdXAuYWRkKHRoaXMubW91c2VFbnRlci5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vdXRFdmVudC5lbWl0KCdtb3VzZWVudGVyLWVsZW1lbnQnKTtcbiAgICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZS5lbWl0KGZsYWdzTW91c2VzKTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZCh0aGlzLm1vdXNlV2hlZWwuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGZsYWdzTW91c2VzLmlzQ29udGFpbmVySGFzU2Nyb2xsID0gZmFsc2U7XG5cbiAgICAgIGlmIChuYXRpdmVFbC5vZmZzZXRIZWlnaHQgPCBuYXRpdmVFbC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgZmxhZ3NNb3VzZXMuaXNDb250YWluZXJIYXNTY3JvbGwgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKChmbGFnc01vdXNlcy5pc01vdXNlRW50ZXIgJiYgZmxhZ3NNb3VzZXMuaXNDb250YWluZXJIYXNTY3JvbGwpIHx8IGZsYWdzTW91c2VzLmlzTW91c2VFbnRlckNvbnRlbnQgfHwgdGhpcy5mbGFnTW91c2UoKS5pc01vdXNlRW50ZXIgfHwgdGhpcy5mbGFnTW91c2UoKS5pc01vdXNlRW50ZXJDb250ZW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICB9KSk7XG4gICAgdGhpcy5oYW5kbGVyTW91c2VMZWF2ZVJlbW92ZVBvcG92ZXJPdmVybGF5KHRoaXMud2luZG93TW91c2Vtb3ZlLCBmbGFnc01vdXNlcywgJ2lzTW91c2VFbnRlcicsICdpc01vdXNlRW50ZXJDb250ZW50JywgJ21vdXNlbGVhdmUtZWxlbWVudCcpO1xuICAgIHRoaXMuaGFuZGxlck1vdXNlTGVhdmVSZW1vdmVQb3BvdmVyT3ZlcmxheShtb3VzZUxlYXZlQ29udGVudCwgZmxhZ3NNb3VzZXMsICdpc01vdXNlRW50ZXJDb250ZW50JywgJ2lzTW91c2VFbnRlcicsICdtb3VzZWxlYXZlLWNvbnRlbnQnKTtcblxuICAgIGlmICh0aGlzLm1vZGUoKSA9PT0gJ2NsaWNrX29wZW5fYW5kX2NsaWNrX3BhbmVsX2NvbnRlbnRfaGlkZGVuJykge1xuICAgICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQodGhpcy5pbml0T2JzZXJ2YWJsZShuYXRpdmVFbENvbnRhaW5lciwgJ2NsaWNrJykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMuaGFuZGxlcldpbmRvd0V2ZW50UmVtb3ZlUG9wb3Zlck92ZXJsYXkodGhpcy53aW5kb3dDbGljaywgZmxhZ3NNb3VzZXMpO1xuICAgIHRoaXMuaGFuZGxlcldpbmRvd0V2ZW50UmVtb3ZlUG9wb3Zlck92ZXJsYXkodGhpcy53aW5kb3dNb3VzZURvd24sIGZsYWdzTW91c2VzKTtcbiAgICB0aGlzLmhhbmRsZXJXaW5kb3dFdmVudFJlbW92ZVBvcG92ZXJPdmVybGF5KHRoaXMud2luZG93TW91c2VVcCwgZmxhZ3NNb3VzZXMpO1xuICAgIHRoaXMuaGFuZGxlcldpbmRvd0V2ZW50UmVtb3ZlUG9wb3Zlck92ZXJsYXkodGhpcy53aW5kb3dXaGVlbCwgZmxhZ3NNb3VzZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVyV2luZG93RXZlbnRSZW1vdmVQb3BvdmVyT3ZlcmxheShvYnM6IE9ic2VydmFibGU8TW91c2VFdmVudD4sIGZsYWdzTW91c2VzOiBJRmxhZ01vdXNlKSB7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC5hZGQob2JzLnBpcGUoZGVib3VuY2VUaW1lKDEwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIGlmIChmbGFnc01vdXNlcy5pc01vdXNlRW50ZXIgfHwgZmxhZ3NNb3VzZXMuaXNNb3VzZUVudGVyQ29udGVudCB8fCB0aGlzLmlnbm9yZUNsaWNrT3V0c2lkZSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZsYWdNb3VzZSgpICYmICh0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlciB8fCB0aGlzLmZsYWdNb3VzZSgpLmlzTW91c2VFbnRlckNvbnRlbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZmlyc3RDbGljay5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5yZW1vdmVQb3BvdmVyT3ZlcmxheSgpO1xuICAgIH0pKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlck1vdXNlTGVhdmVSZW1vdmVQb3BvdmVyT3ZlcmxheShvYnM6IE9ic2VydmFibGU8TW91c2VFdmVudD4sIGZsYWdzTW91c2VzOiB7IGlzTW91c2VFbnRlcjogYm9vbGVhbiwgaXNNb3VzZUVudGVyQ29udGVudDogYm9vbGVhbiB9LCBmbGFnS2V5Q2hhbmdlVmFsdWU6IHN0cmluZywgZmxhZ0tleUNoZWNrOiBzdHJpbmcsIG91dEV2ZW50OiBUWVBFX1BPUE9WRVJfRVZFTlQpIHtcbiAgICB0aGlzLnN1YnNFdmVudFBvcHVwLmFkZChvYnMucGlwZShcbiAgICAgIHRhcCgoKSA9PiB0aGlzLm91dEV2ZW50LmVtaXQob3V0RXZlbnQpKSxcbiAgICAgIGRlYm91bmNlVGltZShnZXRQb3BvdmVyVGltZXJEZXN0cm95SW5RdWVyeVVybCgpIHx8IHRoaXMuY29uZmlnKCk/LnRpbWVyRGVzdHJveSB8fCAwKVxuICAgICkuc3Vic2NyaWJlKChlOiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAob3V0RXZlbnQgPT09ICdtb3VzZWxlYXZlLWVsZW1lbnQnICYmIChjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKGUsIHRoaXMuRWxlbWVudCkgfHwgY2hlY2tNb3VzZU92ZXJJbkNvbnRhaW5lcih7IGNsaWVudFg6IGUuY2xpZW50WCArIDIsIGNsaWVudFk6IGUuY2xpZW50WSArIDIgfSwgdGhpcy5FbGVtZW50KSB8fCBjaGVja01vdXNlT3ZlckluQ29udGFpbmVyKHsgY2xpZW50WDogZS5jbGllbnRYIC0gMiwgY2xpZW50WTogZS5jbGllbnRZIC0gMiB9LCB0aGlzLkVsZW1lbnQpKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzZXQoZmxhZ3NNb3VzZXMsIGZsYWdLZXlDaGFuZ2VWYWx1ZSwgZmFsc2UpO1xuICAgICAgdGhpcy5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlLmVtaXQoZmxhZ3NNb3VzZXMpO1xuICAgICAgaWYgKHRoaXMuZmxhZ01vdXNlKCkgJiYgKHRoaXMuZmxhZ01vdXNlKCkuaXNNb3VzZUVudGVyIHx8IHRoaXMuZmxhZ01vdXNlKCkuaXNNb3VzZUVudGVyQ29udGVudCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2V0KGZsYWdzTW91c2VzLCBmbGFnS2V5Q2hlY2spIHx8IHRoaXMuaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZSgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlUG9wb3Zlck92ZXJsYXkoKTtcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDb25maWdzKCk6IElQb3BvdmVyT3ZlcmxheSB7XG4gICAgY29uc3QgY29uZmlnVmFsdWUgPSB0aGlzLmNvbmZpZygpIHx8IHt9O1xuICAgIGlmICgoaXNOaWwoY29uZmlnVmFsdWUuY29udGVudCkpIHx8IChjb25maWdWYWx1ZS5jb250ZW50ID09PSB0aGlzLmNvbnRlbnRJbm5lckh0bWwoKSAmJiB0aGlzLmNvbnRlbnRJbm5lckh0bWwoKSAhPT0gdGhpcy5FbGVtZW50LmlubmVySFRNTCkpIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLmNvbnRlbnQgPSB0aGlzLkVsZW1lbnQuaW5uZXJIVE1MO1xuICAgIH1cbiAgICB0aGlzLmNvbnRlbnRJbm5lckh0bWwuc2V0KHRoaXMuRWxlbWVudC5pbm5lckhUTUwpO1xuICAgIGlmICghY29uZmlnVmFsdWUubWF4V2lkdGgpIHtcbiAgICAgIGNvbmZpZ1ZhbHVlLm1heFdpZHRoID0gMjUwO1xuICAgIH1cbiAgICBpZiAoY29uZmlnVmFsdWUubWF4SGVpZ2h0ID09PSB1bmRlZmluZWQgfHwgY29uZmlnVmFsdWUubWF4SGVpZ2h0ID09PSAwKSB7XG4gICAgICBjb25maWdWYWx1ZS5tYXhIZWlnaHQgPSAxNDA7XG4gICAgfVxuICAgIGlmICghY29uZmlnVmFsdWUuZGlyZWN0aW9uKSB7XG4gICAgICBjb25maWdWYWx1ZS5kaXJlY3Rpb24gPSAnYm90dG9tJztcbiAgICB9XG4gICAgaWYgKCFjb25maWdWYWx1ZS5wb3NpdGlvbikge1xuICAgICAgY29uZmlnVmFsdWUucG9zaXRpb24gPSB7XG4gICAgICAgIG1vZGU6ICdjZW50ZXInLFxuICAgICAgICBkaXN0YW5jZTogMFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHJlbW92ZVBvcG92ZXJPdmVybGF5KCkge1xuICAgIGlmICh0aGlzLnBvcG92ZXJPdmVybGF5Q29tcG9uZW50KSB7XG4gICAgICB0aGlzLm91dEV2ZW50LmVtaXQoJ3JlbW92ZScpO1xuICAgICAgdGhpcy5zdWJzRXZlbnRQb3B1cC51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy5zdWJzRXZlbnRQb3B1cCA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICB9XG4gICAgdGhpcy5keW5hbWljU2VydmljZS5yZW1vdmUodGhpcy5wb3BvdmVyT3ZlcmxheUNvbXBvbmVudCwgdGhpcy5mcmFtZUlkKCkpO1xuICAgIHRoaXMuZnJhbWVJZC5zZXQoJycpO1xuICAgIHRoaXMucG9wb3Zlck92ZXJsYXlDb21wb25lbnQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5maXJzdENsaWNrLnNldChmYWxzZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcigpKTtcbiAgICB0aGlzLnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5zdWJzRXZlbnRQb3B1cC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8bmctY29udGVudCAvPlxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, viewChild, inject, ElementRef,
|
|
2
|
+
import { signal, viewChild, inject, ElementRef, Component, ChangeDetectionStrategy, input, output, effect, untracked } from '@angular/core';
|
|
3
3
|
import { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';
|
|
4
|
-
import { UtilsUrlSearchParams, get, cloneIBoundingClientRect, cloneDeep, getViewport, checkMouseOverInContainer, set, isNil } from '@libs-ui/utils';
|
|
4
|
+
import { UtilsUrlSearchParams, get, cloneIBoundingClientRect, cloneDeep, getViewport, getEventNameHandleClick, checkMouseOverInContainer, set, isNil } from '@libs-ui/utils';
|
|
5
5
|
import { Subject, interval, take, takeUntil, Subscription, fromEvent } from 'rxjs';
|
|
6
6
|
import { debounceTime, tap, takeUntil as takeUntil$1 } from 'rxjs/operators';
|
|
7
7
|
import { NgStyle, AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
@@ -333,7 +333,6 @@ class LibsUiComponentsPopoverComponent {
|
|
|
333
333
|
windowClick;
|
|
334
334
|
windowMouseUp;
|
|
335
335
|
windowMousemove;
|
|
336
|
-
windowTouch;
|
|
337
336
|
popoverOverlayComponent;
|
|
338
337
|
subsEventPopup = new Subscription();
|
|
339
338
|
onDestroy = new Subject();
|
|
@@ -418,14 +417,13 @@ class LibsUiComponentsPopoverComponent {
|
|
|
418
417
|
ngAfterContentInit() {
|
|
419
418
|
const nativeEl = this.Element;
|
|
420
419
|
this.mouseEnter = this.initObservable(nativeEl, 'mouseenter');
|
|
421
|
-
this.mouseClick = this.initObservable(nativeEl,
|
|
420
|
+
this.mouseClick = this.initObservable(nativeEl, getEventNameHandleClick);
|
|
422
421
|
this.mouseWheel = this.initObservable(window, 'wheel');
|
|
423
422
|
this.windowResize = this.initObservable(window, 'resize');
|
|
424
423
|
this.windowWheel = this.initObservable(window, 'wheel');
|
|
425
424
|
this.windowMouseDown = this.initObservable(window, 'mousedown');
|
|
426
|
-
this.windowClick = this.initObservable(window,
|
|
425
|
+
this.windowClick = this.initObservable(window, getEventNameHandleClick);
|
|
427
426
|
this.windowMouseUp = this.initObservable(window, 'mouseup');
|
|
428
|
-
this.windowTouch = this.initObservable(window, 'touchstart');
|
|
429
427
|
this.windowMousemove = this.initObservable(window, 'mousemove');
|
|
430
428
|
this.mouseEnter.subscribe(() => {
|
|
431
429
|
if (!this.mode().includes('hover')) {
|
|
@@ -551,9 +549,6 @@ class LibsUiComponentsPopoverComponent {
|
|
|
551
549
|
this.handlerWindowEventRemovePopoverOverlay(this.windowMouseDown, flagsMouses);
|
|
552
550
|
this.handlerWindowEventRemovePopoverOverlay(this.windowMouseUp, flagsMouses);
|
|
553
551
|
this.handlerWindowEventRemovePopoverOverlay(this.windowWheel, flagsMouses);
|
|
554
|
-
this.subsEventPopup.add(this.windowTouch.subscribe(() => {
|
|
555
|
-
this.removePopoverOverlay();
|
|
556
|
-
}));
|
|
557
552
|
}
|
|
558
553
|
handlerWindowEventRemovePopoverOverlay(obs, flagsMouses) {
|
|
559
554
|
this.subsEventPopup.add(obs.pipe(debounceTime(10)).subscribe(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-components-popover.mjs","sources":["../../../../../libs-ui/components/popover/src/defines/constants.define.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.html","../../../../../libs-ui/components/popover/src/popover.component.ts","../../../../../libs-ui/components/popover/src/popover.component.html","../../../../../libs-ui/components/popover/src/libs-ui-components-popover.ts"],"sourcesContent":["import { get, UtilsUrlSearchParams } from \"@libs-ui/utils\";\nimport { TYPE_POPOVER_DIRECTION } from \"../interfaces/popover.type\";\n\n\nexport const KEY_QUERY_POPOVER_TIMER_DESTROY = 'popover-timer-destroy';\n\nconst timerDestroy = parseInt(new UtilsUrlSearchParams(location.href).get(KEY_QUERY_POPOVER_TIMER_DESTROY) || '0');\n\nexport const getPopoverTimerDestroyInQueryUrl = (): number => {\n return timerDestroy;\n};\n\nexport const getListdirections = (drirection: TYPE_POPOVER_DIRECTION): Array<TYPE_POPOVER_DIRECTION> => {\n return get({\n bottom: ['bottom', 'top', 'right', 'left'],\n right: ['right', 'left', 'bottom', 'top'],\n left: ['left', 'right', 'bottom', 'top'],\n top: ['top', 'bottom', 'right', 'left'],\n }, drirection);\n}","import { AsyncPipe, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, inject, signal, viewChild } from '@angular/core';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IBoundingClientRect } from '@libs-ui/interfaces-types';\nimport { UtilsUrlSearchParams, cloneDeep, cloneIBoundingClientRect, getViewport } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, interval, take, takeUntil } from 'rxjs';\nimport { IPopoverOverlay } from '../interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION } from '../interfaces/popover.type';\nimport { getListdirections } from '../defines/constants.define';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet]\n})\nexport class LibsUiComponentsPopoverOverlayComponent implements OnDestroy {\n /* PROPERTIES */\n protected currentDirection = signal<TYPE_POPOVER_DIRECTION>('bottom');\n protected arrowClass = signal<string>('');\n protected top = signal<number>(0);\n protected left = signal<number>(0);\n protected arrowLeft = signal<number>(0);\n protected arrowTop = signal<number>(0);\n protected config = signal<IPopoverOverlay>({});\n private timeout = signal<number>(0);\n private onDestroy = new Subject<void>();\n\n // #region OUTPUT\n readonly outEvent: Subject<TYPE_POPOVER_DIRECTION> = new Subject();\n\n /* VIEW CHILD */\n private container = viewChild.required<ElementRef>('container');\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n\n // #region FUNCTIONS\n public get ElementRef() {\n return this.elementRef;\n }\n\n public get ContainerElement() {\n return this.container().nativeElement;\n }\n\n public setConfig(rectOrigin: IBoundingClientRect, config: IPopoverOverlay, isAddContentToParentDocument?: boolean) {\n isAddContentToParentDocument = isAddContentToParentDocument || config.isAddContentToParentDocument;\n rectOrigin = cloneIBoundingClientRect(rectOrigin);\n this.config.set(cloneDeep(config));\n\n this.container().nativeElement.style.opacity = 0;\n if (this.config().widthByParent) {\n this.config.update(config => ({ ...config, width: rectOrigin.width - (config?.parentBorderWidth || 0) * 2 }));\n }\n let viewPort = getViewport();\n let rectFrame: IBoundingClientRect | undefined = undefined;\n\n if (isAddContentToParentDocument) {\n viewPort = getViewport(window.parent);\n const url = new UtilsUrlSearchParams(location.href);\n const iframeId = url.get('iframeId');\n\n rectFrame = window.parent.document.getElementById(`iframe-${iframeId}`)?.getBoundingClientRect();\n if (rectFrame) {\n rectOrigin.top += rectFrame.top;\n rectOrigin.left += rectFrame.left;\n }\n }\n\n if (this.config().maxHeight === null) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - 44 }));\n }\n\n clearTimeout(this.timeout());\n this.setVariableCss();\n this.setDirections(rectOrigin, viewPort, rectFrame);\n let rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n\n interval(250).pipe(take(4), takeUntil(this.onDestroy)).subscribe(() => {\n const rect = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rect.top += rectFrame.top;\n rect.left += rectFrame.left;\n }\n if (rect.width !== rectContent.width || rect.height !== rectContent.height || rect.top !== rectContent.top || rect.left !== rectContent.left) {\n clearTimeout(this.timeout());\n this.setDirections(rectOrigin, viewPort, rectFrame);\n rectContent = rect;\n }\n });\n }\n\n private setDirections(rectOrigin: IBoundingClientRect, viewPort: { width: number, height: number }, rectFrame?: IBoundingClientRect) {\n const directions = getListdirections(this.config().direction || 'bottom');\n const positionLast = directions.length - 1;\n\n this.timeout.set(setTimeout(async () => {\n const rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n for (const index in directions) {\n if (await this.loopDirection(rectOrigin, rectContent, directions[index], positionLast === +index, viewPort)) {\n return;\n }\n }\n }, 50));\n }\n\n private loopDirection(rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, direction: TYPE_POPOVER_DIRECTION, isLast: boolean, viewPort: { width: number, height: number }): Promise<boolean> {\n return new Promise(resolve => {\n const positionMode = this.config().position?.mode || 'start';\n const { position } = this.config();\n let result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n\n if (!result) {\n if (position) {\n position.mode = positionMode === 'center' || positionMode === 'start' ? 'end' : 'start';\n if (!this.config().ignoreArrow && position.autoUpdatePosition) {\n position.distance = position.mode === 'end' ? position.autoUpdatePosition.endDistance : position.autoUpdatePosition.startDistance;\n }\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result && positionMode === 'center') {\n if (position) {\n position.mode = position.mode === 'start' ? 'end' : 'start';\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result) {\n if (position) {\n position.mode = positionMode;\n this.config.update(config => ({ ...config }));\n }\n\n return resolve(false);\n }\n this.currentDirection.set(direction);\n this.setVariableCss();\n this.setClassArrow(direction);\n this.container().nativeElement.style.opacity = 1;\n this.outEvent.next(direction);\n\n return resolve(true);\n });\n }\n\n private setPosition(direction: TYPE_POPOVER_DIRECTION, rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, viewPort: { width: number, height: number }, isLast: boolean): boolean {\n const halfSquare = 6;\n const distanceArrow = 4;\n let bottomPositionRectContent = 0;\n let positionTop = 0;\n let positionLeft = 0;\n let top = 0;\n let left = 0;\n const configValue = this.config();\n\n switch (direction) {\n case 'bottom':\n positionTop = rectOrigin.top + rectOrigin.height + distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n if (configValue.ignoreArrow) {\n top = top - halfSquare - distanceArrow;\n }\n top += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n if (configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n left += (configValue.parentBorderWidth || 0);\n\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(-6);\n this.top.set(top);\n this.left.set(left);\n\n if (top + rectContent.height < viewPort.height && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - rectOrigin.height }));\n }\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n return false;\n\n case 'right':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left + rectOrigin.width + distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft + halfSquare;\n\n if (configValue.ignoreArrow) {\n left = positionLeft - distanceArrow;\n }\n\n left += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position?.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(-9);\n\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height }));\n }\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n\n return false;\n\n case 'left':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left - (halfSquare * 2) - distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft - rectContent.width + halfSquare;\n if (configValue.ignoreArrow) {\n left = left + halfSquare + distanceArrow;\n }\n\n left -= configValue?.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(rectContent.width - 3);\n\n this.top.set(top);\n this.left.set(left);\n if (left > 0 && top > 0) {\n return true;\n }\n\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height }));\n }\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n return false;\n\n case 'top':\n positionTop = rectOrigin.top - (halfSquare * 2) - distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop - rectContent.height + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n\n if (configValue.ignoreArrow) {\n top = top + halfSquare + distanceArrow;\n }\n\n top -= configValue.directionDistance || 0;\n\n if (configValue.position && configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n\n if (configValue.position && configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n\n left += (configValue.parentBorderWidth || 0);\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(rectContent.height);\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n\n if (isLast) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - (viewPort.height - rectOrigin.top) }));\n top = 0;\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n return false;\n }\n }\n\n private setClassArrow(direction: TYPE_POPOVER_DIRECTION) {\n if (direction === 'right') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-right');\n }\n if (direction === 'left') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-left');\n }\n if (direction === 'top') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-down');\n }\n\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-up');\n }\n\n private setVariableCss() {\n const configValue = this.config();\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-time', `${configValue.animationConfig?.time || .4}s`);\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-distance', `${this.currentDirection() === 'top' ? '-' : ''}${configValue.animationConfig?.distance || 12}px`);\n }\n\n private getLeftPositionIsLast(isLast: boolean, currentLeft: number, viewPort: { width: number, height: number }, rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, halfSquare: number): number {\n if (viewPort.width - (rectOrigin.left + rectOrigin.width + rectContent.width + halfSquare) > 0) {\n return rectOrigin.left + rectOrigin.width + halfSquare;\n }\n return currentLeft;\n }\n\n ngOnDestroy() {\n clearTimeout(this.timeout());\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}\n","<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ComponentRef, ElementRef, OnDestroy, OnInit, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { checkMouseOverInContainer, get, getViewport, isNil, set } from '@libs-ui/utils';\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\nimport { getPopoverTimerDestroyInQueryUrl } from './defines/constants.define';\nimport { IFlagMouse } from './interfaces/flag-mouse.interface';\nimport { IPopoverFunctionControlEvent } from './interfaces/function-control.interface';\nimport { IPopoverOverlay } from './interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT, TYPE_POPOVER_MODE, TYPE_POPOVER_TYPE } from './interfaces/popover.type';\nimport { LibsUiComponentsPopoverOverlayComponent } from './overlay/overlay.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover,[LibsUiComponentsPopoverDirective]',\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsPopoverComponent implements OnInit, AfterContentInit, OnDestroy {\n // #region PROPERTY\n private mouseEnter!: Observable<MouseEvent>;\n private mouseWheel!: Observable<MouseEvent>;\n private mouseClick!: Observable<MouseEvent>;\n private windowResize!: Observable<MouseEvent>;\n private windowWheel!: Observable<MouseEvent>;\n private windowMouseDown!: Observable<MouseEvent>;\n private windowClick!: Observable<MouseEvent>;\n private windowMouseUp!: Observable<MouseEvent>;\n private windowMousemove!: Observable<MouseEvent>;\n private windowTouch!: Observable<MouseEvent>;\n private popoverOverlayComponent!: ComponentRef<LibsUiComponentsPopoverOverlayComponent> | undefined;\n private subsEventPopup = new Subscription();\n private onDestroy = new Subject<void>();\n private functionsControl?: IPopoverFunctionControlEvent;\n private firstClick = signal<boolean>(false);\n private contentInnerHtml = signal<string>('');\n private timer = signal<number | undefined>(undefined);\n private directionPopover = signal<TYPE_POPOVER_DIRECTION | undefined>(undefined);\n private frameId = signal<string>('');\n\n // #region INPUT\n readonly debugId = input<string>();\n readonly flagMouse = input<IFlagMouse, IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }, {\n transform: (value: any) => value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }\n });\n readonly type = input<TYPE_POPOVER_TYPE>('other');\n readonly mode = input<TYPE_POPOVER_MODE>('hover');\n readonly config = input({}, { transform: (value: IPopoverOverlay | undefined) => value ? value : {} });\n readonly ignoreShowPopover = input<boolean>();\n readonly elementRefCustom = input<HTMLElement>();\n readonly initEventInElementRefCustom = input<boolean>(false);\n readonly classInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n readonly ignoreHiddenPopoverContentWhenMouseLeave = input<boolean>();\n readonly ignoreStopPropagationEvent = input<boolean>();\n readonly ignoreCursorPointerModeLikeClick = input<boolean>();\n readonly isAddContentToParentDocument = input<boolean>();\n readonly ignoreClickOutside = input<boolean>();\n\n // #region OUTPUT\n readonly outEvent = output<TYPE_POPOVER_EVENT>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outEventPopoverContent = output<TYPE_POPOVER_DIRECTION>();\n readonly outFunctionsControl = output<IPopoverFunctionControlEvent>();\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n private dynamicService = inject(LibsUiDynamicComponentService);\n\n constructor() {\n let classDefault: string | undefined = undefined;\n effect(() => {\n if (classDefault === undefined) {\n classDefault = this.Element.className;\n }\n if (this.elementRefCustom() !== this.Element) {\n this.Element.className = classDefault || '';\n }\n if (this.type() === 'text') {\n this.Element.classList.add('popover-text-ellipsis');\n }\n if (this.mode().includes('click') && !this.ignoreCursorPointerModeLikeClick()) {\n this.Element.classList.add('cursor-pointer');\n }\n if (this.classInclude()) {\n this.classInclude()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.Element.classList.add(className);\n })\n }\n });\n\n let first = true;\n effect(() => {\n this.config();\n untracked(() => {\n if (this.popoverOverlayComponent?.instance && !first) {\n this.updatePopoverOverlayPosition();\n }\n first = false;\n });\n });\n }\n\n ngOnInit(): void {\n this.outEventPopoverContent.subscribe(direction => this.directionPopover.set(direction));\n this.functionsControl = {\n removePopoverOverlay: this.removePopoverOverlay.bind(this),\n updatePopoverOverlayPosition: this.updatePopoverOverlayPosition.bind(this),\n getRectContainer: async () => (this.elementRefCustom() || this.Element).getBoundingClientRect(),\n getRectContent: async () => (this.popoverOverlayComponent?.instance?.ContainerElement)?.getBoundingClientRect(),\n showPopover: this.addPopoverContent.bind(this),\n updatePopoverOverlay: this.updatePopoverOverlay.bind(this),\n };\n this.outFunctionsControl.emit(this.functionsControl);\n }\n\n ngAfterContentInit() {\n const nativeEl = this.Element;\n this.mouseEnter = this.initObservable(nativeEl, 'mouseenter');\n this.mouseClick = this.initObservable(nativeEl, 'click');\n this.mouseWheel = this.initObservable(window, 'wheel');\n this.windowResize = this.initObservable(window, 'resize');\n this.windowWheel = this.initObservable(window, 'wheel');\n this.windowMouseDown = this.initObservable(window, 'mousedown');\n this.windowClick = this.initObservable(window, 'click');\n this.windowMouseUp = this.initObservable(window, 'mouseup');\n this.windowTouch = this.initObservable(window, 'touchstart');\n this.windowMousemove = this.initObservable(window, 'mousemove');\n this.mouseEnter.subscribe(() => {\n\n if (!this.mode().includes('hover')) {\n return;\n }\n\n if (this.type() === 'text' && nativeEl?.clientWidth >= nativeEl.scrollWidth && !this.popoverOverlayComponent) {\n return;\n }\n this.addPopoverContent();\n });\n this.mouseClick.subscribe(() => {\n this.firstClick.update(val => this.ignoreShowPopover() ? false : !val);\n this.outEvent.emit('click');\n\n if (!this.mode().startsWith('click')) {\n return;\n }\n\n if (this.mode() === 'click-toggle' && !this.firstClick()) {\n this.removePopoverOverlay();\n\n return;\n }\n this.addPopoverContent();\n });\n this.windowResize.pipe(debounceTime(500)).subscribe(this.updatePopoverOverlayPosition.bind(this));\n }\n\n // #region FUNCTIONS\n private async updatePopoverOverlay() {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config()) {\n return;\n }\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n });\n }\n\n private async updatePopoverOverlayPosition() {\n clearTimeout(this.timer());\n this.timer.set(setTimeout(async () => {\n if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config() || !this.functionsControl) {\n return;\n }\n const viewPort = getViewport();\n const rectListView = await this.functionsControl.getRectContent();\n\n if (!rectListView) {\n return;\n }\n const rectContainer = await this.functionsControl.getRectContainer();\n const distanceListViewAndContainer = this.config()?.ignoreArrow === false ? 14 : 4;\n switch (this.directionPopover()) {\n case 'right':\n case 'left':\n case 'bottom':\n if (((rectListView.top + rectListView.height > viewPort.height) || (rectListView.top < (rectContainer.top + rectContainer.height)) || (rectListView.top - (rectContainer.top + rectContainer.height) > distanceListViewAndContainer)) || ((rectListView.left + rectListView.width > viewPort.width))) {\n this.updatePopoverOverlay();\n }\n break;\n\n case 'top':\n if ((rectContainer.top - (rectListView.top + rectListView.height) > distanceListViewAndContainer) || (rectListView.top + rectListView.height + distanceListViewAndContainer > rectContainer.top + 2) || ((rectListView.left + rectListView.width > viewPort.width))) {\n this.updatePopoverOverlay();\n }\n break;\n }\n }, 250));\n }\n\n protected get Element(): HTMLElement {\n if (this.initEventInElementRefCustom() && this.elementRefCustom()) {\n return this.elementRefCustom() as HTMLElement;\n }\n return this.elementRef.nativeElement.firstElementChild || this.elementRef.nativeElement;\n }\n\n private initObservable(el: any, eventName: string): Observable<MouseEvent> {\n return fromEvent<MouseEvent>(el, eventName).pipe(\n tap(e => !this.ignoreStopPropagationEvent() && e.stopPropagation()),\n takeUntil(this.onDestroy)\n );\n }\n\n private async addPopoverContent(nativeEl?: HTMLElement) {\n if (this.popoverOverlayComponent || this.ignoreShowPopover() || !this.config()) {\n return;\n }\n\n this.popoverOverlayComponent = this.dynamicService.resolveComponentFactory(LibsUiComponentsPopoverOverlayComponent);\n this.frameId.set(this.dynamicService.addToBody(this.popoverOverlayComponent, this.isAddContentToParentDocument() || this.config().isAddContentToParentDocument));\n this.outEvent.emit('show');\n const instance = this.popoverOverlayComponent.instance;\n\n nativeEl = nativeEl || this.elementRefCustom() || this.Element;\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n const flagsMouses: IFlagMouse = {\n isMouseEnter: true,\n isMouseEnterContent: false,\n isContainerHasScroll: nativeEl.offsetHeight < nativeEl.scrollHeight\n };\n const nativeElContainer = instance.ElementRef.nativeElement;\n const mouseEnterContent = this.initObservable(nativeElContainer, 'mouseenter');\n const mouseLeaveContent = this.initObservable(nativeElContainer, 'mouseleave');\n this.subsEventPopup.add(instance.outEvent.subscribe((direction: TYPE_POPOVER_DIRECTION) => {\n this.outEventPopoverContent.emit(direction);\n }));\n\n this.subsEventPopup.add(mouseEnterContent.subscribe(() => {\n this.outEvent.emit('mouseenter-content');\n flagsMouses.isMouseEnterContent = true;\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseEnter.subscribe(() => {\n this.outEvent.emit('mouseenter-element');\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseWheel.subscribe(() => {\n flagsMouses.isContainerHasScroll = false;\n\n if (nativeEl.offsetHeight < nativeEl.scrollHeight) {\n flagsMouses.isContainerHasScroll = true;\n }\n if ((flagsMouses.isMouseEnter && flagsMouses.isContainerHasScroll) || flagsMouses.isMouseEnterContent || this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent) {\n return;\n }\n this.removePopoverOverlay();\n }));\n this.handlerMouseLeaveRemovePopoverOverlay(this.windowMousemove, flagsMouses, 'isMouseEnter', 'isMouseEnterContent', 'mouseleave-element');\n this.handlerMouseLeaveRemovePopoverOverlay(mouseLeaveContent, flagsMouses, 'isMouseEnterContent', 'isMouseEnter', 'mouseleave-content');\n\n if (this.mode() === 'click_open_and_click_panel_content_hidden') {\n this.subsEventPopup.add(this.initObservable(nativeElContainer, 'click').subscribe(() => {\n this.removePopoverOverlay();\n }));\n }\n\n this.handlerWindowEventRemovePopoverOverlay(this.windowClick, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseDown, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseUp, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowWheel, flagsMouses);\n this.subsEventPopup.add(this.windowTouch.subscribe(() => {\n this.removePopoverOverlay();\n }));\n }\n\n private handlerWindowEventRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: IFlagMouse) {\n this.subsEventPopup.add(obs.pipe(debounceTime(10)).subscribe(() => {\n if (flagsMouses.isMouseEnter || flagsMouses.isMouseEnterContent || this.ignoreClickOutside()) {\n return;\n }\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n this.firstClick.set(false);\n this.removePopoverOverlay();\n }));\n }\n\n private handlerMouseLeaveRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: { isMouseEnter: boolean, isMouseEnterContent: boolean }, flagKeyChangeValue: string, flagKeyCheck: string, outEvent: TYPE_POPOVER_EVENT) {\n this.subsEventPopup.add(obs.pipe(\n tap(() => this.outEvent.emit(outEvent)),\n debounceTime(getPopoverTimerDestroyInQueryUrl() || this.config()?.timerDestroy || 0)\n ).subscribe((e: MouseEvent) => {\n if (outEvent === 'mouseleave-element' && (checkMouseOverInContainer(e, this.Element) || checkMouseOverInContainer({ clientX: e.clientX + 2, clientY: e.clientY + 2 }, this.Element) || checkMouseOverInContainer({ clientX: e.clientX - 2, clientY: e.clientY - 2 }, this.Element))) {\n return;\n }\n set(flagsMouses, flagKeyChangeValue, false);\n this.outChangStageFlagMouse.emit(flagsMouses);\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n\n if (get(flagsMouses, flagKeyCheck) || this.ignoreHiddenPopoverContentWhenMouseLeave()) {\n return;\n }\n this.removePopoverOverlay();\n }));\n }\n\n private getDefaultConfigs(): IPopoverOverlay {\n const configValue = this.config() || {};\n if ((isNil(configValue.content)) || (configValue.content === this.contentInnerHtml() && this.contentInnerHtml() !== this.Element.innerHTML)) {\n configValue.content = this.Element.innerHTML;\n }\n this.contentInnerHtml.set(this.Element.innerHTML);\n if (!configValue.maxWidth) {\n configValue.maxWidth = 250;\n }\n if (configValue.maxHeight === undefined || configValue.maxHeight === 0) {\n configValue.maxHeight = 140;\n }\n if (!configValue.direction) {\n configValue.direction = 'bottom';\n }\n if (!configValue.position) {\n configValue.position = {\n mode: 'center',\n distance: 0\n };\n }\n\n return configValue;\n }\n\n private async removePopoverOverlay() {\n if (this.popoverOverlayComponent) {\n this.outEvent.emit('remove');\n this.subsEventPopup.unsubscribe();\n this.subsEventPopup = new Subscription();\n }\n this.dynamicService.remove(this.popoverOverlayComponent, this.frameId());\n this.frameId.set('');\n this.popoverOverlayComponent = undefined;\n this.firstClick.set(false);\n }\n\n ngOnDestroy() {\n clearTimeout(this.timer());\n this.removePopoverOverlay();\n this.onDestroy.next();\n this.onDestroy.complete();\n this.subsEventPopup.unsubscribe();\n }\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"libs-ui-components-popover.mjs","sources":["../../../../../libs-ui/components/popover/src/defines/constants.define.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.ts","../../../../../libs-ui/components/popover/src/overlay/overlay.component.html","../../../../../libs-ui/components/popover/src/popover.component.ts","../../../../../libs-ui/components/popover/src/popover.component.html","../../../../../libs-ui/components/popover/src/libs-ui-components-popover.ts"],"sourcesContent":["import { get, UtilsUrlSearchParams } from \"@libs-ui/utils\";\nimport { TYPE_POPOVER_DIRECTION } from \"../interfaces/popover.type\";\n\n\nexport const KEY_QUERY_POPOVER_TIMER_DESTROY = 'popover-timer-destroy';\n\nconst timerDestroy = parseInt(new UtilsUrlSearchParams(location.href).get(KEY_QUERY_POPOVER_TIMER_DESTROY) || '0');\n\nexport const getPopoverTimerDestroyInQueryUrl = (): number => {\n return timerDestroy;\n};\n\nexport const getListdirections = (drirection: TYPE_POPOVER_DIRECTION): Array<TYPE_POPOVER_DIRECTION> => {\n return get({\n bottom: ['bottom', 'top', 'right', 'left'],\n right: ['right', 'left', 'bottom', 'top'],\n left: ['left', 'right', 'bottom', 'top'],\n top: ['top', 'bottom', 'right', 'left'],\n }, drirection);\n}","import { AsyncPipe, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, OnDestroy, inject, signal, viewChild } from '@angular/core';\nimport { LibsUiComponentsScrollOverlayDirective } from '@libs-ui/components-scroll-overlay';\nimport { IBoundingClientRect } from '@libs-ui/interfaces-types';\nimport { UtilsUrlSearchParams, cloneDeep, cloneIBoundingClientRect, getViewport } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { Subject, interval, take, takeUntil } from 'rxjs';\nimport { IPopoverOverlay } from '../interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION } from '../interfaces/popover.type';\nimport { getListdirections } from '../defines/constants.define';\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover-overlay',\n templateUrl: './overlay.component.html',\n styleUrls: ['./overlay.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslateModule, NgStyle, AsyncPipe, LibsUiComponentsScrollOverlayDirective, NgTemplateOutlet]\n})\nexport class LibsUiComponentsPopoverOverlayComponent implements OnDestroy {\n /* PROPERTIES */\n protected currentDirection = signal<TYPE_POPOVER_DIRECTION>('bottom');\n protected arrowClass = signal<string>('');\n protected top = signal<number>(0);\n protected left = signal<number>(0);\n protected arrowLeft = signal<number>(0);\n protected arrowTop = signal<number>(0);\n protected config = signal<IPopoverOverlay>({});\n private timeout = signal<number>(0);\n private onDestroy = new Subject<void>();\n\n // #region OUTPUT\n readonly outEvent: Subject<TYPE_POPOVER_DIRECTION> = new Subject();\n\n /* VIEW CHILD */\n private container = viewChild.required<ElementRef>('container');\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n\n // #region FUNCTIONS\n public get ElementRef() {\n return this.elementRef;\n }\n\n public get ContainerElement() {\n return this.container().nativeElement;\n }\n\n public setConfig(rectOrigin: IBoundingClientRect, config: IPopoverOverlay, isAddContentToParentDocument?: boolean) {\n isAddContentToParentDocument = isAddContentToParentDocument || config.isAddContentToParentDocument;\n rectOrigin = cloneIBoundingClientRect(rectOrigin);\n this.config.set(cloneDeep(config));\n\n this.container().nativeElement.style.opacity = 0;\n if (this.config().widthByParent) {\n this.config.update(config => ({ ...config, width: rectOrigin.width - (config?.parentBorderWidth || 0) * 2 }));\n }\n let viewPort = getViewport();\n let rectFrame: IBoundingClientRect | undefined = undefined;\n\n if (isAddContentToParentDocument) {\n viewPort = getViewport(window.parent);\n const url = new UtilsUrlSearchParams(location.href);\n const iframeId = url.get('iframeId');\n\n rectFrame = window.parent.document.getElementById(`iframe-${iframeId}`)?.getBoundingClientRect();\n if (rectFrame) {\n rectOrigin.top += rectFrame.top;\n rectOrigin.left += rectFrame.left;\n }\n }\n\n if (this.config().maxHeight === null) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - 44 }));\n }\n\n clearTimeout(this.timeout());\n this.setVariableCss();\n this.setDirections(rectOrigin, viewPort, rectFrame);\n let rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n\n interval(250).pipe(take(4), takeUntil(this.onDestroy)).subscribe(() => {\n const rect = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rect.top += rectFrame.top;\n rect.left += rectFrame.left;\n }\n if (rect.width !== rectContent.width || rect.height !== rectContent.height || rect.top !== rectContent.top || rect.left !== rectContent.left) {\n clearTimeout(this.timeout());\n this.setDirections(rectOrigin, viewPort, rectFrame);\n rectContent = rect;\n }\n });\n }\n\n private setDirections(rectOrigin: IBoundingClientRect, viewPort: { width: number, height: number }, rectFrame?: IBoundingClientRect) {\n const directions = getListdirections(this.config().direction || 'bottom');\n const positionLast = directions.length - 1;\n\n this.timeout.set(setTimeout(async () => {\n const rectContent = cloneIBoundingClientRect(this.container().nativeElement.getBoundingClientRect());\n\n if (rectFrame) {\n rectContent.top += rectFrame.top;\n rectContent.left += rectFrame.left;\n }\n for (const index in directions) {\n if (await this.loopDirection(rectOrigin, rectContent, directions[index], positionLast === +index, viewPort)) {\n return;\n }\n }\n }, 50));\n }\n\n private loopDirection(rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, direction: TYPE_POPOVER_DIRECTION, isLast: boolean, viewPort: { width: number, height: number }): Promise<boolean> {\n return new Promise(resolve => {\n const positionMode = this.config().position?.mode || 'start';\n const { position } = this.config();\n let result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n\n if (!result) {\n if (position) {\n position.mode = positionMode === 'center' || positionMode === 'start' ? 'end' : 'start';\n if (!this.config().ignoreArrow && position.autoUpdatePosition) {\n position.distance = position.mode === 'end' ? position.autoUpdatePosition.endDistance : position.autoUpdatePosition.startDistance;\n }\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result && positionMode === 'center') {\n if (position) {\n position.mode = position.mode === 'start' ? 'end' : 'start';\n this.config.update(config => ({ ...config }));\n }\n result = this.setPosition(direction, rectOrigin, (rectContent as IBoundingClientRect), viewPort, isLast);\n }\n if (!result) {\n if (position) {\n position.mode = positionMode;\n this.config.update(config => ({ ...config }));\n }\n\n return resolve(false);\n }\n this.currentDirection.set(direction);\n this.setVariableCss();\n this.setClassArrow(direction);\n this.container().nativeElement.style.opacity = 1;\n this.outEvent.next(direction);\n\n return resolve(true);\n });\n }\n\n private setPosition(direction: TYPE_POPOVER_DIRECTION, rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, viewPort: { width: number, height: number }, isLast: boolean): boolean {\n const halfSquare = 6;\n const distanceArrow = 4;\n let bottomPositionRectContent = 0;\n let positionTop = 0;\n let positionLeft = 0;\n let top = 0;\n let left = 0;\n const configValue = this.config();\n\n switch (direction) {\n case 'bottom':\n positionTop = rectOrigin.top + rectOrigin.height + distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n if (configValue.ignoreArrow) {\n top = top - halfSquare - distanceArrow;\n }\n top += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n if (configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n left += (configValue.parentBorderWidth || 0);\n\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(-6);\n this.top.set(top);\n this.left.set(left);\n\n if (top + rectContent.height < viewPort.height && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - rectOrigin.top - rectOrigin.height }));\n }\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n return false;\n\n case 'right':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left + rectOrigin.width + distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft + halfSquare;\n\n if (configValue.ignoreArrow) {\n left = positionLeft - distanceArrow;\n }\n\n left += configValue.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position?.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(-9);\n\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height }));\n }\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n\n return false;\n\n case 'left':\n positionTop = rectOrigin.top + rectOrigin.height / 2 - halfSquare;\n positionLeft = rectOrigin.left - (halfSquare * 2) - distanceArrow;\n top = positionTop - rectContent.height / 2 + halfSquare;\n left = positionLeft - rectContent.width + halfSquare;\n if (configValue.ignoreArrow) {\n left = left + halfSquare + distanceArrow;\n }\n\n left -= configValue?.directionDistance || 0;\n if (configValue.position?.mode === 'start') {\n top = rectOrigin.top + (configValue.position.distance || 0);\n }\n\n if (configValue.position?.mode === 'end') {\n top = rectOrigin.top + rectOrigin.height - rectContent.height + (configValue.position.distance || 0);\n }\n\n bottomPositionRectContent = top + rectContent.height;\n\n if (bottomPositionRectContent > viewPort.height) {\n top = top - (bottomPositionRectContent - viewPort.height);\n }\n\n this.arrowTop.set(positionTop - top + 2);\n this.arrowLeft.set(rectContent.width - 3);\n\n this.top.set(top);\n this.left.set(left);\n if (left > 0 && top > 0) {\n return true;\n }\n\n if (isLast) {\n if (this.config) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height }));\n }\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n return false;\n\n case 'top':\n positionTop = rectOrigin.top - (halfSquare * 2) - distanceArrow;\n positionLeft = rectOrigin.left + rectOrigin.width / 2 - halfSquare;\n top = positionTop - rectContent.height + halfSquare;\n left = positionLeft - rectContent.width / 2 + halfSquare;\n\n if (configValue.ignoreArrow) {\n top = top + halfSquare + distanceArrow;\n }\n\n top -= configValue.directionDistance || 0;\n\n if (configValue.position && configValue.position?.mode === 'start') {\n left = rectOrigin.left + (configValue.position.distance || 0);\n }\n\n if (configValue.position && configValue.position?.mode === 'end') {\n left = rectOrigin.left + rectOrigin.width - rectContent.width + (configValue.position.distance || 0);\n }\n\n left += (configValue.parentBorderWidth || 0);\n this.arrowLeft.set(positionLeft - left);\n this.arrowTop.set(rectContent.height);\n this.top.set(top);\n this.left.set(left);\n if (top > 0 && left >= 0 && left + rectContent.width < viewPort.width) {\n return true;\n }\n\n if (isLast) {\n this.config.update(config => ({ ...config, maxHeight: viewPort.height - (viewPort.height - rectOrigin.top) }));\n top = 0;\n this.left.set(this.getLeftPositionIsLast(isLast, left >= 0 ? left : 0, viewPort, rectOrigin, rectContent, halfSquare));\n\n return true;\n }\n\n return false;\n }\n }\n\n private setClassArrow(direction: TYPE_POPOVER_DIRECTION) {\n if (direction === 'right') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-right');\n }\n if (direction === 'left') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-left');\n }\n if (direction === 'top') {\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-down');\n }\n\n return this.arrowClass.set('libs-ui-popover-overlay-arrow-up');\n }\n\n private setVariableCss() {\n const configValue = this.config();\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-time', `${configValue.animationConfig?.time || .4}s`);\n this.ContainerElement.style.setProperty('--libs-ui-popover-overlay-time-animation-distance', `${this.currentDirection() === 'top' ? '-' : ''}${configValue.animationConfig?.distance || 12}px`);\n }\n\n private getLeftPositionIsLast(isLast: boolean, currentLeft: number, viewPort: { width: number, height: number }, rectOrigin: IBoundingClientRect, rectContent: IBoundingClientRect, halfSquare: number): number {\n if (viewPort.width - (rectOrigin.left + rectOrigin.width + rectContent.width + halfSquare) > 0) {\n return rectOrigin.left + rectOrigin.width + halfSquare;\n }\n return currentLeft;\n }\n\n ngOnDestroy() {\n clearTimeout(this.timeout());\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n\n}\n","<div #container\n class=\"libs-ui-popover-overlay {{ config().classInclude || '' }}\"\n [class.libs-ui-popover-overlay-white-theme]=\"config().whiteTheme\"\n [class.libs-ui-popover-overlay-animation-move]=\"config().animationConfig\"\n [ngStyle]=\"config().ngStyles || {}\"\n [style.width]=\"config().width ? config().width + 'px' : 'auto'\"\n [style.maxWidth.px]=\"config().maxWidth\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.top.px]=\"top()\"\n [style.left.px]=\"left()\"\n [style.zIndex]=\"config().zIndex || 10\">\n @if (config()) {\n @if (!config().ignoreArrow) {\n <div class='relative'>\n <svg\n [class]=\"'libs-ui-popover-overlay-arrow '+ arrowClass() + ( config().whiteTheme ? ' libs-ui-popover-overlay-white-theme ' : '')\"\n [style.top.px]=\"arrowTop()\"\n [style.left.px]=\"arrowLeft()\"\n [attr.direction]='outEvent | async'>\n <polygon points=\"0,0 6,6 12,0\" />\n Sorry, your browser does not support inline SVG.\n </svg>\n </div>\n }\n @if (config().template; as templateConfig) {\n <div LibsUiComponentsScrollOverlayDirective\n class=\"libs-ui-popover-overlay-body {{ config().classIncludeOverlayBody || '' }}\"\n [attr.isTemplate]=\"true\"\n [style.max-height]=\"(config().maxHeight)+'px'\">\n <ng-container *ngTemplateOutlet=\"templateConfig;context:{itemContext:config().itemContext}\" />\n </div>\n } @else {\n <div class=\"libs-ui-popover-overlay-body libs-ui-font-h7r {{ config().classIncludeOverlayBody || '' }}\"\n LibsUiComponentsScrollOverlayDirective\n [options]=\"config().scrollOverlayOptions\"\n [style.maxHeight.px]=\"config().maxHeight\"\n [style.paddingTop.px]=\"config().paddingTop ?? 8\"\n [style.paddingRight.px]=\"config().paddingRight ?? 8\"\n [style.paddingLeft.px]=\"config().paddingLeft ?? 8\"\n [style.paddingBottom.px]=\"config().paddingBottom ?? 8\"\n [innerHtml]=\"(config().content || ' ') | translate\">\n </div>\n }\n }\n\n</div>\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { AfterContentInit, ChangeDetectionStrategy, Component, ComponentRef, ElementRef, OnDestroy, OnInit, effect, inject, input, output, signal, untracked } from '@angular/core';\nimport { LibsUiDynamicComponentService } from '@libs-ui/services-dynamic-component';\nimport { checkMouseOverInContainer, get, getEventNameHandleClick, getViewport, isNil, set } from '@libs-ui/utils';\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\nimport { debounceTime, takeUntil, tap } from 'rxjs/operators';\nimport { getPopoverTimerDestroyInQueryUrl } from './defines/constants.define';\nimport { IFlagMouse } from './interfaces/flag-mouse.interface';\nimport { IPopoverFunctionControlEvent } from './interfaces/function-control.interface';\nimport { IPopoverOverlay } from './interfaces/overlay.interface';\nimport { TYPE_POPOVER_DIRECTION, TYPE_POPOVER_EVENT, TYPE_POPOVER_MODE, TYPE_POPOVER_TYPE } from './interfaces/popover.type';\nimport { LibsUiComponentsPopoverOverlayComponent } from './overlay/overlay.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-popover,[LibsUiComponentsPopoverDirective]',\n templateUrl: './popover.component.html',\n styleUrl: './popover.component.scss',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsPopoverComponent implements OnInit, AfterContentInit, OnDestroy {\n // #region PROPERTY\n private mouseEnter!: Observable<MouseEvent>;\n private mouseWheel!: Observable<MouseEvent>;\n private mouseClick!: Observable<MouseEvent>;\n private windowResize!: Observable<MouseEvent>;\n private windowWheel!: Observable<MouseEvent>;\n private windowMouseDown!: Observable<MouseEvent>;\n private windowClick!: Observable<MouseEvent>;\n private windowMouseUp!: Observable<MouseEvent>;\n private windowMousemove!: Observable<MouseEvent>;\n private popoverOverlayComponent!: ComponentRef<LibsUiComponentsPopoverOverlayComponent> | undefined;\n private subsEventPopup = new Subscription();\n private onDestroy = new Subject<void>();\n private functionsControl?: IPopoverFunctionControlEvent;\n private firstClick = signal<boolean>(false);\n private contentInnerHtml = signal<string>('');\n private timer = signal<number | undefined>(undefined);\n private directionPopover = signal<TYPE_POPOVER_DIRECTION | undefined>(undefined);\n private frameId = signal<string>('');\n\n // #region INPUT\n readonly debugId = input<string>();\n readonly flagMouse = input<IFlagMouse, IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }, {\n transform: (value: any) => value ? value : { isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false }\n });\n readonly type = input<TYPE_POPOVER_TYPE>('other');\n readonly mode = input<TYPE_POPOVER_MODE>('hover');\n readonly config = input({}, { transform: (value: IPopoverOverlay | undefined) => value ? value : {} });\n readonly ignoreShowPopover = input<boolean>();\n readonly elementRefCustom = input<HTMLElement>();\n readonly initEventInElementRefCustom = input<boolean>(false);\n readonly classInclude = input<string | undefined, string | undefined>('', { transform: (value) => value ?? '' });\n readonly ignoreHiddenPopoverContentWhenMouseLeave = input<boolean>();\n readonly ignoreStopPropagationEvent = input<boolean>();\n readonly ignoreCursorPointerModeLikeClick = input<boolean>();\n readonly isAddContentToParentDocument = input<boolean>();\n readonly ignoreClickOutside = input<boolean>();\n\n // #region OUTPUT\n readonly outEvent = output<TYPE_POPOVER_EVENT>();\n readonly outChangStageFlagMouse = output<IFlagMouse>();\n readonly outEventPopoverContent = output<TYPE_POPOVER_DIRECTION>();\n readonly outFunctionsControl = output<IPopoverFunctionControlEvent>();\n\n // #region INJECT\n private elementRef = inject(ElementRef);\n private dynamicService = inject(LibsUiDynamicComponentService);\n\n constructor() {\n let classDefault: string | undefined = undefined;\n effect(() => {\n if (classDefault === undefined) {\n classDefault = this.Element.className;\n }\n if (this.elementRefCustom() !== this.Element) {\n this.Element.className = classDefault || '';\n }\n if (this.type() === 'text') {\n this.Element.classList.add('popover-text-ellipsis');\n }\n if (this.mode().includes('click') && !this.ignoreCursorPointerModeLikeClick()) {\n this.Element.classList.add('cursor-pointer');\n }\n if (this.classInclude()) {\n this.classInclude()?.split(' ').forEach(className => {\n if (!className) {\n return;\n }\n this.Element.classList.add(className);\n })\n }\n });\n\n let first = true;\n effect(() => {\n this.config();\n untracked(() => {\n if (this.popoverOverlayComponent?.instance && !first) {\n this.updatePopoverOverlayPosition();\n }\n first = false;\n });\n });\n }\n\n ngOnInit(): void {\n this.outEventPopoverContent.subscribe(direction => this.directionPopover.set(direction));\n this.functionsControl = {\n removePopoverOverlay: this.removePopoverOverlay.bind(this),\n updatePopoverOverlayPosition: this.updatePopoverOverlayPosition.bind(this),\n getRectContainer: async () => (this.elementRefCustom() || this.Element).getBoundingClientRect(),\n getRectContent: async () => (this.popoverOverlayComponent?.instance?.ContainerElement)?.getBoundingClientRect(),\n showPopover: this.addPopoverContent.bind(this),\n updatePopoverOverlay: this.updatePopoverOverlay.bind(this),\n };\n this.outFunctionsControl.emit(this.functionsControl);\n }\n\n ngAfterContentInit() {\n const nativeEl = this.Element;\n this.mouseEnter = this.initObservable(nativeEl, 'mouseenter');\n this.mouseClick = this.initObservable(nativeEl, getEventNameHandleClick);\n this.mouseWheel = this.initObservable(window, 'wheel');\n this.windowResize = this.initObservable(window, 'resize');\n this.windowWheel = this.initObservable(window, 'wheel');\n this.windowMouseDown = this.initObservable(window, 'mousedown');\n this.windowClick = this.initObservable(window, getEventNameHandleClick);\n this.windowMouseUp = this.initObservable(window, 'mouseup');\n this.windowMousemove = this.initObservable(window, 'mousemove');\n this.mouseEnter.subscribe(() => {\n\n if (!this.mode().includes('hover')) {\n return;\n }\n\n if (this.type() === 'text' && nativeEl?.clientWidth >= nativeEl.scrollWidth && !this.popoverOverlayComponent) {\n return;\n }\n this.addPopoverContent();\n });\n this.mouseClick.subscribe(() => {\n this.firstClick.update(val => this.ignoreShowPopover() ? false : !val);\n this.outEvent.emit('click');\n\n if (!this.mode().startsWith('click')) {\n return;\n }\n\n if (this.mode() === 'click-toggle' && !this.firstClick()) {\n this.removePopoverOverlay();\n\n return;\n }\n this.addPopoverContent();\n });\n this.windowResize.pipe(debounceTime(500)).subscribe(this.updatePopoverOverlayPosition.bind(this));\n }\n\n // #region FUNCTIONS\n private async updatePopoverOverlay() {\n const timer = setTimeout(() => {\n clearTimeout(timer);\n if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config()) {\n return;\n }\n const instance = this.popoverOverlayComponent.instance;\n const nativeEl = this.elementRefCustom() || this.Element;\n\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n });\n }\n\n private async updatePopoverOverlayPosition() {\n clearTimeout(this.timer());\n this.timer.set(setTimeout(async () => {\n if (!this.popoverOverlayComponent || !this.popoverOverlayComponent.instance || !this.config() || !this.functionsControl) {\n return;\n }\n const viewPort = getViewport();\n const rectListView = await this.functionsControl.getRectContent();\n\n if (!rectListView) {\n return;\n }\n const rectContainer = await this.functionsControl.getRectContainer();\n const distanceListViewAndContainer = this.config()?.ignoreArrow === false ? 14 : 4;\n switch (this.directionPopover()) {\n case 'right':\n case 'left':\n case 'bottom':\n if (((rectListView.top + rectListView.height > viewPort.height) || (rectListView.top < (rectContainer.top + rectContainer.height)) || (rectListView.top - (rectContainer.top + rectContainer.height) > distanceListViewAndContainer)) || ((rectListView.left + rectListView.width > viewPort.width))) {\n this.updatePopoverOverlay();\n }\n break;\n\n case 'top':\n if ((rectContainer.top - (rectListView.top + rectListView.height) > distanceListViewAndContainer) || (rectListView.top + rectListView.height + distanceListViewAndContainer > rectContainer.top + 2) || ((rectListView.left + rectListView.width > viewPort.width))) {\n this.updatePopoverOverlay();\n }\n break;\n }\n }, 250));\n }\n\n protected get Element(): HTMLElement {\n if (this.initEventInElementRefCustom() && this.elementRefCustom()) {\n return this.elementRefCustom() as HTMLElement;\n }\n return this.elementRef.nativeElement.firstElementChild || this.elementRef.nativeElement;\n }\n\n private initObservable(el: any, eventName: string): Observable<MouseEvent> {\n return fromEvent<MouseEvent>(el, eventName).pipe(\n tap(e => !this.ignoreStopPropagationEvent() && e.stopPropagation()),\n takeUntil(this.onDestroy)\n );\n }\n\n private async addPopoverContent(nativeEl?: HTMLElement) {\n if (this.popoverOverlayComponent || this.ignoreShowPopover() || !this.config()) {\n return;\n }\n\n this.popoverOverlayComponent = this.dynamicService.resolveComponentFactory(LibsUiComponentsPopoverOverlayComponent);\n this.frameId.set(this.dynamicService.addToBody(this.popoverOverlayComponent, this.isAddContentToParentDocument() || this.config().isAddContentToParentDocument));\n this.outEvent.emit('show');\n const instance = this.popoverOverlayComponent.instance;\n\n nativeEl = nativeEl || this.elementRefCustom() || this.Element;\n instance.setConfig(nativeEl.getBoundingClientRect(), { ... (this.config() || {}), ...this.getDefaultConfigs() }, this.isAddContentToParentDocument());\n const flagsMouses: IFlagMouse = {\n isMouseEnter: true,\n isMouseEnterContent: false,\n isContainerHasScroll: nativeEl.offsetHeight < nativeEl.scrollHeight\n };\n const nativeElContainer = instance.ElementRef.nativeElement;\n const mouseEnterContent = this.initObservable(nativeElContainer, 'mouseenter');\n const mouseLeaveContent = this.initObservable(nativeElContainer, 'mouseleave');\n this.subsEventPopup.add(instance.outEvent.subscribe((direction: TYPE_POPOVER_DIRECTION) => {\n this.outEventPopoverContent.emit(direction);\n }));\n\n this.subsEventPopup.add(mouseEnterContent.subscribe(() => {\n this.outEvent.emit('mouseenter-content');\n flagsMouses.isMouseEnterContent = true;\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseEnter.subscribe(() => {\n this.outEvent.emit('mouseenter-element');\n this.outChangStageFlagMouse.emit(flagsMouses);\n }));\n\n this.subsEventPopup.add(this.mouseWheel.subscribe(() => {\n flagsMouses.isContainerHasScroll = false;\n\n if (nativeEl.offsetHeight < nativeEl.scrollHeight) {\n flagsMouses.isContainerHasScroll = true;\n }\n if ((flagsMouses.isMouseEnter && flagsMouses.isContainerHasScroll) || flagsMouses.isMouseEnterContent || this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent) {\n return;\n }\n this.removePopoverOverlay();\n }));\n this.handlerMouseLeaveRemovePopoverOverlay(this.windowMousemove, flagsMouses, 'isMouseEnter', 'isMouseEnterContent', 'mouseleave-element');\n this.handlerMouseLeaveRemovePopoverOverlay(mouseLeaveContent, flagsMouses, 'isMouseEnterContent', 'isMouseEnter', 'mouseleave-content');\n\n if (this.mode() === 'click_open_and_click_panel_content_hidden') {\n this.subsEventPopup.add(this.initObservable(nativeElContainer, 'click').subscribe(() => {\n this.removePopoverOverlay();\n }));\n }\n\n this.handlerWindowEventRemovePopoverOverlay(this.windowClick, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseDown, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowMouseUp, flagsMouses);\n this.handlerWindowEventRemovePopoverOverlay(this.windowWheel, flagsMouses);\n }\n\n private handlerWindowEventRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: IFlagMouse) {\n this.subsEventPopup.add(obs.pipe(debounceTime(10)).subscribe(() => {\n if (flagsMouses.isMouseEnter || flagsMouses.isMouseEnterContent || this.ignoreClickOutside()) {\n return;\n }\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n this.firstClick.set(false);\n this.removePopoverOverlay();\n }));\n }\n\n private handlerMouseLeaveRemovePopoverOverlay(obs: Observable<MouseEvent>, flagsMouses: { isMouseEnter: boolean, isMouseEnterContent: boolean }, flagKeyChangeValue: string, flagKeyCheck: string, outEvent: TYPE_POPOVER_EVENT) {\n this.subsEventPopup.add(obs.pipe(\n tap(() => this.outEvent.emit(outEvent)),\n debounceTime(getPopoverTimerDestroyInQueryUrl() || this.config()?.timerDestroy || 0)\n ).subscribe((e: MouseEvent) => {\n if (outEvent === 'mouseleave-element' && (checkMouseOverInContainer(e, this.Element) || checkMouseOverInContainer({ clientX: e.clientX + 2, clientY: e.clientY + 2 }, this.Element) || checkMouseOverInContainer({ clientX: e.clientX - 2, clientY: e.clientY - 2 }, this.Element))) {\n return;\n }\n set(flagsMouses, flagKeyChangeValue, false);\n this.outChangStageFlagMouse.emit(flagsMouses);\n if (this.flagMouse() && (this.flagMouse().isMouseEnter || this.flagMouse().isMouseEnterContent)) {\n return;\n }\n\n if (get(flagsMouses, flagKeyCheck) || this.ignoreHiddenPopoverContentWhenMouseLeave()) {\n return;\n }\n this.removePopoverOverlay();\n }));\n }\n\n private getDefaultConfigs(): IPopoverOverlay {\n const configValue = this.config() || {};\n if ((isNil(configValue.content)) || (configValue.content === this.contentInnerHtml() && this.contentInnerHtml() !== this.Element.innerHTML)) {\n configValue.content = this.Element.innerHTML;\n }\n this.contentInnerHtml.set(this.Element.innerHTML);\n if (!configValue.maxWidth) {\n configValue.maxWidth = 250;\n }\n if (configValue.maxHeight === undefined || configValue.maxHeight === 0) {\n configValue.maxHeight = 140;\n }\n if (!configValue.direction) {\n configValue.direction = 'bottom';\n }\n if (!configValue.position) {\n configValue.position = {\n mode: 'center',\n distance: 0\n };\n }\n\n return configValue;\n }\n\n private async removePopoverOverlay() {\n if (this.popoverOverlayComponent) {\n this.outEvent.emit('remove');\n this.subsEventPopup.unsubscribe();\n this.subsEventPopup = new Subscription();\n }\n this.dynamicService.remove(this.popoverOverlayComponent, this.frameId());\n this.frameId.set('');\n this.popoverOverlayComponent = undefined;\n this.firstClick.set(false);\n }\n\n ngOnDestroy() {\n clearTimeout(this.timer());\n this.removePopoverOverlay();\n this.onDestroy.next();\n this.onDestroy.complete();\n this.subsEventPopup.unsubscribe();\n }\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["takeUntil"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libs-ui/components-popover",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.300",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": ">=18.0.0",
|
|
6
6
|
"@angular/core": ">=18.0.0",
|
|
7
|
-
"@libs-ui/utils": "0.2.
|
|
8
|
-
"@libs-ui/interfaces-types": "0.2.
|
|
9
|
-
"@libs-ui/components-scroll-overlay": "0.2.
|
|
7
|
+
"@libs-ui/utils": "0.2.300",
|
|
8
|
+
"@libs-ui/interfaces-types": "0.2.300",
|
|
9
|
+
"@libs-ui/components-scroll-overlay": "0.2.300",
|
|
10
10
|
"@ngx-translate/core": "^15.0.0",
|
|
11
11
|
"rxjs": "~7.8.0",
|
|
12
|
-
"@libs-ui/services-dynamic-component": "0.2.
|
|
12
|
+
"@libs-ui/services-dynamic-component": "0.2.300"
|
|
13
13
|
},
|
|
14
14
|
"sideEffects": false,
|
|
15
15
|
"module": "fesm2022/libs-ui-components-popover.mjs",
|
package/popover.component.d.ts
CHANGED
|
@@ -14,7 +14,6 @@ export declare class LibsUiComponentsPopoverComponent implements OnInit, AfterCo
|
|
|
14
14
|
private windowClick;
|
|
15
15
|
private windowMouseUp;
|
|
16
16
|
private windowMousemove;
|
|
17
|
-
private windowTouch;
|
|
18
17
|
private popoverOverlayComponent;
|
|
19
18
|
private subsEventPopup;
|
|
20
19
|
private onDestroy;
|