@acorex/cdk 21.0.1-next.1 → 21.0.1-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/fesm2022/acorex-cdk-accordion.mjs +19 -19
  2. package/fesm2022/acorex-cdk-accordion.mjs.map +1 -1
  3. package/fesm2022/acorex-cdk-carousel.mjs +3 -3
  4. package/fesm2022/acorex-cdk-carousel.mjs.map +1 -1
  5. package/fesm2022/acorex-cdk-clipboard.mjs +6 -6
  6. package/fesm2022/acorex-cdk-clipboard.mjs.map +1 -1
  7. package/fesm2022/acorex-cdk-common.mjs +91 -91
  8. package/fesm2022/acorex-cdk-common.mjs.map +1 -1
  9. package/fesm2022/acorex-cdk-dom.mjs +3 -3
  10. package/fesm2022/acorex-cdk-dom.mjs.map +1 -1
  11. package/fesm2022/acorex-cdk-double-click.mjs +3 -3
  12. package/fesm2022/acorex-cdk-double-click.mjs.map +1 -1
  13. package/fesm2022/acorex-cdk-drag-drop.mjs +16 -16
  14. package/fesm2022/acorex-cdk-drag-drop.mjs.map +1 -1
  15. package/fesm2022/acorex-cdk-drawer.mjs +10 -10
  16. package/fesm2022/acorex-cdk-drawer.mjs.map +1 -1
  17. package/fesm2022/acorex-cdk-focus-trap.mjs +3 -3
  18. package/fesm2022/acorex-cdk-focus-trap.mjs.map +1 -1
  19. package/fesm2022/acorex-cdk-full-screen.mjs +3 -3
  20. package/fesm2022/acorex-cdk-full-screen.mjs.map +1 -1
  21. package/fesm2022/acorex-cdk-input-mask.mjs +3 -3
  22. package/fesm2022/acorex-cdk-input-mask.mjs.map +1 -1
  23. package/fesm2022/acorex-cdk-list-navigation.mjs +10 -10
  24. package/fesm2022/acorex-cdk-list-navigation.mjs.map +1 -1
  25. package/fesm2022/acorex-cdk-outline.mjs +6 -6
  26. package/fesm2022/acorex-cdk-outline.mjs.map +1 -1
  27. package/fesm2022/acorex-cdk-overlay.mjs +13 -370
  28. package/fesm2022/acorex-cdk-overlay.mjs.map +1 -1
  29. package/fesm2022/acorex-cdk-pan-view.mjs +3 -3
  30. package/fesm2022/acorex-cdk-pan-view.mjs.map +1 -1
  31. package/fesm2022/acorex-cdk-resizable.mjs +3 -3
  32. package/fesm2022/acorex-cdk-resizable.mjs.map +1 -1
  33. package/fesm2022/acorex-cdk-selection.mjs +10 -10
  34. package/fesm2022/acorex-cdk-selection.mjs.map +1 -1
  35. package/fesm2022/acorex-cdk-sliding-item.mjs +3 -3
  36. package/fesm2022/acorex-cdk-sliding-item.mjs.map +1 -1
  37. package/fesm2022/acorex-cdk-sticky.mjs +3 -3
  38. package/fesm2022/acorex-cdk-sticky.mjs.map +1 -1
  39. package/fesm2022/acorex-cdk-uploader.mjs +9 -9
  40. package/fesm2022/acorex-cdk-uploader.mjs.map +1 -1
  41. package/fesm2022/acorex-cdk-virtual-scroll.mjs +10 -10
  42. package/fesm2022/acorex-cdk-virtual-scroll.mjs.map +1 -1
  43. package/overlay/index.d.ts +5 -92
  44. package/package.json +2 -6
  45. package/fesm2022/acorex-cdk-z-index.mjs +0 -35
  46. package/fesm2022/acorex-cdk-z-index.mjs.map +0 -1
  47. package/z-index/README.md +0 -3
  48. package/z-index/index.d.ts +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-cdk-common.mjs","sources":["../tmp-esm2022/common/lib/types/base/button.type.js","../tmp-esm2022/common/lib/types/base/color.type.js","../tmp-esm2022/common/lib/types/base/component.types.js","../tmp-esm2022/common/lib/types/base/events.types.js","../tmp-esm2022/common/lib/types/base/interactive.type.js","../tmp-esm2022/common/lib/types/base/look.type.js","../tmp-esm2022/common/lib/types/base/value.type.js","../tmp-esm2022/common/lib/types/placement.js","../tmp-esm2022/common/lib/types/selection-mode.js","../tmp-esm2022/common/lib/services/dom.service.js","../tmp-esm2022/common/lib/components/base-component.class.js","../tmp-esm2022/common/lib/components/interactive-component.class.js","../tmp-esm2022/common/lib/components/value-component.class.js","../tmp-esm2022/common/lib/classes/events.class.js","../tmp-esm2022/common/lib/classes/components.class.js","../tmp-esm2022/common/lib/classes/datalist.class.js","../tmp-esm2022/common/lib/classes/datasource.class.js","../tmp-esm2022/common/lib/classes/styles.class.js","../tmp-esm2022/common/lib/directives/auto-focus.directive.js","../tmp-esm2022/common/lib/services/hotkey.service.js","../tmp-esm2022/common/lib/directives/hotkey.directive.js","../tmp-esm2022/common/lib/directives/infinite-scroll.directive.js","../tmp-esm2022/common/lib/directives/responsive.directive.js","../tmp-esm2022/common/lib/common.module.js","../tmp-esm2022/common/lib/components/color-component.class.js","../tmp-esm2022/common/lib/components/look-component.class.js","../tmp-esm2022/common/lib/components/colorlook-component.class.js","../tmp-esm2022/common/lib/components/button-base-component.class.js","../tmp-esm2022/common/lib/components/input-base-value-component.class.js","../tmp-esm2022/common/lib/components/selection-base.component.class.js","../tmp-esm2022/common/lib/directives/delayed-value-changed.directive.js","../tmp-esm2022/common/lib/directives/inverted-color.directive.js","../tmp-esm2022/common/lib/directives/ripple.directive.js","../tmp-esm2022/common/acorex-cdk-common.js"],"sourcesContent":["import { Component, model, output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXButtonComponent {\n constructor() {\n this.text = model(...(ngDevMode ? [undefined, { debugName: \"text\" }] : []));\n this.toggleableChange = output();\n this.selectedChange = output();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.9\", type: NXButtonComponent, isStandalone: true, selector: \"ng-component\", inputs: { text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { text: \"textChange\", toggleableChange: \"toggleableChange\", selectedChange: \"selectedChange\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXButtonComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: \"text\", required: false }] }, { type: i0.Output, args: [\"textChange\"] }], toggleableChange: [{ type: i0.Output, args: [\"toggleableChange\"] }], selectedChange: [{ type: i0.Output, args: [\"selectedChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvdHlwZXMvYmFzZS9idXR0b24udHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3pELE1BQU0sT0FBZ0IsaUJBQWlCO0lBSHZDO1FBSUUsU0FBSSxHQUFHLEtBQUssMERBQVUsQ0FBQztRQUV2QixxQkFBZ0IsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLE1BQU0sRUFBVyxDQUFDO0tBQ3BDOzhHQUxxQixpQkFBaUI7a0dBQWpCLGlCQUFpQixrVEFGM0IsRUFBRTs7MkZBRVEsaUJBQWlCO2tCQUh0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5YQnV0dG9uQ29tcG9uZW50IHtcbiAgdGV4dCA9IG1vZGVsPHN0cmluZz4oKTtcblxuICB0b2dnbGVhYmxlQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHNlbGVjdGVkQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG59XG4iXX0=","import { Component, model } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXColorComponent {\n constructor() {\n this.color = model('default', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXColorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.9\", type: NXColorComponent, isStandalone: true, selector: \"ng-component\", inputs: { color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: \"colorChange\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXColorComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: \"color\", required: false }] }, { type: i0.Output, args: [\"colorChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi90eXBlcy9iYXNlL2NvbG9yLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWpELE1BQU0sT0FBZ0IsZ0JBQWdCO0lBSHRDO1FBSUUsVUFBSyxHQUFHLEtBQUssQ0FBbUIsU0FBUyxpREFBQyxDQUFDO0tBQzVDOzhHQUZxQixnQkFBZ0I7a0dBQWhCLGdCQUFnQiwrT0FGMUIsRUFBRTs7MkZBRVEsZ0JBQWdCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTdHlsZUNvbG9yVHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc3R5bGVzLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTlhDb2xvckNvbXBvbmVudCB7XG4gIGNvbG9yID0gbW9kZWw8QVhTdHlsZUNvbG9yVHlwZT4oJ2RlZmF1bHQnKTtcbn1cbiJdfQ==","import { afterNextRender, ElementRef, inject, Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXComponent {\n constructor() {\n this.#elementRef = inject(ElementRef);\n this.#isRendered = signal(false, ...(ngDevMode ? [{ debugName: \"#isRendered\" }] : []));\n this.isRendered = this.#isRendered.asReadonly();\n this.#afterNextRender = afterNextRender(() => {\n if (!this.isRendered()) {\n this.nativeElement['__axContext__'] = this;\n this.#isRendered.set(true);\n }\n });\n }\n #elementRef;\n #isRendered;\n #afterNextRender;\n get nativeElement() {\n return this.#elementRef.nativeElement;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL2Jhc2UvY29tcG9uZW50LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd4RixNQUFNLE9BQWdCLFdBQVc7SUFEakM7UUFFRSxnQkFBVyxHQUE0QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUQsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyx1REFBQyxDQUFDO1FBRWxCLGVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXJELHFCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBS0o7SUFmQyxXQUFXLENBQStDO0lBQzFELFdBQVcsQ0FBaUI7SUFJNUIsZ0JBQWdCLENBS2I7SUFFSCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDOzhHQWZtQixXQUFXO2tIQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOWENvbXBvbmVudCB7XG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI2lzUmVuZGVyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBpc1JlbmRlcmVkID0gdGhpcy4jaXNSZW5kZXJlZC5hc1JlYWRvbmx5KCk7XG5cbiAgI2FmdGVyTmV4dFJlbmRlciA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzUmVuZGVyZWQoKSkge1xuICAgICAgdGhpcy5uYXRpdmVFbGVtZW50WydfX2F4Q29udGV4dF9fJ10gPSB0aGlzO1xuICAgICAgdGhpcy4jaXNSZW5kZXJlZC5zZXQodHJ1ZSk7XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==","/**\n * Base event class\n * @category Events\n */\nexport class NXEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class NXNativeEvent extends NXEvent {\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class NXClickEvent extends NXNativeEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL2Jhc2UvZXZlbnRzLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0NBRW5CO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGFBQTRFLFNBQVEsT0FBVTtDQUUxRztBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxZQUFrRCxTQUFRLGFBQTRCO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOWENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50LnR5cGVzJztcblxuLyoqXG4gKiAgQmFzZSBldmVudCBjbGFzc1xuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgTlhFdmVudDxUIGV4dGVuZHMgTlhDb21wb25lbnQgPSBOWENvbXBvbmVudD4ge1xuICBzZW5kZXI6IFQ7XG59XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgTlhOYXRpdmVFdmVudDxUIGV4dGVuZHMgTlhDb21wb25lbnQgPSBOWENvbXBvbmVudCwgRSBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IGV4dGVuZHMgTlhFdmVudDxUPiB7XG4gIG5hdGl2ZUV2ZW50OiBFO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBOWENsaWNrRXZlbnQ8VCBleHRlbmRzIE5YQ29tcG9uZW50ID0gTlhDb21wb25lbnQ+IGV4dGVuZHMgTlhOYXRpdmVFdmVudDxULCBNb3VzZUV2ZW50PiB7fVxuIl19","import { AXHtmlUtil } from '@acorex/core/utils';\nimport { Component, model, output } from '@angular/core';\nimport { NXComponent } from './component.types';\nimport * as i0 from \"@angular/core\";\nexport class NXInteractiveComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.disabled = model(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n this.tabIndex = model(0, ...(ngDevMode ? [{ debugName: \"tabIndex\" }] : []));\n this.onFocus = output();\n this.onBlur = output();\n }\n focus() {\n AXHtmlUtil.focusElement(this.nativeElement);\n }\n blur() {\n AXHtmlUtil.blurElement(this.nativeElement);\n }\n hasFocus() {\n return AXHtmlUtil.hasFocus(this.nativeElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXInteractiveComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.9\", type: NXInteractiveComponent, isStandalone: true, selector: \"ng-component\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: \"disabledChange\", tabIndex: \"tabIndexChange\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXInteractiveComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disabled\", required: false }] }, { type: i0.Output, args: [\"disabledChange\"] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tabIndex\", required: false }] }, { type: i0.Output, args: [\"tabIndexChange\"] }], onFocus: [{ type: i0.Output, args: [\"onFocus\"] }], onBlur: [{ type: i0.Output, args: [\"onBlur\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi90eXBlcy9iYXNlL2ludGVyYWN0aXZlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBS2hELE1BQU0sT0FBZ0Isc0JBQXVCLFNBQVEsV0FBVztJQUhoRTs7UUFJRSxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssb0RBQUMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsS0FBSyxDQUFTLENBQUMsb0RBQUMsQ0FBQztRQUU1QixZQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDbkIsV0FBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0tBYW5CO0lBWEMsS0FBSztRQUNILFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJO1FBQ0YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7OEdBakJtQixzQkFBc0I7a0dBQXRCLHNCQUFzQix3ZEFGaEMsRUFBRTs7MkZBRVEsc0JBQXNCO2tCQUgzQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhIdG1sVXRpbCB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIG1vZGVsLCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5YQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOWEludGVyYWN0aXZlQ29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBkaXNhYmxlZCA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdGFiSW5kZXggPSBtb2RlbDxudW1iZXI+KDApO1xuXG4gIG9uRm9jdXMgPSBvdXRwdXQoKTtcbiAgb25CbHVyID0gb3V0cHV0KCk7XG5cbiAgZm9jdXMoKSB7XG4gICAgQVhIdG1sVXRpbC5mb2N1c0VsZW1lbnQodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGJsdXIoKSB7XG4gICAgQVhIdG1sVXRpbC5ibHVyRWxlbWVudCh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgaGFzRm9jdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFYSHRtbFV0aWwuaGFzRm9jdXModGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19","import { Component, model } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXLookComponent {\n constructor() {\n this.look = model('solid', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXLookComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.9\", type: NXLookComponent, isStandalone: true, selector: \"ng-component\", inputs: { look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { look: \"lookChange\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXLookComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { look: [{ type: i0.Input, args: [{ isSignal: true, alias: \"look\", required: false }] }, { type: i0.Output, args: [\"lookChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vay50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL2Jhc2UvbG9vay50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1qRCxNQUFNLE9BQWdCLGVBQWU7SUFIckM7UUFJRSxTQUFJLEdBQUcsS0FBSyxDQUFrQixPQUFPLGdEQUFDLENBQUM7S0FDeEM7OEdBRnFCLGVBQWU7a0dBQWYsZUFBZSwwT0FGekIsRUFBRTs7MkZBRVEsZUFBZTtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYU3R5bGVMb29rVHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc3R5bGVzLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTlhMb29rQ29tcG9uZW50IHtcbiAgbG9vayA9IG1vZGVsPEFYU3R5bGVMb29rVHlwZT4oJ3NvbGlkJyk7XG59XG4iXX0=","import { Component, model, output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXValueComponent {\n constructor() {\n this.readonly = model(...(ngDevMode ? [undefined, { debugName: \"readonly\" }] : []));\n this.name = model(...(ngDevMode ? [undefined, { debugName: \"name\" }] : []));\n this.value = model(...(ngDevMode ? [undefined, { debugName: \"value\" }] : []));\n this.onValueChanged = output();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.9\", type: NXValueComponent, isStandalone: true, selector: \"ng-component\", inputs: { readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { readonly: \"readonlyChange\", name: \"nameChange\", value: \"valueChange\", onValueChanged: \"onValueChanged\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: NXValueComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: \"readonly\", required: false }] }, { type: i0.Output, args: [\"readonlyChange\"] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: \"name\", required: false }] }, { type: i0.Output, args: [\"nameChange\"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: \"value\", required: false }] }, { type: i0.Output, args: [\"valueChange\"] }], onValueChanged: [{ type: i0.Output, args: [\"onValueChanged\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi90eXBlcy9iYXNlL3ZhbHVlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt6RCxNQUFNLE9BQWdCLGdCQUFnQjtJQUh0QztRQUlFLGFBQVEsR0FBRyxLQUFLLDhEQUFXLENBQUM7UUFDNUIsU0FBSSxHQUFHLEtBQUssMERBQVUsQ0FBQztRQUN2QixVQUFLLEdBQUcsS0FBSywyREFBRSxDQUFDO1FBRWhCLG1CQUFjLEdBQUcsTUFBTSxFQUFFLENBQUM7S0FDM0I7OEdBTnFCLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHVqQkFGMUIsRUFBRTs7MkZBRVEsZ0JBQWdCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5YVmFsdWVDb21wb25lbnQge1xuICByZWFkb25seSA9IG1vZGVsPGJvb2xlYW4+KCk7XG4gIG5hbWUgPSBtb2RlbDxzdHJpbmc+KCk7XG4gIHZhbHVlID0gbW9kZWwoKTtcblxuICBvblZhbHVlQ2hhbmdlZCA9IG91dHB1dCgpO1xufVxuIl19","import { clone, flatten } from 'lodash-es';\nconst defaultOffset = 3;\nexport function convertToPlacement(value) {\n const result = [];\n if (value == null)\n return result;\n if (Array.isArray(value)) {\n const list = flatten(value.map((m) => convertToPlacement(m)).filter((m) => m != null)).map((m) => clone(m));\n result.push(...list);\n }\n else {\n if (typeof value === 'string') {\n const p = AX_PLACEMENT_MAP[value];\n if (p) {\n result.push(...[clone(p.origin), ...clone(p.alts)]);\n }\n }\n else {\n if ('originX' in value && 'originY' in value) {\n result.push(clone(value));\n }\n }\n }\n return result;\n}\nexport const AX_PLACEMENT_TOP = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_TOP_START = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_TOP_END = {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_BOTTOM = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\nexport const AX_PLACEMENT_BOTTOM_START = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\nexport const AX_PLACEMENT_BOTTOM_END = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\nexport const AX_PLACEMENT_START = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -defaultOffset,\n};\nexport const AX_PLACEMENT_START_TOP = {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -defaultOffset,\n};\nexport const AX_PLACEMENT_START_BOTTOM = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: -defaultOffset,\n};\nexport const AX_PLACEMENT_END = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: defaultOffset,\n};\nexport const AX_PLACEMENT_END_TOP = {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: defaultOffset,\n};\nexport const AX_PLACEMENT_END_BOTTOM = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: defaultOffset,\n};\nexport const AX_PLACEMENT_MAP = {\n top: {\n origin: AX_PLACEMENT_TOP,\n alts: [AX_PLACEMENT_BOTTOM, AX_PLACEMENT_TOP_START, AX_PLACEMENT_TOP_END],\n },\n 'top-start': {\n origin: AX_PLACEMENT_TOP_START,\n alts: [AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_TOP_END, AX_PLACEMENT_BOTTOM_END],\n },\n 'top-end': {\n origin: AX_PLACEMENT_TOP_END,\n alts: [AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_TOP_START, AX_PLACEMENT_BOTTOM_START],\n },\n bottom: {\n origin: AX_PLACEMENT_BOTTOM,\n alts: [AX_PLACEMENT_TOP, AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_BOTTOM_END],\n },\n 'bottom-start': {\n origin: AX_PLACEMENT_BOTTOM_START,\n alts: [AX_PLACEMENT_TOP_START, AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_TOP_END],\n },\n 'bottom-end': {\n origin: AX_PLACEMENT_BOTTOM_END,\n alts: [AX_PLACEMENT_TOP_END, AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_TOP_START],\n },\n end: {\n origin: AX_PLACEMENT_END,\n alts: [AX_PLACEMENT_START, AX_PLACEMENT_END_TOP, AX_PLACEMENT_END_BOTTOM],\n },\n 'end-top': {\n origin: AX_PLACEMENT_END_TOP,\n alts: [AX_PLACEMENT_START_TOP, AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_START_BOTTOM],\n },\n 'end-bottom': {\n origin: AX_PLACEMENT_END_BOTTOM,\n alts: [AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_END_TOP, AX_PLACEMENT_START_TOP],\n },\n start: {\n origin: AX_PLACEMENT_START,\n alts: [AX_PLACEMENT_END, AX_PLACEMENT_START_TOP, AX_PLACEMENT_START_BOTTOM],\n },\n 'start-top': {\n origin: AX_PLACEMENT_START_TOP,\n alts: [AX_PLACEMENT_END_TOP, AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_END_BOTTOM],\n },\n 'start-bottom': {\n origin: AX_PLACEMENT_START_BOTTOM,\n alts: [AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_START_TOP, AX_PLACEMENT_END_TOP],\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL3BsYWNlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzQyxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFpQnhCLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFzQjtJQUN2RCxNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO0lBQ3pDLElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNqQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLFNBQVMsSUFBSSxLQUFLLElBQUksU0FBUyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFZRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBd0I7SUFDbkQsT0FBTyxFQUFFLFFBQVE7SUFDakIsT0FBTyxFQUFFLEtBQUs7SUFDZCxRQUFRLEVBQUUsUUFBUTtJQUNsQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsQ0FBQyxhQUFhO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBd0I7SUFDekQsT0FBTyxFQUFFLE9BQU87SUFDaEIsT0FBTyxFQUFFLEtBQUs7SUFDZCxRQUFRLEVBQUUsT0FBTztJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsQ0FBQyxhQUFhO0NBQ3hCLENBQUM7QUFDRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBd0I7SUFDdkQsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsS0FBSztJQUNkLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLFFBQVE7SUFDbEIsT0FBTyxFQUFFLENBQUMsYUFBYTtDQUN4QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXdCO0lBQ3RELE9BQU8sRUFBRSxRQUFRO0lBQ2pCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLGFBQWE7Q0FDdkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUF3QjtJQUM1RCxPQUFPLEVBQUUsT0FBTztJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsT0FBTztJQUNqQixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxhQUFhO0NBQ3ZCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBd0I7SUFDMUQsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsS0FBSztJQUNmLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLGFBQWE7Q0FDdkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUF3QjtJQUNyRCxPQUFPLEVBQUUsT0FBTztJQUNoQixPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsS0FBSztJQUNmLFFBQVEsRUFBRSxRQUFRO0lBQ2xCLE9BQU8sRUFBRSxDQUFDLGFBQWE7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF3QjtJQUN6RCxPQUFPLEVBQUUsT0FBTztJQUNoQixPQUFPLEVBQUUsS0FBSztJQUNkLFFBQVEsRUFBRSxLQUFLO0lBQ2YsUUFBUSxFQUFFLEtBQUs7SUFDZixPQUFPLEVBQUUsQ0FBQyxhQUFhO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBd0I7SUFDNUQsT0FBTyxFQUFFLE9BQU87SUFDaEIsT0FBTyxFQUFFLFFBQVE7SUFDakIsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsQ0FBQyxhQUFhO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBd0I7SUFDbkQsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsT0FBTztJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsYUFBYTtDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQXdCO0lBQ3ZELE9BQU8sRUFBRSxLQUFLO0lBQ2QsT0FBTyxFQUFFLEtBQUs7SUFDZCxRQUFRLEVBQUUsT0FBTztJQUNqQixRQUFRLEVBQUUsS0FBSztJQUNmLE9BQU8sRUFBRSxhQUFhO0NBQ3ZCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBd0I7SUFDMUQsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsUUFBUTtJQUNqQixRQUFRLEVBQUUsT0FBTztJQUNqQixRQUFRLEVBQUUsUUFBUTtJQUNsQixPQUFPLEVBQUUsYUFBYTtDQUN2QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBRXpCO0lBQ0YsR0FBRyxFQUFFO1FBQ0gsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQztLQUMxRTtJQUNELFdBQVcsRUFBRTtRQUNYLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUIsSUFBSSxFQUFFLENBQUMseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLENBQUM7S0FDakY7SUFDRCxTQUFTLEVBQUU7UUFDVCxNQUFNLEVBQUUsb0JBQW9CO1FBQzVCLElBQUksRUFBRSxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLHlCQUF5QixDQUFDO0tBQ25GO0lBQ0QsTUFBTSxFQUFFO1FBQ04sTUFBTSxFQUFFLG1CQUFtQjtRQUMzQixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsQ0FBQztLQUM3RTtJQUNELGNBQWMsRUFBRTtRQUNkLE1BQU0sRUFBRSx5QkFBeUI7UUFDakMsSUFBSSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsb0JBQW9CLENBQUM7S0FDOUU7SUFDRCxZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUUsdUJBQXVCO1FBQy9CLElBQUksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLHNCQUFzQixDQUFDO0tBQ2hGO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsQ0FBQztLQUMxRTtJQUNELFNBQVMsRUFBRTtRQUNULE1BQU0sRUFBRSxvQkFBb0I7UUFDNUIsSUFBSSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLENBQUM7S0FDbkY7SUFDRCxZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUUsdUJBQXVCO1FBQy9CLElBQUksRUFBRSxDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDO0tBQ2hGO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSx5QkFBeUIsQ0FBQztLQUM1RTtJQUNELFdBQVcsRUFBRTtRQUNYLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUIsSUFBSSxFQUFFLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLENBQUM7S0FDakY7SUFDRCxjQUFjLEVBQUU7UUFDZCxNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLElBQUksRUFBRSxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDO0tBQzlFO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lLCBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuY29uc3QgZGVmYXVsdE9mZnNldCA9IDM7XG5cbmV4cG9ydCB0eXBlIEFYUGxhY2VtZW50ID1cbiAgfCAndG9wJ1xuICB8ICd0b3Atc3RhcnQnXG4gIHwgJ3RvcC1lbmQnXG4gIHwgJ2JvdHRvbSdcbiAgfCAnYm90dG9tLXN0YXJ0J1xuICB8ICdib3R0b20tZW5kJ1xuICB8ICdlbmQnXG4gIHwgJ2VuZC10b3AnXG4gIHwgJ2VuZC1ib3R0b20nXG4gIHwgJ3N0YXJ0J1xuICB8ICdzdGFydC10b3AnXG4gIHwgJ3N0YXJ0LWJvdHRvbSc7XG5leHBvcnQgdHlwZSBBWFBsYWNlbWVudFR5cGUgPSBBWENvbm5lY3RlZFBvc2l0aW9uIHwgQVhDb25uZWN0ZWRQb3NpdGlvbltdIHwgQVhQbGFjZW1lbnQgfCBBWFBsYWNlbWVudFtdO1xuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvUGxhY2VtZW50KHZhbHVlOiBBWFBsYWNlbWVudFR5cGUpOiBBWENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICBjb25zdCByZXN1bHQ6IEFYQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtdO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIHJlc3VsdDtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgbGlzdCA9IGZsYXR0ZW4odmFsdWUubWFwKChtKSA9PiBjb252ZXJ0VG9QbGFjZW1lbnQobSkpLmZpbHRlcigobSkgPT4gbSAhPSBudWxsKSkubWFwKChtKSA9PiBjbG9uZShtKSk7XG4gICAgcmVzdWx0LnB1c2goLi4ubGlzdCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHAgPSBBWF9QTEFDRU1FTlRfTUFQW3ZhbHVlXTtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLltjbG9uZShwLm9yaWdpbiksIC4uLmNsb25lKHAuYWx0cyldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCdvcmlnaW5YJyBpbiB2YWx1ZSAmJiAnb3JpZ2luWScgaW4gdmFsdWUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goY2xvbmUodmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgb3JpZ2luWDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIG9yaWdpblk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcbiAgb3ZlcmxheVg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBvdmVybGF5WTogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nO1xuICB3ZWlnaHQ/OiBudW1iZXI7XG4gIG9mZnNldFg/OiBudW1iZXI7XG4gIG9mZnNldFk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfVE9QOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgb3JpZ2luWTogJ3RvcCcsXG4gIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgb3ZlcmxheVk6ICdib3R0b20nLFxuICBvZmZzZXRZOiAtZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfVE9QX1NUQVJUOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnc3RhcnQnLFxuICBvcmlnaW5ZOiAndG9wJyxcbiAgb3ZlcmxheVg6ICdzdGFydCcsXG4gIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgb2Zmc2V0WTogLWRlZmF1bHRPZmZzZXQsXG59O1xuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9UT1BfRU5EOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3JpZ2luWTogJ3RvcCcsXG4gIG92ZXJsYXlYOiAnZW5kJyxcbiAgb3ZlcmxheVk6ICdib3R0b20nLFxuICBvZmZzZXRZOiAtZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfQk9UVE9NOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgb3JpZ2luWTogJ2JvdHRvbScsXG4gIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgb3ZlcmxheVk6ICd0b3AnLFxuICBvZmZzZXRZOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9CT1RUT01fU1RBUlQ6IEFYQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gIG9yaWdpblg6ICdzdGFydCcsXG4gIG9yaWdpblk6ICdib3R0b20nLFxuICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgb3ZlcmxheVk6ICd0b3AnLFxuICBvZmZzZXRZOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9CT1RUT01fRU5EOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3JpZ2luWTogJ2JvdHRvbScsXG4gIG92ZXJsYXlYOiAnZW5kJyxcbiAgb3ZlcmxheVk6ICd0b3AnLFxuICBvZmZzZXRZOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9TVEFSVDogQVhDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgb3JpZ2luWTogJ2NlbnRlcicsXG4gIG92ZXJsYXlYOiAnZW5kJyxcbiAgb3ZlcmxheVk6ICdjZW50ZXInLFxuICBvZmZzZXRYOiAtZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfU1RBUlRfVE9QOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnc3RhcnQnLFxuICBvcmlnaW5ZOiAndG9wJyxcbiAgb3ZlcmxheVg6ICdlbmQnLFxuICBvdmVybGF5WTogJ3RvcCcsXG4gIG9mZnNldFg6IC1kZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9TVEFSVF9CT1RUT006IEFYQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gIG9yaWdpblg6ICdzdGFydCcsXG4gIG9yaWdpblk6ICdib3R0b20nLFxuICBvdmVybGF5WDogJ2VuZCcsXG4gIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgb2Zmc2V0WDogLWRlZmF1bHRPZmZzZXQsXG59O1xuXG5leHBvcnQgY29uc3QgQVhfUExBQ0VNRU5UX0VORDogQVhDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgb3JpZ2luWDogJ2VuZCcsXG4gIG9yaWdpblk6ICdjZW50ZXInLFxuICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgb3ZlcmxheVk6ICdjZW50ZXInLFxuICBvZmZzZXRYOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9FTkRfVE9QOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3JpZ2luWTogJ3RvcCcsXG4gIG92ZXJsYXlYOiAnc3RhcnQnLFxuICBvdmVybGF5WTogJ3RvcCcsXG4gIG9mZnNldFg6IGRlZmF1bHRPZmZzZXQsXG59O1xuXG5leHBvcnQgY29uc3QgQVhfUExBQ0VNRU5UX0VORF9CT1RUT006IEFYQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gIG9yaWdpblg6ICdlbmQnLFxuICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgb3ZlcmxheVg6ICdzdGFydCcsXG4gIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgb2Zmc2V0WDogZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfTUFQOiB7XG4gIFtrZXk6IHN0cmluZ106IHsgb3JpZ2luOiBBWENvbm5lY3RlZFBvc2l0aW9uOyBhbHRzPzogQVhDb25uZWN0ZWRQb3NpdGlvbltdIH07XG59ID0ge1xuICB0b3A6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9UT1AsXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9CT1RUT00sIEFYX1BMQUNFTUVOVF9UT1BfU1RBUlQsIEFYX1BMQUNFTUVOVF9UT1BfRU5EXSxcbiAgfSxcbiAgJ3RvcC1zdGFydCc6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9UT1BfU1RBUlQsXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9CT1RUT01fU1RBUlQsIEFYX1BMQUNFTUVOVF9UT1BfRU5ELCBBWF9QTEFDRU1FTlRfQk9UVE9NX0VORF0sXG4gIH0sXG4gICd0b3AtZW5kJzoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX1RPUF9FTkQsXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9CT1RUT01fRU5ELCBBWF9QTEFDRU1FTlRfVE9QX1NUQVJULCBBWF9QTEFDRU1FTlRfQk9UVE9NX1NUQVJUXSxcbiAgfSxcbiAgYm90dG9tOiB7XG4gICAgb3JpZ2luOiBBWF9QTEFDRU1FTlRfQk9UVE9NLFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfVE9QLCBBWF9QTEFDRU1FTlRfQk9UVE9NX1NUQVJULCBBWF9QTEFDRU1FTlRfQk9UVE9NX0VORF0sXG4gIH0sXG4gICdib3R0b20tc3RhcnQnOiB7XG4gICAgb3JpZ2luOiBBWF9QTEFDRU1FTlRfQk9UVE9NX1NUQVJULFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfVE9QX1NUQVJULCBBWF9QTEFDRU1FTlRfQk9UVE9NX0VORCwgQVhfUExBQ0VNRU5UX1RPUF9FTkRdLFxuICB9LFxuICAnYm90dG9tLWVuZCc6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9CT1RUT01fRU5ELFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfVE9QX0VORCwgQVhfUExBQ0VNRU5UX0JPVFRPTV9TVEFSVCwgQVhfUExBQ0VNRU5UX1RPUF9TVEFSVF0sXG4gIH0sXG4gIGVuZDoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX0VORCxcbiAgICBhbHRzOiBbQVhfUExBQ0VNRU5UX1NUQVJULCBBWF9QTEFDRU1FTlRfRU5EX1RPUCwgQVhfUExBQ0VNRU5UX0VORF9CT1RUT01dLFxuICB9LFxuICAnZW5kLXRvcCc6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9FTkRfVE9QLFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfU1RBUlRfVE9QLCBBWF9QTEFDRU1FTlRfRU5EX0JPVFRPTSwgQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTV0sXG4gIH0sXG4gICdlbmQtYm90dG9tJzoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX0VORF9CT1RUT00sXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9TVEFSVF9CT1RUT00sIEFYX1BMQUNFTUVOVF9FTkRfVE9QLCBBWF9QTEFDRU1FTlRfU1RBUlRfVE9QXSxcbiAgfSxcbiAgc3RhcnQ6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9TVEFSVCxcbiAgICBhbHRzOiBbQVhfUExBQ0VNRU5UX0VORCwgQVhfUExBQ0VNRU5UX1NUQVJUX1RPUCwgQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTV0sXG4gIH0sXG4gICdzdGFydC10b3AnOiB7XG4gICAgb3JpZ2luOiBBWF9QTEFDRU1FTlRfU1RBUlRfVE9QLFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfRU5EX1RPUCwgQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTSwgQVhfUExBQ0VNRU5UX0VORF9CT1RUT01dLFxuICB9LFxuICAnc3RhcnQtYm90dG9tJzoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTSxcbiAgICBhbHRzOiBbQVhfUExBQ0VNRU5UX0VORF9CT1RUT00sIEFYX1BMQUNFTUVOVF9TVEFSVF9UT1AsIEFYX1BMQUNFTUVOVF9FTkRfVE9QXSxcbiAgfSxcbn07XG4iXX0=","/**\n * A token that specifies the selection mode of component.\n */\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvdHlwZXMvc2VsZWN0aW9uLW1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdG9rZW4gdGhhdCBzcGVjaWZpZXMgdGhlICBzZWxlY3Rpb24gbW9kZSBvZiBjb21wb25lbnQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQVhTZWxlY3Rpb25Nb2RlID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgJ25vbmUnO1xuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXDomService {\n generateElementId() {\n const dateString = Date.now().toString(36);\n const randomness = Math.random().toString(36).substr(2);\n return dateString + randomness;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDomService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDomService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXDomService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZG9tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLFlBQVk7SUFDdkIsaUJBQWlCO1FBQ2YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQzs4R0FMVSxZQUFZO2tIQUFaLFlBQVksY0FEQyxNQUFNOzsyRkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhEb21TZXJ2aWNlIHtcbiAgZ2VuZXJhdGVFbGVtZW50SWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gRGF0ZS5ub3coKS50b1N0cmluZygzNik7XG4gICAgY29uc3QgcmFuZG9tbmVzcyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKTtcbiAgICByZXR1cm4gZGF0ZVN0cmluZyArIHJhbmRvbW5lc3M7XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectorRef, ElementRef, EventEmitter, Injectable, ViewContainerRef, inject } from '@angular/core';\nimport { AXDomService } from '../services/dom.service';\nimport * as i0 from \"@angular/core\";\nexport class MXBaseComponent {\n constructor() {\n this._cdr = inject(ChangeDetectorRef);\n this._elementRef = inject(ElementRef);\n this._viewRef = inject(ViewContainerRef);\n this._domService = inject(AXDomService);\n this._id = this._domService.generateElementId();\n /**\n * Fired when an option related to the component changes.\n *\n * @event\n */\n this.onOptionChanged = new EventEmitter();\n }\n get id() {\n return this._id;\n }\n set id(v) {\n this._id = v;\n }\n get cdr() {\n return this._cdr;\n }\n /**\n * Gets the host HTML element of the component.\n *\n * @returns T - The native DOM element associated with this component.\n */\n getHostElement() {\n return this._elementRef?.nativeElement;\n }\n getViewContainer() {\n return this._viewRef;\n }\n internalOptionChanging(option) {\n return option?.value;\n }\n internalOptionChanged(option) { }\n /**\n * @ignore\n */\n ngOnInit() {\n this.getHostElement().__axContext__ = this;\n }\n /**\n * Sets a component option with optional lifecycle callbacks.\n *\n * @param option - The option configuration containing the name, value and optional before/after callbacks.\n */\n setOption(option) {\n const oldValue = this[option.name];\n let newValue = this.internalOptionChanging({\n name: option.name,\n value: option.value,\n });\n if (option.beforeCallback) {\n newValue = option.beforeCallback(oldValue, newValue);\n }\n //TODO : check real changes if value is object\n if (oldValue != newValue) {\n this[`_${option.name}`] = option.value;\n this.onOptionChanged.emit({\n component: this,\n name: option.name,\n newValue,\n oldValue,\n });\n const emitter = this[`${option.name}Change`];\n emitter?.emit(newValue);\n this.internalOptionChanged({ name: option.name, value: newValue });\n }\n if (option.afterCallback)\n option.afterCallback(oldValue, newValue);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXBaseComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXBaseComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFldkQsTUFBTSxPQUFnQixlQUFlO0lBRHJDO1FBRVUsU0FBSSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxnQkFBVyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxhQUFRLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELGdCQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRW5DLFFBQUcsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFxQzNEOzs7O1dBSUc7UUFDSSxvQkFBZSxHQUF1QyxJQUFJLFlBQVksRUFBd0IsQ0FBQztLQStCdkc7SUF4RUMsSUFBVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFXLEVBQUUsQ0FBQyxDQUFTO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQWMsR0FBRztRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWtCLENBQUM7SUFDOUMsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVTLHNCQUFzQixDQUFDLE1BQWlDO1FBQ2hFLE9BQU8sTUFBTSxFQUFFLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRVMscUJBQXFCLENBQUMsTUFBZ0MsSUFBUyxDQUFDO0lBQzFFOztPQUVHO0lBQ08sUUFBUTtRQUNmLElBQUksQ0FBQyxjQUFjLEVBQVUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFTRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFVLE1BQStCO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3pDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCw4Q0FBOEM7UUFDOUMsSUFBSSxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDeEIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixRQUFRO2dCQUNSLFFBQVE7YUFDVCxDQUFDLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQXNCLENBQUM7WUFDbEUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsYUFBYTtZQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7OEdBOUVtQixlQUFlO2tIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYT3B0aW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhEb21TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZG9tLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBNWENvbXBvbmVudE9wdGlvbkNoYW5naW5nPFQgPSBhbnk+ID0geyBuYW1lOiBzdHJpbmc7IHZhbHVlPzogVCB9O1xuZXhwb3J0IHR5cGUgTVhDb21wb25lbnRPcHRpb25DaGFuZ2VkPFQgPSBhbnk+ID0gTVhDb21wb25lbnRPcHRpb25DaGFuZ2luZzxUPjtcblxuZXhwb3J0IHR5cGUgTVhDb21wb25lbnRTZXRPcHRpb248VD4gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU/OiBUO1xuICBhZnRlckNhbGxiYWNrPzogKG9sZFZhbHVlPzogVCwgbmV3VmFsdWU/OiBUKSA9PiB2b2lkO1xuICBiZWZvcmVDYWxsYmFjaz86IChvbGRWYWx1ZT86IFQsIG5ld1ZhbHVlPzogVCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEFYQ29tcG9uZW50U3RhdGUgPSAnY2xlYXInIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1YQmFzZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF92aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIF9kb21TZXJ2aWNlID0gaW5qZWN0KEFYRG9tU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZyA9IHRoaXMuX2RvbVNlcnZpY2UuZ2VuZXJhdGVFbGVtZW50SWQoKTtcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY2RyKCk6IENoYW5nZURldGVjdG9yUmVmIHtcbiAgICByZXR1cm4gdGhpcy5fY2RyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhvc3QgSFRNTCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFQgLSBUaGUgbmF0aXZlIERPTSBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRIb3N0RWxlbWVudDxUID0gSFRNTEVsZW1lbnQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50IGFzIFQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Vmlld0NvbnRhaW5lcigpOiBWaWV3Q29udGFpbmVyUmVmIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld1JlZjtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnRlcm5hbE9wdGlvbkNoYW5naW5nKG9wdGlvbjogTVhDb21wb25lbnRPcHRpb25DaGFuZ2luZyk6IGFueSB7XG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW50ZXJuYWxPcHRpb25DaGFuZ2VkKG9wdGlvbjogTVhDb21wb25lbnRPcHRpb25DaGFuZ2VkKTogdm9pZCB7fVxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAodGhpcy5nZXRIb3N0RWxlbWVudCgpIGFzIGFueSkuX19heENvbnRleHRfXyA9IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZWQgd2hlbiBhbiBvcHRpb24gcmVsYXRlZCB0byB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgcHVibGljIG9uT3B0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYT3B0aW9uQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhPcHRpb25DaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjb21wb25lbnQgb3B0aW9uIHdpdGggb3B0aW9uYWwgbGlmZWN5Y2xlIGNhbGxiYWNrcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbiAtIFRoZSBvcHRpb24gY29uZmlndXJhdGlvbiBjb250YWluaW5nIHRoZSBuYW1lLCB2YWx1ZSBhbmQgb3B0aW9uYWwgYmVmb3JlL2FmdGVyIGNhbGxiYWNrcy5cbiAgICovXG4gIHB1YmxpYyBzZXRPcHRpb248VCA9IGFueT4ob3B0aW9uOiBNWENvbXBvbmVudFNldE9wdGlvbjxUPikge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpc1tvcHRpb24ubmFtZV07XG4gICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5pbnRlcm5hbE9wdGlvbkNoYW5naW5nKHtcbiAgICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICB9KTtcbiAgICBpZiAob3B0aW9uLmJlZm9yZUNhbGxiYWNrKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9wdGlvbi5iZWZvcmVDYWxsYmFjayhvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgICAvL1RPRE8gOiBjaGVjayByZWFsIGNoYW5nZXMgaWYgdmFsdWUgaXMgb2JqZWN0XG4gICAgaWYgKG9sZFZhbHVlICE9IG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzW2BfJHtvcHRpb24ubmFtZX1gXSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIHRoaXMub25PcHRpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgb2xkVmFsdWUsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGVtaXR0ZXIgPSB0aGlzW2Ake29wdGlvbi5uYW1lfUNoYW5nZWBdIGFzIEV2ZW50RW1pdHRlcjxhbnk+O1xuICAgICAgZW1pdHRlcj8uZW1pdChuZXdWYWx1ZSk7XG4gICAgICB0aGlzLmludGVybmFsT3B0aW9uQ2hhbmdlZCh7IG5hbWU6IG9wdGlvbi5uYW1lLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICAgIGlmIChvcHRpb24uYWZ0ZXJDYWxsYmFjaykgb3B0aW9uLmFmdGVyQ2FsbGJhY2sob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgfVxufVxuIl19","import { AXHtmlUtil } from '@acorex/core/utils';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { EventEmitter } from '@angular/core';\nimport { noop } from 'rxjs';\nimport { MXBaseComponent } from './base-component.class';\nexport class MXInteractiveComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this.onTouchedCallback = noop;\n this._touched = false;\n /**\n * Emits an event whenever the disabled state of the component changes.\n *\n * @event\n */\n this.disabledChange = new EventEmitter();\n this._disabled = null;\n this._tabIndex = 0;\n /**\n * Fires each time the component gets focused.\n * @event\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the component gets blurred.\n * @event\n */\n this.onBlur = new EventEmitter();\n // private _focused = signal(false);\n // protected markAsFocused() {\n // this._focused.set(true);\n // }\n // protected markAsBlured() {\n // this._focused.set(false);\n // }\n }\n /**\n * Registers a touched callback function (ControlValueAccessor method).\n *\n * @param fn - The callback function to register.\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * Indicates whether the component has been touched.\n *\n */\n get touched() {\n return this._touched;\n }\n /**\n * @ignore\n */\n markAsTouched() {\n if (!this.touched) {\n this.onTouchedCallback();\n this._touched = true;\n }\n }\n /**\n * If set to true, it disables the component.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n value = coerceBooleanProperty(value);\n this.setOption({\n name: 'disabled',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * Sets the disabled state of the component.\n *\n * @param isDisabled - Whether the component should be disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Specifies the tabindex of the component.\n */\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n this.setOption({\n name: 'tabIndex',\n value: value != null ? coerceNumberProperty(value) : 0,\n });\n }\n emitOnFocusEvent(e) {\n this.onFocus.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n emitOnBlurEvent(e) {\n this.markAsTouched();\n this.onBlur.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n // /**\n // * Fires each time the user clicks the button.\n // * @event\n // */\n // onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n // protected emitOnClickEvent(e: MouseEvent): void {\n // this.onClick.emit({\n // component: this,\n // htmlElement: this.getHostElement(),\n // nativeEvent: e,\n // });\n // }\n /**\n * Focuses the component.\n */\n focus() {\n AXHtmlUtil.focusElement(this.getHostElement());\n }\n /**\n * Removes focus from the component.\n */\n blur() {\n AXHtmlUtil.blurElement(this.getHostElement());\n }\n /**\n * Checks if the component is focused or has any focused element.\n *\n * @returns boolean - True if the component has focus.\n */\n hasFocus() {\n return AXHtmlUtil.hasFocus(this.getHostElement());\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxlQUFlO0lBQTNEOztRQUNFOztXQUVHO1FBQ08sc0JBQWlCLEdBQWUsSUFBSSxDQUFDO1FBV3ZDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFvQnpCOzs7O1dBSUc7UUFDSCxtQkFBYyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzVELGNBQVMsR0FBbUIsSUFBSSxDQUFDO1FBMkJ6QyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBY2Q7OztXQUdHO1FBQ0gsWUFBTyxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQVV2RTs7O1dBR0c7UUFDSCxXQUFNLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBZ0R0RSxvQ0FBb0M7UUFFcEMsOEJBQThCO1FBQzlCLDZCQUE2QjtRQUM3QixJQUFJO1FBRUosNkJBQTZCO1FBQzdCLDhCQUE4QjtRQUM5QixJQUFJO0lBQ04sQ0FBQztJQXZKQzs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUVPLGFBQWE7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQVNEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUs7WUFDTCxhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFHRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBUVMsZ0JBQWdCLENBQUMsQ0FBYztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLFdBQVcsRUFBRSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVFTLGVBQWUsQ0FBQyxDQUFjO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNmLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbEMsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtJQUNOLGtEQUFrRDtJQUNsRCxhQUFhO0lBQ2IsTUFBTTtJQUNOLDBFQUEwRTtJQUUxRSxvREFBb0Q7SUFDcEQsd0JBQXdCO0lBQ3hCLHVCQUF1QjtJQUN2QiwwQ0FBMEM7SUFDMUMsc0JBQXNCO0lBQ3RCLFFBQVE7SUFDUixJQUFJO0lBRUo7O09BRUc7SUFDSCxLQUFLO1FBQ0gsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQVdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhIdG1sVXRpbCB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhGb2N1c0V2ZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBNWEludGVyYWN0aXZlQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB0b3VjaGVkIGNhbGxiYWNrIGZ1bmN0aW9uIChDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2QpLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgX3RvdWNoZWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICpcbiAgICovXG4gIHB1YmxpYyBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cblxuICBwcm90ZWN0ZWQgbWFya0FzVG91Y2hlZCgpIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5fdG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW5ldmVyIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgZGlzYWJsZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqICBJZiBzZXQgdG8gdHJ1ZSwgaXQgZGlzYWJsZXMgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnZGlzYWJsZWQnLFxuICAgICAgdmFsdWUsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIF90YWJJbmRleCA9IDA7XG4gIC8qKlxuICAgKiAgU3BlY2lmaWVzIHRoZSB0YWJpbmRleCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6IHRoaXMuX3RhYkluZGV4O1xuICB9XG4gIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RhYkluZGV4JyxcbiAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIDogMCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSBjb21wb25lbnQgZ2V0cyBmb2N1c2VkLlxuICAgKiAgQGV2ZW50XG4gICAqL1xuICBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8QVhGb2N1c0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhGb2N1c0V2ZW50PigpO1xuXG4gIHByb3RlY3RlZCBlbWl0T25Gb2N1c0V2ZW50KGU/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIGNvbXBvbmVudCBnZXRzIGJsdXJyZWQuXG4gICAqICBAZXZlbnRcbiAgICovXG4gIG9uQmx1cjogRXZlbnRFbWl0dGVyPEFYRm9jdXNFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRm9jdXNFdmVudD4oKTtcblxuICBwcm90ZWN0ZWQgZW1pdE9uQmx1ckV2ZW50KGU/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5vbkJsdXIuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGlja3MgdGhlIGJ1dHRvbi5cbiAgLy8gICogIEBldmVudFxuICAvLyAgKi9cbiAgLy8gb25DbGljazogRXZlbnRFbWl0dGVyPEFYQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ2xpY2tFdmVudD4oKTtcblxuICAvLyBwcm90ZWN0ZWQgZW1pdE9uQ2xpY2tFdmVudChlOiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gIC8vICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAvLyAgICAgY29tcG9uZW50OiB0aGlzLFxuICAvLyAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgLy8gICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIEFYSHRtbFV0aWwuZm9jdXNFbGVtZW50KHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBmb2N1cyBmcm9tIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBibHVyKCk6IHZvaWQge1xuICAgIEFYSHRtbFV0aWwuYmx1ckVsZW1lbnQodGhpcy5nZXRIb3N0RWxlbWVudCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBpcyBmb2N1c2VkIG9yIGhhcyBhbnkgZm9jdXNlZCBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IGhhcyBmb2N1cy5cbiAgICovXG4gIGhhc0ZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBWEh0bWxVdGlsLmhhc0ZvY3VzKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gIH1cblxuICAvLyBwcml2YXRlIF9mb2N1c2VkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBwcm90ZWN0ZWQgbWFya0FzRm9jdXNlZCgpIHtcbiAgLy8gICB0aGlzLl9mb2N1c2VkLnNldCh0cnVlKTtcbiAgLy8gfVxuXG4gIC8vIHByb3RlY3RlZCBtYXJrQXNCbHVyZWQoKSB7XG4gIC8vICAgdGhpcy5fZm9jdXNlZC5zZXQoZmFsc2UpO1xuICAvLyB9XG59XG4iXX0=","import { isBrowser } from '@acorex/core/platform';\nimport { AXValidationService } from '@acorex/core/validation';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, EventEmitter, Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { cloneDeep, isEqual, omit } from 'lodash-es';\nimport { noop } from 'rxjs';\nimport { MXInteractiveComponent } from './interactive-component.class';\nimport * as i0 from \"@angular/core\";\nexport class MXValueComponent extends MXInteractiveComponent {\n constructor() {\n super(...arguments);\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onValueChanged = new EventEmitter();\n /**\n * @deprecated The event should not be used, use ngModelChange instead\n */\n this.valueChange = new EventEmitter();\n this.readonlyChange = new EventEmitter();\n this._readonly = null;\n this._dirty = false;\n this._isUserInteraction = false;\n this.stateChange = new EventEmitter();\n this._state = 'clear';\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.validationService = inject(AXValidationService);\n this.validationRulesChange = new EventEmitter();\n this.validationRules = [];\n this.onChangeCallback = noop;\n }\n /**\n * If set to true, user cannot change the value of component.\n */\n get readonly() {\n return this._readonly;\n }\n set readonly(value) {\n value = coerceBooleanProperty(value);\n this.setOption({\n name: 'readonly',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n get name() {\n return this._name;\n }\n set name(value) {\n this._name = value;\n }\n get dirty() {\n return this._dirty;\n }\n markAsDirty() {\n this._dirty = true;\n }\n /**\n * @deprecated The property should not be used, use ngModel instead\n */\n get value() {\n return this.internalGetValue(this._value) ?? this.defaultValue;\n }\n set value(v) {\n v = this.internalSetValue(v);\n const old = cloneDeep(this.value);\n if (v === null || v === undefined || v === '' || (Array.isArray(v) && v.length === 0)) {\n this.setState('clear');\n if (old === null || old === undefined || old === '' || (Array.isArray(old) && old.length === 0)) {\n return;\n }\n }\n if (!isEqual(old, v)) {\n this._value = v;\n this.emitOnValueChangedEvent(old, this.value);\n this.internalValueChanged(this.value);\n }\n }\n get state() {\n return this._state;\n }\n set state(value) {\n this.setState(value);\n this.stateChange.emit(value);\n }\n emitOnValueChangedEvent(oldValue, newValue) {\n this.valueChange.emit(newValue);\n this.onValueChanged.emit({\n component: this,\n value: newValue,\n oldValue: oldValue,\n name: this.name,\n isUserInteraction: this._isUserInteraction,\n });\n this.onChangeCallback(newValue);\n this.cdr.markForCheck();\n this._isUserInteraction = false;\n }\n internalSetValue(value) {\n return value;\n }\n internalGetValue(value) {\n return value;\n }\n internalValueChanged(value) { }\n ngOnInit() {\n super.ngOnInit();\n //\n this.registerValidation();\n }\n ngOnDestroy() {\n this.onValueChanged?.unsubscribe();\n this.onOptionChanged?.unsubscribe();\n }\n registerValidation() {\n const a = this.getHostElement().querySelectorAll('[ax-form-item=\"true\"]');\n a.forEach((c) => {\n c.removeAttribute('ax-form-item');\n });\n this.getHostElement().setAttribute('ax-form-item', 'true');\n }\n get isRequired() {\n return this.validationRules?.some((c) => c.rule == 'required');\n }\n /**\n * Adds a validation rule.\n *\n * @param rule - The validation rule to add.\n */\n addValidationRule(rule) {\n this.validationRules.push(rule);\n this.validationRulesChange.emit(this.validationRules);\n }\n /**\n * Removes a validation rule.\n *\n * @param ruleToRemove - The validation rule to remove.\n */\n removeValidationRule(ruleToRemove) {\n this.validationRules = this.validationRules.filter((r) => {\n if (r.rule !== ruleToRemove.rule) {\n return true;\n }\n // Create copies of options without the 'title' property\n const rOptionsSanitized = omit(r.options, ['title']);\n const ruleToRemoveOptionsSanitized = omit(ruleToRemove.options, ['title']);\n return !isEqual(rOptionsSanitized, ruleToRemoveOptionsSanitized);\n });\n this.validationRulesChange.emit(this.validationRules);\n this.setState('clear');\n }\n /**\n * Validates the component.\n *\n * @returns Promise<AXValidationSummary> - Validation result.\n */\n async validate() {\n const container_classes = ['ax-editor-container', 'ax-checkbox', 'ax-radio'];\n const container = container_classes.some((c) => this.getHostElement().classList.contains(c))\n ? this.getHostElement()\n : this.getHostElement().querySelector('.ax-editor-container');\n const formField = container?.closest('ax-form-field') || container?.closest('ax-checkbox');\n const label = formField?.querySelector('ax-label') || formField?.querySelector('label');\n //\n const rules = this.validationService.ruleFor(this.value);\n this.validationRules.forEach((r) => {\n r.options['title'] = (label?.firstChild?.textContent ?? this.name)?.replace('*', '').trim();\n rules.addRule(r.rule, r.options);\n });\n const result = await rules.validate();\n if (result.result) {\n this.setState('clear');\n }\n else {\n const message = result.rules.find((c) => !c.result).message;\n this.setState('error', message);\n }\n return result;\n }\n setState(state, ...args) {\n //TODO: find a better solution\n if (isBrowser()) {\n const container = this.getHostElement().classList.contains('ax-editor-container')\n ? this.getHostElement()\n : this.getHostElement().querySelector('.ax-editor-container');\n const formField = container?.closest('ax-form-field');\n const label = formField?.querySelector('ax-label') || formField?.querySelector('label');\n let target = container || this.getHostElement().firstElementChild;\n if (target?.querySelector('.ax-error-container')) {\n target = target.querySelector('.ax-error-container');\n }\n const parent = target?.parentElement;\n if (!target || !parent)\n return;\n switch (state) {\n case 'clear':\n this._state = 'clear';\n if (parent.querySelector('span.ax-error-message')) {\n parent.removeChild(parent.querySelector('span.ax-error-message'));\n }\n label?.classList.remove('ax-state-error');\n target.classList.remove('ax-state-error', 'ax-state-success');\n break;\n case 'success':\n this.setState('clear');\n target.classList.add('ax-state-success');\n this._state = 'success';\n break;\n case 'error':\n this.setState('clear');\n if (args[0] && isPlatformBrowser(this.platformID)) {\n const span = this.document.createElement('span');\n span.innerHTML = args[0];\n span.classList.add('ax-error-message');\n parent.appendChild(span);\n }\n label?.classList.add('ax-state-error');\n target.classList.add('ax-state-error');\n this._state = 'error';\n break;\n }\n this.cdr.markForCheck();\n }\n }\n /**\n * Registers a change callback function (ControlValueAccessor method).\n *\n * @param fn - The callback function to register.\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * Writes a value to the component (ControlValueAccessor method).\n *\n * @param value - The value to write.\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * Commits a value with optional user interaction flag.\n *\n * @param value - The value to commit.\n * @param u - Optional flag indicating if this is a user interaction.\n */\n commitValue(value, u = false) {\n if (u) {\n this.markAsTouched();\n this.markAsDirty();\n this._isUserInteraction = true;\n }\n this.writeValue(value);\n }\n /**\n * Resets the component value.\n *\n * @param e - Optional flag indicating if this is a user interaction.\n */\n reset(e = false) {\n this.commitValue(null, e);\n }\n /**\n * Resets validation errors.\n */\n resetErrors() {\n this.setState('clear');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXValueComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXValueComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXValueComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvdmFsdWUtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJNUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR3ZFLE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxzQkFBc0I7SUFEckU7O1FBRUU7OztXQUdHO1FBQ0gsbUJBQWMsR0FBMkMsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFFdEc7O1dBRUc7UUFDSCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXpELG1CQUFjLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUQsY0FBUyxHQUFtQixJQUFJLENBQUM7UUEwQmpDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFTZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUErQm5DLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRTNFLFdB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SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsQ0FBQzs4R0E1U1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uU2VydmljZSwgQVhWYWxpZGF0aW9uU3VtbWFyeSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBET0NVTUVOVCwgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgb21pdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWEZvcm1WYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4uL2NsYXNzZXMvY29tcG9uZW50cy5jbGFzcyc7XG5pbXBvcnQgeyBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4vYmFzZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJhY3RpdmUtY29tcG9uZW50LmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1YVmFsdWVDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBNWEludGVyYWN0aXZlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBldmVudCBzaG91bGQgbm90IGJlIHVzZWQsIHVzZSBuZ01vZGVsQ2hhbmdlIGluc3RlYWRcbiAgICovXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHJlYWRvbmx5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiAgSWYgc2V0IHRvIHRydWUsIHVzZXIgY2Fubm90IGNoYW5nZSB0aGUgdmFsdWUgb2YgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0IHJlYWRvbmx5KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB2YWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3JlYWRvbmx5JyxcbiAgICAgIHZhbHVlLFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9kaXJ0eSA9IGZhbHNlO1xuICBwdWJsaWMgZ2V0IGRpcnR5KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXJ0eTtcbiAgfVxuXG4gIG1hcmtBc0RpcnR5KCkge1xuICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgaW5pdFZhbHVlOiBUO1xuICBkZWZhdWx0VmFsdWU6IFQ7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSB1c2VkLCB1c2UgbmdNb2RlbCBpbnN0ZWFkXG4gICAqL1xuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxHZXRWYWx1ZSh0aGlzLl92YWx1ZSkgPz8gdGhpcy5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHY6IFQpIHtcbiAgICB2ID0gdGhpcy5pbnRlcm5hbFNldFZhbHVlKHYpO1xuICAgIGNvbnN0IG9sZCA9IGNsb25lRGVlcCh0aGlzLnZhbHVlKTtcblxuICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSAnJyB8fCAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICBpZiAob2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkIHx8IG9sZCA9PT0gJycgfHwgKEFycmF5LmlzQXJyYXkob2xkKSAmJiBvbGQubGVuZ3RoID09PSAwKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKG9sZCwgdikpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMuZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkLCB0aGlzLnZhbHVlKTtcblxuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlQ2hhbmdlZCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFYQ29tcG9uZW50U3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENvbXBvbmVudFN0YXRlPigpO1xuXG4gIHByaXZhdGUgX3N0YXRlOiBBWENvbXBvbmVudFN0YXRlID0gJ2NsZWFyJztcblxuICBnZXQgc3RhdGUoKTogQVhDb21wb25lbnRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG5cbiAgc2V0IHN0YXRlKHZhbHVlOiBBWENvbXBvbmVudFN0YXRlKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZT86IGFueSwgbmV3VmFsdWU/OiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdGhpcy5faXNVc2VySW50ZXJhY3Rpb24sXG4gICAgfSk7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGludGVybmFsU2V0VmFsdWUodmFsdWU6IGFueSk6IFQge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnRlcm5hbEdldFZhbHVlKHZhbHVlOiBhbnkpOiBUIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWU6IGFueSk6IHZvaWQge31cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvL1xuICAgIHRoaXMucmVnaXN0ZXJWYWxpZGF0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uT3B0aW9uQ2hhbmdlZD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlclZhbGlkYXRpb24oKSB7XG4gICAgY29uc3QgYSA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdbYXgtZm9ybS1pdGVtPVwidHJ1ZVwiXScpO1xuICAgIGEuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgYy5yZW1vdmVBdHRyaWJ1dGUoJ2F4LWZvcm0taXRlbScpO1xuICAgIH0pO1xuICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5zZXRBdHRyaWJ1dGUoJ2F4LWZvcm0taXRlbScsICd0cnVlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcm90ZWN0ZWQgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhWYWxpZGF0aW9uU2VydmljZSk7XG5cbiAgcHVibGljIHZhbGlkYXRpb25SdWxlc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFYRm9ybVZhbGlkYXRpb25SdWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEZvcm1WYWxpZGF0aW9uUnVsZVtdPigpO1xuICBwcml2YXRlIHZhbGlkYXRpb25SdWxlczogQVhGb3JtVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xuXG4gIHB1YmxpYyBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uUnVsZXM/LnNvbWUoKGMpID0+IGMucnVsZSA9PSAncmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgdmFsaWRhdGlvbiBydWxlLlxuICAgKlxuICAgKiBAcGFyYW0gcnVsZSAtIFRoZSB2YWxpZGF0aW9uIHJ1bGUgdG8gYWRkLlxuICAgKi9cbiAgYWRkVmFsaWRhdGlvblJ1bGUocnVsZTogQVhGb3JtVmFsaWRhdGlvblJ1bGUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKHJ1bGUpO1xuICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzQ2hhbmdlLmVtaXQodGhpcy52YWxpZGF0aW9uUnVsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSB2YWxpZGF0aW9uIHJ1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBydWxlVG9SZW1vdmUgLSBUaGUgdmFsaWRhdGlvbiBydWxlIHRvIHJlbW92ZS5cbiAgICovXG4gIHJlbW92ZVZhbGlkYXRpb25SdWxlKHJ1bGVUb1JlbW92ZTogQVhGb3JtVmFsaWRhdGlvblJ1bGUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyA9IHRoaXMudmFsaWRhdGlvblJ1bGVzLmZpbHRlcigocikgPT4ge1xuICAgICAgaWYgKHIucnVsZSAhPT0gcnVsZVRvUmVtb3ZlLnJ1bGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgY29waWVzIG9mIG9wdGlvbnMgd2l0aG91dCB0aGUgJ3RpdGxlJyBwcm9wZXJ0eVxuICAgICAgY29uc3Qgck9wdGlvbnNTYW5pdGl6ZWQgPSBvbWl0KHIub3B0aW9ucywgWyd0aXRsZSddKTtcbiAgICAgIGNvbnN0IHJ1bGVUb1JlbW92ZU9wdGlvbnNTYW5pdGl6ZWQgPSBvbWl0KHJ1bGVUb1JlbW92ZS5vcHRpb25zLCBbJ3RpdGxlJ10pO1xuXG4gICAgICByZXR1cm4gIWlzRXF1YWwock9wdGlvbnNTYW5pdGl6ZWQsIHJ1bGVUb1JlbW92ZU9wdGlvbnNTYW5pdGl6ZWQpO1xuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzQ2hhbmdlLmVtaXQodGhpcy52YWxpZGF0aW9uUnVsZXMpO1xuICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2U8QVhWYWxpZGF0aW9uU3VtbWFyeT4gLSBWYWxpZGF0aW9uIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHZhbGlkYXRlKCk6IFByb21pc2U8QVhWYWxpZGF0aW9uU3VtbWFyeT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lcl9jbGFzc2VzID0gWydheC1lZGl0b3ItY29udGFpbmVyJywgJ2F4LWNoZWNrYm94JywgJ2F4LXJhZGlvJ107XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyX2NsYXNzZXMuc29tZSgoYykgPT4gdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucyhjKSlcbiAgICAgID8gdGhpcy5nZXRIb3N0RWxlbWVudCgpXG4gICAgICA6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtZWRpdG9yLWNvbnRhaW5lcicpO1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IGNvbnRhaW5lcj8uY2xvc2VzdCgnYXgtZm9ybS1maWVsZCcpIHx8IGNvbnRhaW5lcj8uY2xvc2VzdCgnYXgtY2hlY2tib3gnKTtcbiAgICBjb25zdCBsYWJlbCA9IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignYXgtbGFiZWwnKSB8fCBmb3JtRmllbGQ/LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJyk7XG4gICAgLy9cbiAgICBjb25zdCBydWxlcyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UucnVsZUZvcih0aGlzLnZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5mb3JFYWNoKChyKSA9PiB7XG4gICAgICByLm9wdGlvbnNbJ3RpdGxlJ10gPSAobGFiZWw/LmZpcnN0Q2hpbGQ/LnRleHRDb250ZW50ID8/IHRoaXMubmFtZSk/LnJlcGxhY2UoJyonLCAnJykudHJpbSgpO1xuICAgICAgcnVsZXMuYWRkUnVsZShyLnJ1bGUgYXMgYW55LCByLm9wdGlvbnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bGVzLnZhbGlkYXRlKCk7XG4gICAgaWYgKHJlc3VsdC5yZXN1bHQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSByZXN1bHQucnVsZXMuZmluZCgoYykgPT4gIWMucmVzdWx0KS5tZXNzYWdlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSgnZXJyb3InLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTdGF0ZShzdGF0ZTogQVhDb21wb25lbnRTdGF0ZSwgLi4uYXJncykge1xuICAgIC8vVE9ETzogZmluZCBhIGJldHRlciBzb2x1dGlvblxuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucygnYXgtZWRpdG9yLWNvbnRhaW5lcicpXG4gICAgICAgID8gdGhpcy5nZXRIb3N0RWxlbWVudCgpXG4gICAgICAgIDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1lZGl0b3ItY29udGFpbmVyJyk7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJ2F4LWZvcm0tZmllbGQnKTtcbiAgICAgIGNvbnN0IGxhYmVsID0gZm9ybUZpZWxkPy5xdWVyeVNlbGVjdG9yKCdheC1sYWJlbCcpIHx8IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignbGFiZWwnKTtcbiAgICAgIGxldCB0YXJnZXQgPSBjb250YWluZXIgfHwgdGhpcy5nZXRIb3N0RWxlbWVudCgpLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgaWYgKHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmF4LWVycm9yLWNvbnRhaW5lcicpKSB7XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuYXgtZXJyb3ItY29udGFpbmVyJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQ/LnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAoIXRhcmdldCB8fCAhcGFyZW50KSByZXR1cm47XG5cbiAgICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gJ2NsZWFyJztcbiAgICAgICAgICBpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpKSB7XG4gICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpISk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPy5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicpO1xuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicsICdheC1zdGF0ZS1zdWNjZXNzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2F4LXN0YXRlLXN1Y2Nlc3MnKTtcbiAgICAgICAgICB0aGlzLl9zdGF0ZSA9ICdzdWNjZXNzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICAgICAgaWYgKGFyZ3NbMF0gJiYgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgICAgICAgY29uc3Qgc3BhbiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSBhcmdzWzBdO1xuICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdheC1lcnJvci1tZXNzYWdlJyk7XG4gICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPy5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1lcnJvcicpO1xuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1lcnJvcicpO1xuXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSAnZXJyb3InO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlQ2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNoYW5nZSBjYWxsYmFjayBmdW5jdGlvbiAoQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kKS5cbiAgICpcbiAgICogQHBhcmFtIGZuIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIGEgdmFsdWUgdG8gdGhlIGNvbXBvbmVudCAoQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kKS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHdyaXRlLlxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21taXRzIGEgdmFsdWUgd2l0aCBvcHRpb25hbCB1c2VyIGludGVyYWN0aW9uIGZsYWcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb21taXQuXG4gICAqIEBwYXJhbSB1IC0gT3B0aW9uYWwgZmxhZyBpbmRpY2F0aW5nIGlmIHRoaXMgaXMgYSB1c2VyIGludGVyYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGNvbW1pdFZhbHVlKHZhbHVlOiBULCB1ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodSkge1xuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjb21wb25lbnQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBlIC0gT3B0aW9uYWwgZmxhZyBpbmRpY2F0aW5nIGlmIHRoaXMgaXMgYSB1c2VyIGludGVyYWN0aW9uLlxuICAgKi9cbiAgcmVzZXQoZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5jb21taXRWYWx1ZShudWxsLCBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdmFsaWRhdGlvbiBlcnJvcnMuXG4gICAqL1xuICByZXNldEVycm9ycygpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKCdjbGVhcicpO1xuICB9XG59XG4iXX0=","/**\n * Contains native event\n * @category Events\n */\nexport class AXEvent {\n constructor() {\n this.isUserInteraction = false;\n }\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXHtmlEvent extends AXEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXValueChangedEvent extends AXEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXOptionChangedEvent extends AXEvent {\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXClickEvent extends AXHtmlEvent {\n constructor() {\n super(...arguments);\n /**\n * uses for extra data\n */\n this.data = null;\n this.nativeEvent = null;\n }\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXButtonClickEvent extends AXClickEvent {\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXItemClickEvent extends AXClickEvent {\n}\n/**\n * Fires each time the user select the element.\n * @category Events\n */\nexport class AXItemSelectedEvent extends AXEvent {\n}\n/**\n * Fires each time the component gets focused.\n * @category Events\n */\nexport class AXFocusEvent extends AXHtmlEvent {\n}\n/**\n * Fires each time an item or multiple items selected by the user or value.\n * @category Events\n */\nexport class AXSelectionValueChangedEvent extends AXValueChangedEvent {\n constructor() {\n super(...arguments);\n this.value = null;\n this.oldValue = null;\n this.selectedKeys = [];\n this.selectedItems = [];\n }\n}\n/**\n * Contains range start & end values\n * @category Events\n */\nexport class AXRangeChangedEvent extends AXEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NsYXNzZXMvZXZlbnRzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBVUUsc0JBQWlCLEdBQWEsS0FBSyxDQUFDO0lBQ3RDLENBQUM7Q0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFxQyxTQUFRLE9BQU87Q0FFaEU7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQTZCLFNBQVEsT0FBTztDQUl4RDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxvQkFBOEIsU0FBUSxPQUFPO0NBSXpEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUF1QjtJQUF6RDs7UUFDRTs7V0FFRztRQUNILFNBQUksR0FBUyxJQUFJLENBQUM7UUFFVCxnQkFBVyxHQUFTLElBQUksQ0FBQztJQUNwQyxDQUFDO0NBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsWUFBWTtDQUVuRDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxZQUFZO0NBRzFEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUE2QixTQUFRLE9BQU87Q0FFeEQ7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBYSxTQUFRLFdBQXVCO0NBQUk7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDRCQUE2QixTQUFRLG1CQUFnQztJQUFsRjs7UUFDVyxVQUFLLEdBQVMsSUFBSSxDQUFDO1FBQ25CLGFBQVEsR0FBUyxJQUFJLENBQUM7UUFDL0IsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUF1QixTQUFRLE9BQU87Q0FTbEQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYRXZlbnQge1xuICAvKipcbiAgICogIFRoZSBzZW5kZXIgY29tcG9uZW50XG4gICAqL1xuICBjb21wb25lbnQ6IGFueTtcbiAgLyoqXG4gICAqICBUaGUgcm9vdCBuYXRpdmUgZWxlbWVudFxuICAgKi9cbiAgaHRtbEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICBpc1VzZXJJbnRlcmFjdGlvbj86IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuLyoqXG4gKiAgQ29udGFpbnMgbmF0aXZlIGV2ZW50XG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEh0bWxFdmVudDxFIGV4dGVuZHMgRXZlbnQgPSBFdmVudD4gZXh0ZW5kcyBBWEV2ZW50IHtcbiAgbmF0aXZlRXZlbnQ/OiBFO1xufVxuXG4vKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYVmFsdWVDaGFuZ2VkRXZlbnQ8VCA9IGFueT4gZXh0ZW5kcyBBWEV2ZW50IHtcbiAgbmFtZT86IHN0cmluZztcbiAgdmFsdWU/OiBUO1xuICBvbGRWYWx1ZT86IFQ7XG59XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhPcHRpb25DaGFuZ2VkRXZlbnQ8VCA9IGFueT4gZXh0ZW5kcyBBWEV2ZW50IHtcbiAgbmFtZT86IHN0cmluZztcbiAgbmV3VmFsdWU/OiBUO1xuICBvbGRWYWx1ZT86IFQ7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGljayB0aGUgZWxlbWVudC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYQ2xpY2tFdmVudCBleHRlbmRzIEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+IHtcbiAgLyoqXG4gICAqICB1c2VzIGZvciBleHRyYSBkYXRhXG4gICAqL1xuICBkYXRhPzogYW55ID0gbnVsbDtcblxuICBvdmVycmlkZSBuYXRpdmVFdmVudD86IGFueSA9IG51bGw7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGljayB0aGUgZWxlbWVudC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYQnV0dG9uQ2xpY2tFdmVudCBleHRlbmRzIEFYQ2xpY2tFdmVudCB7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIGNsaWNrIHRoZSBlbGVtZW50LlxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhJdGVtQ2xpY2tFdmVudDxUID0gYW55PiBleHRlbmRzIEFYQ2xpY2tFdmVudCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGl0ZW06IFQ7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBzZWxlY3QgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEl0ZW1TZWxlY3RlZEV2ZW50PFQgPSBhbnk+IGV4dGVuZHMgQVhFdmVudCB7XG4gIGl0ZW06IFQ7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgY29tcG9uZW50IGdldHMgZm9jdXNlZC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYRm9jdXNFdmVudCBleHRlbmRzIEFYSHRtbEV2ZW50PEZvY3VzRXZlbnQ+IHsgfVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgYW4gaXRlbSBvciBtdWx0aXBsZSBpdGVtcyBzZWxlY3RlZCBieSB0aGUgdXNlciBvciB2YWx1ZS5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYU2VsZWN0aW9uVmFsdWVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueSB8IGFueVtdPiB7XG4gIG92ZXJyaWRlIHZhbHVlPzogYW55ID0gbnVsbDtcbiAgb3ZlcnJpZGUgb2xkVmFsdWU/OiBhbnkgPSBudWxsO1xuICBzZWxlY3RlZEtleXM/OiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZEl0ZW1zPzogYW55W10gPSBbXTtcbn1cblxuLyoqXG4gKiAgQ29udGFpbnMgcmFuZ2Ugc3RhcnQgJiBlbmQgdmFsdWVzXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFJhbmdlQ2hhbmdlZEV2ZW50PFQ+IGV4dGVuZHMgQVhFdmVudCB7XG4gIC8qKlxuICAgKiAgVGhlIHJhbmdlIHN0YXJ0IHZhbHVlXG4gICAqL1xuICBzdGFydD86IFQ7XG4gIC8qKlxuICAgKiAgVGhlIHJhbmdlIGVuZCB2YWx1ZVxuICAgKi9cbiAgZW5kPzogVDtcbn1cbiJdfQ==","import { EventEmitter, Injectable } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { MXValueComponent } from '../components/value-component.class';\nimport { AXEvent } from './events.class';\nimport * as i0 from \"@angular/core\";\nexport const TAB_META_KEY = '__meta__';\nexport class AXComponentCloseEvent extends AXEvent {\n}\nexport class AXComponentClosing {\n constructor() {\n this.cancel = false;\n }\n}\nexport class AXComponentResult {\n}\n/**\n * Defines a CSS class—or multiple classes separated by spaces— which are applied to a span element inside the Button. Allows the usage of custom icons after the primary text.\n */\nexport class AXComponentClosedPromise extends Promise {\n constructor(executor) {\n super(executor);\n }\n close() {\n if (this.closeMethod) {\n this.closeMethod();\n }\n }\n}\nexport class AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXClosableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXClosableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXClosableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXClosableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXClearableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXClearableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXClearableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXClearableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXSearchableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXSearchableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXSearchableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXSearchableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXValuableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXValuableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXValuableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXValuableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXFocusableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXFocusableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXFocusableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXFocusableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPagedComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXPagedComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXPagedComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXPagedComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXAutocompleteParentComponent extends MXValueComponent {\n constructor() {\n super(...arguments);\n this.onKeyDown = new EventEmitter();\n this.onItemSelected = new EventEmitter();\n }\n emitOnItemSelected(value, isUserInteraction = false) {\n if (isEqual(value, this.oldInputEmitValue))\n return;\n this.onItemSelected.emit({\n value,\n name: this.name,\n component: this,\n isUserInteraction,\n oldValue: this.oldInputEmitValue,\n htmlElement: this.getHostElement(),\n });\n this.oldInputEmitValue = value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXAutocompleteParentComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXAutocompleteParentComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXAutocompleteParentComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jbGFzc2VzL2NvbXBvbmVudHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFvQyxNQUFNLGdCQUFnQixDQUFDOztBQUUzRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDO0FBRXZDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxPQUFPO0NBRWpEO0FBQ0QsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNFLFdBQU0sR0FBRyxLQUFLLENBQUM7SUFFakIsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QjtBQVFEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLE9BQTBCO0lBRXRFLFlBQ0UsUUFHUztRQUVULEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFnQixXQUFXOzhHQUFYLFdBQVc7a0hBQVgsV0FBVzs7MkZBQVgsV0FBVztrQkFEaEMsVUFBVTs7QUFJWCxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLFdBQVc7OEdBQXZDLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUR4QyxVQUFVOztBQU9YLE1BQU0sT0FBZ0Isb0JBQXFCLFNBQVEsV0FBVzs4R0FBeEMsb0JBQW9CO2tIQUFwQixvQkFBb0I7OzJGQUFwQixvQkFBb0I7a0JBRHpDLFVBQVU7O0FBU1gsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxXQUFXOzhHQUF6QyxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEMUMsVUFBVTs7QUFNWCxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLFdBQVc7OEdBQXZDLG1CQUFtQjtrSEFBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUR4QyxVQUFVOztBQW1CWCxNQUFNLE9BQWdCLG9CQUFxQixTQUFRLFdBQVc7OEdBQXhDLG9CQUFvQjtrSEFBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQUR6QyxVQUFVOztBQWFYLE1BQU0sT0FBZ0IsZ0JBQWlCLFNBQVEsV0FBVzs4R0FBcEMsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRHJDLFVBQVU7O0FBU1gsTUFBTSxPQUFnQiw2QkFBaUMsU0FBUSxnQkFBbUI7SUFEbEY7O1FBS0UsY0FBUyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBQzNELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7S0FjN0Q7SUFaQyxrQkFBa0IsQ0FBQyxLQUFRLEVBQUUsaUJBQWlCLEdBQUcsS0FBSztRQUNwRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQUUsT0FBTztRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN2QixLQUFLO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUI7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDaEMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDOzhHQWxCbUIsNkJBQTZCO2tIQUE3Qiw2QkFBNkI7OzJGQUE3Qiw2QkFBNkI7a0JBRGxELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uU3VtbWFyeSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNWFZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy92YWx1ZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL2V2ZW50cy5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBUQUJfTUVUQV9LRVkgPSAnX19tZXRhX18nO1xuXG5leHBvcnQgY2xhc3MgQVhDb21wb25lbnRDbG9zZUV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIGRhdGE/OiBhbnk7XG59XG5leHBvcnQgY2xhc3MgQVhDb21wb25lbnRDbG9zaW5nIHtcbiAgY2FuY2VsID0gZmFsc2U7XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBBWENvbXBvbmVudFJlc3VsdCB7XG4gIHNlbmRlcjogYW55O1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRm9ybVZhbGlkYXRpb25SdWxlIHtcbiAgcnVsZTogc3RyaW5nO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xufVxuXG4vKipcbiAqICBEZWZpbmVzIGEgQ1NTIGNsYXNz4oCUb3IgbXVsdGlwbGUgY2xhc3NlcyBzZXBhcmF0ZWQgYnkgc3BhY2Vz4oCUIHdoaWNoIGFyZSBhcHBsaWVkIHRvIGEgc3BhbiBlbGVtZW50IGluc2lkZSB0aGUgQnV0dG9uLiBBbGxvd3MgdGhlIHVzYWdlIG9mIGN1c3RvbSBpY29ucyBhZnRlciB0aGUgcHJpbWFyeSB0ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgQVhDb21wb25lbnRDbG9zZWRQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxBWENvbXBvbmVudFJlc3VsdD4ge1xuICBwcml2YXRlIGNsb3NlTWV0aG9kOiAoKSA9PiB2b2lkO1xuICBjb25zdHJ1Y3RvcihcbiAgICBleGVjdXRvcjogKFxuICAgICAgcmVzb2x2ZTogKHZhbHVlPzogQVhDb21wb25lbnRSZXN1bHQgfCBQcm9taXNlTGlrZTxBWENvbXBvbmVudFJlc3VsdD4pID0+IHZvaWQsXG4gICAgICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQsXG4gICAgKSA9PiB2b2lkLFxuICApIHtcbiAgICBzdXBlcihleGVjdXRvcik7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VNZXRob2QpIHtcbiAgICAgIHRoaXMuY2xvc2VNZXRob2QoKTtcbiAgICB9XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQ29tcG9uZW50IHt9XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWENsb3NhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhDb21wb25lbnQge1xuICBhYnN0cmFjdCBjbG9zZSgpOiB2b2lkO1xuICBhYnN0cmFjdCBjbG9zZUFsbCgpOiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhDbGVhcmFibGVDb21wb25lbnQgZXh0ZW5kcyBBWENvbXBvbmVudCB7XG4gIGFic3RyYWN0IHJlc2V0KHU6IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldCB2YWx1ZSgpOiB1bmtub3duO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhTZWFyY2hhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhDb21wb25lbnQge1xuICBhYnN0cmFjdCBzZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFZhbHVhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhDb21wb25lbnQge1xuICBhYnN0cmFjdCBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuO1xuICB2YWxpZGF0aW9uUnVsZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWEZvcm1WYWxpZGF0aW9uUnVsZVtdPjtcbiAgYWJzdHJhY3QgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXQgdmFsdWUoKTogdW5rbm93bjtcbiAgYWJzdHJhY3Qgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PHVua25vd24+PjtcbiAgYWJzdHJhY3QgY29tbWl0VmFsdWUodmFsdWU6IHVua25vd24sIHU6IGJvb2xlYW4pO1xuXG4gIGFic3RyYWN0IGFkZFZhbGlkYXRpb25SdWxlKHJ1bGU6IEFYRm9ybVZhbGlkYXRpb25SdWxlKTtcblxuICBhYnN0cmFjdCByZW1vdmVWYWxpZGF0aW9uUnVsZShydWxlOiBBWEZvcm1WYWxpZGF0aW9uUnVsZSk7XG5cbiAgYWJzdHJhY3QgdmFsaWRhdGUoKTogUHJvbWlzZTxBWFZhbGlkYXRpb25TdW1tYXJ5PjtcbiAgYWJzdHJhY3QgcmVzZXQoZTogYm9vbGVhbik6IHZvaWQ7XG4gIGFic3RyYWN0IHJlc2V0RXJyb3JzKCk6IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEZvY3VzYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQ29tcG9uZW50IHtcbiAgYWJzdHJhY3QgZm9jdXMoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBhZ2VkQ29tcG9uZW50SW50ZXJmYWNlIHtcbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyKTtcbiAgZ2V0IHRvdGFsQ291bnQoKTogbnVtYmVyO1xuICBnZXQgcGFnZVNpemUoKTogbnVtYmVyO1xuICBvblBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxudW1iZXI+Pjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUGFnZWRDb21wb25lbnQgZXh0ZW5kcyBBWENvbXBvbmVudCBpbXBsZW1lbnRzIEFYUGFnZWRDb21wb25lbnRJbnRlcmZhY2Uge1xuICBhYnN0cmFjdCBnb1RvUGFnZShwYWdlOiBudW1iZXIpO1xuICBhYnN0cmFjdCBnZXQgdG90YWxDb3VudCgpOiBudW1iZXI7XG4gIGFic3RyYWN0IHBhZ2VTaXplOiBudW1iZXI7XG4gIGFic3RyYWN0IG9uUGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhBdXRvY29tcGxldGVQYXJlbnRDb21wb25lbnQ8VD4gZXh0ZW5kcyBNWFZhbHVlQ29tcG9uZW50PFQ+IHtcbiAgb2xkSW5wdXRFbWl0VmFsdWU6IFQ7XG4gIGFic3RyYWN0IHVuc3Vic2NyaWJlcjogQVhVbnN1YnNjcmliZXI7XG5cbiAgb25LZXlEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4oKTtcbiAgb25JdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8VD4+KCk7XG5cbiAgZW1pdE9uSXRlbVNlbGVjdGVkKHZhbHVlOiBULCBpc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlKSB7XG4gICAgaWYgKGlzRXF1YWwodmFsdWUsIHRoaXMub2xkSW5wdXRFbWl0VmFsdWUpKSByZXR1cm47XG4gICAgdGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHtcbiAgICAgIHZhbHVlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb24sXG4gICAgICBvbGRWYWx1ZTogdGhpcy5vbGRJbnB1dEVtaXRWYWx1ZSxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgfSk7XG4gICAgdGhpcy5vbGRJbnB1dEVtaXRWYWx1ZSA9IHZhbHVlO1xuICB9XG59XG4iXX0=","import { DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, Subscription, debounceTime, distinctUntilChanged } from 'rxjs';\nexport class AXListDataSource extends DataSource {\n get range() {\n return this._range;\n }\n /**\n * @ignore\n */\n constructor(config) {\n super();\n this.config = config;\n this.debounceTime = 0;\n this.subscription = new Subscription();\n this._range = { start: 0, end: 0 };\n this.source = config.source;\n if (config.debounceTime)\n this.debounceTime = config.debounceTime;\n //\n this.dataStream = new BehaviorSubject(this.config.source.cachedItems);\n this.source.onChanged.subscribe((data) => {\n this.dataStream.next(data.cachedItems);\n });\n }\n connect(collectionViewer) {\n this.subscription.add(collectionViewer.viewChange\n .pipe(debounceTime(this.debounceTime))\n .pipe(distinctUntilChanged())\n .subscribe((range) => {\n this._range = range;\n const startPage = this.getPageForIndex(range.start);\n const endPage = this.getPageForIndex(range.end - 1);\n for (let i = startPage; i <= endPage; i++) {\n this.source.setPage(i);\n }\n }));\n return this.dataStream;\n }\n disconnect() {\n this.subscription.unsubscribe();\n }\n getPageForIndex(index) {\n return Math.floor(index / this.source.config.pageSize);\n }\n refresh() {\n this.dataStream.next(new Array(this.source.pageSize));\n this.source.refresh();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWxpc3QuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY2xhc3Nlcy9kYXRhbGlzdC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWlCckcsTUFBTSxPQUFPLGdCQUE4QixTQUFRLFVBQWE7SUFPOUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQW9CLE1BQTBEO1FBQzVFLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBb0Q7UUFidEUsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSWxDLFdBQU0sR0FBbUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQVVwRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxNQUFNLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNqRSxFQUFFO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLGdCQUFrQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDbkIsZ0JBQWdCLENBQUMsVUFBVTthQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNyQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM1QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEQsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UgfSBmcm9tICcuL2RhdGFzb3VyY2UuY2xhc3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YUxpc3RRdWVyeSB7XG4gIHRha2U/OiBudW1iZXI7XG4gIHNraXA/OiBudW1iZXI7XG4gIHNlYXJjaFF1ZXJ5Pzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFMaXN0RmV0Y2hDYWxsYmFja1Jlc3VsdCB7XG4gIGl0ZW1zOiBBcnJheTxhbnk+O1xuICB0b3RhbDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBBWERhdGFMaXN0RmV0Y2hEYXRhQ2FsbGJhY2sgPSAoZTogQVhEYXRhTGlzdFF1ZXJ5KSA9PiBQcm9taXNlPEFYRGF0YUxpc3RGZXRjaENhbGxiYWNrUmVzdWx0PjtcblxuZXhwb3J0IHR5cGUgQVhEYXRhTGlzdEl0ZW1zID0gQXJyYXk8YW55PiB8IEFYRGF0YUxpc3RGZXRjaERhdGFDYWxsYmFjaztcblxuZXhwb3J0IGNsYXNzIEFYTGlzdERhdGFTb3VyY2U8VCA9IHVua25vd24+IGV4dGVuZHMgRGF0YVNvdXJjZTxUPiB7XG4gIHByaXZhdGUgZGVib3VuY2VUaW1lID0gMDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHB1YmxpYyBzb3VyY2U6IEFYRGF0YVNvdXJjZTxUPjtcbiAgcHJpdmF0ZSBkYXRhU3RyZWFtOiBCZWhhdmlvclN1YmplY3Q8VFtdPjtcblxuICBwcml2YXRlIF9yYW5nZTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9ID0geyBzdGFydDogMCwgZW5kOiAwIH07XG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9IHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IHsgc291cmNlOiBBWERhdGFTb3VyY2U8VD47IGRlYm91bmNlVGltZT86IG51bWJlciB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNvdXJjZSA9IGNvbmZpZy5zb3VyY2U7XG4gICAgaWYgKGNvbmZpZy5kZWJvdW5jZVRpbWUpIHRoaXMuZGVib3VuY2VUaW1lID0gY29uZmlnLmRlYm91bmNlVGltZTtcbiAgICAvL1xuICAgIHRoaXMuZGF0YVN0cmVhbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPih0aGlzLmNvbmZpZy5zb3VyY2UuY2FjaGVkSXRlbXMpO1xuICAgIHRoaXMuc291cmNlLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZGF0YVN0cmVhbS5uZXh0KGRhdGEuY2FjaGVkSXRlbXMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBjb2xsZWN0aW9uVmlld2VyLnZpZXdDaGFuZ2VcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSlcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlO1xuICAgICAgICAgIGNvbnN0IHN0YXJ0UGFnZSA9IHRoaXMuZ2V0UGFnZUZvckluZGV4KHJhbmdlLnN0YXJ0KTtcbiAgICAgICAgICBjb25zdCBlbmRQYWdlID0gdGhpcy5nZXRQYWdlRm9ySW5kZXgocmFuZ2UuZW5kIC0gMSk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0UGFnZTsgaSA8PSBlbmRQYWdlOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc291cmNlLnNldFBhZ2UoaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmRhdGFTdHJlYW07XG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VGb3JJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIHRoaXMuc291cmNlLmNvbmZpZy5wYWdlU2l6ZSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuZGF0YVN0cmVhbS5uZXh0KG5ldyBBcnJheSh0aGlzLnNvdXJjZS5wYWdlU2l6ZSkpO1xuICAgIHRoaXMuc291cmNlLnJlZnJlc2goKTtcbiAgfVxufVxuIl19","import { Subject } from 'rxjs';\nexport class AXDataSource {\n get totalCount() {\n return this._totalCount;\n }\n get totalPages() {\n return Math.ceil(this.totalCount / this.config.pageSize);\n }\n get pageSize() {\n return this.config.pageSize;\n }\n get cachedItems() {\n return this._cachedItems;\n }\n get items() {\n return this._items;\n }\n get query() {\n return this._query;\n }\n get isLoading() {\n return this._isLoading;\n }\n constructor(config) {\n this.useCache = true;\n this._totalCount = 0;\n this._items = [];\n this.fetchedPages = new Set();\n this._page = 0;\n this._query = { skip: 0, take: 0, sort: [] };\n this.onChanged = new Subject();\n this.onItemExpanded = new Subject();\n this.onItemRefreshChildren = new Subject();\n this.onLoadingChanged = new Subject();\n this._isLoading = false;\n this.config = config;\n this._cachedItems = new Array(this.config.pageSize);\n this._items = new Array(0);\n this._query.take = this.config.pageSize;\n }\n load() {\n const page = this._page;\n if (this.fetchedPages.has(page) && this.useCache) {\n return;\n }\n this.setLoadingState(true);\n this.fetchedPages.add(page);\n this._query.take = this.config.pageSize;\n this._query.skip = page * this.config.pageSize;\n this.config\n .load({ ...this._query })\n .then((result) => {\n if (this._totalCount != result.total) {\n this._cachedItems = new Array(result.total);\n this._totalCount = result.total;\n }\n this._items = result.items;\n this._cachedItems.splice(page * this.config.pageSize, this.config.pageSize, ...result.items);\n const event = {\n cachedItems: this.cachedItems,\n items: this.items,\n page: page,\n totalCount: this.totalCount,\n totalPages: this.totalPages,\n };\n this.onChanged.next(event);\n })\n .finally(() => {\n this.setLoadingState(false);\n });\n }\n async getItemsByFilter(filter) {\n return await this.config.load({ ...this.query, filter });\n }\n setLoadingState(value) {\n this._isLoading = value;\n this.onLoadingChanged.next(this._isLoading);\n }\n setPage(page) {\n if (this._page != page || this._items.length == 0) {\n this._page = page;\n this.load();\n }\n }\n setPageSize(pageSize) {\n this.config.pageSize = pageSize;\n this.load();\n }\n filter(value) {\n this._query.filter = value;\n }\n sort(...value) {\n this._query.sort = value;\n }\n clearFilter() {\n this._query.filter = null;\n }\n reset() {\n this._query.filter = null;\n this._query.sort = [];\n this._query.skip = 0;\n this._items = new Array(0);\n this._cachedItems = new Array(this.config.pageSize);\n this.fetchedPages.clear();\n this._page = 0;\n this._totalCount = 0;\n }\n refresh(options = { reset: true }) {\n const currentFilter = this._query.filter;\n const currentSort = this._query.sort;\n if (options.reset) {\n this.reset();\n }\n this._query.filter = currentFilter;\n this._query.sort = currentSort;\n this.load();\n }\n find(key) {\n const fromCache = this.cachedItems.find((c) => (!this.config.key && c == key) || (c && this.config.key && c[this.config.key] == key));\n if (fromCache)\n return fromCache;\n return this.config.byKey ? this.config.byKey(key) : null;\n }\n}\nexport function convertArrayToDataSource(items, options = { key: 'id', pageSize: 100 }) {\n // Normalize primitives to objects so consumers (e.g., select/list) can rely on\n // value and text fields without triggering extra byKey lookups.\n const normalizedItems = items.map((candidate) => {\n const isObjectItem = candidate != null && typeof candidate === 'object';\n if (isObjectItem) {\n return candidate;\n }\n // For primitive values, create an object with both key and text\n return { [options.key]: candidate, text: String(candidate ?? '') };\n });\n const config = {\n key: options.key,\n pageSize: options.pageSize,\n load: async (e) => {\n const itemsForFilter = normalizedItems;\n const resultNormalized = e.filter\n ? applyDataSourceQuery(itemsForFilter, e.filter)\n : itemsForFilter;\n const result = resultNormalized;\n return {\n items: result.slice(e.skip, e.skip + e.take),\n total: resultNormalized.length,\n };\n },\n byKey: async (v) => \n // Search in the normalized list (supports primitive and object arrays)\n normalizedItems.find((record) => {\n return record[options.key] == v;\n }),\n };\n return new AXDataSource(config);\n}\nexport function applyDataSourceQuery(items, filter) {\n if (!filter?.field || filter.value === undefined || filter.value === null) {\n return items; // No filter applied\n }\n return items.filter((item) => {\n const itemField = item[filter.field];\n if (typeof itemField === 'string' && typeof filter.value === 'string') {\n return itemField.toLowerCase().includes(filter.value.toLowerCase());\n }\n return false; // Return false if itemField isn't comparable\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jbGFzc2VzL2RhdGFzb3VyY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1EL0IsTUFBTSxPQUFPLFlBQVk7SUFLdkIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFHRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU1ELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBU0QsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBWSxNQUE2QjtRQTVDekMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVSLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBa0JoQixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBS2pCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNqQyxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsV0FBTSxHQUFzQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFB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eHBvcnQgdHlwZSBBWERhdGFTb3VyY2VPcGVyYXRvciA9IHtcbiAgdHlwZTogJ2VxdWFsJyB8ICdpc051bGwnIHwgJ2lzRW1wdHknIHwgJ2x0JyB8ICdsdGUnIHwgJ2d0JyB8ICdndGUnIHwgJ3N0YXJ0c1dpdGgnIHwgJ2VuZHNXaXRoJyB8ICdjb250YWlucycgfCAnaW4nO1xuICBuZWdhdGl2ZT86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgQVhGaWx0ZXJMb2dpYyA9ICdhbmQnIHwgJ29yJztcbmV4cG9ydCB0eXBlIEFYU29ydE9yZGVyID0gJ2FzYycgfCAnZGVzYyc7XG5cbmV4cG9ydCB0eXBlIEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIHZhbHVlPzogdW5rbm93bjtcbiAgb3BlcmF0b3I/OiBBWERhdGFTb3VyY2VPcGVyYXRvcjtcbiAgbG9naWM/OiBBWEZpbHRlckxvZ2ljO1xuICBmaWx0ZXJzPzogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uW107XG59O1xuZXhwb3J0IHR5cGUgQVhEYXRhU291cmNlU29ydE9wdGlvbiA9IHsgZmllbGQ6IHN0cmluZzsgZGlyOiAnYXNjJyB8ICdkZXNjJyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVNvdXJjZVF1ZXJ5IHtcbiAgdGFrZTogbnVtYmVyO1xuICBza2lwOiBudW1iZXI7XG4gIGZpbHRlcj86IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbjtcbiAgc29ydDogQVhEYXRhU291cmNlU29ydE9wdGlvbltdO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFTb3VyY2VDYWxsYmFja1Jlc3VsdDxUPiB7XG4gIGl0ZW1zOiBBcnJheTxUPjtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQVhEYXRhU291cmNlTG9hZENhbGxiYWNrPFQ+ID0gKGU6IEFYRGF0YVNvdXJjZVF1ZXJ5KSA9PiBQcm9taXNlPEFYRGF0YVNvdXJjZUNhbGxiYWNrUmVzdWx0PFQ+PjtcbmV4cG9ydCB0eXBlIEFYRGF0YVNvdXJjZUJ5S2V5Q2FsbGJhY2s8VD4gPSAoa2V5OiB1bmtub3duKSA9PiBQcm9taXNlPFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVNvdXJjZUNvbmZpZzxUID0gdW5rbm93bj4ge1xuICBrZXk/OiBzdHJpbmc7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIGxvYWQ6IEFYRGF0YVNvdXJjZUxvYWRDYWxsYmFjazxUPjtcbiAgYnlLZXk/OiBBWERhdGFTb3VyY2VCeUtleUNhbGxiYWNrPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVNvdXJjZUNoYW5nZWRFdmVudDxUID0gdW5rbm93bj4ge1xuICBjYWNoZWRJdGVtczogQXJyYXk8VD47XG4gIGl0ZW1zOiBBcnJheTxUPjtcbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRhU291cmNlSXRlbUV4cGFuZGVkRXZlbnQ8VCA9IHVua25vd24+IHtcbiAgZXhwYW5kZWRJdGVtOiBUO1xuICBjaGlsZHJlbjogQXJyYXk8VD47XG59XG5cbmV4cG9ydCBjbGFzcyBBWERhdGFTb3VyY2U8VCA9IHVua25vd24+IHtcbiAgY29uZmlnITogQVhEYXRhU291cmNlQ29uZmlnPFQ+O1xuICB1c2VDYWNoZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfdG90YWxDb3VudCA9IDA7XG4gIHB1YmxpYyBnZXQgdG90YWxDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbENvdW50O1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnRvdGFsQ291bnQgLyB0aGlzLmNvbmZpZy5wYWdlU2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VTaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FjaGVkSXRlbXM6IFRbXTtcbiAgcHVibGljIGdldCBjYWNoZWRJdGVtcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZWRJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgX2l0ZW1zOiBUW10gPSBbXTtcbiAgcHVibGljIGdldCBpdGVtcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hlZFBhZ2VzID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIHByaXZhdGUgX3BhZ2UgPSAwO1xuICBwcml2YXRlIF9xdWVyeTogQVhEYXRhU291cmNlUXVlcnkgPSB7IHNraXA6IDAsIHRha2U6IDAsIHNvcnQ6IFtdIH07XG5cbiAgcHVibGljIGdldCBxdWVyeSgpOiBBWERhdGFTb3VyY2VRdWVyeSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5O1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PEFYRGF0YVNvdXJjZUNoYW5nZWRFdmVudDxUPj4oKTtcblxuICBwdWJsaWMgb25JdGVtRXhwYW5kZWQgPSBuZXcgU3ViamVjdDxBWERhdGFTb3VyY2VJdGVtRXhwYW5kZWRFdmVudDxUPj4oKTtcbiAgcHVibGljIG9uSXRlbVJlZnJlc2hDaGlsZHJlbiA9IG5ldyBTdWJqZWN0PHsgaWQ6IHN0cmluZyB9PigpO1xuXG4gIHB1YmxpYyBvbkxvYWRpbmdDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYRGF0YVNvdXJjZUNvbmZpZzxUPikge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuX2NhY2hlZEl0ZW1zID0gbmV3IEFycmF5KHRoaXMuY29uZmlnLnBhZ2VTaXplKTtcbiAgICB0aGlzLl9pdGVtcyA9IG5ldyBBcnJheSgwKTtcbiAgICB0aGlzLl9xdWVyeS50YWtlID0gdGhpcy5jb25maWcucGFnZVNpemU7XG4gIH1cblxuICBwcml2YXRlIGxvYWQoKSB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX3BhZ2U7XG4gICAgaWYgKHRoaXMuZmV0Y2hlZFBhZ2VzLmhhcyhwYWdlKSAmJiB0aGlzLnVzZUNhY2hlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2V0TG9hZGluZ1N0YXRlKHRydWUpO1xuICAgIHRoaXMuZmV0Y2hlZFBhZ2VzLmFkZChwYWdlKTtcbiAgICB0aGlzLl9xdWVyeS50YWtlID0gdGhpcy5jb25maWcucGFnZVNpemU7XG4gICAgdGhpcy5fcXVlcnkuc2tpcCA9IHBhZ2UgKiB0aGlzLmNvbmZpZy5wYWdlU2l6ZTtcbiAgICB0aGlzLmNvbmZpZ1xuICAgICAgLmxvYWQoeyAuLi50aGlzLl9xdWVyeSB9KVxuICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fdG90YWxDb3VudCAhPSByZXN1bHQudG90YWwpIHtcbiAgICAgICAgICB0aGlzLl9jYWNoZWRJdGVtcyA9IG5ldyBBcnJheShyZXN1bHQudG90YWwpO1xuICAgICAgICAgIHRoaXMuX3RvdGFsQ291bnQgPSByZXN1bHQudG90YWw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXRlbXMgPSByZXN1bHQuaXRlbXM7XG4gICAgICAgIHRoaXMuX2NhY2hlZEl0ZW1zLnNwbGljZShwYWdlICogdGhpcy5jb25maWcucGFnZVNpemUsIHRoaXMuY29uZmlnLnBhZ2VTaXplLCAuLi5yZXN1bHQuaXRlbXMpO1xuICAgICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgICBjYWNoZWRJdGVtczogdGhpcy5jYWNoZWRJdGVtcyxcbiAgICAgICAgICBpdGVtczogdGhpcy5pdGVtcyxcbiAgICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgICAgIHRvdGFsQ291bnQ6IHRoaXMudG90YWxDb3VudCxcbiAgICAgICAgICB0b3RhbFBhZ2VzOiB0aGlzLnRvdGFsUGFnZXMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25DaGFuZ2VkLm5leHQoZXZlbnQpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoZmFsc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SXRlbXNCeUZpbHRlcihmaWx0ZXI6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbikge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbmZpZy5sb2FkKHsgLi4udGhpcy5xdWVyeSwgZmlsdGVyIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMb2FkaW5nU3RhdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0xvYWRpbmcgPSB2YWx1ZTtcbiAgICB0aGlzLm9uTG9hZGluZ0NoYW5nZWQubmV4dCh0aGlzLl9pc0xvYWRpbmcpO1xuICB9XG5cbiAgcHVibGljIHNldFBhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3BhZ2UgIT0gcGFnZSB8fCB0aGlzLl9pdGVtcy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgICB0aGlzLmxvYWQoKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIHNldFBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpIHtcbiAgICB0aGlzLmNvbmZpZy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcih2YWx1ZTogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uKSB7XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc29ydCguLi52YWx1ZTogQVhEYXRhU291cmNlU29ydE9wdGlvbltdKSB7XG4gICAgdGhpcy5fcXVlcnkuc29ydCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRmlsdGVyKCkge1xuICAgIHRoaXMuX3F1ZXJ5LmZpbHRlciA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVyID0gbnVsbDtcbiAgICB0aGlzLl9xdWVyeS5zb3J0ID0gW107XG4gICAgdGhpcy5fcXVlcnkuc2tpcCA9IDA7XG4gICAgdGhpcy5faXRlbXMgPSBuZXcgQXJyYXkoMCk7XG4gICAgdGhpcy5fY2FjaGVkSXRlbXMgPSBuZXcgQXJyYXkodGhpcy5jb25maWcucGFnZVNpemUpO1xuICAgIHRoaXMuZmV0Y2hlZFBhZ2VzLmNsZWFyKCk7XG4gICAgdGhpcy5fcGFnZSA9IDA7XG4gICAgdGhpcy5fdG90YWxDb3VudCA9IDA7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChvcHRpb25zOiB7IHJlc2V0PzogYm9vbGVhbiB9ID0geyByZXNldDogdHJ1ZSB9KSB7XG4gICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMuX3F1ZXJ5LmZpbHRlcjtcbiAgICBjb25zdCBjdXJyZW50U29ydCA9IHRoaXMuX3F1ZXJ5LnNvcnQ7XG4gICAgaWYgKG9wdGlvbnMucmVzZXQpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVyID0gY3VycmVudEZpbHRlcjtcbiAgICB0aGlzLl9xdWVyeS5zb3J0ID0gY3VycmVudFNvcnQ7XG4gICAgdGhpcy5sb2FkKCk7XG4gIH1cblxuICBmaW5kKGtleTogdW5rbm93bik6IFQgfCBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBmcm9tQ2FjaGUgPSB0aGlzLmNhY2hlZEl0ZW1zLmZpbmQoXG4gICAgICAoYykgPT4gKCF0aGlzLmNvbmZpZy5rZXkgJiYgYyA9PSBrZXkpIHx8IChjICYmIHRoaXMuY29uZmlnLmtleSAmJiBjW3RoaXMuY29uZmlnLmtleV0gPT0ga2V5KSxcbiAgICApO1xuICAgIGlmIChmcm9tQ2FjaGUpIHJldHVybiBmcm9tQ2FjaGU7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmJ5S2V5ID8gdGhpcy5jb25maWcuYnlLZXkoa2V5KSA6IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZTxUID0gdW5rbm93bj4oXG4gIGl0ZW1zOiBUW10sXG4gIG9wdGlvbnM6IHsga2V5OiBzdHJpbmc7IHBhZ2VTaXplOiBudW1iZXIgfSA9IHsga2V5OiAnaWQnLCBwYWdlU2l6ZTogMTAwIH0sXG4pOiBBWERhdGFTb3VyY2U8VD4ge1xuICAvLyBOb3JtYWxpemUgcHJpbWl0aXZlcyB0byBvYmplY3RzIHNvIGNvbnN1bWVycyAoZS5nLiwgc2VsZWN0L2xpc3QpIGNhbiByZWx5IG9uXG4gIC8vIHZhbHVlIGFuZCB0ZXh0IGZpZWxkcyB3aXRob3V0IHRyaWdnZXJpbmcgZXh0cmEgYnlLZXkgbG9va3Vwcy5cbiAgY29uc3Qgbm9ybWFsaXplZEl0ZW1zOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSAoaXRlbXMgYXMgQXJyYXk8dW5rbm93bj4pLm1hcCgoY2FuZGlkYXRlKSA9PiB7XG4gICAgY29uc3QgaXNPYmplY3RJdGVtID0gY2FuZGlkYXRlICE9IG51bGwgJiYgdHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ29iamVjdCc7XG4gICAgaWYgKGlzT2JqZWN0SXRlbSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICB9XG4gICAgLy8gRm9yIHByaW1pdGl2ZSB2YWx1ZXMsIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBib3RoIGtleSBhbmQgdGV4dFxuICAgIHJldHVybiB7IFtvcHRpb25zLmtleV06IGNhbmRpZGF0ZSBhcyB1bmtub3duLCB0ZXh0OiBTdHJpbmcoY2FuZGlkYXRlID8/ICcnKSB9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTtcblxuICBjb25zdCBjb25maWc6IEFYRGF0YVNvdXJjZUNvbmZpZzxUPiA9IHtcbiAgICBrZXk6IG9wdGlvbnMua2V5LFxuICAgIHBhZ2VTaXplOiBvcHRpb25zLnBhZ2VTaXplLFxuICAgIGxvYWQ6IGFzeW5jIChlOiBBWERhdGFTb3VyY2VRdWVyeSkgPT4ge1xuICAgICAgY29uc3QgaXRlbXNGb3JGaWx0ZXI6IEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IG5vcm1hbGl6ZWRJdGVtcztcbiAgICAgIGNvbnN0IHJlc3VsdE5vcm1hbGl6ZWQgPSBlLmZpbHRlclxuICAgICAgICA/IGFwcGx5RGF0YVNvdXJjZVF1ZXJ5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PihpdGVtc0ZvckZpbHRlciwgZS5maWx0ZXIpXG4gICAgICAgIDogaXRlbXNGb3JGaWx0ZXI7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXN1bHROb3JtYWxpemVkIGFzIHVua25vd24gYXMgVFtdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHJlc3VsdC5zbGljZShlLnNraXAsIGUuc2tpcCArIGUudGFrZSksXG4gICAgICAgIHRvdGFsOiByZXN1bHROb3JtYWxpemVkLmxlbmd0aCxcbiAgICAgIH07XG4gICAgfSxcbiAgICBieUtleTogYXN5bmMgKHY6IHVua25vd24pID0+XG4gICAgICAvLyBTZWFyY2ggaW4gdGhlIG5vcm1hbGl6ZWQgbGlzdCAoc3VwcG9ydHMgcHJpbWl0aXZlIGFuZCBvYmplY3QgYXJyYXlzKVxuICAgICAgKG5vcm1hbGl6ZWRJdGVtcyBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pLmZpbmQoKHJlY29yZCkgPT4ge1xuICAgICAgICByZXR1cm4gcmVjb3JkW29wdGlvbnMua2V5XSA9PSB2O1xuICAgICAgfSkgYXMgdW5rbm93biBhcyBULFxuICB9O1xuXG5cbiAgcmV0dXJuIG5ldyBBWERhdGFTb3VyY2UoY29uZmlnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGF0YVNvdXJjZVF1ZXJ5PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oaXRlbXM6IFRbXSwgZmlsdGVyOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24pOiBUW10ge1xuICBpZiAoIWZpbHRlcj8uZmllbGQgfHwgZmlsdGVyLnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGl0ZW1zOyAvLyBObyBmaWx0ZXIgYXBwbGllZFxuICB9XG5cbiAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgIGNvbnN0IGl0ZW1GaWVsZCA9IGl0ZW1bZmlsdGVyLmZpZWxkXSBhcyBzdHJpbmc7XG5cbiAgICBpZiAodHlwZW9mIGl0ZW1GaWVsZCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGZpbHRlci52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBpdGVtRmllbGQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIudmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBSZXR1cm4gZmFsc2UgaWYgaXRlbUZpZWxkIGlzbid0IGNvbXBhcmFibGVcbiAgfSk7XG59XG4iXX0=","export const AX_STYLE_COLOR_TYPES = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'default',\n];\nexport const AX_STYLE_LOOK_TYPES = ['solid', 'blank', 'outline', 'twotone', 'flat', 'fill', 'none'];\nexport const AX_LOCATIONS = [\n 'bottom-start',\n 'bottom-center',\n 'bottom-end',\n 'top-start',\n 'top-center',\n 'top-end',\n 'center-end',\n 'center-start',\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NsYXNzZXMvc3R5bGVzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUF1QjtJQUN0RCxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxTQUFTO0lBQ1QsUUFBUTtJQUNSLFNBQVM7Q0FDVixDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQjtJQUN4QyxjQUFjO0lBQ2QsZUFBZTtJQUNmLFlBQVk7SUFDWixXQUFXO0lBQ1gsWUFBWTtJQUNaLFNBQVM7SUFDVCxZQUFZO0lBQ1osY0FBYztDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdG9rZW4gdGhhdCBzcGVjaWZpZXMgdGhlICBjb2xvciBzdHlsZSBvZiBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIEFYU3R5bGVDb2xvclR5cGUgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ2RlZmF1bHQnO1xuZXhwb3J0IGNvbnN0IEFYX1NUWUxFX0NPTE9SX1RZUEVTOiBBWFN0eWxlQ29sb3JUeXBlW10gPSBbXG4gICdwcmltYXJ5JyxcbiAgJ3NlY29uZGFyeScsXG4gICdzdWNjZXNzJyxcbiAgJ3dhcm5pbmcnLFxuICAnZGFuZ2VyJyxcbiAgJ2RlZmF1bHQnLFxuXTtcblxuZXhwb3J0IHR5cGUgQVhTdHlsZUxvb2tUeXBlID0gJ3NvbGlkJyB8ICdibGFuaycgfCAnb3V0bGluZScgfCAndHdvdG9uZScgfCAnZmxhdCcgfCAnZmlsbCcgfCAnbGluaycgfCAnbm9uZSc7XG5leHBvcnQgY29uc3QgQVhfU1RZTEVfTE9PS19UWVBFUzogQVhTdHlsZUxvb2tUeXBlW10gPSBbJ3NvbGlkJywgJ2JsYW5rJywgJ291dGxpbmUnLCAndHdvdG9uZScsICdmbGF0JywgJ2ZpbGwnLCAnbm9uZSddO1xuXG5leHBvcnQgdHlwZSBBWFNpemVUeXBlID0gJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCc7XG5leHBvcnQgdHlwZSBBWFN0eWxlU2l6ZVR5cGUgPSBgYXgtJHtBWFNpemVUeXBlfWA7XG5cbmV4cG9ydCB0eXBlIEFYTG9jYXRpb24gPVxuICB8ICdib3R0b20tc3RhcnQnXG4gIHwgJ2JvdHRvbS1jZW50ZXInXG4gIHwgJ2JvdHRvbS1lbmQnXG4gIHwgJ3RvcC1zdGFydCdcbiAgfCAndG9wLWNlbnRlcidcbiAgfCAndG9wLWVuZCdcbiAgfCAnY2VudGVyLWVuZCdcbiAgfCAnY2VudGVyLXN0YXJ0JztcbmV4cG9ydCBjb25zdCBBWF9MT0NBVElPTlM6IEFYTG9jYXRpb25bXSA9IFtcbiAgJ2JvdHRvbS1zdGFydCcsXG4gICdib3R0b20tY2VudGVyJyxcbiAgJ2JvdHRvbS1lbmQnLFxuICAndG9wLXN0YXJ0JyxcbiAgJ3RvcC1jZW50ZXInLFxuICAndG9wLWVuZCcsXG4gICdjZW50ZXItZW5kJyxcbiAgJ2NlbnRlci1zdGFydCcsXG5dO1xuXG5leHBvcnQgdHlwZSBBWFN1cmZhY2VUeXBlID0gJ2xpZ2h0ZXN0JyB8ICdsaWdodGVyJyB8ICdsaWdodCcgfCAnc3VyZmFjZScgfCAnZGFyaycgfCAnZGFya2VyJyB8ICdkYXJrZXN0JztcbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, DOCUMENT, ElementRef, inject, Input, PLATFORM_ID, Renderer2 } from '@angular/core';\nimport { AXFocusableComponent } from '../classes/components.class';\nimport * as i0 from \"@angular/core\";\nexport class AXAutoFocusDirective {\n constructor() {\n this.renderer = inject(Renderer2);\n this.el = inject(ElementRef);\n this._host = inject(AXFocusableComponent, { host: true, self: true, optional: true });\n this.autoFocus = true;\n this.time = 50;\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n }\n ngAfterViewInit() {\n this.doFocus();\n }\n doFocus() {\n if (this.autoFocus) {\n if (this._host) {\n setTimeout(() => {\n this._host.focus();\n }, this.time);\n return;\n }\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = this.el.nativeElement.querySelector(list.join(', ')) ?? this.el.nativeElement;\n if (isPlatformBrowser(this.platformID)) {\n const attr = this.document.createAttribute('autofocus');\n focusable.setAttributeNode(attr);\n }\n const hasTabindex = focusable.hasAttribute('tabindex');\n if (!hasTabindex) {\n focusable.setAttribute('tabindex', '0');\n }\n setTimeout(() => {\n focusable.focus();\n }, this.time);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXAutoFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: AXAutoFocusDirective, isStandalone: true, selector: \"[axAutoFocus]\", inputs: { autoFocus: [\"axAutoFocus\", \"autoFocus\"], time: [\"axAutoFocusTime\", \"time\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXAutoFocusDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axAutoFocus]' }]\n }], propDecorators: { autoFocus: [{\n type: Input,\n args: ['axAutoFocus']\n }], time: [{\n type: Input,\n args: ['axAutoFocusTime']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvZGlyZWN0aXZlcy9hdXRvLWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLG9CQUFvQjtJQURqQztRQUVVLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsT0FBRSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDekQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUcxRSxjQUFTLEdBQWEsSUFBSSxDQUFDO1FBR2xDLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFRixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FpQzFDO0lBL0JDLGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVTLE9BQU87UUFDZixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JCLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2QsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUNoRixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUNuQyxDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUU3RyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7OEdBNUNVLG9CQUFvQjtrR0FBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQURoQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRTs7c0JBTXJDLEtBQUs7dUJBQUMsYUFBYTs7c0JBR25CLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBET0NVTUVOVCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGb2N1c2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jbGFzc2VzL2NvbXBvbmVudHMuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbYXhBdXRvRm9jdXNdJyB9KVxuZXhwb3J0IGNsYXNzIEFYQXV0b0ZvY3VzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIF9ob3N0ID0gaW5qZWN0KEFYRm9jdXNhYmxlQ29tcG9uZW50LCB7IGhvc3Q6IHRydWUsIHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIEBJbnB1dCgnYXhBdXRvRm9jdXMnKVxuICBwdWJsaWMgYXV0b0ZvY3VzPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCdheEF1dG9Gb2N1c1RpbWUnKVxuICB0aW1lID0gNTA7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZG9Gb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRvRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICBpZiAodGhpcy5faG9zdCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9ob3N0LmZvY3VzKCk7XG4gICAgICAgIH0sIHRoaXMudGltZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpc3QgPSBbJ2J1dHRvbicsICdpbnB1dCcsICdbaHJlZl0nLCAnc2VsZWN0JywgJ3RleHRhcmVhJywgJ1t0YWJpbmRleF0nXS5tYXAoXG4gICAgICAgIChjKSA9PiBjICsgJzpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihsaXN0LmpvaW4oJywgJykpID8/IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdhdXRvZm9jdXMnKTtcbiAgICAgICAgZm9jdXNhYmxlLnNldEF0dHJpYnV0ZU5vZGUoYXR0cik7XG4gICAgICB9XG4gICAgICBjb25zdCBoYXNUYWJpbmRleCA9IGZvY3VzYWJsZS5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICBpZiAoIWhhc1RhYmluZGV4KSB7XG4gICAgICAgIGZvY3VzYWJsZS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBmb2N1c2FibGUuZm9jdXMoKTtcbiAgICAgIH0sIHRoaXMudGltZSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { DOCUMENT, inject, Injectable } from '@angular/core';\nimport { EventManager } from '@angular/platform-browser';\nimport { Observable } from 'rxjs/internal/Observable';\nimport * as i0 from \"@angular/core\";\nexport class AXHotkeysService {\n constructor() {\n this.eventManager = inject(EventManager);\n this.document = inject(DOCUMENT);\n this.defaults = {\n element: this.document,\n };\n }\n /**\n * Add shortcut\n *\n *\n * @param options\n * @returns Observable\n *\n */\n addShortcut(options) {\n const merged = { ...this.defaults, ...options };\n const event = `keydown.${merged.keys}`;\n return new Observable((observer) => {\n const handler = (e) => {\n e.preventDefault();\n observer.next(e);\n };\n if (merged.element) {\n // Todo: check addEventListener is not function\n const dispose = this.eventManager.addEventListener(merged.element, event, handler);\n return () => {\n dispose();\n };\n }\n else {\n return null;\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXHotkeysService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXHotkeysService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXHotkeysService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvc2VydmljZXMvaG90a2V5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBY3RELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLGFBQVEsR0FBcUI7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3ZCLENBQUM7S0E4Qkg7SUE1QkM7Ozs7Ozs7T0FPRztJQUNILFdBQVcsQ0FBQyxPQUF5QjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ2hELE1BQU0sS0FBSyxHQUFHLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFO2dCQUM3QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25CLCtDQUErQztnQkFFL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxHQUFHLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FwQ1UsZ0JBQWdCO2tIQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudE1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL2ludGVybmFsL09ic2VydmFibGUnO1xuXG50eXBlIE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBlbGVtZW50IC0gQW4gaHRtbCBlbGVtZW50XG4gICAqL1xuICBlbGVtZW50OiBhbnk7XG4gIC8qKlxuICAgKiBrZXlzIC0gc3RyaW5nIG9mIGtleXMgbGlrZSAoQ29udHJvbC5mKVxuICAgKi9cbiAga2V5czogc3RyaW5nO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYSG90a2V5c1NlcnZpY2Uge1xuICBwcml2YXRlIGV2ZW50TWFuYWdlciA9IGluamVjdChFdmVudE1hbmFnZXIpO1xuXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIGRlZmF1bHRzOiBQYXJ0aWFsPE9wdGlvbnM+ID0ge1xuICAgIGVsZW1lbnQ6IHRoaXMuZG9jdW1lbnQsXG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBzaG9ydGN1dFxuICAgKlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlXG4gICAqXG4gICAqL1xuICBhZGRTaG9ydGN1dChvcHRpb25zOiBQYXJ0aWFsPE9wdGlvbnM+KSB7XG4gICAgY29uc3QgbWVyZ2VkID0geyAuLi50aGlzLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gICAgY29uc3QgZXZlbnQgPSBga2V5ZG93bi4ke21lcmdlZC5rZXlzfWA7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlciA9IChlOiBVSUV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChlKTtcbiAgICAgIH07XG4gICAgICBpZiAobWVyZ2VkLmVsZW1lbnQpIHtcbiAgICAgICAgLy8gVG9kbzogY2hlY2sgYWRkRXZlbnRMaXN0ZW5lciBpcyBub3QgZnVuY3Rpb25cblxuICAgICAgICBjb25zdCBkaXNwb3NlID0gdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihtZXJnZWQuZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport { AXComponent } from '../classes/components.class';\nimport { AXHotkeysService } from '../services/hotkey.service';\nimport * as i0 from \"@angular/core\";\nexport class AXHotkeyDirective {\n constructor() {\n this.el = inject(ElementRef);\n this._host = inject(AXComponent, { host: true, self: true, optional: true });\n this.hs = inject(AXHotkeysService);\n this.axHotkey = '';\n this._subs = [];\n }\n ngAfterViewInit() {\n if (!this.axHotkey || !this._host)\n return;\n if (typeof this.axHotkey == 'string') {\n this._addDefaultAction(this.axHotkey);\n }\n else if (typeof this.axHotkey == 'object' && !Array.isArray(this.axHotkey)) {\n this._addHotKeyAction([this.axHotkey]);\n }\n else if (Array.isArray(this.axHotkey)) {\n this._addHotKeyAction(this.axHotkey);\n }\n }\n _addDefaultAction(hotkey) {\n this._subs.push(this.hs.addShortcut({ keys: hotkey }).subscribe(() => {\n ['click', 'toggle', 'open', 'focus'].forEach((a) => {\n if (this._host[a]) {\n this._host[a]();\n return;\n }\n });\n }));\n }\n _addHotKeyAction(hotkeys) {\n hotkeys.forEach((k) => {\n const hotkey = Object.entries(k)[0][0];\n const action = Object.entries(k)[0][1];\n if (!action)\n this._addDefaultAction(hotkey);\n else {\n this._subs.push(this.hs.addShortcut({ keys: hotkey }).subscribe(() => {\n if (typeof action == 'string' && this._host[action]) {\n this._host[action]();\n return;\n }\n if (typeof action == 'function') {\n action();\n return;\n }\n }));\n }\n });\n }\n ngOnDestroy() {\n this._subs.forEach((s) => {\n s.unsubscribe();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXHotkeyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: AXHotkeyDirective, isStandalone: true, selector: \"[axHotkey]\", inputs: { axHotkey: \"axHotkey\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXHotkeyDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axHotkey]' }]\n }], propDecorators: { axHotkey: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2hvdGtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUs5RCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRVUsT0FBRSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDekQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsT0FBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRy9CLGFBQVEsR0FBK0MsRUFBRSxDQUFDO1FBRXpELFVBQUssR0FBbUIsRUFBRSxDQUFDO0tBc0RwQztJQXBEQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFMUMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDO2FBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBMEIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBYztRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDYixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkQsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDaEIsT0FBTztnQkFDVCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQXlCO1FBQ2hELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBYSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO1lBQzVELE1BQU0sTUFBTSxHQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLE1BQU07Z0JBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN2QyxDQUFDO2dCQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDbkQsSUFBSSxPQUFPLE1BQU0sSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7d0JBQ3JCLE9BQU87b0JBQ1QsQ0FBQztvQkFDRCxJQUFJLE9BQU8sTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxPQUFPO29CQUNULENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTdEVSxpQkFBaUI7a0dBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7O3NCQU1sQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9jb21wb25lbnRzLmNsYXNzJztcbmltcG9ydCB7IEFYSG90a2V5c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ob3RrZXkuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIEFYSG90S2V5QWN0aW9uID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBGdW5jdGlvbjsgcGFybWFzPzogYW55IH07XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theEhvdGtleV0nIH0pXG5leHBvcnQgY2xhc3MgQVhIb3RrZXlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIF9ob3N0ID0gaW5qZWN0KEFYQ29tcG9uZW50LCB7IGhvc3Q6IHRydWUsIHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGhzID0gaW5qZWN0KEFYSG90a2V5c1NlcnZpY2UpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBheEhvdGtleTogc3RyaW5nIHwgQVhIb3RLZXlBY3Rpb24gfCBBWEhvdEtleUFjdGlvbltdID0gJyc7XG5cbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF4SG90a2V5IHx8ICF0aGlzLl9ob3N0KSByZXR1cm47XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuYXhIb3RrZXkgPT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2FkZERlZmF1bHRBY3Rpb24odGhpcy5heEhvdGtleSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5heEhvdGtleSA9PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLmF4SG90a2V5KSkge1xuICAgICAgdGhpcy5fYWRkSG90S2V5QWN0aW9uKFt0aGlzLmF4SG90a2V5IGFzIEFYSG90S2V5QWN0aW9uXSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuYXhIb3RrZXkpKSB7XG4gICAgICB0aGlzLl9hZGRIb3RLZXlBY3Rpb24odGhpcy5heEhvdGtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRGVmYXVsdEFjdGlvbihob3RrZXk6IHN0cmluZykge1xuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuaHMuYWRkU2hvcnRjdXQoeyBrZXlzOiBob3RrZXkgfSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgWydjbGljaycsICd0b2dnbGUnLCAnb3BlbicsICdmb2N1cyddLmZvckVhY2goKGEpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5faG9zdFthXSkge1xuICAgICAgICAgICAgdGhpcy5faG9zdFthXSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkSG90S2V5QWN0aW9uKGhvdGtleXM6IEFYSG90S2V5QWN0aW9uW10pIHtcbiAgICBob3RrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgIGNvbnN0IGhvdGtleSA9ICg8dW5rbm93bj5PYmplY3QuZW50cmllcyhrKVswXVswXSkgYXMgc3RyaW5nO1xuICAgICAgY29uc3QgYWN0aW9uID0gPHVua25vd24+T2JqZWN0LmVudHJpZXMoaylbMF1bMV07XG4gICAgICBpZiAoIWFjdGlvbikgdGhpcy5fYWRkRGVmYXVsdEFjdGlvbihob3RrZXkpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgICAgICB0aGlzLmhzLmFkZFNob3J0Y3V0KHsga2V5czogaG90a2V5IH0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PSAnc3RyaW5nJyAmJiB0aGlzLl9ob3N0W2FjdGlvbl0pIHtcbiAgICAgICAgICAgICAgdGhpcy5faG9zdFthY3Rpb25dKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgYWN0aW9uKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { exhaustMap, filter, map, pairwise, startWith } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nconst AX_DEFAULT_SCROLL_POSITION = {\n scrollHeight: 0,\n scrollTop: 0,\n clientHeight: 0,\n};\nexport class AXInfiniteScrollerDirective {\n constructor() {\n this.elm = inject(ElementRef);\n this.scrollPercent = 70;\n this.isUserScrollingDown = (positions) => {\n return positions[0].sT < positions[1].sT;\n };\n this.isScrollExpectedPercent = (position) => {\n return (position.sT + position.cH) / position.sH > this.scrollPercent / 100;\n };\n }\n ngAfterViewInit() {\n this.registerScrollEvent();\n this.streamScrollEvents();\n this.requestCallbackOnScroll();\n }\n registerScrollEvent() {\n this.scrollEvent$ = fromEvent(this.elm.nativeElement, 'scroll');\n }\n streamScrollEvents() {\n this.userScrolledDown$ = this.scrollEvent$.pipe(map((e) => ({\n scrollHeight: e.target.scrollHeight,\n scrollTop: e.target.scrollTop,\n clientHeight: e.target.clientHeight,\n })), pairwise(), filter((positions) => this.isUserScrollingDown(positions) && this.isScrollExpectedPercent(positions[1])));\n }\n requestCallbackOnScroll() {\n this.requestOnScroll$ = this.userScrolledDown$;\n if (this.immediateCallback) {\n this.requestOnScroll$ = this.requestOnScroll$.pipe(startWith([AX_DEFAULT_SCROLL_POSITION, AX_DEFAULT_SCROLL_POSITION]));\n }\n this.requestOnScroll$.pipe(exhaustMap(() => {\n return this.scrollCallback();\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXInfiniteScrollerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: AXInfiniteScrollerDirective, isStandalone: true, selector: \"[axInfiniteScroller]\", inputs: { scrollCallback: \"scrollCallback\", immediateCallback: \"immediateCallback\", scrollPercent: \"scrollPercent\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXInfiniteScrollerDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axInfiniteScroller]' }]\n }], propDecorators: { scrollCallback: [{\n type: Input\n }], immediateCallback: [{\n type: Input\n }], scrollPercent: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2luZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVE5RSxNQUFNLDBCQUEwQixHQUFxQjtJQUNuRCxZQUFZLEVBQUUsQ0FBQztJQUNmLFNBQVMsRUFBRSxDQUFDO0lBQ1osWUFBWSxFQUFFLENBQUM7Q0FDaEIsQ0FBQztBQUdGLE1BQU0sT0FBTywyQkFBMkI7SUFEeEM7UUFFVSxRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBZWpDLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBNENYLHdCQUFtQixHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDMUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRU0sNEJBQXVCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM3QyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUM5RSxDQUFDLENBQUM7S0FDSDtJQWpEQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUNELENBQUMsQ0FBTSxFQUFvQixFQUFFLENBQUMsQ0FBQztZQUM3QixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ25DLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDN0IsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtTQUNwQyxDQUFDLENBQ0gsRUFDRCxRQUFRLEVBQUUsRUFDVixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDekcsQ0FBQztJQUNKLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUUvQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNoRCxTQUFTLENBQUMsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLENBQ3BFLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDeEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQTFEVSwyQkFBMkI7a0dBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRTs7c0JBVTVDLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZmlsdGVyLCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhTY3JvbGxQb3NpdGlvbiB7XG4gIHNjcm9sbEhlaWdodDogbnVtYmVyO1xuICBzY3JvbGxUb3A6IG51bWJlcjtcbiAgY2xpZW50SGVpZ2h0OiBudW1iZXI7XG59XG5cbmNvbnN0IEFYX0RFRkFVTFRfU0NST0xMX1BPU0lUSU9OOiBBWFNjcm9sbFBvc2l0aW9uID0ge1xuICBzY3JvbGxIZWlnaHQ6IDAsXG4gIHNjcm9sbFRvcDogMCxcbiAgY2xpZW50SGVpZ2h0OiAwLFxufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2F4SW5maW5pdGVTY3JvbGxlcl0nIH0pXG5leHBvcnQgY2xhc3MgQVhJbmZpbml0ZVNjcm9sbGVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgZWxtID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgcHJpdmF0ZSB1c2VyU2Nyb2xsZWREb3duJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgcmVxdWVzdE9uU2Nyb2xsJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHNjcm9sbENhbGxiYWNrOiBGdW5jdGlvbjtcblxuICBASW5wdXQoKVxuICBpbW1lZGlhdGVDYWxsYmFjaztcblxuICBASW5wdXQoKVxuICBzY3JvbGxQZXJjZW50ID0gNzA7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVnaXN0ZXJTY3JvbGxFdmVudCgpO1xuXG4gICAgdGhpcy5zdHJlYW1TY3JvbGxFdmVudHMoKTtcblxuICAgIHRoaXMucmVxdWVzdENhbGxiYWNrT25TY3JvbGwoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTY3JvbGxFdmVudCgpIHtcbiAgICB0aGlzLnNjcm9sbEV2ZW50JCA9IGZyb21FdmVudCh0aGlzLmVsbS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJyk7XG4gIH1cblxuICBwcml2YXRlIHN0cmVhbVNjcm9sbEV2ZW50cygpIHtcbiAgICB0aGlzLnVzZXJTY3JvbGxlZERvd24kID0gdGhpcy5zY3JvbGxFdmVudCQucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKGU6IGFueSk6IEFYU2Nyb2xsUG9zaXRpb24gPT4gKHtcbiAgICAgICAgICBzY3JvbGxIZWlnaHQ6IGUudGFyZ2V0LnNjcm9sbEhlaWdodCxcbiAgICAgICAgICBzY3JvbGxUb3A6IGUudGFyZ2V0LnNjcm9sbFRvcCxcbiAgICAgICAgICBjbGllbnRIZWlnaHQ6IGUudGFyZ2V0LmNsaWVudEhlaWdodCxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIGZpbHRlcigocG9zaXRpb25zKSA9PiB0aGlzLmlzVXNlclNjcm9sbGluZ0Rvd24ocG9zaXRpb25zKSAmJiB0aGlzLmlzU2Nyb2xsRXhwZWN0ZWRQZXJjZW50KHBvc2l0aW9uc1sxXSkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RDYWxsYmFja09uU2Nyb2xsKCkge1xuICAgIHRoaXMucmVxdWVzdE9uU2Nyb2xsJCA9IHRoaXMudXNlclNjcm9sbGVkRG93biQ7XG5cbiAgICBpZiAodGhpcy5pbW1lZGlhdGVDYWxsYmFjaykge1xuICAgICAgdGhpcy5yZXF1ZXN0T25TY3JvbGwkID0gdGhpcy5yZXF1ZXN0T25TY3JvbGwkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChbQVhfREVGQVVMVF9TQ1JPTExfUE9TSVRJT04sIEFYX0RFRkFVTFRfU0NST0xMX1BPU0lUSU9OXSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdE9uU2Nyb2xsJC5waXBlKFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjcm9sbENhbGxiYWNrKCk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1VzZXJTY3JvbGxpbmdEb3duID0gKHBvc2l0aW9ucykgPT4ge1xuICAgIHJldHVybiBwb3NpdGlvbnNbMF0uc1QgPCBwb3NpdGlvbnNbMV0uc1Q7XG4gIH07XG5cbiAgcHJpdmF0ZSBpc1Njcm9sbEV4cGVjdGVkUGVyY2VudCA9IChwb3NpdGlvbikgPT4ge1xuICAgIHJldHVybiAocG9zaXRpb24uc1QgKyBwb3NpdGlvbi5jSCkgLyBwb3NpdGlvbi5zSCA+IHRoaXMuc2Nyb2xsUGVyY2VudCAvIDEwMDtcbiAgfTtcbn1cbiJdfQ==","import { Directive, ElementRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXResponsiveDirective {\n constructor() {\n this._elementRef = inject(ElementRef);\n this._observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target) {\n const e = entry.target;\n const elements = [e, ...Array.from(e.querySelectorAll(`[class*='sm:']`))];\n elements\n .map((c) => ({\n element: c,\n classList: Array.from(c.classList)\n .filter((c) => c.includes('sm'))\n .map((c) => c.slice(3)),\n }))\n .forEach((c) => {\n e.clientWidth < 320 ? c.element.classList.add(...c.classList) : c.element.classList.remove(...c.classList);\n });\n }\n }\n });\n const _elementRef = this._elementRef;\n this._observer.observe(_elementRef.nativeElement);\n }\n ngOnDestroy() {\n this._observer?.disconnect();\n this._observer?.unobserve(this._elementRef.nativeElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXResponsiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: AXResponsiveDirective, isStandalone: true, selector: \"[axResponsive]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXResponsiveDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axResponsive]' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvZGlyZWN0aXZlcy9yZXNwb25zaXZlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3pFLE1BQU0sT0FBTyxxQkFBcUI7SUFzQmhDO1FBckJRLGdCQUFXLEdBQUcsTUFBTSxDQUE2QixVQUFVLENBQUMsQ0FBQztRQUU3RCxjQUFTLEdBQW1CLElBQUksY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7b0JBQ3ZCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFFLFFBQVE7eUJBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNYLE9BQU8sRUFBRSxDQUFDO3dCQUNWLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7NkJBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDL0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMxQixDQUFDLENBQUM7eUJBQ0YsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ2IsQ0FBQyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUM3RyxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBR0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs4R0EvQlUscUJBQXFCO2tHQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theFJlc3BvbnNpdmVdJyB9KVxuZXhwb3J0IGNsYXNzIEFYUmVzcG9uc2l2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgaWYgKGVudHJ5LnRhcmdldCkge1xuICAgICAgICBjb25zdCBlID0gZW50cnkudGFyZ2V0O1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtlLCAuLi5BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChgW2NsYXNzKj0nc206J11gKSldO1xuICAgICAgICBlbGVtZW50c1xuICAgICAgICAgIC5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICBlbGVtZW50OiBjLFxuICAgICAgICAgICAgY2xhc3NMaXN0OiBBcnJheS5mcm9tKGMuY2xhc3NMaXN0KVxuICAgICAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLmluY2x1ZGVzKCdzbScpKVxuICAgICAgICAgICAgICAubWFwKChjKSA9PiBjLnNsaWNlKDMpKSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgZS5jbGllbnRXaWR0aCA8IDMyMCA/IGMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKC4uLmMuY2xhc3NMaXN0KSA6IGMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLmMuY2xhc3NMaXN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IF9lbGVtZW50UmVmID0gdGhpcy5fZWxlbWVudFJlZjtcblxuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX29ic2VydmVyPy51bm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { AXAutoFocusDirective } from './directives/auto-focus.directive';\nimport { AXHotkeyDirective } from './directives/hotkey.directive';\nimport { AXInfiniteScrollerDirective } from './directives/infinite-scroll.directive';\nimport { AXResponsiveDirective } from './directives/responsive.directive';\nimport { AXHotkeysService } from './services/hotkey.service';\nimport * as i0 from \"@angular/core\";\nexport class AXCommonModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.9\", ngImport: i0, type: AXCommonModule, imports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective], exports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXCommonModule, providers: [AXHotkeysService] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective],\n exports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective],\n providers: [AXHotkeysService],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jb21tb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBTTdELE1BQU0sT0FBTyxjQUFjOzhHQUFkLGNBQWM7K0dBQWQsY0FBYyxZQUpmLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixhQUMzRixxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUI7K0dBRzFGLGNBQWMsYUFGZCxDQUFDLGdCQUFnQixDQUFDOzsyRkFFbEIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQztvQkFDdEcsT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUsMkJBQTJCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3RHLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hdXRvLWZvY3VzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWEhvdGtleURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9ob3RrZXkuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFYSW5maW5pdGVTY3JvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFYUmVzcG9uc2l2ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9yZXNwb25zaXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWEhvdGtleXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ob3RrZXkuc2VydmljZSc7XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQVhSZXNwb25zaXZlRGlyZWN0aXZlLCBBWEluZmluaXRlU2Nyb2xsZXJEaXJlY3RpdmUsIEFYQXV0b0ZvY3VzRGlyZWN0aXZlLCBBWEhvdGtleURpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtBWFJlc3BvbnNpdmVEaXJlY3RpdmUsIEFYSW5maW5pdGVTY3JvbGxlckRpcmVjdGl2ZSwgQVhBdXRvRm9jdXNEaXJlY3RpdmUsIEFYSG90a2V5RGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbQVhIb3RrZXlzU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29tbW9uTW9kdWxlIHt9XG4iXX0=","import { EventEmitter } from '@angular/core';\nimport { MXBaseComponent } from './base-component.class';\nexport class MXColorComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.colorChange = new EventEmitter();\n this._color = 'default';\n }\n /**\n * Predefined color schemes\n */\n get color() {\n return this._color;\n }\n set color(value) {\n this.setOption({\n name: 'color',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29sb3ItY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBQXJEOztRQUNFLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQsV0FBTSxHQUFxQixTQUFTLENBQUM7SUFnQi9DLENBQUM7SUFmQzs7T0FFRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBdUI7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSztZQUNMLGFBQWEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTdHlsZUNvbG9yVHlwZSB9IGZyb20gJy4uL2NsYXNzZXMvc3R5bGVzLmNsYXNzJztcbmltcG9ydCB7IE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnQuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgTVhDb2xvckNvbXBvbmVudCBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG4gIGNvbG9yQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhTdHlsZUNvbG9yVHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgX2NvbG9yOiBBWFN0eWxlQ29sb3JUeXBlID0gJ2RlZmF1bHQnO1xuICAvKipcbiAgICogIFByZWRlZmluZWQgY29sb3Igc2NoZW1lc1xuICAgKi9cbiAgZ2V0IGNvbG9yKCk6IEFYU3R5bGVDb2xvclR5cGUge1xuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcbiAgfVxuICBzZXQgY29sb3IodmFsdWU6IEFYU3R5bGVDb2xvclR5cGUpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnY29sb3InLFxuICAgICAgdmFsdWUsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19","import { EventEmitter, Injectable } from '@angular/core';\nimport { MXBaseComponent } from './base-component.class';\nimport * as i0 from \"@angular/core\";\nexport class MXLookableComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXLookableComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXLookableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXLookableComponent, decorators: [{\n type: Injectable\n }] });\nexport class MXLookComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.lookChange = new EventEmitter();\n this._look = 'solid';\n }\n /**\n * Predefined look schemes\n */\n get look() {\n return this._look;\n }\n set look(value) {\n this.setOption({\n name: 'look',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vay1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9sb29rLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBR3pELE1BQU0sT0FBZ0IsbUJBQW1COzhHQUFuQixtQkFBbUI7a0hBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEeEMsVUFBVTs7QUFLWCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUFlO0lBQXBEOztRQUNFLGVBQVUsR0FBa0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxVQUFLLEdBQXFCLE9BQU8sQ0FBQztJQWdCNUMsQ0FBQztJQWZDOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFzQjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLO1lBQ0wsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFN0eWxlTG9va1R5cGUgfSBmcm9tICcuLi9jbGFzc2VzL3N0eWxlcy5jbGFzcyc7XG5pbXBvcnQgeyBNWEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtY29tcG9uZW50LmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1YTG9va2FibGVDb21wb25lbnQge1xuICBsb29rOiBBWFN0eWxlTG9va1R5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBNWExvb2tDb21wb25lbnQgZXh0ZW5kcyBNWEJhc2VDb21wb25lbnQge1xuICBsb29rQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhTdHlsZUxvb2tUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBfbG9vaz86IEFYU3R5bGVMb29rVHlwZSA9ICdzb2xpZCc7XG4gIC8qKlxuICAgKiAgUHJlZGVmaW5lZCBsb29rIHNjaGVtZXNcbiAgICovXG4gIGdldCBsb29rKCk6IEFYU3R5bGVMb29rVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvb2s7XG4gIH1cbiAgc2V0IGxvb2sodmFsdWU6IEFYU3R5bGVMb29rVHlwZSkge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdsb29rJyxcbiAgICAgIHZhbHVlLFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { classes } from 'polytype';\nimport { MXColorComponent } from './color-component.class';\nimport { MXLookComponent } from './look-component.class';\nexport class MXColorLookComponent extends classes(MXColorComponent, MXLookComponent) {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Jsb29rLWNvbXBvbmVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvbG9ybG9vay1jb21wb25lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUM7Q0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQgeyBNWENvbG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xvci1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgTVhMb29rQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rLWNvbXBvbmVudC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBNWENvbG9yTG9va0NvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhDb2xvckNvbXBvbmVudCwgTVhMb29rQ29tcG9uZW50KSB7fVxuIl19","import { EventEmitter } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { classes } from 'polytype';\nimport { MXColorLookComponent } from './colorlook-component.class';\nimport { MXInteractiveComponent } from './interactive-component.class';\nexport class MXButtonBaseComponent extends classes(MXInteractiveComponent, MXColorLookComponent) {\n /**\n * Defines the primary text to show inside the button.\n */\n get text() {\n return this._text;\n }\n set text(v) {\n this.setOption({\n name: 'text',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * Provides visual styling that indicates if the Button is active\n */\n get toggleable() {\n return this._toggleable;\n }\n set toggleable(value) {\n this.setOption({\n name: 'toggleable',\n value,\n });\n }\n /**\n * Indicates if the Button is selected or not\n */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n this.setOption({\n name: 'selected',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * @ignore\n */\n constructor() {\n super();\n /**\n * Emits an event when the text associated with the button changes.\n *\n * @event\n */\n this.textChange = new EventEmitter();\n /**\n * Emits an event when the toggleable state of the action sheet changes.\n *\n * @event\n */\n this.toggleableChange = new EventEmitter();\n this._toggleable = false;\n /**\n * Emits an event whenever the selection state of the component changes.\n *\n * @event\n */\n this.selectedChange = new EventEmitter();\n this._selected = false;\n }\n /**\n * @ignore\n */\n get cssClasses() {\n const cssClasses = {\n 'ax-button-icon': !this.text,\n 'ax-state-disabled': this.disabled,\n 'ax-state-selected': this.selected,\n };\n set(cssClasses, `ax-${this.look || 'solid'}`, true);\n set(cssClasses, `ax-${this.color || 'primary'}`, true);\n return cssClasses;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWJhc2UtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uLWJhc2UtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxPQUFPLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUM7SUFROUY7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLENBQUM7WUFDUixhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBU0Q7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxZQUFZO1lBQ2xCLEtBQUs7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBU0Q7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUs7WUFDTCxhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBckVWOzs7O1dBSUc7UUFDSCxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFrQnREOzs7O1dBSUc7UUFDSCxxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxnQkFBVyxHQUFhLEtBQUssQ0FBQztRQWN0Qzs7OztXQUlHO1FBQ0gsbUJBQWMsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxjQUFTLEdBQWEsS0FBSyxDQUFDO0lBcUJwQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFjLFVBQVU7UUFDdEIsTUFBTSxVQUFVLEdBQUc7WUFDakIsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUM1QixtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNsQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNuQyxDQUFDO1FBQ0YsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IE1YQ29sb3JMb29rQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xvcmxvb2stY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IE1YSW50ZXJhY3RpdmVDb21wb25lbnQgfSBmcm9tICcuL2ludGVyYWN0aXZlLWNvbXBvbmVudC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBNWEJ1dHRvbkJhc2VDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YQ29sb3JMb29rQ29tcG9uZW50KSB7XG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgYnV0dG9uIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgdGV4dENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgX3RleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqICBEZWZpbmVzIHRoZSBwcmltYXJ5IHRleHQgdG8gc2hvdyBpbnNpZGUgdGhlIGJ1dHRvbi5cbiAgICovXG4gIGdldCB0ZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHQ7XG4gIH1cbiAgc2V0IHRleHQodjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RleHQnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB0b2dnbGVhYmxlIHN0YXRlIG9mIHRoZSBhY3Rpb24gc2hlZXQgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICB0b2dnbGVhYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgX3RvZ2dsZWFibGU/OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiAgUHJvdmlkZXMgdmlzdWFsIHN0eWxpbmcgdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIEJ1dHRvbiBpcyBhY3RpdmVcbiAgICovXG4gIGdldCB0b2dnbGVhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90b2dnbGVhYmxlO1xuICB9XG4gIHNldCB0b2dnbGVhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RvZ2dsZWFibGUnLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbmV2ZXIgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiAgSW5kaWNhdGVzIGlmIHRoZSBCdXR0b24gaXMgc2VsZWN0ZWQgb3Igbm90XG4gICAqL1xuICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdzZWxlY3RlZCcsXG4gICAgICB2YWx1ZSxcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgY3NzQ2xhc3NlcygpIHtcbiAgICBjb25zdCBjc3NDbGFzc2VzID0ge1xuICAgICAgJ2F4LWJ1dHRvbi1pY29uJzogIXRoaXMudGV4dCxcbiAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiB0aGlzLnNlbGVjdGVkLFxuICAgIH07XG4gICAgc2V0KGNzc0NsYXNzZXMsIGBheC0ke3RoaXMubG9vayB8fCAnc29saWQnfWAsIHRydWUpO1xuICAgIHNldChjc3NDbGFzc2VzLCBgYXgtJHt0aGlzLmNvbG9yIHx8ICdwcmltYXJ5J31gLCB0cnVlKTtcbiAgICByZXR1cm4gY3NzQ2xhc3NlcztcbiAgfVxufVxuIl19","import { EventEmitter, Injectable } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { MXValueComponent } from './value-component.class';\nimport * as i0 from \"@angular/core\";\nexport class MXInputBaseValueComponent extends MXValueComponent {\n constructor() {\n super(...arguments);\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onKeyDown = new EventEmitter();\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onKeyUp = new EventEmitter();\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onKeyPress = new EventEmitter();\n /**\n * Fires each time the user change the text.\n * @event\n */\n this.onTextChanged = new EventEmitter();\n }\n emitOnKeydownEvent(e) {\n this.onKeyDown.emit({\n component: this,\n nativeEvent: e,\n });\n }\n emitOnKeyupEvent(e) {\n this.onKeyUp.emit({\n component: this,\n nativeEvent: e,\n });\n }\n emitOnKeypressEvent(e) {\n this.onKeyPress.emit({\n component: this,\n nativeEvent: e,\n });\n }\n emitOnTextChanged(value, isUserInteraction = false) {\n if (isEqual(value, this.oldText))\n return;\n this.onTextChanged.emit({\n value,\n name: this.name,\n component: this,\n isUserInteraction,\n oldValue: this.oldText,\n htmlElement: this.getHostElement(),\n });\n this.oldText = value;\n }\n focus() {\n const input = this.getHostElement().querySelector('input');\n if (input)\n input.focus();\n else\n super.focus();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXInputBaseValueComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXInputBaseValueComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXInputBaseValueComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS12YWx1ZS1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1iYXNlLXZhbHVlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUczRCxNQUFNLE9BQU8seUJBQXNDLFNBQVEsZ0JBQW1CO0lBRDlFOztRQUtFOzs7V0FHRztRQUNILGNBQVMsR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7UUFFckc7OztXQUdHO1FBQ0gsWUFBTyxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUVuRzs7O1dBR0c7UUFDSCxlQUFVLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO1FBRXRHOzs7V0FHRztRQUNILGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7S0F5Q2pFO0lBdkNXLGtCQUFrQixDQUFDLENBQWdCO1FBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsQ0FBZ0I7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsQ0FBQztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxDQUFnQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQWEsRUFBRSxpQkFBaUIsR0FBRyxLQUFLO1FBQ2xFLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTztRQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN0QixLQUFLO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUI7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFUSxLQUFLO1FBQ1osTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFJLEtBQUs7WUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7O1lBQ3BCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDOzhHQWxFVSx5QkFBeUI7a0hBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWEh0bWxFdmVudCwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uL2NsYXNzZXMvZXZlbnRzLmNsYXNzJztcbmltcG9ydCB7IE1YVmFsdWVDb21wb25lbnQgfSBmcm9tICcuL3ZhbHVlLWNvbXBvbmVudC5jbGFzcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgTVhWYWx1ZUNvbXBvbmVudDxUPiB7XG4gIG9sZFRleHQ6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4oKTtcblxuICAvKipcbiAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25LZXlVcDogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+KCk7XG5cbiAgLyoqXG4gICAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgcHJlc3MgYSBrZXkuXG4gICAqICBAZXZlbnRcbiAgICovXG4gIG9uS2V5UHJlc3M6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PigpO1xuXG4gIC8qKlxuICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIGNoYW5nZSB0aGUgdGV4dC5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25UZXh0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxzdHJpbmc+PigpO1xuXG4gIHByb3RlY3RlZCBlbWl0T25LZXlkb3duRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMub25LZXlEb3duLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uS2V5dXBFdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5vbktleVVwLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uS2V5cHJlc3NFdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5vbktleVByZXNzLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uVGV4dENoYW5nZWQodmFsdWU6IHN0cmluZywgaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZSkge1xuICAgIGlmIChpc0VxdWFsKHZhbHVlLCB0aGlzLm9sZFRleHQpKSByZXR1cm47XG4gICAgdGhpcy5vblRleHRDaGFuZ2VkLmVtaXQoe1xuICAgICAgdmFsdWUsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbixcbiAgICAgIG9sZFZhbHVlOiB0aGlzLm9sZFRleHQsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgIH0pO1xuICAgIHRoaXMub2xkVGV4dCA9IHZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICBpZiAoaW5wdXQpIGlucHV0LmZvY3VzKCk7XG4gICAgZWxzZSBzdXBlci5mb2N1cygpO1xuICB9XG59XG4iXX0=","import { AXFormatService } from '@acorex/core/format';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EventEmitter, Injectable, InjectionToken, inject } from '@angular/core';\nimport { cloneDeep, get } from 'lodash-es';\nimport { MXValueComponent } from './value-component.class';\nimport * as i0 from \"@angular/core\";\n/**\n * Service that manages selection state and caching for selection components\n */\nexport class MXSelectionBridgeService {\n constructor() {\n /** Array of currently selected items */\n this.selectedItems = [];\n /** Cache for normalized items keyed by their unique identifier */\n this.cacheList = {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXSelectionBridgeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXSelectionBridgeService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXSelectionBridgeService, decorators: [{\n type: Injectable\n }] });\n/**\n * Injection token for the selection bridge service\n */\nexport const AX_SELECTION_DATA_TOKEN = new InjectionToken('AX_SELECTION_DATA_TOKEN');\n/**\n * Abstract base component for selection-based value components\n * Provides common functionality for components that support item selection\n */\nexport class MXSelectionValueComponent extends MXValueComponent {\n constructor() {\n super(...arguments);\n // #region Services\n this.formatService = inject(AXFormatService);\n this.dataService = inject(AX_SELECTION_DATA_TOKEN);\n // #region Field Configuration Properties\n this._valueField = 'id';\n this._textField = 'text';\n this._textTemplate = '';\n this._defaultText = '-';\n this._disabledField = 'disabled';\n this._multiple = false;\n // #endregion\n // #region Events\n this.onItemSelected = new EventEmitter();\n /**\n * Emitted when an item in the list is clicked.\n *\n * @event\n */\n this.onItemClick = new EventEmitter();\n }\n /** Field name used to extract the unique value from items */\n get valueField() {\n return this._valueField;\n }\n set valueField(value) {\n this.setOption({ name: 'valueField', value });\n }\n /** Field name used to extract the display text from items */\n get textField() {\n return this._textField;\n }\n set textField(value) {\n this.setOption({ name: 'textField', value });\n }\n /** Template string for formatting item display text */\n get textTemplate() {\n return this._textTemplate;\n }\n set textTemplate(value) {\n this.setOption({ name: 'textTemplate', value });\n }\n /** Text to display when neither textField nor valueField exist on the item */\n get defaultText() {\n return this._defaultText;\n }\n set defaultText(value) {\n this.setOption({ name: 'defaultText', value });\n }\n /** Field name used to determine if an item is disabled */\n get disabledField() {\n return this._disabledField;\n }\n set disabledField(value) {\n this.setOption({ name: 'disabledField', value });\n }\n /** Whether multiple items can be selected */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n this.setOption({\n name: 'multiple',\n value,\n afterCallback: () => this.reset(false),\n });\n }\n // #endregion\n // #region Computed Properties\n /** Gets the currently selected items */\n get selectedItems() {\n return this.dataService.selectedItems || [];\n }\n // #endregion\n // #region Override Methods\n /**\n * Internal method to set and normalize the component value\n * @param value The value to set (can be single item or array)\n * @returns Normalized value based on multiple selection mode\n */\n internalSetValue(value) {\n const isArray = Array.isArray(value);\n // Handle null/empty values\n if (value == null || (isArray && value.length === 0)) {\n return this.multiple ? [] : null;\n }\n // Check if items already have text properties to avoid unnecessary findByKey calls\n const itemsToNormalize = isArray ? value : [value];\n const needsFindByKey = itemsToNormalize.some((item) => {\n if (typeof item === 'object' && item !== null) {\n return get(item, this.textField) == null;\n }\n return true; // Primitive values need findByKey\n });\n const normalizedItems = this.normalizeItemsList(itemsToNormalize, needsFindByKey);\n if (normalizedItems.length === 0) {\n return this.multiple ? [] : null;\n }\n // Extract values based on selection mode\n return this.multiple\n ? normalizedItems.map((item) => get(item, this.valueField))\n : (get(normalizedItems[0], this.valueField) ?? null);\n }\n /**\n * Override to normalize selected items when value changes\n */\n emitOnValueChangedEvent(oldValue, newValue) {\n this._normalizeSelectedItems();\n super.emitOnValueChangedEvent(oldValue, newValue);\n }\n // #endregion\n // #region Private Normalization Methods\n /**\n * Normalizes a list of items, filtering out null values\n * @param items Array of items to normalize\n * @param findByKey Whether to attempt finding items by key\n * @returns Array of normalized items\n */\n normalizeItemsList(items, findByKey = false) {\n if (!items?.length)\n return [];\n return items.filter((item) => item != null).map((item) => this.normalizeItem(item, findByKey));\n }\n /**\n * Normalizes a single item, handling caching and async loading\n * @param item Item to normalize\n * @param findByKey Whether to attempt finding the item by key\n * @returns Normalized item object\n */\n normalizeItem(item, findByKey = false) {\n const isComplexObject = typeof item === 'object' && item !== null;\n const itemRecord = item;\n const valueKey = isComplexObject ? get(itemRecord, this.valueField) : item;\n const key = valueKey != null ? String(valueKey) : String(item);\n const cacheKey = this.createCacheKey(key);\n // Return cached item if available and has text\n const cachedItem = this.dataService.cacheList[cacheKey];\n if (cachedItem && get(cachedItem, this.textField) != null) {\n return cachedItem;\n }\n const hasTextProperty = !isComplexObject || get(itemRecord, this.textField) != null;\n const normalizedObj = {};\n // If findByKey is true, we need to resolve the item to get its text\n // This is needed for string values like 'ir', 'us' that don't have text\n if (findByKey) {\n this.handleItemNormalization(normalizedObj, item, key, true, cacheKey);\n }\n else {\n // Item already has all required properties, just copy them\n Object.assign(normalizedObj, item);\n }\n this.dataService.cacheList[cacheKey] = normalizedObj;\n return normalizedObj;\n }\n /**\n * Handles the normalization logic for items that need property assignment\n */\n handleItemNormalization(normalizedObj, originalItem, key, findByKey, cacheKey) {\n const existingItem = findByKey ? this.getItemByKey(key) : null;\n if (existingItem instanceof Promise) {\n this.handleAsyncItem(normalizedObj, key, existingItem, cacheKey);\n }\n else if (existingItem) {\n this.assignItemProperties(normalizedObj, existingItem, true);\n }\n else {\n this.assignItemProperties(normalizedObj, originalItem, false);\n }\n }\n /**\n * Handles async item loading with loading state\n */\n handleAsyncItem(obj, key, promise, cacheKey) {\n // Set loading state\n obj[this.valueField] = key;\n obj['isLoading'] = true;\n obj[this.textField] = '@acorex:common.status.loading';\n promise\n .then((result) => {\n if (typeof result === 'object' && result) {\n Object.assign(obj, cloneDeep(result));\n }\n else {\n obj[this.valueField] = result || key;\n obj[this.textField] = result;\n }\n })\n .catch((error) => {\n console.warn('Failed to load item by key:', key, error);\n // On error, keep the original value but mark as failed\n obj[this.textField] = this.defaultText;\n })\n .finally(() => {\n delete obj['isLoading'];\n delete obj['_displayTextLoading'];\n delete obj['_loadingTriggered'];\n this.dataService.cacheList[cacheKey] = obj;\n // Use setTimeout to defer change detection and prevent immediate re-rendering\n setTimeout(() => {\n if (this.cdr) {\n this.cdr.markForCheck();\n }\n }, 0);\n });\n }\n /**\n * Assigns value and text properties to the normalized object\n */\n assignItemProperties(obj, sourceItem, isComplexSource) {\n const isSourceObject = typeof sourceItem === 'object' && sourceItem !== null;\n const sourceRecord = sourceItem;\n if (isComplexSource && isSourceObject) {\n const valueFromSource = get(sourceRecord, this.valueField);\n const textFromSource = get(sourceRecord, this.textField);\n obj[this.valueField] = (valueFromSource ?? textFromSource);\n obj[this.textField] = (textFromSource ?? valueFromSource ?? this.defaultText);\n }\n else {\n const valueFromSource = isSourceObject ? get(sourceRecord, this.valueField) : sourceItem;\n const textFromSource = isSourceObject ? get(sourceRecord, this.textField) : sourceItem;\n obj[this.valueField] = (valueFromSource ?? textFromSource);\n obj[this.textField] = (textFromSource ?? valueFromSource ?? this.defaultText);\n }\n }\n /**\n * Creates a consistent cache key for an item\n */\n createCacheKey(key) {\n return `k-${key}`;\n }\n /**\n * Normalizes currently selected items and updates the data service\n */\n _normalizeSelectedItems() {\n const values = Array.isArray(this.value) ? this.value : this.value != null ? [this.value] : [];\n // Only call normalizeItem with findByKey=true if the item doesn't have text\n // This prevents unnecessary API calls for items that already have text\n this.dataService.selectedItems = values.map((value) => {\n const hasText = typeof value === 'object' && value !== null && get(value, this.textField) != null;\n return this.normalizeItem(value, !hasText);\n });\n }\n // #endregion\n // #region Public Selection Methods\n /**\n * Unselects the specified items from the selection\n * @param items Items to unselect\n */\n unselectItems(...items) {\n if (!items?.length) {\n this.commitValue([], true);\n return;\n }\n const normalizedItems = this.normalizeItemsList(items);\n const newSelectedItems = this.selectedItems.filter((selectedItem) => !normalizedItems.some((normalizedItem) => get(normalizedItem, this.valueField) ===\n get(selectedItem, this.valueField)));\n this.commitValue(newSelectedItems, true);\n }\n /**\n * Selects the specified items\n * @param items Items to select\n */\n selectItems(...items) {\n if (!items?.length) {\n return;\n }\n const currentValue = Array.isArray(this.value) ? this.value : [this.value];\n const normalizedItems = this.normalizeItemsList(items);\n const newSelectedItems = this.multiple ? [...currentValue, ...normalizedItems] : normalizedItems;\n this.onItemSelected.emit({\n component: this,\n isUserInteraction: true,\n item: newSelectedItems[0],\n htmlElement: this.getHostElement(),\n });\n this.commitValue(newSelectedItems, true);\n }\n /**\n * Toggles the selection state of the specified items\n * @param items Items to toggle\n */\n toggleSelect(...items) {\n items?.forEach((item) => {\n if (this.multiple) {\n this.isItemSelected(item) ? this.unselectItems(item) : this.selectItems(item);\n }\n else {\n this.selectItems(item);\n }\n });\n }\n // #endregion\n // #region Public Utility Methods\n /**\n * Checks if an item is currently selected\n * @param item Item to check\n * @returns True if the item is selected\n */\n isItemSelected(item) {\n const normalizedItem = this.normalizeItem(item);\n const normalizedValue = get(normalizedItem, this.valueField);\n return this.selectedItems.some((selectedItem) => get(selectedItem, this.valueField) === normalizedValue);\n }\n /**\n * Checks if an item is disabled\n * @param item Item to check\n * @returns True if the item is disabled\n */\n isItemDisabled(item) {\n const itemRecord = item;\n return (this.disabled ||\n coerceBooleanProperty(get(itemRecord, this.disabledField)) === true ||\n (this.disabledCallback?.({ item, index: -1 }) ?? false));\n }\n /**\n * Checks if an item is currently loading\n * @param item Item to check\n * @returns True if the item is loading\n */\n isItemLoading(item) {\n const normalizedItem = this.normalizeItem(item);\n return normalizedItem['isLoading'] === true;\n }\n // #endregion\n // #region Protected Utility Methods\n /**\n * Gets the display text for an item using template or text field\n * @param item Item to get display text for\n * @returns Formatted display text\n */\n getDisplayText(item) {\n // Prevent recursive calls that could cause infinite loops\n if (item && typeof item === 'object' && item['_displayTextLoading']) {\n return '@acorex:common.status.loading';\n }\n // Add timestamp-based debouncing to prevent excessive calls for ALL item types\n const now = Date.now();\n const itemKey = typeof item === 'string' ? item : get(item, this.valueField);\n const cacheKey = this.createCacheKey(String(itemKey));\n // Check if we have a recent result in the cache to prevent duplicate processing\n const cachedResult = this.dataService.cacheList[cacheKey];\n if (cachedResult && cachedResult['_lastDisplayTextCall']) {\n const timeSinceLastCall = now - cachedResult['_lastDisplayTextCall'];\n if (timeSinceLastCall < 50) {\n // 50ms debounce\n return cachedResult['_lastDisplayTextResult'] || String(itemKey || '');\n }\n }\n // For string values, we need to normalize with findByKey=true to trigger async loading\n const isStringValue = typeof item === 'string';\n const normalizedItem = this.normalizeItem(item, isStringValue);\n // Try template formatting FIRST before checking cached textField\n if (this.textTemplate) {\n const formattedTemplate = this.formatService.format(this.textTemplate, 'string', normalizedItem);\n if (formattedTemplate !== this.textTemplate) {\n const result = formattedTemplate;\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n }\n // Check if this item is already in the cache with proper text\n const itemValue = get(normalizedItem, this.valueField);\n if (itemValue != null && itemValue !== '') {\n const cacheKey = this.createCacheKey(String(itemValue));\n const cachedItem = this.dataService.cacheList[cacheKey];\n if (cachedItem && get(cachedItem, this.textField) != null) {\n // Use cached text if available\n const cachedText = get(cachedItem, this.textField);\n if (cachedText && cachedText !== '@acorex:common.status.loading') {\n const result = String(cachedText);\n // Cache the timestamp and result for debouncing in the cache (works for all item types)\n if (cachedItem) {\n cachedItem['_lastDisplayTextCall'] = now;\n cachedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n }\n }\n // Use text field or fallback to value field\n const textValue = get(normalizedItem, this.textField);\n if (textValue != null && textValue !== '') {\n const result = String(textValue);\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n // If text is missing and item is loading, show loading state\n if (normalizedItem['isLoading']) {\n const result = '@acorex:common.status.loading';\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n // Attempt to load item by key if text is missing\n const value = get(normalizedItem, this.valueField);\n if (value == null || value === '') {\n const result = this.defaultText;\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n // If we have a value but no text, trigger async loading only once\n // Use a flag to prevent multiple calls\n if (!normalizedItem['_loadingTriggered'] && !normalizedItem[this.textField]) {\n normalizedItem['_loadingTriggered'] = true;\n normalizedItem['_displayTextLoading'] = true;\n // Use setTimeout to defer the async loading and prevent immediate change detection\n setTimeout(() => {\n this.loadAndCacheItemByKey(value);\n }, 0);\n }\n // Return the value itself as a fallback\n // This will be updated once the async loading completes\n const result = String(value);\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n /**\n * Gets the value of an item\n * @param item Item to get value from\n * @returns Item value\n */\n getValue(item) {\n const normalizedItem = this.normalizeItem(item);\n return get(normalizedItem, this.valueField);\n }\n /**\n * Clears the selection cache and selected items\n */\n clearSelectionCache() {\n this.dataService.cacheList = {};\n this.dataService.selectedItems = [];\n this.cdr.markForCheck();\n }\n /**\n * Clears only the cache while preserving selected items\n */\n softClearSelectionCache() {\n this.dataService.cacheList = {};\n this.cdr.markForCheck();\n }\n /**\n * Clears the debouncing cache for specific items to ensure fresh data is displayed\n */\n clearItemDebouncingCache(item) {\n // Get the cache key for this item\n const itemKey = typeof item === 'string' ? item : get(item, this.valueField);\n if (itemKey != null) {\n const cacheKey = this.createCacheKey(String(itemKey));\n const cachedItem = this.dataService.cacheList[cacheKey];\n if (cachedItem) {\n delete cachedItem['_lastDisplayTextCall'];\n delete cachedItem['_lastDisplayTextResult'];\n delete cachedItem['_displayTextLoading'];\n delete cachedItem['_loadingTriggered'];\n }\n }\n }\n /**\n * Forces a refresh of the display when items are loaded asynchronously\n * This should be called when the data source is updated\n */\n refreshDisplay() {\n this.cdr.markForCheck();\n }\n /**\n * Refreshes the display for all selected items to ensure consistency\n * This is useful when the data source has been updated\n */\n refreshSelectedItemsDisplay() {\n // Force a refresh of the display without re-normalizing to avoid infinite loops\n if (this.selectedItems.length > 0) {\n this.cdr.markForCheck();\n }\n }\n /**\n * Forces a refresh of all selected items by clearing their debouncing cache\n * This ensures fresh data is displayed when the data source is updated\n */\n forceRefreshSelectedItems() {\n if (this.selectedItems.length > 0) {\n this.selectedItems.forEach((item) => {\n this.clearItemDebouncingCache(item);\n });\n this.cdr.markForCheck();\n }\n }\n // #endregion\n // #region Private Helper Methods\n /**\n * Asynchronously loads an item by its key and caches the result\n * @param key Key to load item by\n */\n async loadAndCacheItemByKey(key) {\n try {\n const item = await this.getItemByKey(key);\n if (item) {\n const normalizedItem = this.normalizeItem(item);\n const cacheKey = this.createCacheKey(String(normalizedItem[this.valueField]));\n // Update the cache with the loaded item\n this.dataService.cacheList[cacheKey] = normalizedItem;\n // Clear loading flags\n if (this.dataService.cacheList[cacheKey]) {\n delete this.dataService.cacheList[cacheKey]['_displayTextLoading'];\n delete this.dataService.cacheList[cacheKey]['_loadingTriggered'];\n }\n // Use setTimeout to defer change detection and prevent immediate re-rendering\n setTimeout(() => {\n if (this.cdr) {\n this.cdr.markForCheck();\n }\n }, 0);\n }\n }\n catch (error) {\n console.warn('Failed to load item by key:', key, error);\n // Clear loading flags on error too\n const cacheKey = this.createCacheKey(String(key));\n if (this.dataService.cacheList[cacheKey]) {\n delete this.dataService.cacheList[cacheKey]['_displayTextLoading'];\n delete this.dataService.cacheList[cacheKey]['_loadingTriggered'];\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXSelectionValueComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXSelectionValueComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: MXSelectionValueComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUUzRDs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFRSx3Q0FBd0M7UUFDakMsa0JBQWEsR0FBYyxFQUFFLENBQUM7UUFDckMsa0VBQWtFO1FBQzNELGNBQVMsR0FBcUMsRUFBRSxDQUFDO0tBQ3pEOzhHQUxZLHdCQUF3QjtrSEFBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVOztBQVFYOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQTJCLHlCQUF5QixDQUFDLENBQUM7QUFlL0c7OztHQUdHO0FBRUgsTUFBTSxPQUFnQix5QkFBdUMsU0FBUSxnQkFBeUI7SUFEOUY7O1FBRUUsbUJBQW1CO1FBQ0Ysa0JBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQU8vRCx5Q0FBeUM7UUFDakMsZ0JBQVcsR0FBRyxJQUFJ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QzFCLENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFeEQsbUNBQW1DO1lBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxPQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQzVFLE9BQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7OEdBM25CbUIseUJBQXlCO2tIQUF6Qix5QkFBeUI7OzJGQUF6Qix5QkFBeUI7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYSXRlbUNsaWNrRXZlbnQsIEFYSXRlbVNlbGVjdGVkRXZlbnQgfSBmcm9tICcuLi9jbGFzc2VzL2V2ZW50cy5jbGFzcyc7XG5pbXBvcnQgeyBNWFZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQuY2xhc3MnO1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBtYW5hZ2VzIHNlbGVjdGlvbiBzdGF0ZSBhbmQgY2FjaGluZyBmb3Igc2VsZWN0aW9uIGNvbXBvbmVudHNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZSB7XG4gIC8qKiBBcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgKi9cbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IHVua25vd25bXSA9IFtdO1xuICAvKiogQ2FjaGUgZm9yIG5vcm1hbGl6ZWQgaXRlbXMga2V5ZWQgYnkgdGhlaXIgdW5pcXVlIGlkZW50aWZpZXIgKi9cbiAgcHVibGljIGNhY2hlTGlzdDogUmVjb3JkPHN0cmluZyB8IG51bWJlciwgdW5rbm93bj4gPSB7fTtcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIHRoZSBzZWxlY3Rpb24gYnJpZGdlIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IEFYX1NFTEVDVElPTl9EQVRBX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZT4oJ0FYX1NFTEVDVElPTl9EQVRBX1RPS0VOJyk7XG5cbi8qKlxuICogVHlwZSBkZWZpbml0aW9uIGZvciBkaXNhYmxlZCBjYWxsYmFjayBmdW5jdGlvblxuICovXG5leHBvcnQgdHlwZSBEaXNhYmxlZENhbGxiYWNrPFQ+ID0gKGV2ZW50OiB7IGl0ZW06IFQ7IGluZGV4OiBudW1iZXIgfSkgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBUeXBlIGRlZmluaXRpb24gZm9yIG5vcm1hbGl6ZWQgaXRlbSBvYmplY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3JtYWxpemVkSXRlbSB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjb21wb25lbnQgZm9yIHNlbGVjdGlvbi1iYXNlZCB2YWx1ZSBjb21wb25lbnRzXG4gKiBQcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IHN1cHBvcnQgaXRlbSBzZWxlY3Rpb25cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1YU2VsZWN0aW9uVmFsdWVDb21wb25lbnQ8VCA9IHVua25vd24+IGV4dGVuZHMgTVhWYWx1ZUNvbXBvbmVudDx1bmtub3duPiB7XG4gIC8vICNyZWdpb24gU2VydmljZXNcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNlcnZpY2UgPSBpbmplY3QoQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4pO1xuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBQdWJsaWMgUHJvcGVydGllc1xuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGFuIGl0ZW0gc2hvdWxkIGJlIGRpc2FibGVkICovXG4gIGRpc2FibGVkQ2FsbGJhY2s6IERpc2FibGVkQ2FsbGJhY2s8VD47XG5cbiAgLy8gI3JlZ2lvbiBGaWVsZCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNcbiAgcHJpdmF0ZSBfdmFsdWVGaWVsZCA9ICdpZCc7XG4gIC8qKiBGaWVsZCBuYW1lIHVzZWQgdG8gZXh0cmFjdCB0aGUgdW5pcXVlIHZhbHVlIGZyb20gaXRlbXMgKi9cbiAgcHVibGljIGdldCB2YWx1ZUZpZWxkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlRmllbGQ7XG4gIH1cbiAgcHVibGljIHNldCB2YWx1ZUZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7IG5hbWU6ICd2YWx1ZUZpZWxkJywgdmFsdWUgfSk7XG4gIH1cblxuICBwcml2YXRlIF90ZXh0RmllbGQgPSAndGV4dCc7XG4gIC8qKiBGaWVsZCBuYW1lIHVzZWQgdG8gZXh0cmFjdCB0aGUgZGlzcGxheSB0ZXh0IGZyb20gaXRlbXMgKi9cbiAgcHVibGljIGdldCB0ZXh0RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dEZpZWxkO1xuICB9XG4gIHB1YmxpYyBzZXQgdGV4dEZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7IG5hbWU6ICd0ZXh0RmllbGQnLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3RleHRUZW1wbGF0ZSA9ICcnO1xuICAvKiogVGVtcGxhdGUgc3RyaW5nIGZvciBmb3JtYXR0aW5nIGl0ZW0gZGlzcGxheSB0ZXh0ICovXG4gIHB1YmxpYyBnZXQgdGV4dFRlbXBsYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRUZW1wbGF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHRleHRUZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAndGV4dFRlbXBsYXRlJywgdmFsdWUgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kZWZhdWx0VGV4dCA9ICctJztcbiAgLyoqIFRleHQgdG8gZGlzcGxheSB3aGVuIG5laXRoZXIgdGV4dEZpZWxkIG5vciB2YWx1ZUZpZWxkIGV4aXN0IG9uIHRoZSBpdGVtICovXG4gIHB1YmxpYyBnZXQgZGVmYXVsdFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFRleHQ7XG4gIH1cbiAgcHVibGljIHNldCBkZWZhdWx0VGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAnZGVmYXVsdFRleHQnLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkRmllbGQgPSAnZGlzYWJsZWQnO1xuICAvKiogRmllbGQgbmFtZSB1c2VkIHRvIGRldGVybWluZSBpZiBhbiBpdGVtIGlzIGRpc2FibGVkICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWRGaWVsZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEZpZWxkO1xuICB9XG4gIHB1YmxpYyBzZXQgZGlzYWJsZWRGaWVsZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAnZGlzYWJsZWRGaWVsZCcsIHZhbHVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgbXVsdGlwbGUgaXRlbXMgY2FuIGJlIHNlbGVjdGVkICovXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnbXVsdGlwbGUnLFxuICAgICAgdmFsdWUsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB0aGlzLnJlc2V0KGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBDb21wdXRlZCBQcm9wZXJ0aWVzXG4gIC8qKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgKi9cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogdW5rbm93bltdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5zZWxlY3RlZEl0ZW1zIHx8IFtdO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIEV2ZW50c1xuICBvbkl0ZW1TZWxlY3RlZDogRXZlbnRFbWl0dGVyPEFYSXRlbVNlbGVjdGVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEl0ZW1TZWxlY3RlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpbiB0aGUgbGlzdCBpcyBjbGlja2VkLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhJdGVtQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSXRlbUNsaWNrRXZlbnQ+KCk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIEFic3RyYWN0IE1ldGhvZHNcbiAgLyoqXG4gICAqIEFic3RyYWN0IG1ldGhvZCB0byByZXRyaWV2ZSBhbiBpdGVtIGJ5IGl0cyBrZXlcbiAgICogQHBhcmFtIGtleSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW1cbiAgICogQHJldHVybnMgVGhlIGl0ZW0gb3IgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGl0ZW1cbiAgICovXG4gIGFic3RyYWN0IGdldEl0ZW1CeUtleShrZXk6IHVua25vd24pOiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPjtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gT3ZlcnJpZGUgTWV0aG9kc1xuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIHNldCBhbmQgbm9ybWFsaXplIHRoZSBjb21wb25lbnQgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQgKGNhbiBiZSBzaW5nbGUgaXRlbSBvciBhcnJheSlcbiAgICogQHJldHVybnMgTm9ybWFsaXplZCB2YWx1ZSBiYXNlZCBvbiBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZVxuICAgKi9cbiAgb3ZlcnJpZGUgaW50ZXJuYWxTZXRWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcblxuICAgIC8vIEhhbmRsZSBudWxsL2VtcHR5IHZhbHVlc1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChpc0FycmF5ICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGl0ZW1zIGFscmVhZHkgaGF2ZSB0ZXh0IHByb3BlcnRpZXMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgZmluZEJ5S2V5IGNhbGxzXG4gICAgY29uc3QgaXRlbXNUb05vcm1hbGl6ZSA9IGlzQXJyYXkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgY29uc3QgbmVlZHNGaW5kQnlLZXkgPSBpdGVtc1RvTm9ybWFsaXplLnNvbWUoKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZ2V0KGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudGV4dEZpZWxkKSA9PSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7IC8vIFByaW1pdGl2ZSB2YWx1ZXMgbmVlZCBmaW5kQnlLZXlcbiAgICB9KTtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtcyA9IHRoaXMubm9ybWFsaXplSXRlbXNMaXN0KGl0ZW1zVG9Ob3JtYWxpemUsIG5lZWRzRmluZEJ5S2V5KTtcblxuICAgIGlmIChub3JtYWxpemVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZSA/IFtdIDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHZhbHVlcyBiYXNlZCBvbiBzZWxlY3Rpb24gbW9kZVxuICAgIHJldHVybiB0aGlzLm11bHRpcGxlXG4gICAgICA/IG5vcm1hbGl6ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGdldChpdGVtIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aGlzLnZhbHVlRmllbGQpKVxuICAgICAgOiAoZ2V0KG5vcm1hbGl6ZWRJdGVtc1swXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKSA/PyBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0byBub3JtYWxpemUgc2VsZWN0ZWQgaXRlbXMgd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBvdmVycmlkZSBlbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZT86IHVua25vd24sIG5ld1ZhbHVlPzogdW5rbm93bikge1xuICAgIHRoaXMuX25vcm1hbGl6ZVNlbGVjdGVkSXRlbXMoKTtcbiAgICBzdXBlci5lbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFByaXZhdGUgTm9ybWFsaXphdGlvbiBNZXRob2RzXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGEgbGlzdCBvZiBpdGVtcywgZmlsdGVyaW5nIG91dCBudWxsIHZhbHVlc1xuICAgKiBAcGFyYW0gaXRlbXMgQXJyYXkgb2YgaXRlbXMgdG8gbm9ybWFsaXplXG4gICAqIEBwYXJhbSBmaW5kQnlLZXkgV2hldGhlciB0byBhdHRlbXB0IGZpbmRpbmcgaXRlbXMgYnkga2V5XG4gICAqIEByZXR1cm5zIEFycmF5IG9mIG5vcm1hbGl6ZWQgaXRlbXNcbiAgICovXG4gIHByb3RlY3RlZCBub3JtYWxpemVJdGVtc0xpc3QoaXRlbXM6IHVua25vd25bXSwgZmluZEJ5S2V5ID0gZmFsc2UpOiBOb3JtYWxpemVkSXRlbVtdIHtcbiAgICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHJldHVybiBbXTtcbiAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG51bGwpLm1hcCgoaXRlbSkgPT4gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0sIGZpbmRCeUtleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgYSBzaW5nbGUgaXRlbSwgaGFuZGxpbmcgY2FjaGluZyBhbmQgYXN5bmMgbG9hZGluZ1xuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIG5vcm1hbGl6ZVxuICAgKiBAcGFyYW0gZmluZEJ5S2V5IFdoZXRoZXIgdG8gYXR0ZW1wdCBmaW5kaW5nIHRoZSBpdGVtIGJ5IGtleVxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIGl0ZW0gb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUl0ZW0oaXRlbTogdW5rbm93biwgZmluZEJ5S2V5ID0gZmFsc2UpOiBOb3JtYWxpemVkSXRlbSB7XG4gICAgY29uc3QgaXNDb21wbGV4T2JqZWN0ID0gdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGw7XG4gICAgY29uc3QgaXRlbVJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgdmFsdWVLZXkgPSBpc0NvbXBsZXhPYmplY3QgPyBnZXQoaXRlbVJlY29yZCwgdGhpcy52YWx1ZUZpZWxkKSA6IGl0ZW07XG4gICAgY29uc3Qga2V5ID0gdmFsdWVLZXkgIT0gbnVsbCA/IFN0cmluZyh2YWx1ZUtleSBhcyB1bmtub3duKSA6IFN0cmluZyhpdGVtKTtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuY3JlYXRlQ2FjaGVLZXkoa2V5KTtcblxuICAgIC8vIFJldHVybiBjYWNoZWQgaXRlbSBpZiBhdmFpbGFibGUgYW5kIGhhcyB0ZXh0XG4gICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSBhcyBOb3JtYWxpemVkSXRlbSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoY2FjaGVkSXRlbSAmJiBnZXQoY2FjaGVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBjYWNoZWRJdGVtO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RleHRQcm9wZXJ0eSA9ICFpc0NvbXBsZXhPYmplY3QgfHwgZ2V0KGl0ZW1SZWNvcmQsIHRoaXMudGV4dEZpZWxkKSAhPSBudWxsO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRPYmo6IE5vcm1hbGl6ZWRJdGVtID0ge307XG5cbiAgICAvLyBJZiBmaW5kQnlLZXkgaXMgdHJ1ZSwgd2UgbmVlZCB0byByZXNvbHZlIHRoZSBpdGVtIHRvIGdldCBpdHMgdGV4dFxuICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBzdHJpbmcgdmFsdWVzIGxpa2UgJ2lyJywgJ3VzJyB0aGF0IGRvbid0IGhhdmUgdGV4dFxuICAgIGlmIChmaW5kQnlLZXkpIHtcbiAgICAgIHRoaXMuaGFuZGxlSXRlbU5vcm1hbGl6YXRpb24obm9ybWFsaXplZE9iaiwgaXRlbSwga2V5LCB0cnVlLCBjYWNoZUtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEl0ZW0gYWxyZWFkeSBoYXMgYWxsIHJlcXVpcmVkIHByb3BlcnRpZXMsIGp1c3QgY29weSB0aGVtXG4gICAgICBPYmplY3QuYXNzaWduKG5vcm1hbGl6ZWRPYmosIGl0ZW0pO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG5vcm1hbGl6ZWRPYmo7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRPYmo7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgbm9ybWFsaXphdGlvbiBsb2dpYyBmb3IgaXRlbXMgdGhhdCBuZWVkIHByb3BlcnR5IGFzc2lnbm1lbnRcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlSXRlbU5vcm1hbGl6YXRpb24oXG4gICAgbm9ybWFsaXplZE9iajogTm9ybWFsaXplZEl0ZW0sXG4gICAgb3JpZ2luYWxJdGVtOiB1bmtub3duLFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZpbmRCeUtleTogYm9vbGVhbixcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBleGlzdGluZ0l0ZW0gPSBmaW5kQnlLZXkgPyB0aGlzLmdldEl0ZW1CeUtleShrZXkpIDogbnVsbDtcblxuICAgIGlmIChleGlzdGluZ0l0ZW0gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICB0aGlzLmhhbmRsZUFzeW5jSXRlbShub3JtYWxpemVkT2JqLCBrZXksIGV4aXN0aW5nSXRlbSwgY2FjaGVLZXkpO1xuICAgIH0gZWxzZSBpZiAoZXhpc3RpbmdJdGVtKSB7XG4gICAgICB0aGlzLmFzc2lnbkl0ZW1Qcm9wZXJ0aWVzKG5vcm1hbGl6ZWRPYmosIGV4aXN0aW5nSXRlbSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzaWduSXRlbVByb3BlcnRpZXMobm9ybWFsaXplZE9iaiwgb3JpZ2luYWxJdGVtLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgYXN5bmMgaXRlbSBsb2FkaW5nIHdpdGggbG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVBc3luY0l0ZW0ob2JqOiBOb3JtYWxpemVkSXRlbSwga2V5OiBzdHJpbmcsIHByb21pc2U6IFByb21pc2U8dW5rbm93bj4sIGNhY2hlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBTZXQgbG9hZGluZyBzdGF0ZVxuICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0ga2V5O1xuICAgIG9ialsnaXNMb2FkaW5nJ10gPSB0cnVlO1xuICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSAnQGFjb3JleDpjb21tb24uc3RhdHVzLmxvYWRpbmcnO1xuXG4gICAgcHJvbWlzZVxuICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcgJiYgcmVzdWx0KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihvYmosIGNsb25lRGVlcChyZXN1bHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpbdGhpcy52YWx1ZUZpZWxkXSA9IHJlc3VsdCB8fCBrZXk7XG4gICAgICAgICAgb2JqW3RoaXMudGV4dEZpZWxkXSA9IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBpdGVtIGJ5IGtleTonLCBrZXksIGVycm9yKTtcbiAgICAgICAgLy8gT24gZXJyb3IsIGtlZXAgdGhlIG9yaWdpbmFsIHZhbHVlIGJ1dCBtYXJrIGFzIGZhaWxlZFxuICAgICAgICBvYmpbdGhpcy50ZXh0RmllbGRdID0gdGhpcy5kZWZhdWx0VGV4dDtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBvYmpbJ2lzTG9hZGluZyddO1xuICAgICAgICBkZWxldGUgb2JqWydfZGlzcGxheVRleHRMb2FkaW5nJ107XG4gICAgICAgIGRlbGV0ZSBvYmpbJ19sb2FkaW5nVHJpZ2dlcmVkJ107XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG9iajtcblxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byBkZWZlciBjaGFuZ2UgZGV0ZWN0aW9uIGFuZCBwcmV2ZW50IGltbWVkaWF0ZSByZS1yZW5kZXJpbmdcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY2RyKSB7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXNzaWducyB2YWx1ZSBhbmQgdGV4dCBwcm9wZXJ0aWVzIHRvIHRoZSBub3JtYWxpemVkIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBhc3NpZ25JdGVtUHJvcGVydGllcyhvYmo6IE5vcm1hbGl6ZWRJdGVtLCBzb3VyY2VJdGVtOiB1bmtub3duLCBpc0NvbXBsZXhTb3VyY2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpc1NvdXJjZU9iamVjdCA9IHR5cGVvZiBzb3VyY2VJdGVtID09PSAnb2JqZWN0JyAmJiBzb3VyY2VJdGVtICE9PSBudWxsO1xuICAgIGNvbnN0IHNvdXJjZVJlY29yZCA9IHNvdXJjZUl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBpZiAoaXNDb21wbGV4U291cmNlICYmIGlzU291cmNlT2JqZWN0KSB7XG4gICAgICBjb25zdCB2YWx1ZUZyb21Tb3VyY2UgPSBnZXQoc291cmNlUmVjb3JkLCB0aGlzLnZhbHVlRmllbGQpO1xuICAgICAgY29uc3QgdGV4dEZyb21Tb3VyY2UgPSBnZXQoc291cmNlUmVjb3JkLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICBvYmpbdGhpcy52YWx1ZUZpZWxkXSA9ICh2YWx1ZUZyb21Tb3VyY2UgPz8gdGV4dEZyb21Tb3VyY2UpIGFzIHVua25vd247XG4gICAgICBvYmpbdGhpcy50ZXh0RmllbGRdID0gKHRleHRGcm9tU291cmNlID8/IHZhbHVlRnJvbVNvdXJjZSA/PyB0aGlzLmRlZmF1bHRUZXh0KSBhcyB1bmtub3duO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWx1ZUZyb21Tb3VyY2UgPSBpc1NvdXJjZU9iamVjdCA/IGdldChzb3VyY2VSZWNvcmQsIHRoaXMudmFsdWVGaWVsZCkgOiAoc291cmNlSXRlbSBhcyB1bmtub3duKTtcbiAgICAgIGNvbnN0IHRleHRGcm9tU291cmNlID0gaXNTb3VyY2VPYmplY3QgPyBnZXQoc291cmNlUmVjb3JkLCB0aGlzLnRleHRGaWVsZCkgOiAoc291cmNlSXRlbSBhcyB1bmtub3duKTtcbiAgICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0gKHZhbHVlRnJvbVNvdXJjZSA/PyB0ZXh0RnJvbVNvdXJjZSkgYXMgdW5rbm93bjtcbiAgICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSAodGV4dEZyb21Tb3VyY2UgPz8gdmFsdWVGcm9tU291cmNlID8/IHRoaXMuZGVmYXVsdFRleHQpIGFzIHVua25vd247XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb25zaXN0ZW50IGNhY2hlIGtleSBmb3IgYW4gaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZUtleShrZXk6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBrLSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgYW5kIHVwZGF0ZXMgdGhlIGRhdGEgc2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfbm9ybWFsaXplU2VsZWN0ZWRJdGVtcygpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IHRoaXMudmFsdWUgIT0gbnVsbCA/IFt0aGlzLnZhbHVlXSA6IFtdO1xuXG4gICAgLy8gT25seSBjYWxsIG5vcm1hbGl6ZUl0ZW0gd2l0aCBmaW5kQnlLZXk9dHJ1ZSBpZiB0aGUgaXRlbSBkb2Vzbid0IGhhdmUgdGV4dFxuICAgIC8vIFRoaXMgcHJldmVudHMgdW5uZWNlc3NhcnkgQVBJIGNhbGxzIGZvciBpdGVtcyB0aGF0IGFscmVhZHkgaGF2ZSB0ZXh0XG4gICAgdGhpcy5kYXRhU2VydmljZS5zZWxlY3RlZEl0ZW1zID0gdmFsdWVzLm1hcCgodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGhhc1RleHQgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIGdldCh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpICE9IG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVJdGVtKHZhbHVlLCAhaGFzVGV4dCk7XG4gICAgfSk7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUHVibGljIFNlbGVjdGlvbiBNZXRob2RzXG4gIC8qKlxuICAgKiBVbnNlbGVjdHMgdGhlIHNwZWNpZmllZCBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICogQHBhcmFtIGl0ZW1zIEl0ZW1zIHRvIHVuc2VsZWN0XG4gICAqL1xuICBwdWJsaWMgdW5zZWxlY3RJdGVtcyguLi5pdGVtczogVFtdKTogdm9pZCB7XG4gICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKFtdLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkSXRlbXMgPSB0aGlzLm5vcm1hbGl6ZUl0ZW1zTGlzdChpdGVtcyk7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAoc2VsZWN0ZWRJdGVtKSA9PlxuICAgICAgICAhbm9ybWFsaXplZEl0ZW1zLnNvbWUoXG4gICAgICAgICAgKG5vcm1hbGl6ZWRJdGVtKSA9PlxuICAgICAgICAgICAgZ2V0KG5vcm1hbGl6ZWRJdGVtIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aGlzLnZhbHVlRmllbGQpID09PVxuICAgICAgICAgICAgZ2V0KHNlbGVjdGVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgdGhpcy5jb21taXRWYWx1ZShuZXdTZWxlY3RlZEl0ZW1zLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSBzcGVjaWZpZWQgaXRlbXNcbiAgICogQHBhcmFtIGl0ZW1zIEl0ZW1zIHRvIHNlbGVjdFxuICAgKi9cbiAgcHVibGljIHNlbGVjdEl0ZW1zKC4uLml0ZW1zOiBUW10pOiB2b2lkIHtcbiAgICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IFt0aGlzLnZhbHVlXTtcbiAgICBjb25zdCBub3JtYWxpemVkSXRlbXMgPSB0aGlzLm5vcm1hbGl6ZUl0ZW1zTGlzdChpdGVtcyk7XG5cbiAgICBjb25zdCBuZXdTZWxlY3RlZEl0ZW1zID0gdGhpcy5tdWx0aXBsZSA/IFsuLi5jdXJyZW50VmFsdWUsIC4uLm5vcm1hbGl6ZWRJdGVtc10gOiBub3JtYWxpemVkSXRlbXM7XG5cbiAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBpdGVtOiBuZXdTZWxlY3RlZEl0ZW1zWzBdLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29tbWl0VmFsdWUobmV3U2VsZWN0ZWRJdGVtcywgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXNcbiAgICogQHBhcmFtIGl0ZW1zIEl0ZW1zIHRvIHRvZ2dsZVxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVNlbGVjdCguLi5pdGVtczogVFtdKTogdm9pZCB7XG4gICAgaXRlbXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkgPyB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSkgOiB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBQdWJsaWMgVXRpbGl0eSBNZXRob2RzXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBpcyBjdXJyZW50bHkgc2VsZWN0ZWRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBjaGVja1xuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpdGVtIGlzIHNlbGVjdGVkXG4gICAqL1xuICBwdWJsaWMgaXNJdGVtU2VsZWN0ZWQoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoXG4gICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBnZXQoc2VsZWN0ZWRJdGVtIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aGlzLnZhbHVlRmllbGQpID09PSBub3JtYWxpemVkVmFsdWUsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBpcyBkaXNhYmxlZFxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgZGlzYWJsZWRcbiAgICovXG4gIHB1YmxpYyBpc0l0ZW1EaXNhYmxlZChpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXRlbVJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShnZXQoaXRlbVJlY29yZCwgdGhpcy5kaXNhYmxlZEZpZWxkKSBhcyBhbnkpID09PSB0cnVlIHx8XG4gICAgICAodGhpcy5kaXNhYmxlZENhbGxiYWNrPy4oeyBpdGVtLCBpbmRleDogLTEgfSkgPz8gZmFsc2UpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBpcyBjdXJyZW50bHkgbG9hZGluZ1xuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgbG9hZGluZ1xuICAgKi9cbiAgcHVibGljIGlzSXRlbUxvYWRpbmcoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pO1xuICAgIHJldHVybiBub3JtYWxpemVkSXRlbVsnaXNMb2FkaW5nJ10gPT09IHRydWU7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUHJvdGVjdGVkIFV0aWxpdHkgTWV0aG9kc1xuICAvKipcbiAgICogR2V0cyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhbiBpdGVtIHVzaW5nIHRlbXBsYXRlIG9yIHRleHQgZmllbGRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBnZXQgZGlzcGxheSB0ZXh0IGZvclxuICAgKiBAcmV0dXJucyBGb3JtYXR0ZWQgZGlzcGxheSB0ZXh0XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVRleHQoaXRlbTogVCk6IHN0cmluZyB7XG4gICAgLy8gUHJldmVudCByZWN1cnNpdmUgY2FsbHMgdGhhdCBjb3VsZCBjYXVzZSBpbmZpbml0ZSBsb29wc1xuICAgIGlmIChpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAoaXRlbSBhcyBhbnkpWydfZGlzcGxheVRleHRMb2FkaW5nJ10pIHtcbiAgICAgIHJldHVybiAnQGFjb3JleDpjb21tb24uc3RhdHVzLmxvYWRpbmcnO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aW1lc3RhbXAtYmFzZWQgZGVib3VuY2luZyB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYWxscyBmb3IgQUxMIGl0ZW0gdHlwZXNcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGl0ZW1LZXkgPSB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogZ2V0KGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudmFsdWVGaWVsZCk7XG4gICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZyhpdGVtS2V5KSk7XG5cbiAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgcmVjZW50IHJlc3VsdCBpbiB0aGUgY2FjaGUgdG8gcHJldmVudCBkdXBsaWNhdGUgcHJvY2Vzc2luZ1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XTtcbiAgICBpZiAoY2FjaGVkUmVzdWx0ICYmIChjYWNoZWRSZXN1bHQgYXMgYW55KVsnX2xhc3REaXNwbGF5VGV4dENhbGwnXSkge1xuICAgICAgY29uc3QgdGltZVNpbmNlTGFzdENhbGwgPSBub3cgLSAoY2FjaGVkUmVzdWx0IGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ107XG4gICAgICBpZiAodGltZVNpbmNlTGFzdENhbGwgPCA1MCkge1xuICAgICAgICAvLyA1MG1zIGRlYm91bmNlXG4gICAgICAgIHJldHVybiAoY2FjaGVkUmVzdWx0IGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXSB8fCBTdHJpbmcoaXRlbUtleSB8fCAnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIHN0cmluZyB2YWx1ZXMsIHdlIG5lZWQgdG8gbm9ybWFsaXplIHdpdGggZmluZEJ5S2V5PXRydWUgdG8gdHJpZ2dlciBhc3luYyBsb2FkaW5nXG4gICAgY29uc3QgaXNTdHJpbmdWYWx1ZSA9IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJztcbiAgICBjb25zdCBub3JtYWxpemVkSXRlbSA9IHRoaXMubm9ybWFsaXplSXRlbShpdGVtLCBpc1N0cmluZ1ZhbHVlKTtcblxuICAgIC8vIFRyeSB0ZW1wbGF0ZSBmb3JtYXR0aW5nIEZJUlNUIGJlZm9yZSBjaGVja2luZyBjYWNoZWQgdGV4dEZpZWxkXG4gICAgaWYgKHRoaXMudGV4dFRlbXBsYXRlKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRUZW1wbGF0ZSA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy50ZXh0VGVtcGxhdGUsICdzdHJpbmcnLCBub3JtYWxpemVkSXRlbSk7XG4gICAgICBpZiAoZm9ybWF0dGVkVGVtcGxhdGUgIT09IHRoaXMudGV4dFRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdHRlZFRlbXBsYXRlO1xuICAgICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlXG4gICAgICAgIGlmIChub3JtYWxpemVkSXRlbSkge1xuICAgICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0Q2FsbCddID0gbm93O1xuICAgICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGlzIGl0ZW0gaXMgYWxyZWFkeSBpbiB0aGUgY2FjaGUgd2l0aCBwcm9wZXIgdGV4dFxuICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICBpZiAoaXRlbVZhbHVlICE9IG51bGwgJiYgaXRlbVZhbHVlICE9PSAnJykge1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZyhpdGVtVmFsdWUpKTtcbiAgICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdFtjYWNoZUtleV07XG4gICAgICBpZiAoY2FjaGVkSXRlbSAmJiBnZXQoY2FjaGVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpICE9IG51bGwpIHtcbiAgICAgICAgLy8gVXNlIGNhY2hlZCB0ZXh0IGlmIGF2YWlsYWJsZVxuICAgICAgICBjb25zdCBjYWNoZWRUZXh0ID0gZ2V0KGNhY2hlZEl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgICAgaWYgKGNhY2hlZFRleHQgJiYgY2FjaGVkVGV4dCAhPT0gJ0BhY29yZXg6Y29tbW9uLnN0YXR1cy5sb2FkaW5nJykge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFN0cmluZyhjYWNoZWRUZXh0KTtcbiAgICAgICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlICh3b3JrcyBmb3IgYWxsIGl0ZW0gdHlwZXMpXG4gICAgICAgICAgaWYgKGNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIChjYWNoZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ10gPSBub3c7XG4gICAgICAgICAgICAoY2FjaGVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2UgdGV4dCBmaWVsZCBvciBmYWxsYmFjayB0byB2YWx1ZSBmaWVsZFxuICAgIGNvbnN0IHRleHRWYWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpO1xuICAgIGlmICh0ZXh0VmFsdWUgIT0gbnVsbCAmJiB0ZXh0VmFsdWUgIT09ICcnKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBTdHJpbmcodGV4dFZhbHVlKTtcbiAgICAgIC8vIENhY2hlIHRoZSB0aW1lc3RhbXAgYW5kIHJlc3VsdCBmb3IgZGVib3VuY2luZyBpbiB0aGUgY2FjaGVcbiAgICAgIGlmIChub3JtYWxpemVkSXRlbSkge1xuICAgICAgICAobm9ybWFsaXplZEl0ZW0gYXMgYW55KVsnX2xhc3REaXNwbGF5VGV4dENhbGwnXSA9IG5vdztcbiAgICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXSA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSWYgdGV4dCBpcyBtaXNzaW5nIGFuZCBpdGVtIGlzIGxvYWRpbmcsIHNob3cgbG9hZGluZyBzdGF0ZVxuICAgIGlmIChub3JtYWxpemVkSXRlbVsnaXNMb2FkaW5nJ10pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9ICdAYWNvcmV4OmNvbW1vbi5zdGF0dXMubG9hZGluZyc7XG4gICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlXG4gICAgICBpZiAobm9ybWFsaXplZEl0ZW0pIHtcbiAgICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ10gPSBub3c7XG4gICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEF0dGVtcHQgdG8gbG9hZCBpdGVtIGJ5IGtleSBpZiB0ZXh0IGlzIG1pc3NpbmdcbiAgICBjb25zdCB2YWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGVmYXVsdFRleHQ7XG4gICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlXG4gICAgICBpZiAobm9ybWFsaXplZEl0ZW0pIHtcbiAgICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ10gPSBub3c7XG4gICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIHdlIGhhdmUgYSB2YWx1ZSBidXQgbm8gdGV4dCwgdHJpZ2dlciBhc3luYyBsb2FkaW5nIG9ubHkgb25jZVxuICAgIC8vIFVzZSBhIGZsYWcgdG8gcHJldmVudCBtdWx0aXBsZSBjYWxsc1xuICAgIGlmICghbm9ybWFsaXplZEl0ZW1bJ19sb2FkaW5nVHJpZ2dlcmVkJ10gJiYgIW5vcm1hbGl6ZWRJdGVtW3RoaXMudGV4dEZpZWxkXSkge1xuICAgICAgbm9ybWFsaXplZEl0ZW1bJ19sb2FkaW5nVHJpZ2dlcmVkJ10gPSB0cnVlO1xuICAgICAgbm9ybWFsaXplZEl0ZW1bJ19kaXNwbGF5VGV4dExvYWRpbmcnXSA9IHRydWU7XG5cbiAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIGRlZmVyIHRoZSBhc3luYyBsb2FkaW5nIGFuZCBwcmV2ZW50IGltbWVkaWF0ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkQW5kQ2FjaGVJdGVtQnlLZXkodmFsdWUpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRoZSB2YWx1ZSBpdHNlbGYgYXMgYSBmYWxsYmFja1xuICAgIC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIG9uY2UgdGhlIGFzeW5jIGxvYWRpbmcgY29tcGxldGVzXG4gICAgY29uc3QgcmVzdWx0ID0gU3RyaW5nKHZhbHVlKTtcblxuICAgIC8vIENhY2hlIHRoZSB0aW1lc3RhbXAgYW5kIHJlc3VsdCBmb3IgZGVib3VuY2luZyBpbiB0aGUgY2FjaGVcbiAgICBpZiAobm9ybWFsaXplZEl0ZW0pIHtcbiAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0Q2FsbCddID0gbm93O1xuICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXSA9IHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIG9mIGFuIGl0ZW1cbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBnZXQgdmFsdWUgZnJvbVxuICAgKiBAcmV0dXJucyBJdGVtIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWUoaXRlbTogVCk6IHVua25vd24ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pO1xuICAgIHJldHVybiBnZXQobm9ybWFsaXplZEl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudmFsdWVGaWVsZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24gY2FjaGUgYW5kIHNlbGVjdGVkIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgY2xlYXJTZWxlY3Rpb25DYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdCA9IHt9O1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbmx5IHRoZSBjYWNoZSB3aGlsZSBwcmVzZXJ2aW5nIHNlbGVjdGVkIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgc29mdENsZWFyU2VsZWN0aW9uQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3QgPSB7fTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGRlYm91bmNpbmcgY2FjaGUgZm9yIHNwZWNpZmljIGl0ZW1zIHRvIGVuc3VyZSBmcmVzaCBkYXRhIGlzIGRpc3BsYXllZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNsZWFySXRlbURlYm91bmNpbmdDYWNoZShpdGVtOiBUKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSBjYWNoZSBrZXkgZm9yIHRoaXMgaXRlbVxuICAgIGNvbnN0IGl0ZW1LZXkgPSB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogZ2V0KGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudmFsdWVGaWVsZCk7XG4gICAgaWYgKGl0ZW1LZXkgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZyhpdGVtS2V5KSk7XG4gICAgICBjb25zdCBjYWNoZWRJdGVtID0gdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldO1xuXG4gICAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgICBkZWxldGUgKGNhY2hlZEl0ZW0gYXMgYW55KVsnX2xhc3REaXNwbGF5VGV4dENhbGwnXTtcbiAgICAgICAgZGVsZXRlIChjYWNoZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXTtcbiAgICAgICAgZGVsZXRlIChjYWNoZWRJdGVtIGFzIGFueSlbJ19kaXNwbGF5VGV4dExvYWRpbmcnXTtcbiAgICAgICAgZGVsZXRlIChjYWNoZWRJdGVtIGFzIGFueSlbJ19sb2FkaW5nVHJpZ2dlcmVkJ107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhIHJlZnJlc2ggb2YgdGhlIGRpc3BsYXkgd2hlbiBpdGVtcyBhcmUgbG9hZGVkIGFzeW5jaHJvbm91c2x5XG4gICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyB1cGRhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVmcmVzaERpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBkaXNwbGF5IGZvciBhbGwgc2VsZWN0ZWQgaXRlbXMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5XG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gdGhlIGRhdGEgc291cmNlIGhhcyBiZWVuIHVwZGF0ZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWZyZXNoU2VsZWN0ZWRJdGVtc0Rpc3BsYXkoKTogdm9pZCB7XG4gICAgLy8gRm9yY2UgYSByZWZyZXNoIG9mIHRoZSBkaXNwbGF5IHdpdGhvdXQgcmUtbm9ybWFsaXppbmcgdG8gYXZvaWQgaW5maW5pdGUgbG9vcHNcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYSByZWZyZXNoIG9mIGFsbCBzZWxlY3RlZCBpdGVtcyBieSBjbGVhcmluZyB0aGVpciBkZWJvdW5jaW5nIGNhY2hlXG4gICAqIFRoaXMgZW5zdXJlcyBmcmVzaCBkYXRhIGlzIGRpc3BsYXllZCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyB1cGRhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZm9yY2VSZWZyZXNoU2VsZWN0ZWRJdGVtcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJJdGVtRGVib3VuY2luZ0NhY2hlKGl0ZW0gYXMgVCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFByaXZhdGUgSGVscGVyIE1ldGhvZHNcbiAgLyoqXG4gICAqIEFzeW5jaHJvbm91c2x5IGxvYWRzIGFuIGl0ZW0gYnkgaXRzIGtleSBhbmQgY2FjaGVzIHRoZSByZXN1bHRcbiAgICogQHBhcmFtIGtleSBLZXkgdG8gbG9hZCBpdGVtIGJ5XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGxvYWRBbmRDYWNoZUl0ZW1CeUtleShrZXk6IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaXRlbSA9IGF3YWl0IHRoaXMuZ2V0SXRlbUJ5S2V5KGtleSk7XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkSXRlbSA9IHRoaXMubm9ybWFsaXplSXRlbShpdGVtKTtcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZygobm9ybWFsaXplZEl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3RoaXMudmFsdWVGaWVsZF0pKTtcblxuICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlIHdpdGggdGhlIGxvYWRlZCBpdGVtXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG5vcm1hbGl6ZWRJdGVtO1xuXG4gICAgICAgIC8vIENsZWFyIGxvYWRpbmcgZmxhZ3NcbiAgICAgICAgaWYgKHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSkge1xuICAgICAgICAgIGRlbGV0ZSAodGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldIGFzIGFueSlbJ19kaXNwbGF5VGV4dExvYWRpbmcnXTtcbiAgICAgICAgICBkZWxldGUgKHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSBhcyBhbnkpWydfbG9hZGluZ1RyaWdnZXJlZCddO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gZGVmZXIgY2hhbmdlIGRldGVjdGlvbiBhbmQgcHJldmVudCBpbW1lZGlhdGUgcmUtcmVuZGVyaW5nXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNkcikge1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBpdGVtIGJ5IGtleTonLCBrZXksIGVycm9yKTtcblxuICAgICAgLy8gQ2xlYXIgbG9hZGluZyBmbGFncyBvbiBlcnJvciB0b29cbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gdGhpcy5jcmVhdGVDYWNoZUtleShTdHJpbmcoa2V5KSk7XG4gICAgICBpZiAodGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldKSB7XG4gICAgICAgIGRlbGV0ZSAodGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldIGFzIGFueSlbJ19kaXNwbGF5VGV4dExvYWRpbmcnXTtcbiAgICAgICAgZGVsZXRlICh0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdFtjYWNoZUtleV0gYXMgYW55KVsnX2xvYWRpbmdUcmlnZ2VyZWQnXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxufVxuIl19","import { Directive, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { NgModel } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged, skip } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXNgModelDelayedValueChangedDirective {\n get delayTime() {\n return this._delayTime;\n }\n set delayTime(v) {\n if (v != this._delayTime) {\n this._delayTime = v;\n this.axDelayTimeChange.emit(v);\n this.update();\n }\n }\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n constructor() {\n this.ngModel = inject(NgModel);\n this.axDelayedValueChanged = new EventEmitter();\n this.axDelayTimeChange = new EventEmitter();\n this._delayTime = 0;\n this.delayTime = 0;\n }\n update() {\n this.subscription?.unsubscribe();\n //\n this.subscription = this.ngModel.control.valueChanges\n .pipe(skip(1), // skip initial value\n distinctUntilChanged(), debounceTime(this.delayTime))\n .subscribe((value) => this.axDelayedValueChanged.emit(value));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXNgModelDelayedValueChangedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: AXNgModelDelayedValueChangedDirective, isStandalone: true, selector: \"[axDelayedValueChanged]\", inputs: { delayTime: \"delayTime\" }, outputs: { axDelayedValueChanged: \"axDelayedValueChanged\", axDelayTimeChange: \"axDelayTimeChange\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXNgModelDelayedValueChangedDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axDelayedValueChanged]',\n }]\n }], ctorParameters: () => [], propDecorators: { axDelayedValueChanged: [{\n type: Output\n }], axDelayTimeChange: [{\n type: Output\n }], delayTime: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXllZC12YWx1ZS1jaGFuZ2VkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2RlbGF5ZWQtdmFsdWUtY2hhbmdlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLOUUsTUFBTSxPQUFPLHFDQUFxQztJQVVoRCxJQUNXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLFNBQVMsQ0FBQyxDQUFTO1FBQzVCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUlELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDtRQTNCUSxZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBR2xDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHaEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2QyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBb0JyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsRUFBRTtRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWTthQUNsRCxJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLHFCQUFxQjtRQUM5QixvQkFBb0IsRUFBRSxFQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM3QjthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7OEdBMUNVLHFDQUFxQztrR0FBckMscUNBQXFDOzsyRkFBckMscUNBQXFDO2tCQUhqRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3BDOztzQkFJRSxNQUFNOztzQkFHTixNQUFNOztzQkFJTixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBza2lwIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theERlbGF5ZWRWYWx1ZUNoYW5nZWRdJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhOZ01vZGVsRGVsYXllZFZhbHVlQ2hhbmdlZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgbmdNb2RlbCA9IGluamVjdChOZ01vZGVsKTtcblxuICBAT3V0cHV0KClcbiAgYXhEZWxheWVkVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGF4RGVsYXlUaW1lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBfZGVsYXlUaW1lID0gMDtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkZWxheVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsYXlUaW1lO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVsYXlUaW1lKHY6IG51bWJlcikge1xuICAgIGlmICh2ICE9IHRoaXMuX2RlbGF5VGltZSkge1xuICAgICAgdGhpcy5fZGVsYXlUaW1lID0gdjtcbiAgICAgIHRoaXMuYXhEZWxheVRpbWVDaGFuZ2UuZW1pdCh2KTtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGVsYXlUaW1lID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIC8vXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLm5nTW9kZWwuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLCAvLyBza2lwIGluaXRpYWwgdmFsdWVcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVsYXlUaW1lKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLmF4RGVsYXllZFZhbHVlQ2hhbmdlZC5lbWl0KHZhbHVlKSk7XG4gIH1cbn1cbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, PLATFORM_ID, ViewContainerRef, afterNextRender, effect, inject, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXInvertedColorDirective {\n constructor() {\n this.color = input.required(...(ngDevMode ? [{ debugName: \"color\" }] : []));\n this.ref = inject(ViewContainerRef);\n this.platformID = inject(PLATFORM_ID);\n afterNextRender(() => {\n this.invertColor();\n });\n effect(() => {\n this.invertColor();\n });\n }\n invertColor() {\n let color;\n let foreColor;\n const invertedVariables = [];\n if (isPlatformBrowser(this.platformID)) {\n if (this.color() === 'default') {\n color = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}`);\n foreColor = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}-fore`);\n invertedVariables.push({ name: `--ax-color-ghost`, value: `${foreColor}` });\n invertedVariables.push({ name: `--ax-color-ghost-fore`, value: `${color}` });\n }\n else {\n const range = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];\n color = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}-500`);\n foreColor = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}-fore`);\n range.forEach((c) => {\n invertedVariables.push({ name: `--ax-color-${this.color()}-${c}`, value: `${foreColor}` });\n });\n invertedVariables.push({ name: `--ax-color-${this.color()}-fore`, value: `${color}` });\n invertedVariables.push({ name: `--ax-color-${this.color()}-fore-tint`, value: `${color}` });\n }\n invertedVariables.forEach((c) => {\n this.ref.element.nativeElement.style.setProperty(c.name, c.value);\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXInvertedColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.9\", type: AXInvertedColorDirective, isStandalone: true, selector: \"[axInvertedColor]\", inputs: { color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXInvertedColorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axInvertedColor]',\n }]\n }], ctorParameters: () => [], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: \"color\", required: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZXJ0ZWQtY29sb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvaW52ZXJ0ZWQtY29sb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNakgsTUFBTSxPQUFPLHdCQUF3QjtJQUluQztRQUhBLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxnREFBb0IsQ0FBQztRQUMzQyxRQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksU0FBUyxDQUFDO1FBQ2QsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFN0IsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xHLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFFckUsS0FBSyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3RHLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2xCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdGLENBQUMsQ0FBQyxDQUFDO2dCQUNILGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkYsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLENBQUM7WUFFRCxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBNkIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBeENVLHdCQUF3QjtrR0FBeEIsd0JBQXdCOzsyRkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBQTEFURk9STV9JRCwgVmlld0NvbnRhaW5lclJlZiwgYWZ0ZXJOZXh0UmVuZGVyLCBlZmZlY3QsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYU3R5bGVDb2xvclR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL3N0eWxlcy5jbGFzcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theEludmVydGVkQ29sb3JdJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhJbnZlcnRlZENvbG9yRGlyZWN0aXZlIHtcbiAgY29sb3IgPSBpbnB1dC5yZXF1aXJlZDxBWFN0eWxlQ29sb3JUeXBlPigpO1xuICByZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICB0aGlzLmludmVydENvbG9yKCk7XG4gICAgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuaW52ZXJ0Q29sb3IoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnZlcnRDb2xvcigpIHtcbiAgICBsZXQgY29sb3I7XG4gICAgbGV0IGZvcmVDb2xvcjtcbiAgICBjb25zdCBpbnZlcnRlZFZhcmlhYmxlcyA9IFtdO1xuXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGlmICh0aGlzLmNvbG9yKCkgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLWF4LWNvbG9yLSR7dGhpcy5jb2xvcigpfWApO1xuICAgICAgICBmb3JlQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShgLS1heC1jb2xvci0ke3RoaXMuY29sb3IoKX0tZm9yZWApO1xuICAgICAgICBpbnZlcnRlZFZhcmlhYmxlcy5wdXNoKHsgbmFtZTogYC0tYXgtY29sb3ItZ2hvc3RgLCB2YWx1ZTogYCR7Zm9yZUNvbG9yfWAgfSk7XG4gICAgICAgIGludmVydGVkVmFyaWFibGVzLnB1c2goeyBuYW1lOiBgLS1heC1jb2xvci1naG9zdC1mb3JlYCwgdmFsdWU6IGAke2NvbG9yfWAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYW5nZSA9IFs1MCwgMTAwLCAyMDAsIDMwMCwgNDAwLCA1MDAsIDYwMCwgNzAwLCA4MDAsIDkwMCwgOTUwXTtcblxuICAgICAgICBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLWF4LWNvbG9yLSR7dGhpcy5jb2xvcigpfS01MDBgKTtcbiAgICAgICAgZm9yZUNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoYC0tYXgtY29sb3ItJHt0aGlzLmNvbG9yKCl9LWZvcmVgKTtcbiAgICAgICAgcmFuZ2UuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgIGludmVydGVkVmFyaWFibGVzLnB1c2goeyBuYW1lOiBgLS1heC1jb2xvci0ke3RoaXMuY29sb3IoKX0tJHtjfWAsIHZhbHVlOiBgJHtmb3JlQ29sb3J9YCB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGludmVydGVkVmFyaWFibGVzLnB1c2goeyBuYW1lOiBgLS1heC1jb2xvci0ke3RoaXMuY29sb3IoKX0tZm9yZWAsIHZhbHVlOiBgJHtjb2xvcn1gIH0pO1xuICAgICAgICBpbnZlcnRlZFZhcmlhYmxlcy5wdXNoKHsgbmFtZTogYC0tYXgtY29sb3ItJHt0aGlzLmNvbG9yKCl9LWZvcmUtdGludGAsIHZhbHVlOiBgJHtjb2xvcn1gIH0pO1xuICAgICAgfVxuXG4gICAgICBpbnZlcnRlZFZhcmlhYmxlcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICh0aGlzLnJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnNldFByb3BlcnR5KGMubmFtZSwgYy52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, DOCUMENT, ElementRef, inject, Input, PLATFORM_ID, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXRippleDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.cdr = inject(ChangeDetectorRef);\n this.enabled = true;\n this.axRippleColor = 'var(--ax-comp-ripple-bg-color, rgba(255, 255, 255, 0.3))';\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n }\n ngOnInit() {\n if (this.enabled) {\n this.el.nativeElement.addEventListener('click', (event) => {\n this.onElementClick(event);\n });\n }\n }\n ngOnDestroy() {\n this.el.nativeElement.removeEventListener('click', this.createRipple.bind(this));\n }\n onElementClick(event) {\n this.createRipple(event);\n }\n createRipple(event) {\n const element = event.currentTarget;\n const exists = element.querySelector('.ax-ripple');\n if (exists)\n exists.remove();\n this.el.nativeElement.style.overflow = 'hidden';\n const rect = element.getBoundingClientRect();\n const x = Math.floor(((event.clientX - rect.left) / (rect.right - rect.left)) * element.clientWidth);\n const y = Math.floor(((event.clientY - rect.top) / (rect.bottom - rect.top)) * element.clientHeight);\n if (isPlatformBrowser(this.platformID)) {\n const circle = this.document.createElement('span');\n const diameter = Math.max(element.clientWidth, element.clientHeight);\n const radius = diameter / 2;\n circle.style.width = circle.style.height = `${diameter}px`;\n circle.style.left = `${x - radius}px`;\n circle.style.top = `${y - radius}px`;\n circle.style.backgroundColor = `${this.axRippleColor}`;\n circle.classList.add('ax-ripple');\n element.appendChild(circle);\n circle.addEventListener('animationend', () => {\n circle?.remove();\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXRippleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.9\", type: AXRippleDirective, isStandalone: true, selector: \"[axRipple]\", inputs: { enabled: [\"axRipple\", \"enabled\"], axRippleColor: \"axRippleColor\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.9\", ngImport: i0, type: AXRippleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axRipple]',\n }]\n }], propDecorators: { enabled: [{\n type: Input,\n args: ['axRipple']\n }], axRippleColor: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQzs7QUFLdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLE9BQUUsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUdqQyxZQUFPLEdBQWEsSUFBSSxDQUFDO1FBRXZCLGtCQUFhLEdBQUcsMERBQTBELENBQUM7UUFHNUUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBMkMxQztJQXpDQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO2dCQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBaUI7UUFDcEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQTRCLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxJQUFJLE1BQU07WUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyRSxNQUFNLE1BQU0sR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBRTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUM7WUFDM0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUM7WUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUM7WUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7OEdBckRVLGlCQUFpQjtrR0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO2lCQUN2Qjs7c0JBS0UsS0FBSzt1QkFBQyxVQUFVOztzQkFHaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4UmlwcGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIEFYUmlwcGxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBASW5wdXQoJ2F4UmlwcGxlJylcbiAgcHVibGljIGVuYWJsZWQ/OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSBheFJpcHBsZUNvbG9yID0gJ3ZhcigtLWF4LWNvbXAtcmlwcGxlLWJnLWNvbG9yLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykpJztcblxuICByaXBwbGU6IEhUTUxTcGFuRWxlbWVudCB8IG51bGw7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm9uRWxlbWVudENsaWNrKGV2ZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY3JlYXRlUmlwcGxlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkVsZW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY3JlYXRlUmlwcGxlKGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmlwcGxlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgZXhpc3RzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYXgtcmlwcGxlJyk7XG4gICAgaWYgKGV4aXN0cykgZXhpc3RzLnJlbW92ZSgpO1xuXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeCA9IE1hdGguZmxvb3IoKChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0KSAvIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSkgKiBlbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgICBjb25zdCB5ID0gTWF0aC5mbG9vcigoKGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCkgLyAocmVjdC5ib3R0b20gLSByZWN0LnRvcCkpICogZWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBjaXJjbGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIGNvbnN0IGRpYW1ldGVyID0gTWF0aC5tYXgoZWxlbWVudC5jbGllbnRXaWR0aCwgZWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgICAgY29uc3QgcmFkaXVzID0gZGlhbWV0ZXIgLyAyO1xuXG4gICAgICBjaXJjbGUuc3R5bGUud2lkdGggPSBjaXJjbGUuc3R5bGUuaGVpZ2h0ID0gYCR7ZGlhbWV0ZXJ9cHhgO1xuICAgICAgY2lyY2xlLnN0eWxlLmxlZnQgPSBgJHt4IC0gcmFkaXVzfXB4YDtcbiAgICAgIGNpcmNsZS5zdHlsZS50b3AgPSBgJHt5IC0gcmFkaXVzfXB4YDtcbiAgICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBgJHt0aGlzLmF4UmlwcGxlQ29sb3J9YDtcbiAgICAgIGNpcmNsZS5jbGFzc0xpc3QuYWRkKCdheC1yaXBwbGUnKTtcbiAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICAgIGNpcmNsZS5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCAoKSA9PiB7XG4gICAgICAgIGNpcmNsZT8ucmVtb3ZlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9hY29yZXgtY2RrLWNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-cdk-common.mjs","sources":["../tmp-esm2022/common/lib/types/base/button.type.js","../tmp-esm2022/common/lib/types/base/color.type.js","../tmp-esm2022/common/lib/types/base/component.types.js","../tmp-esm2022/common/lib/types/base/events.types.js","../tmp-esm2022/common/lib/types/base/interactive.type.js","../tmp-esm2022/common/lib/types/base/look.type.js","../tmp-esm2022/common/lib/types/base/value.type.js","../tmp-esm2022/common/lib/types/placement.js","../tmp-esm2022/common/lib/types/selection-mode.js","../tmp-esm2022/common/lib/services/dom.service.js","../tmp-esm2022/common/lib/components/base-component.class.js","../tmp-esm2022/common/lib/components/interactive-component.class.js","../tmp-esm2022/common/lib/components/value-component.class.js","../tmp-esm2022/common/lib/classes/events.class.js","../tmp-esm2022/common/lib/classes/components.class.js","../tmp-esm2022/common/lib/classes/datalist.class.js","../tmp-esm2022/common/lib/classes/datasource.class.js","../tmp-esm2022/common/lib/classes/styles.class.js","../tmp-esm2022/common/lib/directives/auto-focus.directive.js","../tmp-esm2022/common/lib/services/hotkey.service.js","../tmp-esm2022/common/lib/directives/hotkey.directive.js","../tmp-esm2022/common/lib/directives/infinite-scroll.directive.js","../tmp-esm2022/common/lib/directives/responsive.directive.js","../tmp-esm2022/common/lib/common.module.js","../tmp-esm2022/common/lib/components/color-component.class.js","../tmp-esm2022/common/lib/components/look-component.class.js","../tmp-esm2022/common/lib/components/colorlook-component.class.js","../tmp-esm2022/common/lib/components/button-base-component.class.js","../tmp-esm2022/common/lib/components/input-base-value-component.class.js","../tmp-esm2022/common/lib/components/selection-base.component.class.js","../tmp-esm2022/common/lib/directives/delayed-value-changed.directive.js","../tmp-esm2022/common/lib/directives/inverted-color.directive.js","../tmp-esm2022/common/lib/directives/ripple.directive.js","../tmp-esm2022/common/acorex-cdk-common.js"],"sourcesContent":["import { Component, model, output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXButtonComponent {\n constructor() {\n this.text = model(...(ngDevMode ? [undefined, { debugName: \"text\" }] : []));\n this.toggleableChange = output();\n this.selectedChange = output();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.15\", type: NXButtonComponent, isStandalone: true, selector: \"ng-component\", inputs: { text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { text: \"textChange\", toggleableChange: \"toggleableChange\", selectedChange: \"selectedChange\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXButtonComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: \"text\", required: false }] }, { type: i0.Output, args: [\"textChange\"] }], toggleableChange: [{ type: i0.Output, args: [\"toggleableChange\"] }], selectedChange: [{ type: i0.Output, args: [\"selectedChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvdHlwZXMvYmFzZS9idXR0b24udHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3pELE1BQU0sT0FBZ0IsaUJBQWlCO0lBSHZDO1FBSUUsU0FBSSxHQUFHLEtBQUssMERBQVUsQ0FBQztRQUV2QixxQkFBZ0IsR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLE1BQU0sRUFBVyxDQUFDO0tBQ3BDOytHQUxxQixpQkFBaUI7bUdBQWpCLGlCQUFpQixrVEFGM0IsRUFBRTs7NEZBRVEsaUJBQWlCO2tCQUh0QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5YQnV0dG9uQ29tcG9uZW50IHtcbiAgdGV4dCA9IG1vZGVsPHN0cmluZz4oKTtcblxuICB0b2dnbGVhYmxlQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHNlbGVjdGVkQ2hhbmdlID0gb3V0cHV0PGJvb2xlYW4+KCk7XG59XG4iXX0=","import { Component, model } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXColorComponent {\n constructor() {\n this.color = model('default', ...(ngDevMode ? [{ debugName: \"color\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXColorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.15\", type: NXColorComponent, isStandalone: true, selector: \"ng-component\", inputs: { color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { color: \"colorChange\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXColorComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: \"color\", required: false }] }, { type: i0.Output, args: [\"colorChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3IudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi90eXBlcy9iYXNlL2NvbG9yLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTWpELE1BQU0sT0FBZ0IsZ0JBQWdCO0lBSHRDO1FBSUUsVUFBSyxHQUFHLEtBQUssQ0FBbUIsU0FBUyxpREFBQyxDQUFDO0tBQzVDOytHQUZxQixnQkFBZ0I7bUdBQWhCLGdCQUFnQiwrT0FGMUIsRUFBRTs7NEZBRVEsZ0JBQWdCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBtb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTdHlsZUNvbG9yVHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc3R5bGVzLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTlhDb2xvckNvbXBvbmVudCB7XG4gIGNvbG9yID0gbW9kZWw8QVhTdHlsZUNvbG9yVHlwZT4oJ2RlZmF1bHQnKTtcbn1cbiJdfQ==","import { afterNextRender, ElementRef, inject, Injectable, signal } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXComponent {\n constructor() {\n this.#elementRef = inject(ElementRef);\n this.#isRendered = signal(false, ...(ngDevMode ? [{ debugName: \"#isRendered\" }] : []));\n this.isRendered = this.#isRendered.asReadonly();\n this.#afterNextRender = afterNextRender(() => {\n if (!this.isRendered()) {\n this.nativeElement['__axContext__'] = this;\n this.#isRendered.set(true);\n }\n });\n }\n #elementRef;\n #isRendered;\n #afterNextRender;\n get nativeElement() {\n return this.#elementRef.nativeElement;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL2Jhc2UvY29tcG9uZW50LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd4RixNQUFNLE9BQWdCLFdBQVc7SUFEakM7UUFFRSxnQkFBVyxHQUE0QixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUQsZ0JBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyx1REFBQyxDQUFDO1FBRWxCLGVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXJELHFCQUFnQixHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO2dCQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDN0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBS0o7SUFmQyxXQUFXLENBQStDO0lBQzFELFdBQVcsQ0FBaUI7SUFJNUIsZ0JBQWdCLENBS2I7SUFFSCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDOytHQWZtQixXQUFXO21IQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhZnRlck5leHRSZW5kZXIsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5qZWN0YWJsZSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOWENvbXBvbmVudCB7XG4gICNlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgI2lzUmVuZGVyZWQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByb3RlY3RlZCBpc1JlbmRlcmVkID0gdGhpcy4jaXNSZW5kZXJlZC5hc1JlYWRvbmx5KCk7XG5cbiAgI2FmdGVyTmV4dFJlbmRlciA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgaWYgKCF0aGlzLmlzUmVuZGVyZWQoKSkge1xuICAgICAgdGhpcy5uYXRpdmVFbGVtZW50WydfX2F4Q29udGV4dF9fJ10gPSB0aGlzO1xuICAgICAgdGhpcy4jaXNSZW5kZXJlZC5zZXQodHJ1ZSk7XG4gICAgfVxuICB9KTtcblxuICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==","/**\n * Base event class\n * @category Events\n */\nexport class NXEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class NXNativeEvent extends NXEvent {\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class NXClickEvent extends NXNativeEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL2Jhc2UvZXZlbnRzLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0NBRW5CO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLGFBQTRFLFNBQVEsT0FBVTtDQUUxRztBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxZQUFrRCxTQUFRLGFBQTRCO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOWENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50LnR5cGVzJztcblxuLyoqXG4gKiAgQmFzZSBldmVudCBjbGFzc1xuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgTlhFdmVudDxUIGV4dGVuZHMgTlhDb21wb25lbnQgPSBOWENvbXBvbmVudD4ge1xuICBzZW5kZXI6IFQ7XG59XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgTlhOYXRpdmVFdmVudDxUIGV4dGVuZHMgTlhDb21wb25lbnQgPSBOWENvbXBvbmVudCwgRSBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IGV4dGVuZHMgTlhFdmVudDxUPiB7XG4gIG5hdGl2ZUV2ZW50OiBFO1xufVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgY2xpY2sgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBOWENsaWNrRXZlbnQ8VCBleHRlbmRzIE5YQ29tcG9uZW50ID0gTlhDb21wb25lbnQ+IGV4dGVuZHMgTlhOYXRpdmVFdmVudDxULCBNb3VzZUV2ZW50PiB7fVxuIl19","import { AXHtmlUtil } from '@acorex/core/utils';\nimport { Component, model, output } from '@angular/core';\nimport { NXComponent } from './component.types';\nimport * as i0 from \"@angular/core\";\nexport class NXInteractiveComponent extends NXComponent {\n constructor() {\n super(...arguments);\n this.disabled = model(false, ...(ngDevMode ? [{ debugName: \"disabled\" }] : []));\n this.tabIndex = model(0, ...(ngDevMode ? [{ debugName: \"tabIndex\" }] : []));\n this.onFocus = output();\n this.onBlur = output();\n }\n focus() {\n AXHtmlUtil.focusElement(this.nativeElement);\n }\n blur() {\n AXHtmlUtil.blurElement(this.nativeElement);\n }\n hasFocus() {\n return AXHtmlUtil.hasFocus(this.nativeElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXInteractiveComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.15\", type: NXInteractiveComponent, isStandalone: true, selector: \"ng-component\", inputs: { disabled: { classPropertyName: \"disabled\", publicName: \"disabled\", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: \"tabIndex\", publicName: \"tabIndex\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { disabled: \"disabledChange\", tabIndex: \"tabIndexChange\", onFocus: \"onFocus\", onBlur: \"onBlur\" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXInteractiveComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: \"disabled\", required: false }] }, { type: i0.Output, args: [\"disabledChange\"] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: \"tabIndex\", required: false }] }, { type: i0.Output, args: [\"tabIndexChange\"] }], onFocus: [{ type: i0.Output, args: [\"onFocus\"] }], onBlur: [{ type: i0.Output, args: [\"onBlur\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi90eXBlcy9iYXNlL2ludGVyYWN0aXZlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBS2hELE1BQU0sT0FBZ0Isc0JBQXVCLFNBQVEsV0FBVztJQUhoRTs7UUFJRSxhQUFRLEdBQUcsS0FBSyxDQUFVLEtBQUssb0RBQUMsQ0FBQztRQUNqQyxhQUFRLEdBQUcsS0FBSyxDQUFTLENBQUMsb0RBQUMsQ0FBQztRQUU1QixZQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFDbkIsV0FBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0tBYW5CO0lBWEMsS0FBSztRQUNILFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJO1FBQ0YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUM7K0dBakJtQixzQkFBc0I7bUdBQXRCLHNCQUFzQix3ZEFGaEMsRUFBRTs7NEZBRVEsc0JBQXNCO2tCQUgzQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhIdG1sVXRpbCB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIG1vZGVsLCBvdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5YQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnQudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOWEludGVyYWN0aXZlQ29tcG9uZW50IGV4dGVuZHMgTlhDb21wb25lbnQge1xuICBkaXNhYmxlZCA9IG1vZGVsPGJvb2xlYW4+KGZhbHNlKTtcbiAgdGFiSW5kZXggPSBtb2RlbDxudW1iZXI+KDApO1xuXG4gIG9uRm9jdXMgPSBvdXRwdXQoKTtcbiAgb25CbHVyID0gb3V0cHV0KCk7XG5cbiAgZm9jdXMoKSB7XG4gICAgQVhIdG1sVXRpbC5mb2N1c0VsZW1lbnQodGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIGJsdXIoKSB7XG4gICAgQVhIdG1sVXRpbC5ibHVyRWxlbWVudCh0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgaGFzRm9jdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEFYSHRtbFV0aWwuaGFzRm9jdXModGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19","import { Component, model } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXLookComponent {\n constructor() {\n this.look = model('solid', ...(ngDevMode ? [{ debugName: \"look\" }] : []));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXLookComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.15\", type: NXLookComponent, isStandalone: true, selector: \"ng-component\", inputs: { look: { classPropertyName: \"look\", publicName: \"look\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { look: \"lookChange\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXLookComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { look: [{ type: i0.Input, args: [{ isSignal: true, alias: \"look\", required: false }] }, { type: i0.Output, args: [\"lookChange\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vay50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL2Jhc2UvbG9vay50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1qRCxNQUFNLE9BQWdCLGVBQWU7SUFIckM7UUFJRSxTQUFJLEdBQUcsS0FBSyxDQUFrQixPQUFPLGdEQUFDLENBQUM7S0FDeEM7K0dBRnFCLGVBQWU7bUdBQWYsZUFBZSwwT0FGekIsRUFBRTs7NEZBRVEsZUFBZTtrQkFIcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgbW9kZWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYU3R5bGVMb29rVHlwZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvc3R5bGVzLmNsYXNzJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTlhMb29rQ29tcG9uZW50IHtcbiAgbG9vayA9IG1vZGVsPEFYU3R5bGVMb29rVHlwZT4oJ3NvbGlkJyk7XG59XG4iXX0=","import { Component, model, output } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class NXValueComponent {\n constructor() {\n this.readonly = model(...(ngDevMode ? [undefined, { debugName: \"readonly\" }] : []));\n this.name = model(...(ngDevMode ? [undefined, { debugName: \"name\" }] : []));\n this.value = model(...(ngDevMode ? [undefined, { debugName: \"value\" }] : []));\n this.onValueChanged = output();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXValueComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.1.0\", version: \"20.3.15\", type: NXValueComponent, isStandalone: true, selector: \"ng-component\", inputs: { readonly: { classPropertyName: \"readonly\", publicName: \"readonly\", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: \"name\", publicName: \"name\", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { readonly: \"readonlyChange\", name: \"nameChange\", value: \"valueChange\", onValueChanged: \"onValueChanged\" }, ngImport: i0, template: '', isInline: true }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: NXValueComponent, decorators: [{\n type: Component,\n args: [{\n template: '',\n }]\n }], propDecorators: { readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: \"readonly\", required: false }] }, { type: i0.Output, args: [\"readonlyChange\"] }], name: [{ type: i0.Input, args: [{ isSignal: true, alias: \"name\", required: false }] }, { type: i0.Output, args: [\"nameChange\"] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: \"value\", required: false }] }, { type: i0.Output, args: [\"valueChange\"] }], onValueChanged: [{ type: i0.Output, args: [\"onValueChanged\"] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi90eXBlcy9iYXNlL3ZhbHVlLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUt6RCxNQUFNLE9BQWdCLGdCQUFnQjtJQUh0QztRQUlFLGFBQVEsR0FBRyxLQUFLLDhEQUFXLENBQUM7UUFDNUIsU0FBSSxHQUFHLEtBQUssMERBQVUsQ0FBQztRQUN2QixVQUFLLEdBQUcsS0FBSywyREFBRSxDQUFDO1FBRWhCLG1CQUFjLEdBQUcsTUFBTSxFQUFFLENBQUM7S0FDM0I7K0dBTnFCLGdCQUFnQjttR0FBaEIsZ0JBQWdCLHVqQkFGMUIsRUFBRTs7NEZBRVEsZ0JBQWdCO2tCQUhyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBtb2RlbCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE5YVmFsdWVDb21wb25lbnQge1xuICByZWFkb25seSA9IG1vZGVsPGJvb2xlYW4+KCk7XG4gIG5hbWUgPSBtb2RlbDxzdHJpbmc+KCk7XG4gIHZhbHVlID0gbW9kZWwoKTtcblxuICBvblZhbHVlQ2hhbmdlZCA9IG91dHB1dCgpO1xufVxuIl19","import { clone, flatten } from 'lodash-es';\nconst defaultOffset = 3;\nexport function convertToPlacement(value) {\n const result = [];\n if (value == null)\n return result;\n if (Array.isArray(value)) {\n const list = flatten(value.map((m) => convertToPlacement(m)).filter((m) => m != null)).map((m) => clone(m));\n result.push(...list);\n }\n else {\n if (typeof value === 'string') {\n const p = AX_PLACEMENT_MAP[value];\n if (p) {\n result.push(...[clone(p.origin), ...clone(p.alts)]);\n }\n }\n else {\n if ('originX' in value && 'originY' in value) {\n result.push(clone(value));\n }\n }\n }\n return result;\n}\nexport const AX_PLACEMENT_TOP = {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_TOP_START = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_TOP_END = {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -defaultOffset,\n};\nexport const AX_PLACEMENT_BOTTOM = {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\nexport const AX_PLACEMENT_BOTTOM_START = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\nexport const AX_PLACEMENT_BOTTOM_END = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: defaultOffset,\n};\nexport const AX_PLACEMENT_START = {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n offsetX: -defaultOffset,\n};\nexport const AX_PLACEMENT_START_TOP = {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n offsetX: -defaultOffset,\n};\nexport const AX_PLACEMENT_START_BOTTOM = {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetX: -defaultOffset,\n};\nexport const AX_PLACEMENT_END = {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n offsetX: defaultOffset,\n};\nexport const AX_PLACEMENT_END_TOP = {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetX: defaultOffset,\n};\nexport const AX_PLACEMENT_END_BOTTOM = {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: defaultOffset,\n};\nexport const AX_PLACEMENT_MAP = {\n top: {\n origin: AX_PLACEMENT_TOP,\n alts: [AX_PLACEMENT_BOTTOM, AX_PLACEMENT_TOP_START, AX_PLACEMENT_TOP_END],\n },\n 'top-start': {\n origin: AX_PLACEMENT_TOP_START,\n alts: [AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_TOP_END, AX_PLACEMENT_BOTTOM_END],\n },\n 'top-end': {\n origin: AX_PLACEMENT_TOP_END,\n alts: [AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_TOP_START, AX_PLACEMENT_BOTTOM_START],\n },\n bottom: {\n origin: AX_PLACEMENT_BOTTOM,\n alts: [AX_PLACEMENT_TOP, AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_BOTTOM_END],\n },\n 'bottom-start': {\n origin: AX_PLACEMENT_BOTTOM_START,\n alts: [AX_PLACEMENT_TOP_START, AX_PLACEMENT_BOTTOM_END, AX_PLACEMENT_TOP_END],\n },\n 'bottom-end': {\n origin: AX_PLACEMENT_BOTTOM_END,\n alts: [AX_PLACEMENT_TOP_END, AX_PLACEMENT_BOTTOM_START, AX_PLACEMENT_TOP_START],\n },\n end: {\n origin: AX_PLACEMENT_END,\n alts: [AX_PLACEMENT_START, AX_PLACEMENT_END_TOP, AX_PLACEMENT_END_BOTTOM],\n },\n 'end-top': {\n origin: AX_PLACEMENT_END_TOP,\n alts: [AX_PLACEMENT_START_TOP, AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_START_BOTTOM],\n },\n 'end-bottom': {\n origin: AX_PLACEMENT_END_BOTTOM,\n alts: [AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_END_TOP, AX_PLACEMENT_START_TOP],\n },\n start: {\n origin: AX_PLACEMENT_START,\n alts: [AX_PLACEMENT_END, AX_PLACEMENT_START_TOP, AX_PLACEMENT_START_BOTTOM],\n },\n 'start-top': {\n origin: AX_PLACEMENT_START_TOP,\n alts: [AX_PLACEMENT_END_TOP, AX_PLACEMENT_START_BOTTOM, AX_PLACEMENT_END_BOTTOM],\n },\n 'start-bottom': {\n origin: AX_PLACEMENT_START_BOTTOM,\n alts: [AX_PLACEMENT_END_BOTTOM, AX_PLACEMENT_START_TOP, AX_PLACEMENT_END_TOP],\n },\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhY2VtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL3R5cGVzL3BsYWNlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUUzQyxNQUFNLGFBQWEsR0FBRyxDQUFDLENBQUM7QUFpQnhCLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxLQUFzQjtJQUN2RCxNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO0lBQ3pDLElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNqQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxLQUFL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TSxFQUFFLGdCQUFnQjtRQUN4QixJQUFJLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsQ0FBQztLQUMxRTtJQUNELFNBQVMsRUFBRTtRQUNULE1BQU0sRUFBRSxvQkFBb0I7UUFDNUIsSUFBSSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUseUJBQXlCLENBQUM7S0FDbkY7SUFDRCxZQUFZLEVBQUU7UUFDWixNQUFNLEVBQUUsdUJBQXVCO1FBQy9CLElBQUksRUFBRSxDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixFQUFFLHNCQUFzQixDQUFDO0tBQ2hGO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixJQUFJLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsRUFBRSx5QkFBeUIsQ0FBQztLQUM1RTtJQUNELFdBQVcsRUFBRTtRQUNYLE1BQU0sRUFBRSxzQkFBc0I7UUFDOUIsSUFBSSxFQUFFLENBQUMsb0JBQW9CLEVBQUUseUJBQXlCLEVBQUUsdUJBQXVCLENBQUM7S0FDakY7SUFDRCxjQUFjLEVBQUU7UUFDZCxNQUFNLEVBQUUseUJBQXlCO1FBQ2pDLElBQUksRUFBRSxDQUFDLHVCQUF1QixFQUFFLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDO0tBQzlFO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lLCBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuY29uc3QgZGVmYXVsdE9mZnNldCA9IDM7XG5cbmV4cG9ydCB0eXBlIEFYUGxhY2VtZW50ID1cbiAgfCAndG9wJ1xuICB8ICd0b3Atc3RhcnQnXG4gIHwgJ3RvcC1lbmQnXG4gIHwgJ2JvdHRvbSdcbiAgfCAnYm90dG9tLXN0YXJ0J1xuICB8ICdib3R0b20tZW5kJ1xuICB8ICdlbmQnXG4gIHwgJ2VuZC10b3AnXG4gIHwgJ2VuZC1ib3R0b20nXG4gIHwgJ3N0YXJ0J1xuICB8ICdzdGFydC10b3AnXG4gIHwgJ3N0YXJ0LWJvdHRvbSc7XG5leHBvcnQgdHlwZSBBWFBsYWNlbWVudFR5cGUgPSBBWENvbm5lY3RlZFBvc2l0aW9uIHwgQVhDb25uZWN0ZWRQb3NpdGlvbltdIHwgQVhQbGFjZW1lbnQgfCBBWFBsYWNlbWVudFtdO1xuXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvUGxhY2VtZW50KHZhbHVlOiBBWFBsYWNlbWVudFR5cGUpOiBBWENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICBjb25zdCByZXN1bHQ6IEFYQ29ubmVjdGVkUG9zaXRpb25bXSA9IFtdO1xuICBpZiAodmFsdWUgPT0gbnVsbCkgcmV0dXJuIHJlc3VsdDtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgY29uc3QgbGlzdCA9IGZsYXR0ZW4odmFsdWUubWFwKChtKSA9PiBjb252ZXJ0VG9QbGFjZW1lbnQobSkpLmZpbHRlcigobSkgPT4gbSAhPSBudWxsKSkubWFwKChtKSA9PiBjbG9uZShtKSk7XG4gICAgcmVzdWx0LnB1c2goLi4ubGlzdCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IHAgPSBBWF9QTEFDRU1FTlRfTUFQW3ZhbHVlXTtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKC4uLltjbG9uZShwLm9yaWdpbiksIC4uLmNsb25lKHAuYWx0cyldKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCdvcmlnaW5YJyBpbiB2YWx1ZSAmJiAnb3JpZ2luWScgaW4gdmFsdWUpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goY2xvbmUodmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWENvbm5lY3RlZFBvc2l0aW9uIHtcbiAgb3JpZ2luWDogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCc7XG4gIG9yaWdpblk6ICd0b3AnIHwgJ2NlbnRlcicgfCAnYm90dG9tJztcbiAgb3ZlcmxheVg6ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBvdmVybGF5WTogJ3RvcCcgfCAnY2VudGVyJyB8ICdib3R0b20nO1xuICB3ZWlnaHQ/OiBudW1iZXI7XG4gIG9mZnNldFg/OiBudW1iZXI7XG4gIG9mZnNldFk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfVE9QOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgb3JpZ2luWTogJ3RvcCcsXG4gIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgb3ZlcmxheVk6ICdib3R0b20nLFxuICBvZmZzZXRZOiAtZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfVE9QX1NUQVJUOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnc3RhcnQnLFxuICBvcmlnaW5ZOiAndG9wJyxcbiAgb3ZlcmxheVg6ICdzdGFydCcsXG4gIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgb2Zmc2V0WTogLWRlZmF1bHRPZmZzZXQsXG59O1xuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9UT1BfRU5EOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3JpZ2luWTogJ3RvcCcsXG4gIG92ZXJsYXlYOiAnZW5kJyxcbiAgb3ZlcmxheVk6ICdib3R0b20nLFxuICBvZmZzZXRZOiAtZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfQk9UVE9NOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnY2VudGVyJyxcbiAgb3JpZ2luWTogJ2JvdHRvbScsXG4gIG92ZXJsYXlYOiAnY2VudGVyJyxcbiAgb3ZlcmxheVk6ICd0b3AnLFxuICBvZmZzZXRZOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9CT1RUT01fU1RBUlQ6IEFYQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gIG9yaWdpblg6ICdzdGFydCcsXG4gIG9yaWdpblk6ICdib3R0b20nLFxuICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgb3ZlcmxheVk6ICd0b3AnLFxuICBvZmZzZXRZOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9CT1RUT01fRU5EOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3JpZ2luWTogJ2JvdHRvbScsXG4gIG92ZXJsYXlYOiAnZW5kJyxcbiAgb3ZlcmxheVk6ICd0b3AnLFxuICBvZmZzZXRZOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9TVEFSVDogQVhDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgb3JpZ2luWTogJ2NlbnRlcicsXG4gIG92ZXJsYXlYOiAnZW5kJyxcbiAgb3ZlcmxheVk6ICdjZW50ZXInLFxuICBvZmZzZXRYOiAtZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfU1RBUlRfVE9QOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnc3RhcnQnLFxuICBvcmlnaW5ZOiAndG9wJyxcbiAgb3ZlcmxheVg6ICdlbmQnLFxuICBvdmVybGF5WTogJ3RvcCcsXG4gIG9mZnNldFg6IC1kZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9TVEFSVF9CT1RUT006IEFYQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gIG9yaWdpblg6ICdzdGFydCcsXG4gIG9yaWdpblk6ICdib3R0b20nLFxuICBvdmVybGF5WDogJ2VuZCcsXG4gIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgb2Zmc2V0WDogLWRlZmF1bHRPZmZzZXQsXG59O1xuXG5leHBvcnQgY29uc3QgQVhfUExBQ0VNRU5UX0VORDogQVhDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgb3JpZ2luWDogJ2VuZCcsXG4gIG9yaWdpblk6ICdjZW50ZXInLFxuICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgb3ZlcmxheVk6ICdjZW50ZXInLFxuICBvZmZzZXRYOiBkZWZhdWx0T2Zmc2V0LFxufTtcblxuZXhwb3J0IGNvbnN0IEFYX1BMQUNFTUVOVF9FTkRfVE9QOiBBWENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICBvcmlnaW5YOiAnZW5kJyxcbiAgb3JpZ2luWTogJ3RvcCcsXG4gIG92ZXJsYXlYOiAnc3RhcnQnLFxuICBvdmVybGF5WTogJ3RvcCcsXG4gIG9mZnNldFg6IGRlZmF1bHRPZmZzZXQsXG59O1xuXG5leHBvcnQgY29uc3QgQVhfUExBQ0VNRU5UX0VORF9CT1RUT006IEFYQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gIG9yaWdpblg6ICdlbmQnLFxuICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgb3ZlcmxheVg6ICdzdGFydCcsXG4gIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgb2Zmc2V0WDogZGVmYXVsdE9mZnNldCxcbn07XG5cbmV4cG9ydCBjb25zdCBBWF9QTEFDRU1FTlRfTUFQOiB7XG4gIFtrZXk6IHN0cmluZ106IHsgb3JpZ2luOiBBWENvbm5lY3RlZFBvc2l0aW9uOyBhbHRzPzogQVhDb25uZWN0ZWRQb3NpdGlvbltdIH07XG59ID0ge1xuICB0b3A6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9UT1AsXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9CT1RUT00sIEFYX1BMQUNFTUVOVF9UT1BfU1RBUlQsIEFYX1BMQUNFTUVOVF9UT1BfRU5EXSxcbiAgfSxcbiAgJ3RvcC1zdGFydCc6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9UT1BfU1RBUlQsXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9CT1RUT01fU1RBUlQsIEFYX1BMQUNFTUVOVF9UT1BfRU5ELCBBWF9QTEFDRU1FTlRfQk9UVE9NX0VORF0sXG4gIH0sXG4gICd0b3AtZW5kJzoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX1RPUF9FTkQsXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9CT1RUT01fRU5ELCBBWF9QTEFDRU1FTlRfVE9QX1NUQVJULCBBWF9QTEFDRU1FTlRfQk9UVE9NX1NUQVJUXSxcbiAgfSxcbiAgYm90dG9tOiB7XG4gICAgb3JpZ2luOiBBWF9QTEFDRU1FTlRfQk9UVE9NLFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfVE9QLCBBWF9QTEFDRU1FTlRfQk9UVE9NX1NUQVJULCBBWF9QTEFDRU1FTlRfQk9UVE9NX0VORF0sXG4gIH0sXG4gICdib3R0b20tc3RhcnQnOiB7XG4gICAgb3JpZ2luOiBBWF9QTEFDRU1FTlRfQk9UVE9NX1NUQVJULFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfVE9QX1NUQVJULCBBWF9QTEFDRU1FTlRfQk9UVE9NX0VORCwgQVhfUExBQ0VNRU5UX1RPUF9FTkRdLFxuICB9LFxuICAnYm90dG9tLWVuZCc6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9CT1RUT01fRU5ELFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfVE9QX0VORCwgQVhfUExBQ0VNRU5UX0JPVFRPTV9TVEFSVCwgQVhfUExBQ0VNRU5UX1RPUF9TVEFSVF0sXG4gIH0sXG4gIGVuZDoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX0VORCxcbiAgICBhbHRzOiBbQVhfUExBQ0VNRU5UX1NUQVJULCBBWF9QTEFDRU1FTlRfRU5EX1RPUCwgQVhfUExBQ0VNRU5UX0VORF9CT1RUT01dLFxuICB9LFxuICAnZW5kLXRvcCc6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9FTkRfVE9QLFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfU1RBUlRfVE9QLCBBWF9QTEFDRU1FTlRfRU5EX0JPVFRPTSwgQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTV0sXG4gIH0sXG4gICdlbmQtYm90dG9tJzoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX0VORF9CT1RUT00sXG4gICAgYWx0czogW0FYX1BMQUNFTUVOVF9TVEFSVF9CT1RUT00sIEFYX1BMQUNFTUVOVF9FTkRfVE9QLCBBWF9QTEFDRU1FTlRfU1RBUlRfVE9QXSxcbiAgfSxcbiAgc3RhcnQ6IHtcbiAgICBvcmlnaW46IEFYX1BMQUNFTUVOVF9TVEFSVCxcbiAgICBhbHRzOiBbQVhfUExBQ0VNRU5UX0VORCwgQVhfUExBQ0VNRU5UX1NUQVJUX1RPUCwgQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTV0sXG4gIH0sXG4gICdzdGFydC10b3AnOiB7XG4gICAgb3JpZ2luOiBBWF9QTEFDRU1FTlRfU1RBUlRfVE9QLFxuICAgIGFsdHM6IFtBWF9QTEFDRU1FTlRfRU5EX1RPUCwgQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTSwgQVhfUExBQ0VNRU5UX0VORF9CT1RUT01dLFxuICB9LFxuICAnc3RhcnQtYm90dG9tJzoge1xuICAgIG9yaWdpbjogQVhfUExBQ0VNRU5UX1NUQVJUX0JPVFRPTSxcbiAgICBhbHRzOiBbQVhfUExBQ0VNRU5UX0VORF9CT1RUT00sIEFYX1BMQUNFTUVOVF9TVEFSVF9UT1AsIEFYX1BMQUNFTUVOVF9FTkRfVE9QXSxcbiAgfSxcbn07XG4iXX0=","/**\n * A token that specifies the selection mode of component.\n */\nexport {};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvdHlwZXMvc2VsZWN0aW9uLW1vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdG9rZW4gdGhhdCBzcGVjaWZpZXMgdGhlICBzZWxlY3Rpb24gbW9kZSBvZiBjb21wb25lbnQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQVhTZWxlY3Rpb25Nb2RlID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnIHwgJ25vbmUnO1xuIl19","import { Injectable } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXDomService {\n generateElementId() {\n const dateString = Date.now().toString(36);\n const randomness = Math.random().toString(36).substr(2);\n return dateString + randomness;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXDomService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXDomService, providedIn: 'root' }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXDomService, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvc2VydmljZXMvZG9tLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLFlBQVk7SUFDdkIsaUJBQWlCO1FBQ2YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUMzQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxPQUFPLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDakMsQ0FBQzsrR0FMVSxZQUFZO21IQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQVhEb21TZXJ2aWNlIHtcbiAgZ2VuZXJhdGVFbGVtZW50SWQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXRlU3RyaW5nID0gRGF0ZS5ub3coKS50b1N0cmluZygzNik7XG4gICAgY29uc3QgcmFuZG9tbmVzcyA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyKTtcbiAgICByZXR1cm4gZGF0ZVN0cmluZyArIHJhbmRvbW5lc3M7XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectorRef, ElementRef, EventEmitter, Injectable, ViewContainerRef, inject } from '@angular/core';\nimport { AXDomService } from '../services/dom.service';\nimport * as i0 from \"@angular/core\";\nexport class MXBaseComponent {\n constructor() {\n this._cdr = inject(ChangeDetectorRef);\n this._elementRef = inject(ElementRef);\n this._viewRef = inject(ViewContainerRef);\n this._domService = inject(AXDomService);\n this._id = this._domService.generateElementId();\n /**\n * Fired when an option related to the component changes.\n *\n * @event\n */\n this.onOptionChanged = new EventEmitter();\n }\n get id() {\n return this._id;\n }\n set id(v) {\n this._id = v;\n }\n get cdr() {\n return this._cdr;\n }\n /**\n * Gets the host HTML element of the component.\n *\n * @returns T - The native DOM element associated with this component.\n */\n getHostElement() {\n return this._elementRef?.nativeElement;\n }\n getViewContainer() {\n return this._viewRef;\n }\n internalOptionChanging(option) {\n return option?.value;\n }\n internalOptionChanged(option) { }\n /**\n * @ignore\n */\n ngOnInit() {\n this.getHostElement().__axContext__ = this;\n }\n /**\n * Sets a component option with optional lifecycle callbacks.\n *\n * @param option - The option configuration containing the name, value and optional before/after callbacks.\n */\n setOption(option) {\n const oldValue = this[option.name];\n let newValue = this.internalOptionChanging({\n name: option.name,\n value: option.value,\n });\n if (option.beforeCallback) {\n newValue = option.beforeCallback(oldValue, newValue);\n }\n //TODO : check real changes if value is object\n if (oldValue != newValue) {\n this[`_${option.name}`] = option.value;\n this.onOptionChanged.emit({\n component: this,\n name: option.name,\n newValue,\n oldValue,\n });\n const emitter = this[`${option.name}Change`];\n emitter?.emit(newValue);\n this.internalOptionChanged({ name: option.name, value: newValue });\n }\n if (option.afterCallback)\n option.afterCallback(oldValue, newValue);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXBaseComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXBaseComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXBaseComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFldkQsTUFBTSxPQUFnQixlQUFlO0lBRHJDO1FBRVUsU0FBSSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRCxnQkFBVyxHQUFlLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM3QyxhQUFRLEdBQXFCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RELGdCQUFXLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRW5DLFFBQUcsR0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFxQzNEOzs7O1dBSUc7UUFDSSxvQkFBZSxHQUF1QyxJQUFJLFlBQVksRUFBd0IsQ0FBQztLQStCdkc7SUF4RUMsSUFBVyxFQUFFO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxJQUFXLEVBQUUsQ0FBQyxDQUFTO1FBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQWMsR0FBRztRQUNmLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWtCLENBQUM7SUFDOUMsQ0FBQztJQUVTLGdCQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVTLHNCQUFzQixDQUFDLE1BQWlDO1FBQ2hFLE9BQU8sTUFBTSxFQUFFLEtBQUssQ0FBQztJQUN2QixDQUFDO0lBRVMscUJBQXFCLENBQUMsTUFBZ0MsSUFBUyxDQUFDO0lBQzFFOztPQUVHO0lBQ08sUUFBUTtRQUNmLElBQUksQ0FBQyxjQUFjLEVBQVUsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFTRDs7OztPQUlHO0lBQ0ksU0FBUyxDQUFVLE1BQStCO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1lBQ3pDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtZQUNqQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDMUIsUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFDRCw4Q0FBOEM7UUFDOUMsSUFBSSxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDeEIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO2dCQUNqQixRQUFRO2dCQUNSLFFBQVE7YUFDVCxDQUFDLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxRQUFRLENBQXNCLENBQUM7WUFDbEUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsYUFBYTtZQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7K0dBOUVtQixlQUFlO21IQUFmLGVBQWU7OzRGQUFmLGVBQWU7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBWaWV3Q29udGFpbmVyUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYT3B0aW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhEb21TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZG9tLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBNWENvbXBvbmVudE9wdGlvbkNoYW5naW5nPFQgPSBhbnk+ID0geyBuYW1lOiBzdHJpbmc7IHZhbHVlPzogVCB9O1xuZXhwb3J0IHR5cGUgTVhDb21wb25lbnRPcHRpb25DaGFuZ2VkPFQgPSBhbnk+ID0gTVhDb21wb25lbnRPcHRpb25DaGFuZ2luZzxUPjtcblxuZXhwb3J0IHR5cGUgTVhDb21wb25lbnRTZXRPcHRpb248VD4gPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU/OiBUO1xuICBhZnRlckNhbGxiYWNrPzogKG9sZFZhbHVlPzogVCwgbmV3VmFsdWU/OiBUKSA9PiB2b2lkO1xuICBiZWZvcmVDYWxsYmFjaz86IChvbGRWYWx1ZT86IFQsIG5ld1ZhbHVlPzogVCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCB0eXBlIEFYQ29tcG9uZW50U3RhdGUgPSAnY2xlYXInIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1YQmFzZUNvbXBvbmVudCB7XG4gIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF92aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KFZpZXdDb250YWluZXJSZWYpO1xuICBwcml2YXRlIF9kb21TZXJ2aWNlID0gaW5qZWN0KEFYRG9tU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBfaWQ6IHN0cmluZyA9IHRoaXMuX2RvbVNlcnZpY2UuZ2VuZXJhdGVFbGVtZW50SWQoKTtcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2lkID0gdjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXQgY2RyKCk6IENoYW5nZURldGVjdG9yUmVmIHtcbiAgICByZXR1cm4gdGhpcy5fY2RyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGhvc3QgSFRNTCBlbGVtZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFQgLSBUaGUgbmF0aXZlIERPTSBlbGVtZW50IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRIb3N0RWxlbWVudDxUID0gSFRNTEVsZW1lbnQ+KCk6IFQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50IGFzIFQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0Vmlld0NvbnRhaW5lcigpOiBWaWV3Q29udGFpbmVyUmVmIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld1JlZjtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnRlcm5hbE9wdGlvbkNoYW5naW5nKG9wdGlvbjogTVhDb21wb25lbnRPcHRpb25DaGFuZ2luZyk6IGFueSB7XG4gICAgcmV0dXJuIG9wdGlvbj8udmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW50ZXJuYWxPcHRpb25DaGFuZ2VkKG9wdGlvbjogTVhDb21wb25lbnRPcHRpb25DaGFuZ2VkKTogdm9pZCB7fVxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAodGhpcy5nZXRIb3N0RWxlbWVudCgpIGFzIGFueSkuX19heENvbnRleHRfXyA9IHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRmlyZWQgd2hlbiBhbiBvcHRpb24gcmVsYXRlZCB0byB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgcHVibGljIG9uT3B0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPEFYT3B0aW9uQ2hhbmdlZEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhPcHRpb25DaGFuZ2VkRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIFNldHMgYSBjb21wb25lbnQgb3B0aW9uIHdpdGggb3B0aW9uYWwgbGlmZWN5Y2xlIGNhbGxiYWNrcy5cbiAgICpcbiAgICogQHBhcmFtIG9wdGlvbiAtIFRoZSBvcHRpb24gY29uZmlndXJhdGlvbiBjb250YWluaW5nIHRoZSBuYW1lLCB2YWx1ZSBhbmQgb3B0aW9uYWwgYmVmb3JlL2FmdGVyIGNhbGxiYWNrcy5cbiAgICovXG4gIHB1YmxpYyBzZXRPcHRpb248VCA9IGFueT4ob3B0aW9uOiBNWENvbXBvbmVudFNldE9wdGlvbjxUPikge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpc1tvcHRpb24ubmFtZV07XG4gICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5pbnRlcm5hbE9wdGlvbkNoYW5naW5nKHtcbiAgICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICB9KTtcbiAgICBpZiAob3B0aW9uLmJlZm9yZUNhbGxiYWNrKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9wdGlvbi5iZWZvcmVDYWxsYmFjayhvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgICAvL1RPRE8gOiBjaGVjayByZWFsIGNoYW5nZXMgaWYgdmFsdWUgaXMgb2JqZWN0XG4gICAgaWYgKG9sZFZhbHVlICE9IG5ld1ZhbHVlKSB7XG4gICAgICB0aGlzW2BfJHtvcHRpb24ubmFtZX1gXSA9IG9wdGlvbi52YWx1ZTtcbiAgICAgIHRoaXMub25PcHRpb25DaGFuZ2VkLmVtaXQoe1xuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICAgIG5hbWU6IG9wdGlvbi5uYW1lLFxuICAgICAgICBuZXdWYWx1ZSxcbiAgICAgICAgb2xkVmFsdWUsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGVtaXR0ZXIgPSB0aGlzW2Ake29wdGlvbi5uYW1lfUNoYW5nZWBdIGFzIEV2ZW50RW1pdHRlcjxhbnk+O1xuICAgICAgZW1pdHRlcj8uZW1pdChuZXdWYWx1ZSk7XG4gICAgICB0aGlzLmludGVybmFsT3B0aW9uQ2hhbmdlZCh7IG5hbWU6IG9wdGlvbi5uYW1lLCB2YWx1ZTogbmV3VmFsdWUgfSk7XG4gICAgfVxuICAgIGlmIChvcHRpb24uYWZ0ZXJDYWxsYmFjaykgb3B0aW9uLmFmdGVyQ2FsbGJhY2sob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgfVxufVxuIl19","import { AXHtmlUtil } from '@acorex/core/utils';\nimport { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport { EventEmitter } from '@angular/core';\nimport { noop } from 'rxjs';\nimport { MXBaseComponent } from './base-component.class';\nexport class MXInteractiveComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n /**\n * @ignore\n */\n this.onTouchedCallback = noop;\n this._touched = false;\n /**\n * Emits an event whenever the disabled state of the component changes.\n *\n * @event\n */\n this.disabledChange = new EventEmitter();\n this._disabled = null;\n this._tabIndex = 0;\n /**\n * Fires each time the component gets focused.\n * @event\n */\n this.onFocus = new EventEmitter();\n /**\n * Fires each time the component gets blurred.\n * @event\n */\n this.onBlur = new EventEmitter();\n // private _focused = signal(false);\n // protected markAsFocused() {\n // this._focused.set(true);\n // }\n // protected markAsBlured() {\n // this._focused.set(false);\n // }\n }\n /**\n * Registers a touched callback function (ControlValueAccessor method).\n *\n * @param fn - The callback function to register.\n */\n registerOnTouched(fn) {\n this.onTouchedCallback = fn;\n }\n /**\n * Indicates whether the component has been touched.\n *\n */\n get touched() {\n return this._touched;\n }\n /**\n * @ignore\n */\n markAsTouched() {\n if (!this.touched) {\n this.onTouchedCallback();\n this._touched = true;\n }\n }\n /**\n * If set to true, it disables the component.\n */\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n value = coerceBooleanProperty(value);\n this.setOption({\n name: 'disabled',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * Sets the disabled state of the component.\n *\n * @param isDisabled - Whether the component should be disabled.\n */\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n /**\n * Specifies the tabindex of the component.\n */\n get tabIndex() {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value) {\n this.setOption({\n name: 'tabIndex',\n value: value != null ? coerceNumberProperty(value) : 0,\n });\n }\n emitOnFocusEvent(e) {\n this.onFocus.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n emitOnBlurEvent(e) {\n this.markAsTouched();\n this.onBlur.emit({\n component: this,\n htmlElement: this.getHostElement(),\n nativeEvent: e,\n });\n }\n // /**\n // * Fires each time the user clicks the button.\n // * @event\n // */\n // onClick: EventEmitter<AXClickEvent> = new EventEmitter<AXClickEvent>();\n // protected emitOnClickEvent(e: MouseEvent): void {\n // this.onClick.emit({\n // component: this,\n // htmlElement: this.getHostElement(),\n // nativeEvent: e,\n // });\n // }\n /**\n * Focuses the component.\n */\n focus() {\n AXHtmlUtil.focusElement(this.getHostElement());\n }\n /**\n * Removes focus from the component.\n */\n blur() {\n AXHtmlUtil.blurElement(this.getHostElement());\n }\n /**\n * Checks if the component is focused or has any focused element.\n *\n * @returns boolean - True if the component has focus.\n */\n hasFocus() {\n return AXHtmlUtil.hasFocus(this.getHostElement());\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJhY3RpdmUtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvaW50ZXJhY3RpdmUtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFNUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxlQUFlO0lBQTNEOztRQUNFOztXQUVHO1FBQ08sc0JBQWlCLEdBQWUsSUFBSSxDQUFDO1FBV3ZDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFvQnpCOzs7O1dBSUc7UUFDSCxtQkFBYyxHQUEwQixJQUFJLFlBQVksRUFBVyxDQUFDO1FBQzVELGNBQVMsR0FBbUIsSUFBSSxDQUFDO1FBMkJ6QyxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBY2Q7OztXQUdHO1FBQ0gsWUFBTyxHQUErQixJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQVV2RTs7O1dBR0c7UUFDSCxXQUFNLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO1FBZ0R0RSxvQ0FBb0M7UUFFcEMsOEJBQThCO1FBQzlCLDZCQUE2QjtRQUM3QixJQUFJO1FBRUosNkJBQTZCO1FBQzdCLDhCQUE4QjtRQUM5QixJQUFJO0lBQ04sQ0FBQztJQXZKQzs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFHRDs7O09BR0c7SUFDSCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUVPLGFBQWE7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQztJQVNEOztPQUVHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixLQUFLLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUs7WUFDTCxhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFHRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDN0MsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUssRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBUVMsZ0JBQWdCLENBQUMsQ0FBYztRQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNoQixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ2xDLFdBQVcsRUFBRSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQVFTLGVBQWUsQ0FBQyxDQUFjO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNmLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDbEMsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtJQUNOLGtEQUFrRDtJQUNsRCxhQUFhO0lBQ2IsTUFBTTtJQUNOLDBFQUEwRTtJQUUxRSxvREFBb0Q7SUFDcEQsd0JBQXdCO0lBQ3hCLHVCQUF1QjtJQUN2QiwwQ0FBMEM7SUFDMUMsc0JBQXNCO0lBQ3RCLFFBQVE7SUFDUixJQUFJO0lBRUo7O09BRUc7SUFDSCxLQUFLO1FBQ0gsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJO1FBQ0YsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQVdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhIdG1sVXRpbCB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQVhGb2N1c0V2ZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWNvbXBvbmVudC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBNWEludGVyYWN0aXZlQ29tcG9uZW50IGV4dGVuZHMgTVhCYXNlQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqICBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSB0b3VjaGVkIGNhbGxiYWNrIGZ1bmN0aW9uIChDb250cm9sVmFsdWVBY2Nlc3NvciBtZXRob2QpLlxuICAgKlxuICAgKiBAcGFyYW0gZm4gLSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdG8gcmVnaXN0ZXIuXG4gICAqL1xuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgfVxuXG4gIHByaXZhdGUgX3RvdWNoZWQgPSBmYWxzZTtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gdG91Y2hlZC5cbiAgICpcbiAgICovXG4gIHB1YmxpYyBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdG91Y2hlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cblxuICBwcm90ZWN0ZWQgbWFya0FzVG91Y2hlZCgpIHtcbiAgICBpZiAoIXRoaXMudG91Y2hlZCkge1xuICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgICAgdGhpcy5fdG91Y2hlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW5ldmVyIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgZGlzYWJsZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqICBJZiBzZXQgdG8gdHJ1ZSwgaXQgZGlzYWJsZXMgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnZGlzYWJsZWQnLFxuICAgICAgdmFsdWUsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0gaXNEaXNhYmxlZCAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgZGlzYWJsZWQuXG4gICAqL1xuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIF90YWJJbmRleCA9IDA7XG4gIC8qKlxuICAgKiAgU3BlY2lmaWVzIHRoZSB0YWJpbmRleCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0IHRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZWQgPyAtMSA6IHRoaXMuX3RhYkluZGV4O1xuICB9XG4gIHNldCB0YWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RhYkluZGV4JyxcbiAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpIDogMCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSBjb21wb25lbnQgZ2V0cyBmb2N1c2VkLlxuICAgKiAgQGV2ZW50XG4gICAqL1xuICBvbkZvY3VzOiBFdmVudEVtaXR0ZXI8QVhGb2N1c0V2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhGb2N1c0V2ZW50PigpO1xuXG4gIHByb3RlY3RlZCBlbWl0T25Gb2N1c0V2ZW50KGU/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIGNvbXBvbmVudCBnZXRzIGJsdXJyZWQuXG4gICAqICBAZXZlbnRcbiAgICovXG4gIG9uQmx1cjogRXZlbnRFbWl0dGVyPEFYRm9jdXNFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYRm9jdXNFdmVudD4oKTtcblxuICBwcm90ZWN0ZWQgZW1pdE9uQmx1ckV2ZW50KGU/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5vbkJsdXIuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGlja3MgdGhlIGJ1dHRvbi5cbiAgLy8gICogIEBldmVudFxuICAvLyAgKi9cbiAgLy8gb25DbGljazogRXZlbnRFbWl0dGVyPEFYQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYQ2xpY2tFdmVudD4oKTtcblxuICAvLyBwcm90ZWN0ZWQgZW1pdE9uQ2xpY2tFdmVudChlOiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gIC8vICAgdGhpcy5vbkNsaWNrLmVtaXQoe1xuICAvLyAgICAgY29tcG9uZW50OiB0aGlzLFxuICAvLyAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgLy8gICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAvLyAgIH0pO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGNvbXBvbmVudC5cbiAgICovXG4gIGZvY3VzKCk6IHZvaWQge1xuICAgIEFYSHRtbFV0aWwuZm9jdXNFbGVtZW50KHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyBmb2N1cyBmcm9tIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBibHVyKCk6IHZvaWQge1xuICAgIEFYSHRtbFV0aWwuYmx1ckVsZW1lbnQodGhpcy5nZXRIb3N0RWxlbWVudCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGNvbXBvbmVudCBpcyBmb2N1c2VkIG9yIGhhcyBhbnkgZm9jdXNlZCBlbGVtZW50LlxuICAgKlxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IGhhcyBmb2N1cy5cbiAgICovXG4gIGhhc0ZvY3VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBWEh0bWxVdGlsLmhhc0ZvY3VzKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSk7XG4gIH1cblxuICAvLyBwcml2YXRlIF9mb2N1c2VkID0gc2lnbmFsKGZhbHNlKTtcblxuICAvLyBwcm90ZWN0ZWQgbWFya0FzRm9jdXNlZCgpIHtcbiAgLy8gICB0aGlzLl9mb2N1c2VkLnNldCh0cnVlKTtcbiAgLy8gfVxuXG4gIC8vIHByb3RlY3RlZCBtYXJrQXNCbHVyZWQoKSB7XG4gIC8vICAgdGhpcy5fZm9jdXNlZC5zZXQoZmFsc2UpO1xuICAvLyB9XG59XG4iXX0=","import { isBrowser } from '@acorex/core/platform';\nimport { AXValidationService } from '@acorex/core/validation';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT, EventEmitter, Injectable, PLATFORM_ID, inject } from '@angular/core';\nimport { cloneDeep, isEqual, omit } from 'lodash-es';\nimport { noop } from 'rxjs';\nimport { MXInteractiveComponent } from './interactive-component.class';\nimport * as i0 from \"@angular/core\";\nexport class MXValueComponent extends MXInteractiveComponent {\n constructor() {\n super(...arguments);\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onValueChanged = new EventEmitter();\n /**\n * @deprecated The event should not be used, use ngModelChange instead\n */\n this.valueChange = new EventEmitter();\n this.readonlyChange = new EventEmitter();\n this._readonly = null;\n this._dirty = false;\n this._isUserInteraction = false;\n this.stateChange = new EventEmitter();\n this._state = 'clear';\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n this.validationService = inject(AXValidationService);\n this.validationRulesChange = new EventEmitter();\n this.validationRules = [];\n this.onChangeCallback = noop;\n }\n /**\n * If set to true, user cannot change the value of component.\n */\n get readonly() {\n return this._readonly;\n }\n set readonly(value) {\n value = coerceBooleanProperty(value);\n this.setOption({\n name: 'readonly',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n get name() {\n return this._name;\n }\n set name(value) {\n this._name = value;\n }\n get dirty() {\n return this._dirty;\n }\n markAsDirty() {\n this._dirty = true;\n }\n /**\n * @deprecated The property should not be used, use ngModel instead\n */\n get value() {\n return this.internalGetValue(this._value) ?? this.defaultValue;\n }\n set value(v) {\n v = this.internalSetValue(v);\n const old = cloneDeep(this.value);\n if (v === null || v === undefined || v === '' || (Array.isArray(v) && v.length === 0)) {\n this.setState('clear');\n if (old === null || old === undefined || old === '' || (Array.isArray(old) && old.length === 0)) {\n return;\n }\n }\n if (!isEqual(old, v)) {\n this._value = v;\n this.emitOnValueChangedEvent(old, this.value);\n this.internalValueChanged(this.value);\n }\n }\n get state() {\n return this._state;\n }\n set state(value) {\n this.setState(value);\n this.stateChange.emit(value);\n }\n emitOnValueChangedEvent(oldValue, newValue) {\n this.valueChange.emit(newValue);\n this.onValueChanged.emit({\n component: this,\n value: newValue,\n oldValue: oldValue,\n name: this.name,\n isUserInteraction: this._isUserInteraction,\n });\n this.onChangeCallback(newValue);\n this.cdr.markForCheck();\n this._isUserInteraction = false;\n }\n internalSetValue(value) {\n return value;\n }\n internalGetValue(value) {\n return value;\n }\n internalValueChanged(value) { }\n ngOnInit() {\n super.ngOnInit();\n //\n this.registerValidation();\n }\n ngOnDestroy() {\n this.onValueChanged?.unsubscribe();\n this.onOptionChanged?.unsubscribe();\n }\n registerValidation() {\n const a = this.getHostElement().querySelectorAll('[ax-form-item=\"true\"]');\n a.forEach((c) => {\n c.removeAttribute('ax-form-item');\n });\n this.getHostElement().setAttribute('ax-form-item', 'true');\n }\n get isRequired() {\n return this.validationRules?.some((c) => c.rule == 'required');\n }\n /**\n * Adds a validation rule.\n *\n * @param rule - The validation rule to add.\n */\n addValidationRule(rule) {\n this.validationRules.push(rule);\n this.validationRulesChange.emit(this.validationRules);\n }\n /**\n * Removes a validation rule.\n *\n * @param ruleToRemove - The validation rule to remove.\n */\n removeValidationRule(ruleToRemove) {\n this.validationRules = this.validationRules.filter((r) => {\n if (r.rule !== ruleToRemove.rule) {\n return true;\n }\n // Create copies of options without the 'title' property\n const rOptionsSanitized = omit(r.options, ['title']);\n const ruleToRemoveOptionsSanitized = omit(ruleToRemove.options, ['title']);\n return !isEqual(rOptionsSanitized, ruleToRemoveOptionsSanitized);\n });\n this.validationRulesChange.emit(this.validationRules);\n this.setState('clear');\n }\n /**\n * Validates the component.\n *\n * @returns Promise<AXValidationSummary> - Validation result.\n */\n async validate() {\n const container_classes = ['ax-editor-container', 'ax-checkbox', 'ax-radio'];\n const container = container_classes.some((c) => this.getHostElement().classList.contains(c))\n ? this.getHostElement()\n : this.getHostElement().querySelector('.ax-editor-container');\n const formField = container?.closest('ax-form-field') || container?.closest('ax-checkbox');\n const label = formField?.querySelector('ax-label') || formField?.querySelector('label');\n //\n const rules = this.validationService.ruleFor(this.value);\n this.validationRules.forEach((r) => {\n r.options['title'] = (label?.firstChild?.textContent ?? this.name)?.replace('*', '').trim();\n rules.addRule(r.rule, r.options);\n });\n const result = await rules.validate();\n if (result.result) {\n this.setState('clear');\n }\n else {\n const message = result.rules.find((c) => !c.result).message;\n this.setState('error', message);\n }\n return result;\n }\n setState(state, ...args) {\n //TODO: find a better solution\n if (isBrowser()) {\n const container = this.getHostElement().classList.contains('ax-editor-container')\n ? this.getHostElement()\n : this.getHostElement().querySelector('.ax-editor-container');\n const formField = container?.closest('ax-form-field');\n const label = formField?.querySelector('ax-label') || formField?.querySelector('label');\n let target = container || this.getHostElement().firstElementChild;\n if (target?.querySelector('.ax-error-container')) {\n target = target.querySelector('.ax-error-container');\n }\n const parent = target?.parentElement;\n if (!target || !parent)\n return;\n switch (state) {\n case 'clear':\n this._state = 'clear';\n if (parent.querySelector('span.ax-error-message')) {\n parent.removeChild(parent.querySelector('span.ax-error-message'));\n }\n label?.classList.remove('ax-state-error');\n target.classList.remove('ax-state-error', 'ax-state-success');\n break;\n case 'success':\n this.setState('clear');\n target.classList.add('ax-state-success');\n this._state = 'success';\n break;\n case 'error':\n this.setState('clear');\n if (args[0] && isPlatformBrowser(this.platformID)) {\n const span = this.document.createElement('span');\n span.innerHTML = args[0];\n span.classList.add('ax-error-message');\n parent.appendChild(span);\n }\n label?.classList.add('ax-state-error');\n target.classList.add('ax-state-error');\n this._state = 'error';\n break;\n }\n this.cdr.markForCheck();\n }\n }\n /**\n * Registers a change callback function (ControlValueAccessor method).\n *\n * @param fn - The callback function to register.\n */\n registerOnChange(fn) {\n this.onChangeCallback = fn;\n }\n /**\n * Writes a value to the component (ControlValueAccessor method).\n *\n * @param value - The value to write.\n */\n writeValue(value) {\n this.value = value;\n }\n /**\n * Commits a value with optional user interaction flag.\n *\n * @param value - The value to commit.\n * @param u - Optional flag indicating if this is a user interaction.\n */\n commitValue(value, u = false) {\n if (u) {\n this.markAsTouched();\n this.markAsDirty();\n this._isUserInteraction = true;\n }\n this.writeValue(value);\n }\n /**\n * Resets the component value.\n *\n * @param e - Optional flag indicating if this is a user interaction.\n */\n reset(e = false) {\n this.commitValue(null, e);\n }\n /**\n * Resets validation errors.\n */\n resetErrors() {\n this.setState('clear');\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXValueComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXValueComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXValueComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvdmFsdWUtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsbUJBQW1CLEVBQXVCLE1BQU0seUJBQXlCLENBQUM7QUFDbkYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJNUIsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBR3ZFLE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxzQkFBc0I7SUFEckU7O1FBRUU7OztXQUdHO1FBQ0gsbUJBQWMsR0FBMkMsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFFdEc7O1dBRUc7UUFDSCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXpELG1CQUFjLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7UUFDNUQsY0FBUyxHQUFtQixJQUFJLENBQUM7UUEwQmpDLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFTZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUErQm5DLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFvQixDQUFDO1FBRTNFLFdB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SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsQ0FBQzsrR0E1U1UsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uU2VydmljZSwgQVhWYWxpZGF0aW9uU3VtbWFyeSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBET0NVTUVOVCwgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwgb21pdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWEZvcm1WYWxpZGF0aW9uUnVsZSB9IGZyb20gJy4uL2NsYXNzZXMvY29tcG9uZW50cy5jbGFzcyc7XG5pbXBvcnQgeyBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9ldmVudHMuY2xhc3MnO1xuaW1wb3J0IHsgQVhDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4vYmFzZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgTVhJbnRlcmFjdGl2ZUNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJhY3RpdmUtY29tcG9uZW50LmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1YVmFsdWVDb21wb25lbnQ8VCA9IGFueT4gZXh0ZW5kcyBNWEludGVyYWN0aXZlQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAvKipcbiAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueT4+KCk7XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoZSBldmVudCBzaG91bGQgbm90IGJlIHVzZWQsIHVzZSBuZ01vZGVsQ2hhbmdlIGluc3RlYWRcbiAgICovXG4gIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHJlYWRvbmx5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIHByaXZhdGUgX3JlYWRvbmx5OiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIC8qKlxuICAgKiAgSWYgc2V0IHRvIHRydWUsIHVzZXIgY2Fubm90IGNoYW5nZSB0aGUgdmFsdWUgb2YgY29tcG9uZW50LlxuICAgKi9cbiAgZ2V0IHJlYWRvbmx5KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWFkb25seTtcbiAgfVxuICBzZXQgcmVhZG9ubHkodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB2YWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3JlYWRvbmx5JyxcbiAgICAgIHZhbHVlLFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9uYW1lOiBzdHJpbmc7XG4gIGdldCBuYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9uYW1lO1xuICB9XG4gIHNldCBuYW1lKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9uYW1lID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9kaXJ0eSA9IGZhbHNlO1xuICBwdWJsaWMgZ2V0IGRpcnR5KCkge1xuICAgIHJldHVybiB0aGlzLl9kaXJ0eTtcbiAgfVxuXG4gIG1hcmtBc0RpcnR5KCkge1xuICAgIHRoaXMuX2RpcnR5ID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzVXNlckludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgaW5pdFZhbHVlOiBUO1xuICBkZWZhdWx0VmFsdWU6IFQ7XG5cbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGUgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSB1c2VkLCB1c2UgbmdNb2RlbCBpbnN0ZWFkXG4gICAqL1xuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxHZXRWYWx1ZSh0aGlzLl92YWx1ZSkgPz8gdGhpcy5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHY6IFQpIHtcbiAgICB2ID0gdGhpcy5pbnRlcm5hbFNldFZhbHVlKHYpO1xuICAgIGNvbnN0IG9sZCA9IGNsb25lRGVlcCh0aGlzLnZhbHVlKTtcblxuICAgIGlmICh2ID09PSBudWxsIHx8IHYgPT09IHVuZGVmaW5lZCB8fCB2ID09PSAnJyB8fCAoQXJyYXkuaXNBcnJheSh2KSAmJiB2Lmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICBpZiAob2xkID09PSBudWxsIHx8IG9sZCA9PT0gdW5kZWZpbmVkIHx8IG9sZCA9PT0gJycgfHwgKEFycmF5LmlzQXJyYXkob2xkKSAmJiBvbGQubGVuZ3RoID09PSAwKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKG9sZCwgdikpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMuZW1pdE9uVmFsdWVDaGFuZ2VkRXZlbnQob2xkLCB0aGlzLnZhbHVlKTtcblxuICAgICAgdGhpcy5pbnRlcm5hbFZhbHVlQ2hhbmdlZCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzdGF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEFYQ29tcG9uZW50U3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWENvbXBvbmVudFN0YXRlPigpO1xuXG4gIHByaXZhdGUgX3N0YXRlOiBBWENvbXBvbmVudFN0YXRlID0gJ2NsZWFyJztcblxuICBnZXQgc3RhdGUoKTogQVhDb21wb25lbnRTdGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlO1xuICB9XG5cbiAgc2V0IHN0YXRlKHZhbHVlOiBBWENvbXBvbmVudFN0YXRlKSB7XG4gICAgdGhpcy5zZXRTdGF0ZSh2YWx1ZSk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZT86IGFueSwgbmV3VmFsdWU/OiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV3VmFsdWUpO1xuICAgIHRoaXMub25WYWx1ZUNoYW5nZWQuZW1pdCh7XG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICB2YWx1ZTogbmV3VmFsdWUsXG4gICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbjogdGhpcy5faXNVc2VySW50ZXJhY3Rpb24sXG4gICAgfSk7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGludGVybmFsU2V0VmFsdWUodmFsdWU6IGFueSk6IFQge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnRlcm5hbEdldFZhbHVlKHZhbHVlOiBhbnkpOiBUIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgaW50ZXJuYWxWYWx1ZUNoYW5nZWQodmFsdWU6IGFueSk6IHZvaWQge31cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvL1xuICAgIHRoaXMucmVnaXN0ZXJWYWxpZGF0aW9uKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vblZhbHVlQ2hhbmdlZD8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLm9uT3B0aW9uQ2hhbmdlZD8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWdpc3RlclZhbGlkYXRpb24oKSB7XG4gICAgY29uc3QgYSA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsKCdbYXgtZm9ybS1pdGVtPVwidHJ1ZVwiXScpO1xuICAgIGEuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgYy5yZW1vdmVBdHRyaWJ1dGUoJ2F4LWZvcm0taXRlbScpO1xuICAgIH0pO1xuICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5zZXRBdHRyaWJ1dGUoJ2F4LWZvcm0taXRlbScsICd0cnVlJyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcm90ZWN0ZWQgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIHByaXZhdGUgdmFsaWRhdGlvblNlcnZpY2UgPSBpbmplY3QoQVhWYWxpZGF0aW9uU2VydmljZSk7XG5cbiAgcHVibGljIHZhbGlkYXRpb25SdWxlc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFYRm9ybVZhbGlkYXRpb25SdWxlW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEZvcm1WYWxpZGF0aW9uUnVsZVtdPigpO1xuICBwcml2YXRlIHZhbGlkYXRpb25SdWxlczogQVhGb3JtVmFsaWRhdGlvblJ1bGVbXSA9IFtdO1xuXG4gIHB1YmxpYyBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy52YWxpZGF0aW9uUnVsZXM/LnNvbWUoKGMpID0+IGMucnVsZSA9PSAncmVxdWlyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgdmFsaWRhdGlvbiBydWxlLlxuICAgKlxuICAgKiBAcGFyYW0gcnVsZSAtIFRoZSB2YWxpZGF0aW9uIHJ1bGUgdG8gYWRkLlxuICAgKi9cbiAgYWRkVmFsaWRhdGlvblJ1bGUocnVsZTogQVhGb3JtVmFsaWRhdGlvblJ1bGUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5wdXNoKHJ1bGUpO1xuICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzQ2hhbmdlLmVtaXQodGhpcy52YWxpZGF0aW9uUnVsZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSB2YWxpZGF0aW9uIHJ1bGUuXG4gICAqXG4gICAqIEBwYXJhbSBydWxlVG9SZW1vdmUgLSBUaGUgdmFsaWRhdGlvbiBydWxlIHRvIHJlbW92ZS5cbiAgICovXG4gIHJlbW92ZVZhbGlkYXRpb25SdWxlKHJ1bGVUb1JlbW92ZTogQVhGb3JtVmFsaWRhdGlvblJ1bGUpOiB2b2lkIHtcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcyA9IHRoaXMudmFsaWRhdGlvblJ1bGVzLmZpbHRlcigocikgPT4ge1xuICAgICAgaWYgKHIucnVsZSAhPT0gcnVsZVRvUmVtb3ZlLnJ1bGUpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBDcmVhdGUgY29waWVzIG9mIG9wdGlvbnMgd2l0aG91dCB0aGUgJ3RpdGxlJyBwcm9wZXJ0eVxuICAgICAgY29uc3Qgck9wdGlvbnNTYW5pdGl6ZWQgPSBvbWl0KHIub3B0aW9ucywgWyd0aXRsZSddKTtcbiAgICAgIGNvbnN0IHJ1bGVUb1JlbW92ZU9wdGlvbnNTYW5pdGl6ZWQgPSBvbWl0KHJ1bGVUb1JlbW92ZS5vcHRpb25zLCBbJ3RpdGxlJ10pO1xuXG4gICAgICByZXR1cm4gIWlzRXF1YWwock9wdGlvbnNTYW5pdGl6ZWQsIHJ1bGVUb1JlbW92ZU9wdGlvbnNTYW5pdGl6ZWQpO1xuICAgIH0pO1xuICAgIHRoaXMudmFsaWRhdGlvblJ1bGVzQ2hhbmdlLmVtaXQodGhpcy52YWxpZGF0aW9uUnVsZXMpO1xuICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2U8QVhWYWxpZGF0aW9uU3VtbWFyeT4gLSBWYWxpZGF0aW9uIHJlc3VsdC5cbiAgICovXG4gIGFzeW5jIHZhbGlkYXRlKCk6IFByb21pc2U8QVhWYWxpZGF0aW9uU3VtbWFyeT4ge1xuICAgIGNvbnN0IGNvbnRhaW5lcl9jbGFzc2VzID0gWydheC1lZGl0b3ItY29udGFpbmVyJywgJ2F4LWNoZWNrYm94JywgJ2F4LXJhZGlvJ107XG4gICAgY29uc3QgY29udGFpbmVyID0gY29udGFpbmVyX2NsYXNzZXMuc29tZSgoYykgPT4gdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucyhjKSlcbiAgICAgID8gdGhpcy5nZXRIb3N0RWxlbWVudCgpXG4gICAgICA6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtZWRpdG9yLWNvbnRhaW5lcicpO1xuICAgIGNvbnN0IGZvcm1GaWVsZCA9IGNvbnRhaW5lcj8uY2xvc2VzdCgnYXgtZm9ybS1maWVsZCcpIHx8IGNvbnRhaW5lcj8uY2xvc2VzdCgnYXgtY2hlY2tib3gnKTtcbiAgICBjb25zdCBsYWJlbCA9IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignYXgtbGFiZWwnKSB8fCBmb3JtRmllbGQ/LnF1ZXJ5U2VsZWN0b3IoJ2xhYmVsJyk7XG4gICAgLy9cbiAgICBjb25zdCBydWxlcyA9IHRoaXMudmFsaWRhdGlvblNlcnZpY2UucnVsZUZvcih0aGlzLnZhbHVlKTtcbiAgICB0aGlzLnZhbGlkYXRpb25SdWxlcy5mb3JFYWNoKChyKSA9PiB7XG4gICAgICByLm9wdGlvbnNbJ3RpdGxlJ10gPSAobGFiZWw/LmZpcnN0Q2hpbGQ/LnRleHRDb250ZW50ID8/IHRoaXMubmFtZSk/LnJlcGxhY2UoJyonLCAnJykudHJpbSgpO1xuICAgICAgcnVsZXMuYWRkUnVsZShyLnJ1bGUgYXMgYW55LCByLm9wdGlvbnMpO1xuICAgIH0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJ1bGVzLnZhbGlkYXRlKCk7XG4gICAgaWYgKHJlc3VsdC5yZXN1bHQpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSByZXN1bHQucnVsZXMuZmluZCgoYykgPT4gIWMucmVzdWx0KS5tZXNzYWdlO1xuICAgICAgdGhpcy5zZXRTdGF0ZSgnZXJyb3InLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRTdGF0ZShzdGF0ZTogQVhDb21wb25lbnRTdGF0ZSwgLi4uYXJncykge1xuICAgIC8vVE9ETzogZmluZCBhIGJldHRlciBzb2x1dGlvblxuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucygnYXgtZWRpdG9yLWNvbnRhaW5lcicpXG4gICAgICAgID8gdGhpcy5nZXRIb3N0RWxlbWVudCgpXG4gICAgICAgIDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy5heC1lZGl0b3ItY29udGFpbmVyJyk7XG4gICAgICBjb25zdCBmb3JtRmllbGQgPSBjb250YWluZXI/LmNsb3Nlc3QoJ2F4LWZvcm0tZmllbGQnKTtcbiAgICAgIGNvbnN0IGxhYmVsID0gZm9ybUZpZWxkPy5xdWVyeVNlbGVjdG9yKCdheC1sYWJlbCcpIHx8IGZvcm1GaWVsZD8ucXVlcnlTZWxlY3RvcignbGFiZWwnKTtcbiAgICAgIGxldCB0YXJnZXQgPSBjb250YWluZXIgfHwgdGhpcy5nZXRIb3N0RWxlbWVudCgpLmZpcnN0RWxlbWVudENoaWxkO1xuICAgICAgaWYgKHRhcmdldD8ucXVlcnlTZWxlY3RvcignLmF4LWVycm9yLWNvbnRhaW5lcicpKSB7XG4gICAgICAgIHRhcmdldCA9IHRhcmdldC5xdWVyeVNlbGVjdG9yKCcuYXgtZXJyb3ItY29udGFpbmVyJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnQgPSB0YXJnZXQ/LnBhcmVudEVsZW1lbnQ7XG4gICAgICBpZiAoIXRhcmdldCB8fCAhcGFyZW50KSByZXR1cm47XG5cbiAgICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgICAgY2FzZSAnY2xlYXInOlxuICAgICAgICAgIHRoaXMuX3N0YXRlID0gJ2NsZWFyJztcbiAgICAgICAgICBpZiAocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpKSB7XG4gICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQocGFyZW50LnF1ZXJ5U2VsZWN0b3IoJ3NwYW4uYXgtZXJyb3ItbWVzc2FnZScpISk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPy5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicpO1xuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1lcnJvcicsICdheC1zdGF0ZS1zdWNjZXNzJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICAgICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoJ2F4LXN0YXRlLXN1Y2Nlc3MnKTtcbiAgICAgICAgICB0aGlzLl9zdGF0ZSA9ICdzdWNjZXNzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoJ2NsZWFyJyk7XG4gICAgICAgICAgaWYgKGFyZ3NbMF0gJiYgaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlEKSkge1xuICAgICAgICAgICAgY29uc3Qgc3BhbiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSBhcmdzWzBdO1xuICAgICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCdheC1lcnJvci1tZXNzYWdlJyk7XG4gICAgICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPy5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1lcnJvcicpO1xuICAgICAgICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKCdheC1zdGF0ZS1lcnJvcicpO1xuXG4gICAgICAgICAgdGhpcy5fc3RhdGUgPSAnZXJyb3InO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlQ2FsbGJhY2s6ICh2YWx1ZTogVCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGNoYW5nZSBjYWxsYmFjayBmdW5jdGlvbiAoQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kKS5cbiAgICpcbiAgICogQHBhcmFtIGZuIC0gVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIGEgdmFsdWUgdG8gdGhlIGNvbXBvbmVudCAoQ29udHJvbFZhbHVlQWNjZXNzb3IgbWV0aG9kKS5cbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIHdyaXRlLlxuICAgKi9cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21taXRzIGEgdmFsdWUgd2l0aCBvcHRpb25hbCB1c2VyIGludGVyYWN0aW9uIGZsYWcuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSB2YWx1ZSB0byBjb21taXQuXG4gICAqIEBwYXJhbSB1IC0gT3B0aW9uYWwgZmxhZyBpbmRpY2F0aW5nIGlmIHRoaXMgaXMgYSB1c2VyIGludGVyYWN0aW9uLlxuICAgKi9cbiAgcHVibGljIGNvbW1pdFZhbHVlKHZhbHVlOiBULCB1ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAodSkge1xuICAgICAgdGhpcy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgICB0aGlzLm1hcmtBc0RpcnR5KCk7XG4gICAgICB0aGlzLl9pc1VzZXJJbnRlcmFjdGlvbiA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBjb21wb25lbnQgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSBlIC0gT3B0aW9uYWwgZmxhZyBpbmRpY2F0aW5nIGlmIHRoaXMgaXMgYSB1c2VyIGludGVyYWN0aW9uLlxuICAgKi9cbiAgcmVzZXQoZSA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5jb21taXRWYWx1ZShudWxsLCBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdmFsaWRhdGlvbiBlcnJvcnMuXG4gICAqL1xuICByZXNldEVycm9ycygpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKCdjbGVhcicpO1xuICB9XG59XG4iXX0=","/**\n * Contains native event\n * @category Events\n */\nexport class AXEvent {\n constructor() {\n this.isUserInteraction = false;\n }\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXHtmlEvent extends AXEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXValueChangedEvent extends AXEvent {\n}\n/**\n * Contains native event\n * @category Events\n */\nexport class AXOptionChangedEvent extends AXEvent {\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXClickEvent extends AXHtmlEvent {\n constructor() {\n super(...arguments);\n /**\n * uses for extra data\n */\n this.data = null;\n this.nativeEvent = null;\n }\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXButtonClickEvent extends AXClickEvent {\n}\n/**\n * Fires each time the user click the element.\n * @category Events\n */\nexport class AXItemClickEvent extends AXClickEvent {\n}\n/**\n * Fires each time the user select the element.\n * @category Events\n */\nexport class AXItemSelectedEvent extends AXEvent {\n}\n/**\n * Fires each time the component gets focused.\n * @category Events\n */\nexport class AXFocusEvent extends AXHtmlEvent {\n}\n/**\n * Fires each time an item or multiple items selected by the user or value.\n * @category Events\n */\nexport class AXSelectionValueChangedEvent extends AXValueChangedEvent {\n constructor() {\n super(...arguments);\n this.value = null;\n this.oldValue = null;\n this.selectedKeys = [];\n this.selectedItems = [];\n }\n}\n/**\n * Contains range start & end values\n * @category Events\n */\nexport class AXRangeChangedEvent extends AXEvent {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NsYXNzZXMvZXZlbnRzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBVUUsc0JBQWlCLEdBQWEsS0FBSyxDQUFDO0lBQ3RDLENBQUM7Q0FBQTtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFxQyxTQUFRLE9BQU87Q0FFaEU7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQTZCLFNBQVEsT0FBTztDQUl4RDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxvQkFBOEIsU0FBUSxPQUFPO0NBSXpEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUF1QjtJQUF6RDs7UUFDRTs7V0FFRztRQUNILFNBQUksR0FBUyxJQUFJLENBQUM7UUFFVCxnQkFBVyxHQUFTLElBQUksQ0FBQztJQUNwQyxDQUFDO0NBQUE7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsWUFBWTtDQUVuRDtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBMEIsU0FBUSxZQUFZO0NBRzFEO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUE2QixTQUFRLE9BQU87Q0FFeEQ7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sWUFBYSxTQUFRLFdBQXVCO0NBQUk7QUFFN0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDRCQUE2QixTQUFRLG1CQUFnQztJQUFsRjs7UUFDVyxVQUFLLEdBQVMsSUFBSSxDQUFDO1FBQ25CLGFBQVEsR0FBUyxJQUFJLENBQUM7UUFDL0IsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsa0JBQWEsR0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUFBO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLG1CQUF1QixTQUFRLE9BQU87Q0FTbEQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYRXZlbnQge1xuICAvKipcbiAgICogIFRoZSBzZW5kZXIgY29tcG9uZW50XG4gICAqL1xuICBjb21wb25lbnQ6IGFueTtcbiAgLyoqXG4gICAqICBUaGUgcm9vdCBuYXRpdmUgZWxlbWVudFxuICAgKi9cbiAgaHRtbEVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICBpc1VzZXJJbnRlcmFjdGlvbj86IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuLyoqXG4gKiAgQ29udGFpbnMgbmF0aXZlIGV2ZW50XG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEh0bWxFdmVudDxFIGV4dGVuZHMgRXZlbnQgPSBFdmVudD4gZXh0ZW5kcyBBWEV2ZW50IHtcbiAgbmF0aXZlRXZlbnQ/OiBFO1xufVxuXG4vKipcbiAqICBDb250YWlucyBuYXRpdmUgZXZlbnRcbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYVmFsdWVDaGFuZ2VkRXZlbnQ8VCA9IGFueT4gZXh0ZW5kcyBBWEV2ZW50IHtcbiAgbmFtZT86IHN0cmluZztcbiAgdmFsdWU/OiBUO1xuICBvbGRWYWx1ZT86IFQ7XG59XG5cbi8qKlxuICogIENvbnRhaW5zIG5hdGl2ZSBldmVudFxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhPcHRpb25DaGFuZ2VkRXZlbnQ8VCA9IGFueT4gZXh0ZW5kcyBBWEV2ZW50IHtcbiAgbmFtZT86IHN0cmluZztcbiAgbmV3VmFsdWU/OiBUO1xuICBvbGRWYWx1ZT86IFQ7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGljayB0aGUgZWxlbWVudC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYQ2xpY2tFdmVudCBleHRlbmRzIEFYSHRtbEV2ZW50PE1vdXNlRXZlbnQ+IHtcbiAgLyoqXG4gICAqICB1c2VzIGZvciBleHRyYSBkYXRhXG4gICAqL1xuICBkYXRhPzogYW55ID0gbnVsbDtcblxuICBvdmVycmlkZSBuYXRpdmVFdmVudD86IGFueSA9IG51bGw7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBjbGljayB0aGUgZWxlbWVudC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYQnV0dG9uQ2xpY2tFdmVudCBleHRlbmRzIEFYQ2xpY2tFdmVudCB7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIGNsaWNrIHRoZSBlbGVtZW50LlxuICogQGNhdGVnb3J5IEV2ZW50c1xuICovXG5leHBvcnQgY2xhc3MgQVhJdGVtQ2xpY2tFdmVudDxUID0gYW55PiBleHRlbmRzIEFYQ2xpY2tFdmVudCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGl0ZW06IFQ7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBzZWxlY3QgdGhlIGVsZW1lbnQuXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWEl0ZW1TZWxlY3RlZEV2ZW50PFQgPSBhbnk+IGV4dGVuZHMgQVhFdmVudCB7XG4gIGl0ZW06IFQ7XG59XG5cbi8qKlxuICogIEZpcmVzIGVhY2ggdGltZSB0aGUgY29tcG9uZW50IGdldHMgZm9jdXNlZC5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYRm9jdXNFdmVudCBleHRlbmRzIEFYSHRtbEV2ZW50PEZvY3VzRXZlbnQ+IHsgfVxuXG4vKipcbiAqICBGaXJlcyBlYWNoIHRpbWUgYW4gaXRlbSBvciBtdWx0aXBsZSBpdGVtcyBzZWxlY3RlZCBieSB0aGUgdXNlciBvciB2YWx1ZS5cbiAqIEBjYXRlZ29yeSBFdmVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIEFYU2VsZWN0aW9uVmFsdWVDaGFuZ2VkRXZlbnQgZXh0ZW5kcyBBWFZhbHVlQ2hhbmdlZEV2ZW50PGFueSB8IGFueVtdPiB7XG4gIG92ZXJyaWRlIHZhbHVlPzogYW55ID0gbnVsbDtcbiAgb3ZlcnJpZGUgb2xkVmFsdWU/OiBhbnkgPSBudWxsO1xuICBzZWxlY3RlZEtleXM/OiBhbnlbXSA9IFtdO1xuICBzZWxlY3RlZEl0ZW1zPzogYW55W10gPSBbXTtcbn1cblxuLyoqXG4gKiAgQ29udGFpbnMgcmFuZ2Ugc3RhcnQgJiBlbmQgdmFsdWVzXG4gKiBAY2F0ZWdvcnkgRXZlbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBBWFJhbmdlQ2hhbmdlZEV2ZW50PFQ+IGV4dGVuZHMgQVhFdmVudCB7XG4gIC8qKlxuICAgKiAgVGhlIHJhbmdlIHN0YXJ0IHZhbHVlXG4gICAqL1xuICBzdGFydD86IFQ7XG4gIC8qKlxuICAgKiAgVGhlIHJhbmdlIGVuZCB2YWx1ZVxuICAgKi9cbiAgZW5kPzogVDtcbn1cbiJdfQ==","import { EventEmitter, Injectable } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { MXValueComponent } from '../components/value-component.class';\nimport { AXEvent } from './events.class';\nimport * as i0 from \"@angular/core\";\nexport const TAB_META_KEY = '__meta__';\nexport class AXComponentCloseEvent extends AXEvent {\n}\nexport class AXComponentClosing {\n constructor() {\n this.cancel = false;\n }\n}\nexport class AXComponentResult {\n}\n/**\n * Defines a CSS class—or multiple classes separated by spaces— which are applied to a span element inside the Button. Allows the usage of custom icons after the primary text.\n */\nexport class AXComponentClosedPromise extends Promise {\n constructor(executor) {\n super(executor);\n }\n close() {\n if (this.closeMethod) {\n this.closeMethod();\n }\n }\n}\nexport class AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXClosableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXClosableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXClosableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXClosableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXClearableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXClearableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXClearableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXClearableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXSearchableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXSearchableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXSearchableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXSearchableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXValuableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXValuableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXValuableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXValuableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXFocusableComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXFocusableComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXFocusableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXFocusableComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXPagedComponent extends AXComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPagedComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPagedComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXPagedComponent, decorators: [{\n type: Injectable\n }] });\nexport class AXAutocompleteParentComponent extends MXValueComponent {\n constructor() {\n super(...arguments);\n this.onKeyDown = new EventEmitter();\n this.onItemSelected = new EventEmitter();\n }\n emitOnItemSelected(value, isUserInteraction = false) {\n if (isEqual(value, this.oldInputEmitValue))\n return;\n this.onItemSelected.emit({\n value,\n name: this.name,\n component: this,\n isUserInteraction,\n oldValue: this.oldInputEmitValue,\n htmlElement: this.getHostElement(),\n });\n this.oldInputEmitValue = value;\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXAutocompleteParentComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXAutocompleteParentComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXAutocompleteParentComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jbGFzc2VzL2NvbXBvbmVudHMuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFvQyxNQUFNLGdCQUFnQixDQUFDOztBQUUzRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDO0FBRXZDLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxPQUFPO0NBRWpEO0FBQ0QsTUFBTSxPQUFPLGtCQUFrQjtJQUEvQjtRQUNFLFdBQU0sR0FBRyxLQUFLLENBQUM7SUFFakIsQ0FBQztDQUFBO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtDQUc3QjtBQVFEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHdCQUF5QixTQUFRLE9BQTBCO0lBRXRFLFlBQ0UsUUFHUztRQUVULEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRU0sS0FBSztRQUNWLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFnQixXQUFXOytHQUFYLFdBQVc7bUhBQVgsV0FBVzs7NEZBQVgsV0FBVztrQkFEaEMsVUFBVTs7QUFJWCxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLFdBQVc7K0dBQXZDLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUR4QyxVQUFVOztBQU9YLE1BQU0sT0FBZ0Isb0JBQXFCLFNBQVEsV0FBVzsrR0FBeEMsb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRHpDLFVBQVU7O0FBU1gsTUFBTSxPQUFnQixxQkFBc0IsU0FBUSxXQUFXOytHQUF6QyxxQkFBcUI7bUhBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFEMUMsVUFBVTs7QUFNWCxNQUFNLE9BQWdCLG1CQUFvQixTQUFRLFdBQVc7K0dBQXZDLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUR4QyxVQUFVOztBQW1CWCxNQUFNLE9BQWdCLG9CQUFxQixTQUFRLFdBQVc7K0dBQXhDLG9CQUFvQjttSEFBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQUR6QyxVQUFVOztBQWFYLE1BQU0sT0FBZ0IsZ0JBQWlCLFNBQVEsV0FBVzsrR0FBcEMsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRHJDLFVBQVU7O0FBU1gsTUFBTSxPQUFnQiw2QkFBaUMsU0FBUSxnQkFBbUI7SUFEbEY7O1FBS0UsY0FBUyxHQUFHLElBQUksWUFBWSxFQUE4QixDQUFDO1FBQzNELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7S0FjN0Q7SUFaQyxrQkFBa0IsQ0FBQyxLQUFRLEVBQUUsaUJBQWlCLEdBQUcsS0FBSztRQUNwRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1lBQUUsT0FBTztRQUNuRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztZQUN2QixLQUFLO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUI7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7WUFDaEMsV0FBVyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztJQUNqQyxDQUFDOytHQWxCbUIsNkJBQTZCO21IQUE3Qiw2QkFBNkI7OzRGQUE3Qiw2QkFBNkI7a0JBRGxELFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQgeyBBWFZhbGlkYXRpb25SdWxlT3B0aW9ucywgQVhWYWxpZGF0aW9uU3VtbWFyeSB9IGZyb20gJ0BhY29yZXgvY29yZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBNWFZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy92YWx1ZS1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgQVhFdmVudCwgQVhIdG1sRXZlbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuL2V2ZW50cy5jbGFzcyc7XG5cbmV4cG9ydCBjb25zdCBUQUJfTUVUQV9LRVkgPSAnX19tZXRhX18nO1xuXG5leHBvcnQgY2xhc3MgQVhDb21wb25lbnRDbG9zZUV2ZW50IGV4dGVuZHMgQVhFdmVudCB7XG4gIGRhdGE/OiBhbnk7XG59XG5leHBvcnQgY2xhc3MgQVhDb21wb25lbnRDbG9zaW5nIHtcbiAgY2FuY2VsID0gZmFsc2U7XG4gIGRhdGE/OiBhbnk7XG59XG5cbmV4cG9ydCBjbGFzcyBBWENvbXBvbmVudFJlc3VsdCB7XG4gIHNlbmRlcjogYW55O1xuICBkYXRhPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRm9ybVZhbGlkYXRpb25SdWxlIHtcbiAgcnVsZTogc3RyaW5nO1xuICBkaXNhYmxlZDogYm9vbGVhbjtcbiAgb3B0aW9ucz86IEFYVmFsaWRhdGlvblJ1bGVPcHRpb25zO1xufVxuXG4vKipcbiAqICBEZWZpbmVzIGEgQ1NTIGNsYXNz4oCUb3IgbXVsdGlwbGUgY2xhc3NlcyBzZXBhcmF0ZWQgYnkgc3BhY2Vz4oCUIHdoaWNoIGFyZSBhcHBsaWVkIHRvIGEgc3BhbiBlbGVtZW50IGluc2lkZSB0aGUgQnV0dG9uLiBBbGxvd3MgdGhlIHVzYWdlIG9mIGN1c3RvbSBpY29ucyBhZnRlciB0aGUgcHJpbWFyeSB0ZXh0LlxuICovXG5leHBvcnQgY2xhc3MgQVhDb21wb25lbnRDbG9zZWRQcm9taXNlIGV4dGVuZHMgUHJvbWlzZTxBWENvbXBvbmVudFJlc3VsdD4ge1xuICBwcml2YXRlIGNsb3NlTWV0aG9kOiAoKSA9PiB2b2lkO1xuICBjb25zdHJ1Y3RvcihcbiAgICBleGVjdXRvcjogKFxuICAgICAgcmVzb2x2ZTogKHZhbHVlPzogQVhDb21wb25lbnRSZXN1bHQgfCBQcm9taXNlTGlrZTxBWENvbXBvbmVudFJlc3VsdD4pID0+IHZvaWQsXG4gICAgICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQsXG4gICAgKSA9PiB2b2lkLFxuICApIHtcbiAgICBzdXBlcihleGVjdXRvcik7XG4gIH1cblxuICBwdWJsaWMgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VNZXRob2QpIHtcbiAgICAgIHRoaXMuY2xvc2VNZXRob2QoKTtcbiAgICB9XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYQ29tcG9uZW50IHt9XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWENsb3NhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhDb21wb25lbnQge1xuICBhYnN0cmFjdCBjbG9zZSgpOiB2b2lkO1xuICBhYnN0cmFjdCBjbG9zZUFsbCgpOiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhDbGVhcmFibGVDb21wb25lbnQgZXh0ZW5kcyBBWENvbXBvbmVudCB7XG4gIGFic3RyYWN0IHJlc2V0KHU6IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCBnZXQgcmVhZG9ubHkoKTogYm9vbGVhbjtcbiAgYWJzdHJhY3QgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW47XG4gIGFic3RyYWN0IGdldCB2YWx1ZSgpOiB1bmtub3duO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhTZWFyY2hhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhDb21wb25lbnQge1xuICBhYnN0cmFjdCBzZWFyY2godmFsdWU6IHN0cmluZyk6IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWFZhbHVhYmxlQ29tcG9uZW50IGV4dGVuZHMgQVhDb21wb25lbnQge1xuICBhYnN0cmFjdCBnZXQgaXNSZXF1aXJlZCgpOiBib29sZWFuO1xuICB2YWxpZGF0aW9uUnVsZXNDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBWEZvcm1WYWxpZGF0aW9uUnVsZVtdPjtcbiAgYWJzdHJhY3QgZ2V0IG5hbWUoKTogc3RyaW5nO1xuICBhYnN0cmFjdCBnZXQgdmFsdWUoKTogdW5rbm93bjtcbiAgYWJzdHJhY3Qgb25WYWx1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PHVua25vd24+PjtcbiAgYWJzdHJhY3QgY29tbWl0VmFsdWUodmFsdWU6IHVua25vd24sIHU6IGJvb2xlYW4pO1xuXG4gIGFic3RyYWN0IGFkZFZhbGlkYXRpb25SdWxlKHJ1bGU6IEFYRm9ybVZhbGlkYXRpb25SdWxlKTtcblxuICBhYnN0cmFjdCByZW1vdmVWYWxpZGF0aW9uUnVsZShydWxlOiBBWEZvcm1WYWxpZGF0aW9uUnVsZSk7XG5cbiAgYWJzdHJhY3QgdmFsaWRhdGUoKTogUHJvbWlzZTxBWFZhbGlkYXRpb25TdW1tYXJ5PjtcbiAgYWJzdHJhY3QgcmVzZXQoZTogYm9vbGVhbik6IHZvaWQ7XG4gIGFic3RyYWN0IHJlc2V0RXJyb3JzKCk6IHZvaWQ7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBWEZvY3VzYWJsZUNvbXBvbmVudCBleHRlbmRzIEFYQ29tcG9uZW50IHtcbiAgYWJzdHJhY3QgZm9jdXMoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFBhZ2VkQ29tcG9uZW50SW50ZXJmYWNlIHtcbiAgZ29Ub1BhZ2UocGFnZTogbnVtYmVyKTtcbiAgZ2V0IHRvdGFsQ291bnQoKTogbnVtYmVyO1xuICBnZXQgcGFnZVNpemUoKTogbnVtYmVyO1xuICBvblBhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxudW1iZXI+Pjtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFYUGFnZWRDb21wb25lbnQgZXh0ZW5kcyBBWENvbXBvbmVudCBpbXBsZW1lbnRzIEFYUGFnZWRDb21wb25lbnRJbnRlcmZhY2Uge1xuICBhYnN0cmFjdCBnb1RvUGFnZShwYWdlOiBudW1iZXIpO1xuICBhYnN0cmFjdCBnZXQgdG90YWxDb3VudCgpOiBudW1iZXI7XG4gIGFic3RyYWN0IHBhZ2VTaXplOiBudW1iZXI7XG4gIGFic3RyYWN0IG9uUGFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxBWFZhbHVlQ2hhbmdlZEV2ZW50PG51bWJlcj4+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQVhBdXRvY29tcGxldGVQYXJlbnRDb21wb25lbnQ8VD4gZXh0ZW5kcyBNWFZhbHVlQ29tcG9uZW50PFQ+IHtcbiAgb2xkSW5wdXRFbWl0VmFsdWU6IFQ7XG4gIGFic3RyYWN0IHVuc3Vic2NyaWJlcjogQVhVbnN1YnNjcmliZXI7XG5cbiAgb25LZXlEb3duID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4oKTtcbiAgb25JdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFYVmFsdWVDaGFuZ2VkRXZlbnQ8VD4+KCk7XG5cbiAgZW1pdE9uSXRlbVNlbGVjdGVkKHZhbHVlOiBULCBpc1VzZXJJbnRlcmFjdGlvbiA9IGZhbHNlKSB7XG4gICAgaWYgKGlzRXF1YWwodmFsdWUsIHRoaXMub2xkSW5wdXRFbWl0VmFsdWUpKSByZXR1cm47XG4gICAgdGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHtcbiAgICAgIHZhbHVlLFxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb24sXG4gICAgICBvbGRWYWx1ZTogdGhpcy5vbGRJbnB1dEVtaXRWYWx1ZSxcbiAgICAgIGh0bWxFbGVtZW50OiB0aGlzLmdldEhvc3RFbGVtZW50KCksXG4gICAgfSk7XG4gICAgdGhpcy5vbGRJbnB1dEVtaXRWYWx1ZSA9IHZhbHVlO1xuICB9XG59XG4iXX0=","import { DataSource } from '@angular/cdk/collections';\nimport { BehaviorSubject, Subscription, debounceTime, distinctUntilChanged } from 'rxjs';\nexport class AXListDataSource extends DataSource {\n get range() {\n return this._range;\n }\n /**\n * @ignore\n */\n constructor(config) {\n super();\n this.config = config;\n this.debounceTime = 0;\n this.subscription = new Subscription();\n this._range = { start: 0, end: 0 };\n this.source = config.source;\n if (config.debounceTime)\n this.debounceTime = config.debounceTime;\n //\n this.dataStream = new BehaviorSubject(this.config.source.cachedItems);\n this.source.onChanged.subscribe((data) => {\n this.dataStream.next(data.cachedItems);\n });\n }\n connect(collectionViewer) {\n this.subscription.add(collectionViewer.viewChange\n .pipe(debounceTime(this.debounceTime))\n .pipe(distinctUntilChanged())\n .subscribe((range) => {\n this._range = range;\n const startPage = this.getPageForIndex(range.start);\n const endPage = this.getPageForIndex(range.end - 1);\n for (let i = startPage; i <= endPage; i++) {\n this.source.setPage(i);\n }\n }));\n return this.dataStream;\n }\n disconnect() {\n this.subscription.unsubscribe();\n }\n getPageForIndex(index) {\n return Math.floor(index / this.source.config.pageSize);\n }\n refresh() {\n this.dataStream.next(new Array(this.source.pageSize));\n this.source.refresh();\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWxpc3QuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY2xhc3Nlcy9kYXRhbGlzdC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxlQUFlLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWlCckcsTUFBTSxPQUFPLGdCQUE4QixTQUFRLFVBQWE7SUFPOUQsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQW9CLE1BQTBEO1FBQzVFLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBb0Q7UUFidEUsaUJBQVksR0FBRyxDQUFDLENBQUM7UUFDakIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBSWxDLFdBQU0sR0FBbUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQVVwRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxNQUFNLENBQUMsWUFBWTtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNqRSxFQUFFO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBTSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLGdCQUFrQztRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDbkIsZ0JBQWdCLENBQUMsVUFBVTthQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUNyQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzthQUM1QixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEQsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2xsZWN0aW9uVmlld2VyLCBEYXRhU291cmNlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvbGxlY3Rpb25zJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWERhdGFTb3VyY2UgfSBmcm9tICcuL2RhdGFzb3VyY2UuY2xhc3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YUxpc3RRdWVyeSB7XG4gIHRha2U/OiBudW1iZXI7XG4gIHNraXA/OiBudW1iZXI7XG4gIHNlYXJjaFF1ZXJ5Pzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFMaXN0RmV0Y2hDYWxsYmFja1Jlc3VsdCB7XG4gIGl0ZW1zOiBBcnJheTxhbnk+O1xuICB0b3RhbDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBBWERhdGFMaXN0RmV0Y2hEYXRhQ2FsbGJhY2sgPSAoZTogQVhEYXRhTGlzdFF1ZXJ5KSA9PiBQcm9taXNlPEFYRGF0YUxpc3RGZXRjaENhbGxiYWNrUmVzdWx0PjtcblxuZXhwb3J0IHR5cGUgQVhEYXRhTGlzdEl0ZW1zID0gQXJyYXk8YW55PiB8IEFYRGF0YUxpc3RGZXRjaERhdGFDYWxsYmFjaztcblxuZXhwb3J0IGNsYXNzIEFYTGlzdERhdGFTb3VyY2U8VCA9IHVua25vd24+IGV4dGVuZHMgRGF0YVNvdXJjZTxUPiB7XG4gIHByaXZhdGUgZGVib3VuY2VUaW1lID0gMDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG4gIHB1YmxpYyBzb3VyY2U6IEFYRGF0YVNvdXJjZTxUPjtcbiAgcHJpdmF0ZSBkYXRhU3RyZWFtOiBCZWhhdmlvclN1YmplY3Q8VFtdPjtcblxuICBwcml2YXRlIF9yYW5nZTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9ID0geyBzdGFydDogMCwgZW5kOiAwIH07XG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogeyBzdGFydDogbnVtYmVyOyBlbmQ6IG51bWJlciB9IHtcbiAgICByZXR1cm4gdGhpcy5fcmFuZ2U7XG4gIH1cblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWc6IHsgc291cmNlOiBBWERhdGFTb3VyY2U8VD47IGRlYm91bmNlVGltZT86IG51bWJlciB9KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnNvdXJjZSA9IGNvbmZpZy5zb3VyY2U7XG4gICAgaWYgKGNvbmZpZy5kZWJvdW5jZVRpbWUpIHRoaXMuZGVib3VuY2VUaW1lID0gY29uZmlnLmRlYm91bmNlVGltZTtcbiAgICAvL1xuICAgIHRoaXMuZGF0YVN0cmVhbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VFtdPih0aGlzLmNvbmZpZy5zb3VyY2UuY2FjaGVkSXRlbXMpO1xuICAgIHRoaXMuc291cmNlLm9uQ2hhbmdlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcbiAgICAgIHRoaXMuZGF0YVN0cmVhbS5uZXh0KGRhdGEuY2FjaGVkSXRlbXMpO1xuICAgIH0pO1xuICB9XG5cbiAgY29ubmVjdChjb2xsZWN0aW9uVmlld2VyOiBDb2xsZWN0aW9uVmlld2VyKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICBjb2xsZWN0aW9uVmlld2VyLnZpZXdDaGFuZ2VcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSlcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgocmFuZ2UpID0+IHtcbiAgICAgICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlO1xuICAgICAgICAgIGNvbnN0IHN0YXJ0UGFnZSA9IHRoaXMuZ2V0UGFnZUZvckluZGV4KHJhbmdlLnN0YXJ0KTtcbiAgICAgICAgICBjb25zdCBlbmRQYWdlID0gdGhpcy5nZXRQYWdlRm9ySW5kZXgocmFuZ2UuZW5kIC0gMSk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0UGFnZTsgaSA8PSBlbmRQYWdlOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMuc291cmNlLnNldFBhZ2UoaSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aGlzLmRhdGFTdHJlYW07XG4gIH1cblxuICBkaXNjb25uZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VGb3JJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihpbmRleCAvIHRoaXMuc291cmNlLmNvbmZpZy5wYWdlU2l6ZSk7XG4gIH1cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuZGF0YVN0cmVhbS5uZXh0KG5ldyBBcnJheSh0aGlzLnNvdXJjZS5wYWdlU2l6ZSkpO1xuICAgIHRoaXMuc291cmNlLnJlZnJlc2goKTtcbiAgfVxufVxuIl19","import { Subject } from 'rxjs';\nexport class AXDataSource {\n get totalCount() {\n return this._totalCount;\n }\n get totalPages() {\n return Math.ceil(this.totalCount / this.config.pageSize);\n }\n get pageSize() {\n return this.config.pageSize;\n }\n get cachedItems() {\n return this._cachedItems;\n }\n get items() {\n return this._items;\n }\n get query() {\n return this._query;\n }\n get isLoading() {\n return this._isLoading;\n }\n constructor(config) {\n this.useCache = true;\n this._totalCount = 0;\n this._items = [];\n this.fetchedPages = new Set();\n this._page = 0;\n this._query = { skip: 0, take: 0, sort: [] };\n this.onChanged = new Subject();\n this.onItemExpanded = new Subject();\n this.onItemRefreshChildren = new Subject();\n this.onLoadingChanged = new Subject();\n this._isLoading = false;\n this.config = config;\n this._cachedItems = new Array(this.config.pageSize);\n this._items = new Array(0);\n this._query.take = this.config.pageSize;\n }\n load() {\n const page = this._page;\n if (this.fetchedPages.has(page) && this.useCache) {\n return;\n }\n this.setLoadingState(true);\n this.fetchedPages.add(page);\n this._query.take = this.config.pageSize;\n this._query.skip = page * this.config.pageSize;\n this.config\n .load({ ...this._query })\n .then((result) => {\n if (this._totalCount != result.total) {\n this._cachedItems = new Array(result.total);\n this._totalCount = result.total;\n }\n this._items = result.items;\n this._cachedItems.splice(page * this.config.pageSize, this.config.pageSize, ...result.items);\n const event = {\n cachedItems: this.cachedItems,\n items: this.items,\n page: page,\n totalCount: this.totalCount,\n totalPages: this.totalPages,\n };\n this.onChanged.next(event);\n })\n .finally(() => {\n this.setLoadingState(false);\n });\n }\n async getItemsByFilter(filter) {\n return await this.config.load({ ...this.query, filter });\n }\n setLoadingState(value) {\n this._isLoading = value;\n this.onLoadingChanged.next(this._isLoading);\n }\n setPage(page) {\n if (this._page != page || this._items.length == 0) {\n this._page = page;\n this.load();\n }\n }\n setPageSize(pageSize) {\n this.config.pageSize = pageSize;\n this.load();\n }\n filter(value) {\n this._query.filter = value;\n }\n sort(...value) {\n this._query.sort = value;\n }\n clearFilter() {\n this._query.filter = null;\n }\n reset() {\n this._query.filter = null;\n this._query.sort = [];\n this._query.skip = 0;\n this._items = new Array(0);\n this._cachedItems = new Array(this.config.pageSize);\n this.fetchedPages.clear();\n this._page = 0;\n this._totalCount = 0;\n }\n refresh(options = { reset: true }) {\n const currentFilter = this._query.filter;\n const currentSort = this._query.sort;\n if (options.reset) {\n this.reset();\n }\n this._query.filter = currentFilter;\n this._query.sort = currentSort;\n this.load();\n }\n find(key) {\n const fromCache = this.cachedItems.find((c) => (!this.config.key && c == key) || (c && this.config.key && c[this.config.key] == key));\n if (fromCache)\n return fromCache;\n return this.config.byKey ? this.config.byKey(key) : null;\n }\n}\nexport function convertArrayToDataSource(items, options = { key: 'id', pageSize: 100 }) {\n // Normalize primitives to objects so consumers (e.g., select/list) can rely on\n // value and text fields without triggering extra byKey lookups.\n const normalizedItems = items.map((candidate) => {\n const isObjectItem = candidate != null && typeof candidate === 'object';\n if (isObjectItem) {\n return candidate;\n }\n // For primitive values, create an object with both key and text\n return { [options.key]: candidate, text: String(candidate ?? '') };\n });\n const config = {\n key: options.key,\n pageSize: options.pageSize,\n load: async (e) => {\n const itemsForFilter = normalizedItems;\n const resultNormalized = e.filter\n ? applyDataSourceQuery(itemsForFilter, e.filter)\n : itemsForFilter;\n const result = resultNormalized;\n return {\n items: result.slice(e.skip, e.skip + e.take),\n total: resultNormalized.length,\n };\n },\n byKey: async (v) => \n // Search in the normalized list (supports primitive and object arrays)\n normalizedItems.find((record) => {\n return record[options.key] == v;\n }),\n };\n return new AXDataSource(config);\n}\nexport function applyDataSourceQuery(items, filter) {\n if (!filter?.field || filter.value === undefined || filter.value === null) {\n return items; // No filter applied\n }\n return items.filter((item) => {\n const itemField = item[filter.field];\n if (typeof itemField === 'string' && typeof filter.value === 'string') {\n return itemField.toLowerCase().includes(filter.value.toLowerCase());\n }\n return false; // Return false if itemField isn't comparable\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YXNvdXJjZS5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jbGFzc2VzL2RhdGFzb3VyY2UuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1EL0IsTUFBTSxPQUFPLFlBQVk7SUFLdkIsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFHRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFHRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQU1ELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBU0QsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsWUFBWSxNQUE2QjtRQTVDekMsYUFBUSxHQUFHLElBQUksQ0FBQztRQUVSLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBa0JoQixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBS2pCLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNqQyxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsV0FBTSxHQUFzQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsSUFB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eHBvcnQgdHlwZSBBWERhdGFTb3VyY2VPcGVyYXRvciA9IHtcbiAgdHlwZTogJ2VxdWFsJyB8ICdpc051bGwnIHwgJ2lzRW1wdHknIHwgJ2x0JyB8ICdsdGUnIHwgJ2d0JyB8ICdndGUnIHwgJ3N0YXJ0c1dpdGgnIHwgJ2VuZHNXaXRoJyB8ICdjb250YWlucycgfCAnaW4nO1xuICBuZWdhdGl2ZT86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgQVhGaWx0ZXJMb2dpYyA9ICdhbmQnIHwgJ29yJztcbmV4cG9ydCB0eXBlIEFYU29ydE9yZGVyID0gJ2FzYycgfCAnZGVzYyc7XG5cbmV4cG9ydCB0eXBlIEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbiA9IHtcbiAgZmllbGQ/OiBzdHJpbmc7XG4gIHZhbHVlPzogdW5rbm93bjtcbiAgb3BlcmF0b3I/OiBBWERhdGFTb3VyY2VPcGVyYXRvcjtcbiAgbG9naWM/OiBBWEZpbHRlckxvZ2ljO1xuICBmaWx0ZXJzPzogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uW107XG59O1xuZXhwb3J0IHR5cGUgQVhEYXRhU291cmNlU29ydE9wdGlvbiA9IHsgZmllbGQ6IHN0cmluZzsgZGlyOiAnYXNjJyB8ICdkZXNjJyB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVNvdXJjZVF1ZXJ5IHtcbiAgdGFrZTogbnVtYmVyO1xuICBza2lwOiBudW1iZXI7XG4gIGZpbHRlcj86IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbjtcbiAgc29ydDogQVhEYXRhU291cmNlU29ydE9wdGlvbltdO1xufVxuZXhwb3J0IGludGVyZmFjZSBBWERhdGFTb3VyY2VDYWxsYmFja1Jlc3VsdDxUPiB7XG4gIGl0ZW1zOiBBcnJheTxUPjtcbiAgdG90YWw6IG51bWJlcjtcbn1cblxuZXhwb3J0IHR5cGUgQVhEYXRhU291cmNlTG9hZENhbGxiYWNrPFQ+ID0gKGU6IEFYRGF0YVNvdXJjZVF1ZXJ5KSA9PiBQcm9taXNlPEFYRGF0YVNvdXJjZUNhbGxiYWNrUmVzdWx0PFQ+PjtcbmV4cG9ydCB0eXBlIEFYRGF0YVNvdXJjZUJ5S2V5Q2FsbGJhY2s8VD4gPSAoa2V5OiB1bmtub3duKSA9PiBQcm9taXNlPFQ+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVNvdXJjZUNvbmZpZzxUID0gdW5rbm93bj4ge1xuICBrZXk/OiBzdHJpbmc7XG4gIHBhZ2VTaXplOiBudW1iZXI7XG4gIGxvYWQ6IEFYRGF0YVNvdXJjZUxvYWRDYWxsYmFjazxUPjtcbiAgYnlLZXk/OiBBWERhdGFTb3VyY2VCeUtleUNhbGxiYWNrPFQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYRGF0YVNvdXJjZUNoYW5nZWRFdmVudDxUID0gdW5rbm93bj4ge1xuICBjYWNoZWRJdGVtczogQXJyYXk8VD47XG4gIGl0ZW1zOiBBcnJheTxUPjtcbiAgdG90YWxDb3VudDogbnVtYmVyO1xuICB0b3RhbFBhZ2VzOiBudW1iZXI7XG4gIHBhZ2U6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQVhEYXRhU291cmNlSXRlbUV4cGFuZGVkRXZlbnQ8VCA9IHVua25vd24+IHtcbiAgZXhwYW5kZWRJdGVtOiBUO1xuICBjaGlsZHJlbjogQXJyYXk8VD47XG59XG5cbmV4cG9ydCBjbGFzcyBBWERhdGFTb3VyY2U8VCA9IHVua25vd24+IHtcbiAgY29uZmlnITogQVhEYXRhU291cmNlQ29uZmlnPFQ+O1xuICB1c2VDYWNoZSA9IHRydWU7XG5cbiAgcHJpdmF0ZSBfdG90YWxDb3VudCA9IDA7XG4gIHB1YmxpYyBnZXQgdG90YWxDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl90b3RhbENvdW50O1xuICB9XG5cbiAgcHVibGljIGdldCB0b3RhbFBhZ2VzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLnRvdGFsQ291bnQgLyB0aGlzLmNvbmZpZy5wYWdlU2l6ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhZ2VTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnBhZ2VTaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FjaGVkSXRlbXM6IFRbXTtcbiAgcHVibGljIGdldCBjYWNoZWRJdGVtcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9jYWNoZWRJdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgX2l0ZW1zOiBUW10gPSBbXTtcbiAgcHVibGljIGdldCBpdGVtcygpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hlZFBhZ2VzID0gbmV3IFNldDxudW1iZXI+KCk7XG4gIHByaXZhdGUgX3BhZ2UgPSAwO1xuICBwcml2YXRlIF9xdWVyeTogQVhEYXRhU291cmNlUXVlcnkgPSB7IHNraXA6IDAsIHRha2U6IDAsIHNvcnQ6IFtdIH07XG5cbiAgcHVibGljIGdldCBxdWVyeSgpOiBBWERhdGFTb3VyY2VRdWVyeSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXJ5O1xuICB9XG5cbiAgcHVibGljIG9uQ2hhbmdlZCA9IG5ldyBTdWJqZWN0PEFYRGF0YVNvdXJjZUNoYW5nZWRFdmVudDxUPj4oKTtcblxuICBwdWJsaWMgb25JdGVtRXhwYW5kZWQgPSBuZXcgU3ViamVjdDxBWERhdGFTb3VyY2VJdGVtRXhwYW5kZWRFdmVudDxUPj4oKTtcbiAgcHVibGljIG9uSXRlbVJlZnJlc2hDaGlsZHJlbiA9IG5ldyBTdWJqZWN0PHsgaWQ6IHN0cmluZyB9PigpO1xuXG4gIHB1YmxpYyBvbkxvYWRpbmdDaGFuZ2VkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcHJpdmF0ZSBfaXNMb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYRGF0YVNvdXJjZUNvbmZpZzxUPikge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuX2NhY2hlZEl0ZW1zID0gbmV3IEFycmF5KHRoaXMuY29uZmlnLnBhZ2VTaXplKTtcbiAgICB0aGlzLl9pdGVtcyA9IG5ldyBBcnJheSgwKTtcbiAgICB0aGlzLl9xdWVyeS50YWtlID0gdGhpcy5jb25maWcucGFnZVNpemU7XG4gIH1cblxuICBwcml2YXRlIGxvYWQoKSB7XG4gICAgY29uc3QgcGFnZSA9IHRoaXMuX3BhZ2U7XG4gICAgaWYgKHRoaXMuZmV0Y2hlZFBhZ2VzLmhhcyhwYWdlKSAmJiB0aGlzLnVzZUNhY2hlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2V0TG9hZGluZ1N0YXRlKHRydWUpO1xuICAgIHRoaXMuZmV0Y2hlZFBhZ2VzLmFkZChwYWdlKTtcbiAgICB0aGlzLl9xdWVyeS50YWtlID0gdGhpcy5jb25maWcucGFnZVNpemU7XG4gICAgdGhpcy5fcXVlcnkuc2tpcCA9IHBhZ2UgKiB0aGlzLmNvbmZpZy5wYWdlU2l6ZTtcbiAgICB0aGlzLmNvbmZpZ1xuICAgICAgLmxvYWQoeyAuLi50aGlzLl9xdWVyeSB9KVxuICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fdG90YWxDb3VudCAhPSByZXN1bHQudG90YWwpIHtcbiAgICAgICAgICB0aGlzLl9jYWNoZWRJdGVtcyA9IG5ldyBBcnJheShyZXN1bHQudG90YWwpO1xuICAgICAgICAgIHRoaXMuX3RvdGFsQ291bnQgPSByZXN1bHQudG90YWw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faXRlbXMgPSByZXN1bHQuaXRlbXM7XG4gICAgICAgIHRoaXMuX2NhY2hlZEl0ZW1zLnNwbGljZShwYWdlICogdGhpcy5jb25maWcucGFnZVNpemUsIHRoaXMuY29uZmlnLnBhZ2VTaXplLCAuLi5yZXN1bHQuaXRlbXMpO1xuICAgICAgICBjb25zdCBldmVudCA9IHtcbiAgICAgICAgICBjYWNoZWRJdGVtczogdGhpcy5jYWNoZWRJdGVtcyxcbiAgICAgICAgICBpdGVtczogdGhpcy5pdGVtcyxcbiAgICAgICAgICBwYWdlOiBwYWdlLFxuICAgICAgICAgIHRvdGFsQ291bnQ6IHRoaXMudG90YWxDb3VudCxcbiAgICAgICAgICB0b3RhbFBhZ2VzOiB0aGlzLnRvdGFsUGFnZXMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25DaGFuZ2VkLm5leHQoZXZlbnQpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRMb2FkaW5nU3RhdGUoZmFsc2UpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0SXRlbXNCeUZpbHRlcihmaWx0ZXI6IEFYRGF0YVNvdXJjZUZpbHRlck9wdGlvbikge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNvbmZpZy5sb2FkKHsgLi4udGhpcy5xdWVyeSwgZmlsdGVyIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMb2FkaW5nU3RhdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0xvYWRpbmcgPSB2YWx1ZTtcbiAgICB0aGlzLm9uTG9hZGluZ0NoYW5nZWQubmV4dCh0aGlzLl9pc0xvYWRpbmcpO1xuICB9XG5cbiAgcHVibGljIHNldFBhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuX3BhZ2UgIT0gcGFnZSB8fCB0aGlzLl9pdGVtcy5sZW5ndGggPT0gMCkge1xuICAgICAgdGhpcy5fcGFnZSA9IHBhZ2U7XG4gICAgICB0aGlzLmxvYWQoKTtcbiAgICB9XG4gIH1cbiAgcHVibGljIHNldFBhZ2VTaXplKHBhZ2VTaXplOiBudW1iZXIpIHtcbiAgICB0aGlzLmNvbmZpZy5wYWdlU2l6ZSA9IHBhZ2VTaXplO1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgcHVibGljIGZpbHRlcih2YWx1ZTogQVhEYXRhU291cmNlRmlsdGVyT3B0aW9uKSB7XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVyID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgc29ydCguLi52YWx1ZTogQVhEYXRhU291cmNlU29ydE9wdGlvbltdKSB7XG4gICAgdGhpcy5fcXVlcnkuc29ydCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRmlsdGVyKCkge1xuICAgIHRoaXMuX3F1ZXJ5LmZpbHRlciA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVyID0gbnVsbDtcbiAgICB0aGlzLl9xdWVyeS5zb3J0ID0gW107XG4gICAgdGhpcy5fcXVlcnkuc2tpcCA9IDA7XG4gICAgdGhpcy5faXRlbXMgPSBuZXcgQXJyYXkoMCk7XG4gICAgdGhpcy5fY2FjaGVkSXRlbXMgPSBuZXcgQXJyYXkodGhpcy5jb25maWcucGFnZVNpemUpO1xuICAgIHRoaXMuZmV0Y2hlZFBhZ2VzLmNsZWFyKCk7XG4gICAgdGhpcy5fcGFnZSA9IDA7XG4gICAgdGhpcy5fdG90YWxDb3VudCA9IDA7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaChvcHRpb25zOiB7IHJlc2V0PzogYm9vbGVhbiB9ID0geyByZXNldDogdHJ1ZSB9KSB7XG4gICAgY29uc3QgY3VycmVudEZpbHRlciA9IHRoaXMuX3F1ZXJ5LmZpbHRlcjtcbiAgICBjb25zdCBjdXJyZW50U29ydCA9IHRoaXMuX3F1ZXJ5LnNvcnQ7XG4gICAgaWYgKG9wdGlvbnMucmVzZXQpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG4gICAgdGhpcy5fcXVlcnkuZmlsdGVyID0gY3VycmVudEZpbHRlcjtcbiAgICB0aGlzLl9xdWVyeS5zb3J0ID0gY3VycmVudFNvcnQ7XG4gICAgdGhpcy5sb2FkKCk7XG4gIH1cblxuICBmaW5kKGtleTogdW5rbm93bik6IFQgfCBQcm9taXNlPFQ+IHtcbiAgICBjb25zdCBmcm9tQ2FjaGUgPSB0aGlzLmNhY2hlZEl0ZW1zLmZpbmQoXG4gICAgICAoYykgPT4gKCF0aGlzLmNvbmZpZy5rZXkgJiYgYyA9PSBrZXkpIHx8IChjICYmIHRoaXMuY29uZmlnLmtleSAmJiBjW3RoaXMuY29uZmlnLmtleV0gPT0ga2V5KSxcbiAgICApO1xuICAgIGlmIChmcm9tQ2FjaGUpIHJldHVybiBmcm9tQ2FjaGU7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmJ5S2V5ID8gdGhpcy5jb25maWcuYnlLZXkoa2V5KSA6IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRBcnJheVRvRGF0YVNvdXJjZTxUID0gdW5rbm93bj4oXG4gIGl0ZW1zOiBUW10sXG4gIG9wdGlvbnM6IHsga2V5OiBzdHJpbmc7IHBhZ2VTaXplOiBudW1iZXIgfSA9IHsga2V5OiAnaWQnLCBwYWdlU2l6ZTogMTAwIH0sXG4pOiBBWERhdGFTb3VyY2U8VD4ge1xuICAvLyBOb3JtYWxpemUgcHJpbWl0aXZlcyB0byBvYmplY3RzIHNvIGNvbnN1bWVycyAoZS5nLiwgc2VsZWN0L2xpc3QpIGNhbiByZWx5IG9uXG4gIC8vIHZhbHVlIGFuZCB0ZXh0IGZpZWxkcyB3aXRob3V0IHRyaWdnZXJpbmcgZXh0cmEgYnlLZXkgbG9va3Vwcy5cbiAgY29uc3Qgbm9ybWFsaXplZEl0ZW1zOiBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSAoaXRlbXMgYXMgQXJyYXk8dW5rbm93bj4pLm1hcCgoY2FuZGlkYXRlKSA9PiB7XG4gICAgY29uc3QgaXNPYmplY3RJdGVtID0gY2FuZGlkYXRlICE9IG51bGwgJiYgdHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ29iamVjdCc7XG4gICAgaWYgKGlzT2JqZWN0SXRlbSkge1xuICAgICAgcmV0dXJuIGNhbmRpZGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICB9XG4gICAgLy8gRm9yIHByaW1pdGl2ZSB2YWx1ZXMsIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aCBib3RoIGtleSBhbmQgdGV4dFxuICAgIHJldHVybiB7IFtvcHRpb25zLmtleV06IGNhbmRpZGF0ZSBhcyB1bmtub3duLCB0ZXh0OiBTdHJpbmcoY2FuZGlkYXRlID8/ICcnKSB9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTtcblxuICBjb25zdCBjb25maWc6IEFYRGF0YVNvdXJjZUNvbmZpZzxUPiA9IHtcbiAgICBrZXk6IG9wdGlvbnMua2V5LFxuICAgIHBhZ2VTaXplOiBvcHRpb25zLnBhZ2VTaXplLFxuICAgIGxvYWQ6IGFzeW5jIChlOiBBWERhdGFTb3VyY2VRdWVyeSkgPT4ge1xuICAgICAgY29uc3QgaXRlbXNGb3JGaWx0ZXI6IEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9IG5vcm1hbGl6ZWRJdGVtcztcbiAgICAgIGNvbnN0IHJlc3VsdE5vcm1hbGl6ZWQgPSBlLmZpbHRlclxuICAgICAgICA/IGFwcGx5RGF0YVNvdXJjZVF1ZXJ5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PihpdGVtc0ZvckZpbHRlciwgZS5maWx0ZXIpXG4gICAgICAgIDogaXRlbXNGb3JGaWx0ZXI7XG4gICAgICBjb25zdCByZXN1bHQgPSByZXN1bHROb3JtYWxpemVkIGFzIHVua25vd24gYXMgVFtdO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHJlc3VsdC5zbGljZShlLnNraXAsIGUuc2tpcCArIGUudGFrZSksXG4gICAgICAgIHRvdGFsOiByZXN1bHROb3JtYWxpemVkLmxlbmd0aCxcbiAgICAgIH07XG4gICAgfSxcbiAgICBieUtleTogYXN5bmMgKHY6IHVua25vd24pID0+XG4gICAgICAvLyBTZWFyY2ggaW4gdGhlIG5vcm1hbGl6ZWQgbGlzdCAoc3VwcG9ydHMgcHJpbWl0aXZlIGFuZCBvYmplY3QgYXJyYXlzKVxuICAgICAgKG5vcm1hbGl6ZWRJdGVtcyBhcyBBcnJheTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4pLmZpbmQoKHJlY29yZCkgPT4ge1xuICAgICAgICByZXR1cm4gcmVjb3JkW29wdGlvbnMua2V5XSA9PSB2O1xuICAgICAgfSkgYXMgdW5rbm93biBhcyBULFxuICB9O1xuXG5cbiAgcmV0dXJuIG5ldyBBWERhdGFTb3VyY2UoY29uZmlnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5RGF0YVNvdXJjZVF1ZXJ5PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oaXRlbXM6IFRbXSwgZmlsdGVyOiBBWERhdGFTb3VyY2VGaWx0ZXJPcHRpb24pOiBUW10ge1xuICBpZiAoIWZpbHRlcj8uZmllbGQgfHwgZmlsdGVyLnZhbHVlID09PSB1bmRlZmluZWQgfHwgZmlsdGVyLnZhbHVlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGl0ZW1zOyAvLyBObyBmaWx0ZXIgYXBwbGllZFxuICB9XG5cbiAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4ge1xuICAgIGNvbnN0IGl0ZW1GaWVsZCA9IGl0ZW1bZmlsdGVyLmZpZWxkXSBhcyBzdHJpbmc7XG5cbiAgICBpZiAodHlwZW9mIGl0ZW1GaWVsZCA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIGZpbHRlci52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBpdGVtRmllbGQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXIudmFsdWUudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlOyAvLyBSZXR1cm4gZmFsc2UgaWYgaXRlbUZpZWxkIGlzbid0IGNvbXBhcmFibGVcbiAgfSk7XG59XG4iXX0=","export const AX_STYLE_COLOR_TYPES = [\n 'primary',\n 'secondary',\n 'success',\n 'warning',\n 'danger',\n 'default',\n];\nexport const AX_STYLE_LOOK_TYPES = ['solid', 'blank', 'outline', 'twotone', 'flat', 'fill', 'none'];\nexport const AX_LOCATIONS = [\n 'bottom-start',\n 'bottom-center',\n 'bottom-end',\n 'top-start',\n 'top-center',\n 'top-end',\n 'center-end',\n 'center-start',\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NsYXNzZXMvc3R5bGVzLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUF1QjtJQUN0RCxTQUFTO0lBQ1QsV0FBVztJQUNYLFNBQVM7SUFDVCxTQUFTO0lBQ1QsUUFBUTtJQUNSLFNBQVM7Q0FDVixDQUFDO0FBR0YsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQXNCLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFjdkgsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFpQjtJQUN4QyxjQUFjO0lBQ2QsZUFBZTtJQUNmLFlBQVk7SUFDWixXQUFXO0lBQ1gsWUFBWTtJQUNaLFNBQVM7SUFDVCxZQUFZO0lBQ1osY0FBYztDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdG9rZW4gdGhhdCBzcGVjaWZpZXMgdGhlICBjb2xvciBzdHlsZSBvZiBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIEFYU3R5bGVDb2xvclR5cGUgPSAncHJpbWFyeScgfCAnc2Vjb25kYXJ5JyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInIHwgJ2RlZmF1bHQnO1xuZXhwb3J0IGNvbnN0IEFYX1NUWUxFX0NPTE9SX1RZUEVTOiBBWFN0eWxlQ29sb3JUeXBlW10gPSBbXG4gICdwcmltYXJ5JyxcbiAgJ3NlY29uZGFyeScsXG4gICdzdWNjZXNzJyxcbiAgJ3dhcm5pbmcnLFxuICAnZGFuZ2VyJyxcbiAgJ2RlZmF1bHQnLFxuXTtcblxuZXhwb3J0IHR5cGUgQVhTdHlsZUxvb2tUeXBlID0gJ3NvbGlkJyB8ICdibGFuaycgfCAnb3V0bGluZScgfCAndHdvdG9uZScgfCAnZmxhdCcgfCAnZmlsbCcgfCAnbGluaycgfCAnbm9uZSc7XG5leHBvcnQgY29uc3QgQVhfU1RZTEVfTE9PS19UWVBFUzogQVhTdHlsZUxvb2tUeXBlW10gPSBbJ3NvbGlkJywgJ2JsYW5rJywgJ291dGxpbmUnLCAndHdvdG9uZScsICdmbGF0JywgJ2ZpbGwnLCAnbm9uZSddO1xuXG5leHBvcnQgdHlwZSBBWFNpemVUeXBlID0gJ3hzJyB8ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCc7XG5leHBvcnQgdHlwZSBBWFN0eWxlU2l6ZVR5cGUgPSBgYXgtJHtBWFNpemVUeXBlfWA7XG5cbmV4cG9ydCB0eXBlIEFYTG9jYXRpb24gPVxuICB8ICdib3R0b20tc3RhcnQnXG4gIHwgJ2JvdHRvbS1jZW50ZXInXG4gIHwgJ2JvdHRvbS1lbmQnXG4gIHwgJ3RvcC1zdGFydCdcbiAgfCAndG9wLWNlbnRlcidcbiAgfCAndG9wLWVuZCdcbiAgfCAnY2VudGVyLWVuZCdcbiAgfCAnY2VudGVyLXN0YXJ0JztcbmV4cG9ydCBjb25zdCBBWF9MT0NBVElPTlM6IEFYTG9jYXRpb25bXSA9IFtcbiAgJ2JvdHRvbS1zdGFydCcsXG4gICdib3R0b20tY2VudGVyJyxcbiAgJ2JvdHRvbS1lbmQnLFxuICAndG9wLXN0YXJ0JyxcbiAgJ3RvcC1jZW50ZXInLFxuICAndG9wLWVuZCcsXG4gICdjZW50ZXItZW5kJyxcbiAgJ2NlbnRlci1zdGFydCcsXG5dO1xuXG5leHBvcnQgdHlwZSBBWFN1cmZhY2VUeXBlID0gJ2xpZ2h0ZXN0JyB8ICdsaWdodGVyJyB8ICdsaWdodCcgfCAnc3VyZmFjZScgfCAnZGFyaycgfCAnZGFya2VyJyB8ICdkYXJrZXN0JztcbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, DOCUMENT, ElementRef, inject, Input, PLATFORM_ID, Renderer2 } from '@angular/core';\nimport { AXFocusableComponent } from '../classes/components.class';\nimport * as i0 from \"@angular/core\";\nexport class AXAutoFocusDirective {\n constructor() {\n this.renderer = inject(Renderer2);\n this.el = inject(ElementRef);\n this._host = inject(AXFocusableComponent, { host: true, self: true, optional: true });\n this.autoFocus = true;\n this.time = 50;\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n }\n ngAfterViewInit() {\n this.doFocus();\n }\n doFocus() {\n if (this.autoFocus) {\n if (this._host) {\n setTimeout(() => {\n this._host.focus();\n }, this.time);\n return;\n }\n const list = ['button', 'input', '[href]', 'select', 'textarea', '[tabindex]'].map((c) => c + ':not([tabindex=\"-1\"])');\n const focusable = this.el.nativeElement.querySelector(list.join(', ')) ?? this.el.nativeElement;\n if (isPlatformBrowser(this.platformID)) {\n const attr = this.document.createAttribute('autofocus');\n focusable.setAttributeNode(attr);\n }\n const hasTabindex = focusable.hasAttribute('tabindex');\n if (!hasTabindex) {\n focusable.setAttribute('tabindex', '0');\n }\n setTimeout(() => {\n focusable.focus();\n }, this.time);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXAutoFocusDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: AXAutoFocusDirective, isStandalone: true, selector: \"[axAutoFocus]\", inputs: { autoFocus: [\"axAutoFocus\", \"autoFocus\"], time: [\"axAutoFocusTime\", \"time\"] }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXAutoFocusDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axAutoFocus]' }]\n }], propDecorators: { autoFocus: [{\n type: Input,\n args: ['axAutoFocus']\n }], time: [{\n type: Input,\n args: ['axAutoFocusTime']\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1mb2N1cy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvZGlyZWN0aXZlcy9hdXRvLWZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBQWlCLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7QUFHbkUsTUFBTSxPQUFPLG9CQUFvQjtJQURqQztRQUVVLGFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0IsT0FBRSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDekQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUcxRSxjQUFTLEdBQWEsSUFBSSxDQUFDO1FBR2xDLFNBQUksR0FBRyxFQUFFLENBQUM7UUFFRixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7S0FpQzFDO0lBL0JDLGVBQWU7UUFDYixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVTLE9BQU87UUFDZixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3JCLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2QsT0FBTztZQUNULENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsR0FBRyxDQUNoRixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUNuQyxDQUFDO1lBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztZQUU3RyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLENBQUM7WUFDRCxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BCLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7K0dBNUNVLG9CQUFvQjttR0FBcEIsb0JBQW9COzs0RkFBcEIsb0JBQW9CO2tCQURoQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRTs7c0JBTXJDLEtBQUs7dUJBQUMsYUFBYTs7c0JBR25CLEtBQUs7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBET0NVTUVOVCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgUExBVEZPUk1fSUQsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGb2N1c2FibGVDb21wb25lbnQgfSBmcm9tICcuLi9jbGFzc2VzL2NvbXBvbmVudHMuY2xhc3MnO1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbYXhBdXRvRm9jdXNdJyB9KVxuZXhwb3J0IGNsYXNzIEFYQXV0b0ZvY3VzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIF9ob3N0ID0gaW5qZWN0KEFYRm9jdXNhYmxlQ29tcG9uZW50LCB7IGhvc3Q6IHRydWUsIHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIEBJbnB1dCgnYXhBdXRvRm9jdXMnKVxuICBwdWJsaWMgYXV0b0ZvY3VzPzogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KCdheEF1dG9Gb2N1c1RpbWUnKVxuICB0aW1lID0gNTA7XG5cbiAgcHJpdmF0ZSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZG9Gb2N1cygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGRvRm9jdXMoKSB7XG4gICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XG4gICAgICBpZiAodGhpcy5faG9zdCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9ob3N0LmZvY3VzKCk7XG4gICAgICAgIH0sIHRoaXMudGltZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpc3QgPSBbJ2J1dHRvbicsICdpbnB1dCcsICdbaHJlZl0nLCAnc2VsZWN0JywgJ3RleHRhcmVhJywgJ1t0YWJpbmRleF0nXS5tYXAoXG4gICAgICAgIChjKSA9PiBjICsgJzpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihsaXN0LmpvaW4oJywgJykpID8/IHRoaXMuZWwubmF0aXZlRWxlbWVudDtcblxuICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgICAgY29uc3QgYXR0ciA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKCdhdXRvZm9jdXMnKTtcbiAgICAgICAgZm9jdXNhYmxlLnNldEF0dHJpYnV0ZU5vZGUoYXR0cik7XG4gICAgICB9XG4gICAgICBjb25zdCBoYXNUYWJpbmRleCA9IGZvY3VzYWJsZS5oYXNBdHRyaWJ1dGUoJ3RhYmluZGV4Jyk7XG4gICAgICBpZiAoIWhhc1RhYmluZGV4KSB7XG4gICAgICAgIGZvY3VzYWJsZS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTtcbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBmb2N1c2FibGUuZm9jdXMoKTtcbiAgICAgIH0sIHRoaXMudGltZSk7XG4gICAgfVxuICB9XG59XG4iXX0=","import { DOCUMENT, inject, Injectable } from '@angular/core';\nimport { EventManager } from '@angular/platform-browser';\nimport { Observable } from 'rxjs/internal/Observable';\nimport * as i0 from \"@angular/core\";\nexport class AXHotkeysService {\n constructor() {\n this.eventManager = inject(EventManager);\n this.document = inject(DOCUMENT);\n this.defaults = {\n element: this.document,\n };\n }\n /**\n * Add shortcut\n *\n *\n * @param options\n * @returns Observable\n *\n */\n addShortcut(options) {\n const merged = { ...this.defaults, ...options };\n const event = `keydown.${merged.keys}`;\n return new Observable((observer) => {\n const handler = (e) => {\n e.preventDefault();\n observer.next(e);\n };\n if (merged.element) {\n // Todo: check addEventListener is not function\n const dispose = this.eventManager.addEventListener(merged.element, event, handler);\n return () => {\n dispose();\n };\n }\n else {\n return null;\n }\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXHotkeysService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXHotkeysService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXHotkeysService, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvc2VydmljZXMvaG90a2V5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBY3RELE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFVSxpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVwQyxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBDLGFBQVEsR0FBcUI7WUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3ZCLENBQUM7S0E4Qkg7SUE1QkM7Ozs7Ozs7T0FPRztJQUNILFdBQVcsQ0FBQyxPQUF5QjtRQUNuQyxNQUFNLE1BQU0sR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1FBQ2hELE1BQU0sS0FBSyxHQUFHLFdBQVcsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNqQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQVUsRUFBRSxFQUFFO2dCQUM3QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkIsQ0FBQyxDQUFDO1lBQ0YsSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25CLCtDQUErQztnQkFFL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxHQUFHLEVBQUU7b0JBQ1YsT0FBTyxFQUFFLENBQUM7Z0JBQ1osQ0FBQyxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FwQ1UsZ0JBQWdCO21IQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFdmVudE1hbmFnZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL2ludGVybmFsL09ic2VydmFibGUnO1xuXG50eXBlIE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBlbGVtZW50IC0gQW4gaHRtbCBlbGVtZW50XG4gICAqL1xuICBlbGVtZW50OiBhbnk7XG4gIC8qKlxuICAgKiBrZXlzIC0gc3RyaW5nIG9mIGtleXMgbGlrZSAoQ29udHJvbC5mKVxuICAgKi9cbiAga2V5czogc3RyaW5nO1xufTtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYSG90a2V5c1NlcnZpY2Uge1xuICBwcml2YXRlIGV2ZW50TWFuYWdlciA9IGluamVjdChFdmVudE1hbmFnZXIpO1xuXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIGRlZmF1bHRzOiBQYXJ0aWFsPE9wdGlvbnM+ID0ge1xuICAgIGVsZW1lbnQ6IHRoaXMuZG9jdW1lbnQsXG4gIH07XG5cbiAgLyoqXG4gICAqIEFkZCBzaG9ydGN1dFxuICAgKlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9uc1xuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlXG4gICAqXG4gICAqL1xuICBhZGRTaG9ydGN1dChvcHRpb25zOiBQYXJ0aWFsPE9wdGlvbnM+KSB7XG4gICAgY29uc3QgbWVyZ2VkID0geyAuLi50aGlzLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gICAgY29uc3QgZXZlbnQgPSBga2V5ZG93bi4ke21lcmdlZC5rZXlzfWA7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgaGFuZGxlciA9IChlOiBVSUV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChlKTtcbiAgICAgIH07XG4gICAgICBpZiAobWVyZ2VkLmVsZW1lbnQpIHtcbiAgICAgICAgLy8gVG9kbzogY2hlY2sgYWRkRXZlbnRMaXN0ZW5lciBpcyBub3QgZnVuY3Rpb25cblxuICAgICAgICBjb25zdCBkaXNwb3NlID0gdGhpcy5ldmVudE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihtZXJnZWQuZWxlbWVudCwgZXZlbnQsIGhhbmRsZXIpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgIGRpc3Bvc2UoKTtcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport { AXComponent } from '../classes/components.class';\nimport { AXHotkeysService } from '../services/hotkey.service';\nimport * as i0 from \"@angular/core\";\nexport class AXHotkeyDirective {\n constructor() {\n this.el = inject(ElementRef);\n this._host = inject(AXComponent, { host: true, self: true, optional: true });\n this.hs = inject(AXHotkeysService);\n this.axHotkey = '';\n this._subs = [];\n }\n ngAfterViewInit() {\n if (!this.axHotkey || !this._host)\n return;\n if (typeof this.axHotkey == 'string') {\n this._addDefaultAction(this.axHotkey);\n }\n else if (typeof this.axHotkey == 'object' && !Array.isArray(this.axHotkey)) {\n this._addHotKeyAction([this.axHotkey]);\n }\n else if (Array.isArray(this.axHotkey)) {\n this._addHotKeyAction(this.axHotkey);\n }\n }\n _addDefaultAction(hotkey) {\n this._subs.push(this.hs.addShortcut({ keys: hotkey }).subscribe(() => {\n ['click', 'toggle', 'open', 'focus'].forEach((a) => {\n if (this._host[a]) {\n this._host[a]();\n return;\n }\n });\n }));\n }\n _addHotKeyAction(hotkeys) {\n hotkeys.forEach((k) => {\n const hotkey = Object.entries(k)[0][0];\n const action = Object.entries(k)[0][1];\n if (!action)\n this._addDefaultAction(hotkey);\n else {\n this._subs.push(this.hs.addShortcut({ keys: hotkey }).subscribe(() => {\n if (typeof action == 'string' && this._host[action]) {\n this._host[action]();\n return;\n }\n if (typeof action == 'function') {\n action();\n return;\n }\n }));\n }\n });\n }\n ngOnDestroy() {\n this._subs.forEach((s) => {\n s.unsubscribe();\n });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXHotkeyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: AXHotkeyDirective, isStandalone: true, selector: \"[axHotkey]\", inputs: { axHotkey: \"axHotkey\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXHotkeyDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axHotkey]' }]\n }], propDecorators: { axHotkey: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG90a2V5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2hvdGtleS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUs5RCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRVUsT0FBRSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDekQsVUFBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsT0FBRSxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRy9CLGFBQVEsR0FBK0MsRUFBRSxDQUFDO1FBRXpELFVBQUssR0FBbUIsRUFBRSxDQUFDO0tBc0RwQztJQXBEQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFMUMsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxDQUFDO2FBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM3RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBMEIsQ0FBQyxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsTUFBYztRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDYixJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkQsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDakQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDaEIsT0FBTztnQkFDVCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGdCQUFnQixDQUFDLE9BQXlCO1FBQ2hELE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNwQixNQUFNLE1BQU0sR0FBYSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBWSxDQUFDO1lBQzVELE1BQU0sTUFBTSxHQUFZLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLE1BQU07Z0JBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN2QyxDQUFDO2dCQUNKLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtvQkFDbkQsSUFBSSxPQUFPLE1BQU0sSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO3dCQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7d0JBQ3JCLE9BQU87b0JBQ1QsQ0FBQztvQkFDRCxJQUFJLE9BQU8sTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO3dCQUNoQyxNQUFNLEVBQUUsQ0FBQzt3QkFDVCxPQUFPO29CQUNULENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN2QixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTdEVSxpQkFBaUI7bUdBQWpCLGlCQUFpQjs7NEZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUU7O3NCQU1sQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEFYQ29tcG9uZW50IH0gZnJvbSAnLi4vY2xhc3Nlcy9jb21wb25lbnRzLmNsYXNzJztcbmltcG9ydCB7IEFYSG90a2V5c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9ob3RrZXkuc2VydmljZSc7XG5cbmV4cG9ydCB0eXBlIEFYSG90S2V5QWN0aW9uID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBGdW5jdGlvbjsgcGFybWFzPzogYW55IH07XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theEhvdGtleV0nIH0pXG5leHBvcnQgY2xhc3MgQVhIb3RrZXlEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIF9ob3N0ID0gaW5qZWN0KEFYQ29tcG9uZW50LCB7IGhvc3Q6IHRydWUsIHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGhzID0gaW5qZWN0KEFYSG90a2V5c1NlcnZpY2UpO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBheEhvdGtleTogc3RyaW5nIHwgQVhIb3RLZXlBY3Rpb24gfCBBWEhvdEtleUFjdGlvbltdID0gJyc7XG5cbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmF4SG90a2V5IHx8ICF0aGlzLl9ob3N0KSByZXR1cm47XG5cbiAgICBpZiAodHlwZW9mIHRoaXMuYXhIb3RrZXkgPT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2FkZERlZmF1bHRBY3Rpb24odGhpcy5heEhvdGtleSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5heEhvdGtleSA9PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh0aGlzLmF4SG90a2V5KSkge1xuICAgICAgdGhpcy5fYWRkSG90S2V5QWN0aW9uKFt0aGlzLmF4SG90a2V5IGFzIEFYSG90S2V5QWN0aW9uXSk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuYXhIb3RrZXkpKSB7XG4gICAgICB0aGlzLl9hZGRIb3RLZXlBY3Rpb24odGhpcy5heEhvdGtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYWRkRGVmYXVsdEFjdGlvbihob3RrZXk6IHN0cmluZykge1xuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuaHMuYWRkU2hvcnRjdXQoeyBrZXlzOiBob3RrZXkgfSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgWydjbGljaycsICd0b2dnbGUnLCAnb3BlbicsICdmb2N1cyddLmZvckVhY2goKGEpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5faG9zdFthXSkge1xuICAgICAgICAgICAgdGhpcy5faG9zdFthXSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkSG90S2V5QWN0aW9uKGhvdGtleXM6IEFYSG90S2V5QWN0aW9uW10pIHtcbiAgICBob3RrZXlzLmZvckVhY2goKGspID0+IHtcbiAgICAgIGNvbnN0IGhvdGtleSA9ICg8dW5rbm93bj5PYmplY3QuZW50cmllcyhrKVswXVswXSkgYXMgc3RyaW5nO1xuICAgICAgY29uc3QgYWN0aW9uID0gPHVua25vd24+T2JqZWN0LmVudHJpZXMoaylbMF1bMV07XG4gICAgICBpZiAoIWFjdGlvbikgdGhpcy5fYWRkRGVmYXVsdEFjdGlvbihob3RrZXkpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgICAgICB0aGlzLmhzLmFkZFNob3J0Y3V0KHsga2V5czogaG90a2V5IH0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGFjdGlvbiA9PSAnc3RyaW5nJyAmJiB0aGlzLl9ob3N0W2FjdGlvbl0pIHtcbiAgICAgICAgICAgICAgdGhpcy5faG9zdFthY3Rpb25dKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uID09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgYWN0aW9uKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaCgocykgPT4ge1xuICAgICAgcy51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=","import { Directive, ElementRef, Input, inject } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { exhaustMap, filter, map, pairwise, startWith } from 'rxjs/operators';\nimport * as i0 from \"@angular/core\";\nconst AX_DEFAULT_SCROLL_POSITION = {\n scrollHeight: 0,\n scrollTop: 0,\n clientHeight: 0,\n};\nexport class AXInfiniteScrollerDirective {\n constructor() {\n this.elm = inject(ElementRef);\n this.scrollPercent = 70;\n this.isUserScrollingDown = (positions) => {\n return positions[0].sT < positions[1].sT;\n };\n this.isScrollExpectedPercent = (position) => {\n return (position.sT + position.cH) / position.sH > this.scrollPercent / 100;\n };\n }\n ngAfterViewInit() {\n this.registerScrollEvent();\n this.streamScrollEvents();\n this.requestCallbackOnScroll();\n }\n registerScrollEvent() {\n this.scrollEvent$ = fromEvent(this.elm.nativeElement, 'scroll');\n }\n streamScrollEvents() {\n this.userScrolledDown$ = this.scrollEvent$.pipe(map((e) => ({\n scrollHeight: e.target.scrollHeight,\n scrollTop: e.target.scrollTop,\n clientHeight: e.target.clientHeight,\n })), pairwise(), filter((positions) => this.isUserScrollingDown(positions) && this.isScrollExpectedPercent(positions[1])));\n }\n requestCallbackOnScroll() {\n this.requestOnScroll$ = this.userScrolledDown$;\n if (this.immediateCallback) {\n this.requestOnScroll$ = this.requestOnScroll$.pipe(startWith([AX_DEFAULT_SCROLL_POSITION, AX_DEFAULT_SCROLL_POSITION]));\n }\n this.requestOnScroll$.pipe(exhaustMap(() => {\n return this.scrollCallback();\n }));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXInfiniteScrollerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: AXInfiniteScrollerDirective, isStandalone: true, selector: \"[axInfiniteScroller]\", inputs: { scrollCallback: \"scrollCallback\", immediateCallback: \"immediateCallback\", scrollPercent: \"scrollPercent\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXInfiniteScrollerDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axInfiniteScroller]' }]\n }], propDecorators: { scrollCallback: [{\n type: Input\n }], immediateCallback: [{\n type: Input\n }], scrollPercent: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5maW5pdGUtc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2luZmluaXRlLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVE5RSxNQUFNLDBCQUEwQixHQUFxQjtJQUNuRCxZQUFZLEVBQUUsQ0FBQztJQUNmLFNBQVMsRUFBRSxDQUFDO0lBQ1osWUFBWSxFQUFFLENBQUM7Q0FDaEIsQ0FBQztBQUdGLE1BQU0sT0FBTywyQkFBMkI7SUFEeEM7UUFFVSxRQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBZWpDLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBNENYLHdCQUFtQixHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDMUMsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDO1FBRU0sNEJBQXVCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM3QyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQztRQUM5RSxDQUFDLENBQUM7S0FDSDtJQWpEQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFM0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFMUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDN0MsR0FBRyxDQUNELENBQUMsQ0FBTSxFQUFvQixFQUFFLENBQUMsQ0FBQztZQUM3QixZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ25DLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDN0IsWUFBWSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtTQUNwQyxDQUFDLENBQ0gsRUFDRCxRQUFRLEVBQUUsRUFDVixNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDekcsQ0FBQztJQUNKLENBQUM7SUFFTyx1QkFBdUI7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUUvQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNoRCxTQUFTLENBQUMsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDLENBQ3BFLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FDeEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQTFEVSwyQkFBMkI7bUdBQTNCLDJCQUEyQjs7NEZBQTNCLDJCQUEyQjtrQkFEdkMsU0FBUzttQkFBQyxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRTs7c0JBVTVDLEtBQUs7O3NCQUdMLEtBQUs7O3NCQUdMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIElucHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZXhoYXVzdE1hcCwgZmlsdGVyLCBtYXAsIHBhaXJ3aXNlLCBzdGFydFdpdGggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhTY3JvbGxQb3NpdGlvbiB7XG4gIHNjcm9sbEhlaWdodDogbnVtYmVyO1xuICBzY3JvbGxUb3A6IG51bWJlcjtcbiAgY2xpZW50SGVpZ2h0OiBudW1iZXI7XG59XG5cbmNvbnN0IEFYX0RFRkFVTFRfU0NST0xMX1BPU0lUSU9OOiBBWFNjcm9sbFBvc2l0aW9uID0ge1xuICBzY3JvbGxIZWlnaHQ6IDAsXG4gIHNjcm9sbFRvcDogMCxcbiAgY2xpZW50SGVpZ2h0OiAwLFxufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2F4SW5maW5pdGVTY3JvbGxlcl0nIH0pXG5leHBvcnQgY2xhc3MgQVhJbmZpbml0ZVNjcm9sbGVyRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIHByaXZhdGUgZWxtID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgc2Nyb2xsRXZlbnQkOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgcHJpdmF0ZSB1c2VyU2Nyb2xsZWREb3duJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIHByaXZhdGUgcmVxdWVzdE9uU2Nyb2xsJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gIEBJbnB1dCgpXG4gIHNjcm9sbENhbGxiYWNrOiBGdW5jdGlvbjtcblxuICBASW5wdXQoKVxuICBpbW1lZGlhdGVDYWxsYmFjaztcblxuICBASW5wdXQoKVxuICBzY3JvbGxQZXJjZW50ID0gNzA7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVnaXN0ZXJTY3JvbGxFdmVudCgpO1xuXG4gICAgdGhpcy5zdHJlYW1TY3JvbGxFdmVudHMoKTtcblxuICAgIHRoaXMucmVxdWVzdENhbGxiYWNrT25TY3JvbGwoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVnaXN0ZXJTY3JvbGxFdmVudCgpIHtcbiAgICB0aGlzLnNjcm9sbEV2ZW50JCA9IGZyb21FdmVudCh0aGlzLmVsbS5uYXRpdmVFbGVtZW50LCAnc2Nyb2xsJyk7XG4gIH1cblxuICBwcml2YXRlIHN0cmVhbVNjcm9sbEV2ZW50cygpIHtcbiAgICB0aGlzLnVzZXJTY3JvbGxlZERvd24kID0gdGhpcy5zY3JvbGxFdmVudCQucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKGU6IGFueSk6IEFYU2Nyb2xsUG9zaXRpb24gPT4gKHtcbiAgICAgICAgICBzY3JvbGxIZWlnaHQ6IGUudGFyZ2V0LnNjcm9sbEhlaWdodCxcbiAgICAgICAgICBzY3JvbGxUb3A6IGUudGFyZ2V0LnNjcm9sbFRvcCxcbiAgICAgICAgICBjbGllbnRIZWlnaHQ6IGUudGFyZ2V0LmNsaWVudEhlaWdodCxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgcGFpcndpc2UoKSxcbiAgICAgIGZpbHRlcigocG9zaXRpb25zKSA9PiB0aGlzLmlzVXNlclNjcm9sbGluZ0Rvd24ocG9zaXRpb25zKSAmJiB0aGlzLmlzU2Nyb2xsRXhwZWN0ZWRQZXJjZW50KHBvc2l0aW9uc1sxXSkpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3RDYWxsYmFja09uU2Nyb2xsKCkge1xuICAgIHRoaXMucmVxdWVzdE9uU2Nyb2xsJCA9IHRoaXMudXNlclNjcm9sbGVkRG93biQ7XG5cbiAgICBpZiAodGhpcy5pbW1lZGlhdGVDYWxsYmFjaykge1xuICAgICAgdGhpcy5yZXF1ZXN0T25TY3JvbGwkID0gdGhpcy5yZXF1ZXN0T25TY3JvbGwkLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aChbQVhfREVGQVVMVF9TQ1JPTExfUE9TSVRJT04sIEFYX0RFRkFVTFRfU0NST0xMX1BPU0lUSU9OXSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucmVxdWVzdE9uU2Nyb2xsJC5waXBlKFxuICAgICAgZXhoYXVzdE1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNjcm9sbENhbGxiYWNrKCk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1VzZXJTY3JvbGxpbmdEb3duID0gKHBvc2l0aW9ucykgPT4ge1xuICAgIHJldHVybiBwb3NpdGlvbnNbMF0uc1QgPCBwb3NpdGlvbnNbMV0uc1Q7XG4gIH07XG5cbiAgcHJpdmF0ZSBpc1Njcm9sbEV4cGVjdGVkUGVyY2VudCA9IChwb3NpdGlvbikgPT4ge1xuICAgIHJldHVybiAocG9zaXRpb24uc1QgKyBwb3NpdGlvbi5jSCkgLyBwb3NpdGlvbi5zSCA+IHRoaXMuc2Nyb2xsUGVyY2VudCAvIDEwMDtcbiAgfTtcbn1cbiJdfQ==","import { Directive, ElementRef, inject } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXResponsiveDirective {\n constructor() {\n this._elementRef = inject(ElementRef);\n this._observer = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target) {\n const e = entry.target;\n const elements = [e, ...Array.from(e.querySelectorAll(`[class*='sm:']`))];\n elements\n .map((c) => ({\n element: c,\n classList: Array.from(c.classList)\n .filter((c) => c.includes('sm'))\n .map((c) => c.slice(3)),\n }))\n .forEach((c) => {\n e.clientWidth < 320 ? c.element.classList.add(...c.classList) : c.element.classList.remove(...c.classList);\n });\n }\n }\n });\n const _elementRef = this._elementRef;\n this._observer.observe(_elementRef.nativeElement);\n }\n ngOnDestroy() {\n this._observer?.disconnect();\n this._observer?.unobserve(this._elementRef.nativeElement);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXResponsiveDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: AXResponsiveDirective, isStandalone: true, selector: \"[axResponsive]\", ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXResponsiveDirective, decorators: [{\n type: Directive,\n args: [{ selector: '[axResponsive]' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2l2ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvZGlyZWN0aXZlcy9yZXNwb25zaXZlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBR3pFLE1BQU0sT0FBTyxxQkFBcUI7SUFzQmhDO1FBckJRLGdCQUFXLEdBQUcsTUFBTSxDQUE2QixVQUFVLENBQUMsQ0FBQztRQUU3RCxjQUFTLEdBQW1CLElBQUksY0FBYyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDakUsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7b0JBQ3ZCLE1BQU0sUUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQzFFLFFBQVE7eUJBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNYLE9BQU8sRUFBRSxDQUFDO3dCQUNWLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7NkJBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDL0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUMxQixDQUFDLENBQUM7eUJBQ0YsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7d0JBQ2IsQ0FBQyxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUM3RyxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBR0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDNUQsQ0FBQzsrR0EvQlUscUJBQXFCO21HQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9uRGVzdHJveSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1theFJlc3BvbnNpdmVdJyB9KVxuZXhwb3J0IGNsYXNzIEFYUmVzcG9uc2l2ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgX29ic2VydmVyOiBSZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgaWYgKGVudHJ5LnRhcmdldCkge1xuICAgICAgICBjb25zdCBlID0gZW50cnkudGFyZ2V0O1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IFtlLCAuLi5BcnJheS5mcm9tKGUucXVlcnlTZWxlY3RvckFsbChgW2NsYXNzKj0nc206J11gKSldO1xuICAgICAgICBlbGVtZW50c1xuICAgICAgICAgIC5tYXAoKGMpID0+ICh7XG4gICAgICAgICAgICBlbGVtZW50OiBjLFxuICAgICAgICAgICAgY2xhc3NMaXN0OiBBcnJheS5mcm9tKGMuY2xhc3NMaXN0KVxuICAgICAgICAgICAgICAuZmlsdGVyKChjKSA9PiBjLmluY2x1ZGVzKCdzbScpKVxuICAgICAgICAgICAgICAubWFwKChjKSA9PiBjLnNsaWNlKDMpKSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgICAuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgICAgZS5jbGllbnRXaWR0aCA8IDMyMCA/IGMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKC4uLmMuY2xhc3NMaXN0KSA6IGMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKC4uLmMuY2xhc3NMaXN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IF9lbGVtZW50UmVmID0gdGhpcy5fZWxlbWVudFJlZjtcblxuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIHRoaXMuX29ic2VydmVyPy51bm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxufVxuIl19","import { NgModule } from '@angular/core';\nimport { AXAutoFocusDirective } from './directives/auto-focus.directive';\nimport { AXHotkeyDirective } from './directives/hotkey.directive';\nimport { AXInfiniteScrollerDirective } from './directives/infinite-scroll.directive';\nimport { AXResponsiveDirective } from './directives/responsive.directive';\nimport { AXHotkeysService } from './services/hotkey.service';\nimport * as i0 from \"@angular/core\";\nexport class AXCommonModule {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }\n static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.15\", ngImport: i0, type: AXCommonModule, imports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective], exports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective] }); }\n static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXCommonModule, providers: [AXHotkeysService] }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXCommonModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective],\n exports: [AXResponsiveDirective, AXInfiniteScrollerDirective, AXAutoFocusDirective, AXHotkeyDirective],\n providers: [AXHotkeysService],\n }]\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jb21tb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDckYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBTTdELE1BQU0sT0FBTyxjQUFjOytHQUFkLGNBQWM7Z0hBQWQsY0FBYyxZQUpmLHFCQUFxQixFQUFFLDJCQUEyQixFQUFFLG9CQUFvQixFQUFFLGlCQUFpQixhQUMzRixxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUI7Z0hBRzFGLGNBQWMsYUFGZCxDQUFDLGdCQUFnQixDQUFDOzs0RkFFbEIsY0FBYztrQkFMMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSwyQkFBMkIsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQztvQkFDdEcsT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUsMkJBQTJCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLENBQUM7b0JBQ3RHLFNBQVMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9hdXRvLWZvY3VzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWEhvdGtleURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9ob3RrZXkuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFYSW5maW5pdGVTY3JvbGxlckRpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9pbmZpbml0ZS1zY3JvbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFYUmVzcG9uc2l2ZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9yZXNwb25zaXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWEhvdGtleXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9ob3RrZXkuc2VydmljZSc7XG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQVhSZXNwb25zaXZlRGlyZWN0aXZlLCBBWEluZmluaXRlU2Nyb2xsZXJEaXJlY3RpdmUsIEFYQXV0b0ZvY3VzRGlyZWN0aXZlLCBBWEhvdGtleURpcmVjdGl2ZV0sXG4gIGV4cG9ydHM6IFtBWFJlc3BvbnNpdmVEaXJlY3RpdmUsIEFYSW5maW5pdGVTY3JvbGxlckRpcmVjdGl2ZSwgQVhBdXRvRm9jdXNEaXJlY3RpdmUsIEFYSG90a2V5RGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbQVhIb3RrZXlzU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFYQ29tbW9uTW9kdWxlIHt9XG4iXX0=","import { EventEmitter } from '@angular/core';\nimport { MXBaseComponent } from './base-component.class';\nexport class MXColorComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.colorChange = new EventEmitter();\n this._color = 'default';\n }\n /**\n * Predefined color schemes\n */\n get color() {\n return this._color;\n }\n set color(value) {\n this.setOption({\n name: 'color',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29sb3ItY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxlQUFlO0lBQXJEOztRQUNFLGdCQUFXLEdBQW1DLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekQsV0FBTSxHQUFxQixTQUFTLENBQUM7SUFnQi9DLENBQUM7SUFmQzs7T0FFRztJQUNILElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsS0FBdUI7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSztZQUNMLGFBQWEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTdHlsZUNvbG9yVHlwZSB9IGZyb20gJy4uL2NsYXNzZXMvc3R5bGVzLmNsYXNzJztcbmltcG9ydCB7IE1YQmFzZUNvbXBvbmVudCB9IGZyb20gJy4vYmFzZS1jb21wb25lbnQuY2xhc3MnO1xuXG5leHBvcnQgY2xhc3MgTVhDb2xvckNvbXBvbmVudCBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCB7XG4gIGNvbG9yQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhTdHlsZUNvbG9yVHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgX2NvbG9yOiBBWFN0eWxlQ29sb3JUeXBlID0gJ2RlZmF1bHQnO1xuICAvKipcbiAgICogIFByZWRlZmluZWQgY29sb3Igc2NoZW1lc1xuICAgKi9cbiAgZ2V0IGNvbG9yKCk6IEFYU3R5bGVDb2xvclR5cGUge1xuICAgIHJldHVybiB0aGlzLl9jb2xvcjtcbiAgfVxuICBzZXQgY29sb3IodmFsdWU6IEFYU3R5bGVDb2xvclR5cGUpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnY29sb3InLFxuICAgICAgdmFsdWUsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19","import { EventEmitter, Injectable } from '@angular/core';\nimport { MXBaseComponent } from './base-component.class';\nimport * as i0 from \"@angular/core\";\nexport class MXLookableComponent {\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXLookableComponent, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXLookableComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXLookableComponent, decorators: [{\n type: Injectable\n }] });\nexport class MXLookComponent extends MXBaseComponent {\n constructor() {\n super(...arguments);\n this.lookChange = new EventEmitter();\n this._look = 'solid';\n }\n /**\n * Predefined look schemes\n */\n get look() {\n return this._look;\n }\n set look(value) {\n this.setOption({\n name: 'look',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9vay1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9sb29rLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBR3pELE1BQU0sT0FBZ0IsbUJBQW1COytHQUFuQixtQkFBbUI7bUhBQW5CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEeEMsVUFBVTs7QUFLWCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxlQUFlO0lBQXBEOztRQUNFLGVBQVUsR0FBa0MsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxVQUFLLEdBQXFCLE9BQU8sQ0FBQztJQWdCNUMsQ0FBQztJQWZDOztPQUVHO0lBQ0gsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLElBQUksQ0FBQyxLQUFzQjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ2IsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLO1lBQ0wsYUFBYSxFQUFFLEdBQUcsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFN0eWxlTG9va1R5cGUgfSBmcm9tICcuLi9jbGFzc2VzL3N0eWxlcy5jbGFzcyc7XG5pbXBvcnQgeyBNWEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2UtY29tcG9uZW50LmNsYXNzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1YTG9va2FibGVDb21wb25lbnQge1xuICBsb29rOiBBWFN0eWxlTG9va1R5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBNWExvb2tDb21wb25lbnQgZXh0ZW5kcyBNWEJhc2VDb21wb25lbnQge1xuICBsb29rQ2hhbmdlOiBFdmVudEVtaXR0ZXI8QVhTdHlsZUxvb2tUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBfbG9vaz86IEFYU3R5bGVMb29rVHlwZSA9ICdzb2xpZCc7XG4gIC8qKlxuICAgKiAgUHJlZGVmaW5lZCBsb29rIHNjaGVtZXNcbiAgICovXG4gIGdldCBsb29rKCk6IEFYU3R5bGVMb29rVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvb2s7XG4gIH1cbiAgc2V0IGxvb2sodmFsdWU6IEFYU3R5bGVMb29rVHlwZSkge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdsb29rJyxcbiAgICAgIHZhbHVlLFxuICAgICAgYWZ0ZXJDYWxsYmFjazogKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { classes } from 'polytype';\nimport { MXColorComponent } from './color-component.class';\nimport { MXLookComponent } from './look-component.class';\nexport class MXColorLookComponent extends classes(MXColorComponent, MXLookComponent) {\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Jsb29rLWNvbXBvbmVudC5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9jb21wb25lbnRzL2NvbG9ybG9vay1jb21wb25lbnQuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekQsTUFBTSxPQUFPLG9CQUFxQixTQUFRLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxlQUFlLENBQUM7Q0FBRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQgeyBNWENvbG9yQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xvci1jb21wb25lbnQuY2xhc3MnO1xuaW1wb3J0IHsgTVhMb29rQ29tcG9uZW50IH0gZnJvbSAnLi9sb29rLWNvbXBvbmVudC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBNWENvbG9yTG9va0NvbXBvbmVudCBleHRlbmRzIGNsYXNzZXMoTVhDb2xvckNvbXBvbmVudCwgTVhMb29rQ29tcG9uZW50KSB7fVxuIl19","import { EventEmitter } from '@angular/core';\nimport { set } from 'lodash-es';\nimport { classes } from 'polytype';\nimport { MXColorLookComponent } from './colorlook-component.class';\nimport { MXInteractiveComponent } from './interactive-component.class';\nexport class MXButtonBaseComponent extends classes(MXInteractiveComponent, MXColorLookComponent) {\n /**\n * Defines the primary text to show inside the button.\n */\n get text() {\n return this._text;\n }\n set text(v) {\n this.setOption({\n name: 'text',\n value: v,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * Provides visual styling that indicates if the Button is active\n */\n get toggleable() {\n return this._toggleable;\n }\n set toggleable(value) {\n this.setOption({\n name: 'toggleable',\n value,\n });\n }\n /**\n * Indicates if the Button is selected or not\n */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n this.setOption({\n name: 'selected',\n value,\n afterCallback: () => {\n this.cdr.markForCheck();\n },\n });\n }\n /**\n * @ignore\n */\n constructor() {\n super();\n /**\n * Emits an event when the text associated with the button changes.\n *\n * @event\n */\n this.textChange = new EventEmitter();\n /**\n * Emits an event when the toggleable state of the action sheet changes.\n *\n * @event\n */\n this.toggleableChange = new EventEmitter();\n this._toggleable = false;\n /**\n * Emits an event whenever the selection state of the component changes.\n *\n * @event\n */\n this.selectedChange = new EventEmitter();\n this._selected = false;\n }\n /**\n * @ignore\n */\n get cssClasses() {\n const cssClasses = {\n 'ax-button-icon': !this.text,\n 'ax-state-disabled': this.disabled,\n 'ax-state-selected': this.selected,\n };\n set(cssClasses, `ax-${this.look || 'solid'}`, true);\n set(cssClasses, `ax-${this.color || 'primary'}`, true);\n return cssClasses;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWJhc2UtY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uLWJhc2UtY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ25DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXZFLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxPQUFPLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUM7SUFROUY7O09BRUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLENBQVM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLENBQUM7WUFDUixhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBU0Q7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLEtBQWM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxZQUFZO1lBQ2xCLEtBQUs7U0FDTixDQUFDLENBQUM7SUFDTCxDQUFDO0lBU0Q7O09BRUc7SUFDSCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNiLElBQUksRUFBRSxVQUFVO1lBQ2hCLEtBQUs7WUFDTCxhQUFhLEVBQUUsR0FBRyxFQUFFO2dCQUNsQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7O09BRUc7SUFDSDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBckVWOzs7O1dBSUc7UUFDSCxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFrQnREOzs7O1dBSUc7UUFDSCxxQkFBZ0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyRCxnQkFBVyxHQUFhLEtBQUssQ0FBQztRQWN0Qzs7OztXQUlHO1FBQ0gsbUJBQWMsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxjQUFTLEdBQWEsS0FBSyxDQUFDO0lBcUJwQyxDQUFDO0lBQ0Q7O09BRUc7SUFDSCxJQUFjLFVBQVU7UUFDdEIsTUFBTSxVQUFVLEdBQUc7WUFDakIsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUM1QixtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNsQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsUUFBUTtTQUNuQyxDQUFDO1FBQ0YsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLFVBQVUsRUFBRSxNQUFNLElBQUksQ0FBQyxLQUFLLElBQUksU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBzZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcbmltcG9ydCB7IE1YQ29sb3JMb29rQ29tcG9uZW50IH0gZnJvbSAnLi9jb2xvcmxvb2stY29tcG9uZW50LmNsYXNzJztcbmltcG9ydCB7IE1YSW50ZXJhY3RpdmVDb21wb25lbnQgfSBmcm9tICcuL2ludGVyYWN0aXZlLWNvbXBvbmVudC5jbGFzcyc7XG5cbmV4cG9ydCBjbGFzcyBNWEJ1dHRvbkJhc2VDb21wb25lbnQgZXh0ZW5kcyBjbGFzc2VzKE1YSW50ZXJhY3RpdmVDb21wb25lbnQsIE1YQ29sb3JMb29rQ29tcG9uZW50KSB7XG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGUgYnV0dG9uIGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgdGV4dENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgX3RleHQ6IHN0cmluZztcbiAgLyoqXG4gICAqICBEZWZpbmVzIHRoZSBwcmltYXJ5IHRleHQgdG8gc2hvdyBpbnNpZGUgdGhlIGJ1dHRvbi5cbiAgICovXG4gIGdldCB0ZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHQ7XG4gIH1cbiAgc2V0IHRleHQodjogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RleHQnLFxuICAgICAgdmFsdWU6IHYsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhbiBldmVudCB3aGVuIHRoZSB0b2dnbGVhYmxlIHN0YXRlIG9mIHRoZSBhY3Rpb24gc2hlZXQgY2hhbmdlcy5cbiAgICpcbiAgICogQGV2ZW50XG4gICAqL1xuICB0b2dnbGVhYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHByaXZhdGUgX3RvZ2dsZWFibGU/OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiAgUHJvdmlkZXMgdmlzdWFsIHN0eWxpbmcgdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIEJ1dHRvbiBpcyBhY3RpdmVcbiAgICovXG4gIGdldCB0b2dnbGVhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl90b2dnbGVhYmxlO1xuICB9XG4gIHNldCB0b2dnbGVhYmxlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oe1xuICAgICAgbmFtZTogJ3RvZ2dsZWFibGUnLFxuICAgICAgdmFsdWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgYW4gZXZlbnQgd2hlbmV2ZXIgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiB0aGUgY29tcG9uZW50IGNoYW5nZXMuXG4gICAqXG4gICAqIEBldmVudFxuICAgKi9cbiAgc2VsZWN0ZWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWQ/OiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiAgSW5kaWNhdGVzIGlmIHRoZSBCdXR0b24gaXMgc2VsZWN0ZWQgb3Igbm90XG4gICAqL1xuICBnZXQgc2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuc2V0T3B0aW9uKHtcbiAgICAgIG5hbWU6ICdzZWxlY3RlZCcsXG4gICAgICB2YWx1ZSxcbiAgICAgIGFmdGVyQ2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiAgQGlnbm9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuICAvKipcbiAgICogIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBnZXQgY3NzQ2xhc3NlcygpIHtcbiAgICBjb25zdCBjc3NDbGFzc2VzID0ge1xuICAgICAgJ2F4LWJ1dHRvbi1pY29uJzogIXRoaXMudGV4dCxcbiAgICAgICdheC1zdGF0ZS1kaXNhYmxlZCc6IHRoaXMuZGlzYWJsZWQsXG4gICAgICAnYXgtc3RhdGUtc2VsZWN0ZWQnOiB0aGlzLnNlbGVjdGVkLFxuICAgIH07XG4gICAgc2V0KGNzc0NsYXNzZXMsIGBheC0ke3RoaXMubG9vayB8fCAnc29saWQnfWAsIHRydWUpO1xuICAgIHNldChjc3NDbGFzc2VzLCBgYXgtJHt0aGlzLmNvbG9yIHx8ICdwcmltYXJ5J31gLCB0cnVlKTtcbiAgICByZXR1cm4gY3NzQ2xhc3NlcztcbiAgfVxufVxuIl19","import { EventEmitter, Injectable } from '@angular/core';\nimport { isEqual } from 'lodash-es';\nimport { MXValueComponent } from './value-component.class';\nimport * as i0 from \"@angular/core\";\nexport class MXInputBaseValueComponent extends MXValueComponent {\n constructor() {\n super(...arguments);\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onKeyDown = new EventEmitter();\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onKeyUp = new EventEmitter();\n /**\n * Fires each time the user press a key.\n * @event\n */\n this.onKeyPress = new EventEmitter();\n /**\n * Fires each time the user change the text.\n * @event\n */\n this.onTextChanged = new EventEmitter();\n }\n emitOnKeydownEvent(e) {\n this.onKeyDown.emit({\n component: this,\n nativeEvent: e,\n });\n }\n emitOnKeyupEvent(e) {\n this.onKeyUp.emit({\n component: this,\n nativeEvent: e,\n });\n }\n emitOnKeypressEvent(e) {\n this.onKeyPress.emit({\n component: this,\n nativeEvent: e,\n });\n }\n emitOnTextChanged(value, isUserInteraction = false) {\n if (isEqual(value, this.oldText))\n return;\n this.onTextChanged.emit({\n value,\n name: this.name,\n component: this,\n isUserInteraction,\n oldValue: this.oldText,\n htmlElement: this.getHostElement(),\n });\n this.oldText = value;\n }\n focus() {\n const input = this.getHostElement().querySelector('input');\n if (input)\n input.focus();\n else\n super.focus();\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXInputBaseValueComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXInputBaseValueComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXInputBaseValueComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtYmFzZS12YWx1ZS1jb21wb25lbnQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC1iYXNlLXZhbHVlLWNvbXBvbmVudC5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUczRCxNQUFNLE9BQU8seUJBQXNDLFNBQVEsZ0JBQW1CO0lBRDlFOztRQUtFOzs7V0FHRztRQUNILGNBQVMsR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7UUFFckc7OztXQUdHO1FBQ0gsWUFBTyxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUVuRzs7O1dBR0c7UUFDSCxlQUFVLEdBQTZDLElBQUksWUFBWSxFQUE4QixDQUFDO1FBRXRHOzs7V0FHRztRQUNILGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQStCLENBQUM7S0F5Q2pFO0lBdkNXLGtCQUFrQixDQUFDLENBQWdCO1FBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsV0FBVyxFQUFFLENBQUM7U0FDZixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsQ0FBZ0I7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFDaEIsU0FBUyxFQUFFLElBQUk7WUFDZixXQUFXLEVBQUUsQ0FBQztTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxDQUFnQjtRQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztZQUNuQixTQUFTLEVBQUUsSUFBSTtZQUNmLFdBQVcsRUFBRSxDQUFDO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGlCQUFpQixDQUFDLEtBQWEsRUFBRSxpQkFBaUIsR0FBRyxLQUFLO1FBQ2xFLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTztRQUN6QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQztZQUN0QixLQUFLO1lBQ0wsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsU0FBUyxFQUFFLElBQUk7WUFDZixpQkFBaUI7WUFDakIsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3RCLFdBQVcsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFUSxLQUFLO1FBQ1osTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFJLEtBQUs7WUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7O1lBQ3BCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNyQixDQUFDOytHQWxFVSx5QkFBeUI7bUhBQXpCLHlCQUF5Qjs7NEZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBBWEh0bWxFdmVudCwgQVhWYWx1ZUNoYW5nZWRFdmVudCB9IGZyb20gJy4uL2NsYXNzZXMvZXZlbnRzLmNsYXNzJztcbmltcG9ydCB7IE1YVmFsdWVDb21wb25lbnQgfSBmcm9tICcuL3ZhbHVlLWNvbXBvbmVudC5jbGFzcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50PFQgPSBzdHJpbmc+IGV4dGVuZHMgTVhWYWx1ZUNvbXBvbmVudDxUPiB7XG4gIG9sZFRleHQ6IHN0cmluZztcbiAgcGxhY2Vob2xkZXI6IHN0cmluZztcblxuICAvKipcbiAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25LZXlEb3duOiBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4oKTtcblxuICAvKipcbiAgICogIEZpcmVzIGVhY2ggdGltZSB0aGUgdXNlciBwcmVzcyBhIGtleS5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25LZXlVcDogRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8QVhIdG1sRXZlbnQ8S2V5Ym9hcmRFdmVudD4+KCk7XG5cbiAgLyoqXG4gICAqICBGaXJlcyBlYWNoIHRpbWUgdGhlIHVzZXIgcHJlc3MgYSBrZXkuXG4gICAqICBAZXZlbnRcbiAgICovXG4gIG9uS2V5UHJlc3M6IEV2ZW50RW1pdHRlcjxBWEh0bWxFdmVudDxLZXlib2FyZEV2ZW50Pj4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSHRtbEV2ZW50PEtleWJvYXJkRXZlbnQ+PigpO1xuXG4gIC8qKlxuICAgKiAgRmlyZXMgZWFjaCB0aW1lIHRoZSB1c2VyIGNoYW5nZSB0aGUgdGV4dC5cbiAgICogIEBldmVudFxuICAgKi9cbiAgb25UZXh0Q2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8QVhWYWx1ZUNoYW5nZWRFdmVudDxzdHJpbmc+PigpO1xuXG4gIHByb3RlY3RlZCBlbWl0T25LZXlkb3duRXZlbnQoZTogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMub25LZXlEb3duLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uS2V5dXBFdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5vbktleVVwLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uS2V5cHJlc3NFdmVudChlOiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5vbktleVByZXNzLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZW1pdE9uVGV4dENoYW5nZWQodmFsdWU6IHN0cmluZywgaXNVc2VySW50ZXJhY3Rpb24gPSBmYWxzZSkge1xuICAgIGlmIChpc0VxdWFsKHZhbHVlLCB0aGlzLm9sZFRleHQpKSByZXR1cm47XG4gICAgdGhpcy5vblRleHRDaGFuZ2VkLmVtaXQoe1xuICAgICAgdmFsdWUsXG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBjb21wb25lbnQ6IHRoaXMsXG4gICAgICBpc1VzZXJJbnRlcmFjdGlvbixcbiAgICAgIG9sZFZhbHVlOiB0aGlzLm9sZFRleHQsXG4gICAgICBodG1sRWxlbWVudDogdGhpcy5nZXRIb3N0RWxlbWVudCgpLFxuICAgIH0pO1xuICAgIHRoaXMub2xkVGV4dCA9IHZhbHVlO1xuICB9XG5cbiAgb3ZlcnJpZGUgZm9jdXMoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignaW5wdXQnKTtcbiAgICBpZiAoaW5wdXQpIGlucHV0LmZvY3VzKCk7XG4gICAgZWxzZSBzdXBlci5mb2N1cygpO1xuICB9XG59XG4iXX0=","import { AXFormatService } from '@acorex/core/format';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { EventEmitter, Injectable, InjectionToken, inject } from '@angular/core';\nimport { cloneDeep, get } from 'lodash-es';\nimport { MXValueComponent } from './value-component.class';\nimport * as i0 from \"@angular/core\";\n/**\n * Service that manages selection state and caching for selection components\n */\nexport class MXSelectionBridgeService {\n constructor() {\n /** Array of currently selected items */\n this.selectedItems = [];\n /** Cache for normalized items keyed by their unique identifier */\n this.cacheList = {};\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXSelectionBridgeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXSelectionBridgeService }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXSelectionBridgeService, decorators: [{\n type: Injectable\n }] });\n/**\n * Injection token for the selection bridge service\n */\nexport const AX_SELECTION_DATA_TOKEN = new InjectionToken('AX_SELECTION_DATA_TOKEN');\n/**\n * Abstract base component for selection-based value components\n * Provides common functionality for components that support item selection\n */\nexport class MXSelectionValueComponent extends MXValueComponent {\n constructor() {\n super(...arguments);\n // #region Services\n this.formatService = inject(AXFormatService);\n this.dataService = inject(AX_SELECTION_DATA_TOKEN);\n // #region Field Configuration Properties\n this._valueField = 'id';\n this._textField = 'text';\n this._textTemplate = '';\n this._defaultText = '-';\n this._disabledField = 'disabled';\n this._multiple = false;\n // #endregion\n // #region Events\n this.onItemSelected = new EventEmitter();\n /**\n * Emitted when an item in the list is clicked.\n *\n * @event\n */\n this.onItemClick = new EventEmitter();\n }\n /** Field name used to extract the unique value from items */\n get valueField() {\n return this._valueField;\n }\n set valueField(value) {\n this.setOption({ name: 'valueField', value });\n }\n /** Field name used to extract the display text from items */\n get textField() {\n return this._textField;\n }\n set textField(value) {\n this.setOption({ name: 'textField', value });\n }\n /** Template string for formatting item display text */\n get textTemplate() {\n return this._textTemplate;\n }\n set textTemplate(value) {\n this.setOption({ name: 'textTemplate', value });\n }\n /** Text to display when neither textField nor valueField exist on the item */\n get defaultText() {\n return this._defaultText;\n }\n set defaultText(value) {\n this.setOption({ name: 'defaultText', value });\n }\n /** Field name used to determine if an item is disabled */\n get disabledField() {\n return this._disabledField;\n }\n set disabledField(value) {\n this.setOption({ name: 'disabledField', value });\n }\n /** Whether multiple items can be selected */\n get multiple() {\n return this._multiple;\n }\n set multiple(value) {\n this.setOption({\n name: 'multiple',\n value,\n afterCallback: () => this.reset(false),\n });\n }\n // #endregion\n // #region Computed Properties\n /** Gets the currently selected items */\n get selectedItems() {\n return this.dataService.selectedItems || [];\n }\n // #endregion\n // #region Override Methods\n /**\n * Internal method to set and normalize the component value\n * @param value The value to set (can be single item or array)\n * @returns Normalized value based on multiple selection mode\n */\n internalSetValue(value) {\n const isArray = Array.isArray(value);\n // Handle null/empty values\n if (value == null || (isArray && value.length === 0)) {\n return this.multiple ? [] : null;\n }\n // Check if items already have text properties to avoid unnecessary findByKey calls\n const itemsToNormalize = isArray ? value : [value];\n const needsFindByKey = itemsToNormalize.some((item) => {\n if (typeof item === 'object' && item !== null) {\n return get(item, this.textField) == null;\n }\n return true; // Primitive values need findByKey\n });\n const normalizedItems = this.normalizeItemsList(itemsToNormalize, needsFindByKey);\n if (normalizedItems.length === 0) {\n return this.multiple ? [] : null;\n }\n // Extract values based on selection mode\n return this.multiple\n ? normalizedItems.map((item) => get(item, this.valueField))\n : (get(normalizedItems[0], this.valueField) ?? null);\n }\n /**\n * Override to normalize selected items when value changes\n */\n emitOnValueChangedEvent(oldValue, newValue) {\n this._normalizeSelectedItems();\n super.emitOnValueChangedEvent(oldValue, newValue);\n }\n // #endregion\n // #region Private Normalization Methods\n /**\n * Normalizes a list of items, filtering out null values\n * @param items Array of items to normalize\n * @param findByKey Whether to attempt finding items by key\n * @returns Array of normalized items\n */\n normalizeItemsList(items, findByKey = false) {\n if (!items?.length)\n return [];\n return items.filter((item) => item != null).map((item) => this.normalizeItem(item, findByKey));\n }\n /**\n * Normalizes a single item, handling caching and async loading\n * @param item Item to normalize\n * @param findByKey Whether to attempt finding the item by key\n * @returns Normalized item object\n */\n normalizeItem(item, findByKey = false) {\n const isComplexObject = typeof item === 'object' && item !== null;\n const itemRecord = item;\n const valueKey = isComplexObject ? get(itemRecord, this.valueField) : item;\n const key = valueKey != null ? String(valueKey) : String(item);\n const cacheKey = this.createCacheKey(key);\n // Return cached item if available and has text\n const cachedItem = this.dataService.cacheList[cacheKey];\n if (cachedItem && get(cachedItem, this.textField) != null) {\n return cachedItem;\n }\n const hasTextProperty = !isComplexObject || get(itemRecord, this.textField) != null;\n const normalizedObj = {};\n // If findByKey is true, we need to resolve the item to get its text\n // This is needed for string values like 'ir', 'us' that don't have text\n if (findByKey) {\n this.handleItemNormalization(normalizedObj, item, key, true, cacheKey);\n }\n else {\n // Item already has all required properties, just copy them\n Object.assign(normalizedObj, item);\n }\n this.dataService.cacheList[cacheKey] = normalizedObj;\n return normalizedObj;\n }\n /**\n * Handles the normalization logic for items that need property assignment\n */\n handleItemNormalization(normalizedObj, originalItem, key, findByKey, cacheKey) {\n const existingItem = findByKey ? this.getItemByKey(key) : null;\n if (existingItem instanceof Promise) {\n this.handleAsyncItem(normalizedObj, key, existingItem, cacheKey);\n }\n else if (existingItem) {\n this.assignItemProperties(normalizedObj, existingItem, true);\n }\n else {\n this.assignItemProperties(normalizedObj, originalItem, false);\n }\n }\n /**\n * Handles async item loading with loading state\n */\n handleAsyncItem(obj, key, promise, cacheKey) {\n // Set loading state\n obj[this.valueField] = key;\n obj['isLoading'] = true;\n obj[this.textField] = '@acorex:common.status.loading';\n promise\n .then((result) => {\n if (typeof result === 'object' && result) {\n Object.assign(obj, cloneDeep(result));\n }\n else {\n obj[this.valueField] = result || key;\n obj[this.textField] = result;\n }\n })\n .catch((error) => {\n console.warn('Failed to load item by key:', key, error);\n // On error, keep the original value but mark as failed\n obj[this.textField] = this.defaultText;\n })\n .finally(() => {\n delete obj['isLoading'];\n delete obj['_displayTextLoading'];\n delete obj['_loadingTriggered'];\n this.dataService.cacheList[cacheKey] = obj;\n // Use setTimeout to defer change detection and prevent immediate re-rendering\n setTimeout(() => {\n if (this.cdr) {\n this.cdr.markForCheck();\n }\n }, 0);\n });\n }\n /**\n * Assigns value and text properties to the normalized object\n */\n assignItemProperties(obj, sourceItem, isComplexSource) {\n const isSourceObject = typeof sourceItem === 'object' && sourceItem !== null;\n const sourceRecord = sourceItem;\n if (isComplexSource && isSourceObject) {\n const valueFromSource = get(sourceRecord, this.valueField);\n const textFromSource = get(sourceRecord, this.textField);\n obj[this.valueField] = (valueFromSource ?? textFromSource);\n obj[this.textField] = (textFromSource ?? valueFromSource ?? this.defaultText);\n }\n else {\n const valueFromSource = isSourceObject ? get(sourceRecord, this.valueField) : sourceItem;\n const textFromSource = isSourceObject ? get(sourceRecord, this.textField) : sourceItem;\n obj[this.valueField] = (valueFromSource ?? textFromSource);\n obj[this.textField] = (textFromSource ?? valueFromSource ?? this.defaultText);\n }\n }\n /**\n * Creates a consistent cache key for an item\n */\n createCacheKey(key) {\n return `k-${key}`;\n }\n /**\n * Normalizes currently selected items and updates the data service\n */\n _normalizeSelectedItems() {\n const values = Array.isArray(this.value) ? this.value : this.value != null ? [this.value] : [];\n // Only call normalizeItem with findByKey=true if the item doesn't have text\n // This prevents unnecessary API calls for items that already have text\n this.dataService.selectedItems = values.map((value) => {\n const hasText = typeof value === 'object' && value !== null && get(value, this.textField) != null;\n return this.normalizeItem(value, !hasText);\n });\n }\n // #endregion\n // #region Public Selection Methods\n /**\n * Unselects the specified items from the selection\n * @param items Items to unselect\n */\n unselectItems(...items) {\n if (!items?.length) {\n this.commitValue([], true);\n return;\n }\n const normalizedItems = this.normalizeItemsList(items);\n const newSelectedItems = this.selectedItems.filter((selectedItem) => !normalizedItems.some((normalizedItem) => get(normalizedItem, this.valueField) ===\n get(selectedItem, this.valueField)));\n this.commitValue(newSelectedItems, true);\n }\n /**\n * Selects the specified items\n * @param items Items to select\n */\n selectItems(...items) {\n if (!items?.length) {\n return;\n }\n const currentValue = Array.isArray(this.value) ? this.value : [this.value];\n const normalizedItems = this.normalizeItemsList(items);\n const newSelectedItems = this.multiple ? [...currentValue, ...normalizedItems] : normalizedItems;\n this.onItemSelected.emit({\n component: this,\n isUserInteraction: true,\n item: newSelectedItems[0],\n htmlElement: this.getHostElement(),\n });\n this.commitValue(newSelectedItems, true);\n }\n /**\n * Toggles the selection state of the specified items\n * @param items Items to toggle\n */\n toggleSelect(...items) {\n items?.forEach((item) => {\n if (this.multiple) {\n this.isItemSelected(item) ? this.unselectItems(item) : this.selectItems(item);\n }\n else {\n this.selectItems(item);\n }\n });\n }\n // #endregion\n // #region Public Utility Methods\n /**\n * Checks if an item is currently selected\n * @param item Item to check\n * @returns True if the item is selected\n */\n isItemSelected(item) {\n const normalizedItem = this.normalizeItem(item);\n const normalizedValue = get(normalizedItem, this.valueField);\n return this.selectedItems.some((selectedItem) => get(selectedItem, this.valueField) === normalizedValue);\n }\n /**\n * Checks if an item is disabled\n * @param item Item to check\n * @returns True if the item is disabled\n */\n isItemDisabled(item) {\n const itemRecord = item;\n return (this.disabled ||\n coerceBooleanProperty(get(itemRecord, this.disabledField)) === true ||\n (this.disabledCallback?.({ item, index: -1 }) ?? false));\n }\n /**\n * Checks if an item is currently loading\n * @param item Item to check\n * @returns True if the item is loading\n */\n isItemLoading(item) {\n const normalizedItem = this.normalizeItem(item);\n return normalizedItem['isLoading'] === true;\n }\n // #endregion\n // #region Protected Utility Methods\n /**\n * Gets the display text for an item using template or text field\n * @param item Item to get display text for\n * @returns Formatted display text\n */\n getDisplayText(item) {\n // Prevent recursive calls that could cause infinite loops\n if (item && typeof item === 'object' && item['_displayTextLoading']) {\n return '@acorex:common.status.loading';\n }\n // Add timestamp-based debouncing to prevent excessive calls for ALL item types\n const now = Date.now();\n const itemKey = typeof item === 'string' ? item : get(item, this.valueField);\n const cacheKey = this.createCacheKey(String(itemKey));\n // Check if we have a recent result in the cache to prevent duplicate processing\n const cachedResult = this.dataService.cacheList[cacheKey];\n if (cachedResult && cachedResult['_lastDisplayTextCall']) {\n const timeSinceLastCall = now - cachedResult['_lastDisplayTextCall'];\n if (timeSinceLastCall < 50) {\n // 50ms debounce\n return cachedResult['_lastDisplayTextResult'] || String(itemKey || '');\n }\n }\n // For string values, we need to normalize with findByKey=true to trigger async loading\n const isStringValue = typeof item === 'string';\n const normalizedItem = this.normalizeItem(item, isStringValue);\n // Try template formatting FIRST before checking cached textField\n if (this.textTemplate) {\n const formattedTemplate = this.formatService.format(this.textTemplate, 'string', normalizedItem);\n if (formattedTemplate !== this.textTemplate) {\n const result = formattedTemplate;\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n }\n // Check if this item is already in the cache with proper text\n const itemValue = get(normalizedItem, this.valueField);\n if (itemValue != null && itemValue !== '') {\n const cacheKey = this.createCacheKey(String(itemValue));\n const cachedItem = this.dataService.cacheList[cacheKey];\n if (cachedItem && get(cachedItem, this.textField) != null) {\n // Use cached text if available\n const cachedText = get(cachedItem, this.textField);\n if (cachedText && cachedText !== '@acorex:common.status.loading') {\n const result = String(cachedText);\n // Cache the timestamp and result for debouncing in the cache (works for all item types)\n if (cachedItem) {\n cachedItem['_lastDisplayTextCall'] = now;\n cachedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n }\n }\n // Use text field or fallback to value field\n const textValue = get(normalizedItem, this.textField);\n if (textValue != null && textValue !== '') {\n const result = String(textValue);\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n // If text is missing and item is loading, show loading state\n if (normalizedItem['isLoading']) {\n const result = '@acorex:common.status.loading';\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n // Attempt to load item by key if text is missing\n const value = get(normalizedItem, this.valueField);\n if (value == null || value === '') {\n const result = this.defaultText;\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n // If we have a value but no text, trigger async loading only once\n // Use a flag to prevent multiple calls\n if (!normalizedItem['_loadingTriggered'] && !normalizedItem[this.textField]) {\n normalizedItem['_loadingTriggered'] = true;\n normalizedItem['_displayTextLoading'] = true;\n // Use setTimeout to defer the async loading and prevent immediate change detection\n setTimeout(() => {\n this.loadAndCacheItemByKey(value);\n }, 0);\n }\n // Return the value itself as a fallback\n // This will be updated once the async loading completes\n const result = String(value);\n // Cache the timestamp and result for debouncing in the cache\n if (normalizedItem) {\n normalizedItem['_lastDisplayTextCall'] = now;\n normalizedItem['_lastDisplayTextResult'] = result;\n }\n return result;\n }\n /**\n * Gets the value of an item\n * @param item Item to get value from\n * @returns Item value\n */\n getValue(item) {\n const normalizedItem = this.normalizeItem(item);\n return get(normalizedItem, this.valueField);\n }\n /**\n * Clears the selection cache and selected items\n */\n clearSelectionCache() {\n this.dataService.cacheList = {};\n this.dataService.selectedItems = [];\n this.cdr.markForCheck();\n }\n /**\n * Clears only the cache while preserving selected items\n */\n softClearSelectionCache() {\n this.dataService.cacheList = {};\n this.cdr.markForCheck();\n }\n /**\n * Clears the debouncing cache for specific items to ensure fresh data is displayed\n */\n clearItemDebouncingCache(item) {\n // Get the cache key for this item\n const itemKey = typeof item === 'string' ? item : get(item, this.valueField);\n if (itemKey != null) {\n const cacheKey = this.createCacheKey(String(itemKey));\n const cachedItem = this.dataService.cacheList[cacheKey];\n if (cachedItem) {\n delete cachedItem['_lastDisplayTextCall'];\n delete cachedItem['_lastDisplayTextResult'];\n delete cachedItem['_displayTextLoading'];\n delete cachedItem['_loadingTriggered'];\n }\n }\n }\n /**\n * Forces a refresh of the display when items are loaded asynchronously\n * This should be called when the data source is updated\n */\n refreshDisplay() {\n this.cdr.markForCheck();\n }\n /**\n * Refreshes the display for all selected items to ensure consistency\n * This is useful when the data source has been updated\n */\n refreshSelectedItemsDisplay() {\n // Force a refresh of the display without re-normalizing to avoid infinite loops\n if (this.selectedItems.length > 0) {\n this.cdr.markForCheck();\n }\n }\n /**\n * Forces a refresh of all selected items by clearing their debouncing cache\n * This ensures fresh data is displayed when the data source is updated\n */\n forceRefreshSelectedItems() {\n if (this.selectedItems.length > 0) {\n this.selectedItems.forEach((item) => {\n this.clearItemDebouncingCache(item);\n });\n this.cdr.markForCheck();\n }\n }\n // #endregion\n // #region Private Helper Methods\n /**\n * Asynchronously loads an item by its key and caches the result\n * @param key Key to load item by\n */\n async loadAndCacheItemByKey(key) {\n try {\n const item = await this.getItemByKey(key);\n if (item) {\n const normalizedItem = this.normalizeItem(item);\n const cacheKey = this.createCacheKey(String(normalizedItem[this.valueField]));\n // Update the cache with the loaded item\n this.dataService.cacheList[cacheKey] = normalizedItem;\n // Clear loading flags\n if (this.dataService.cacheList[cacheKey]) {\n delete this.dataService.cacheList[cacheKey]['_displayTextLoading'];\n delete this.dataService.cacheList[cacheKey]['_loadingTriggered'];\n }\n // Use setTimeout to defer change detection and prevent immediate re-rendering\n setTimeout(() => {\n if (this.cdr) {\n this.cdr.markForCheck();\n }\n }, 0);\n }\n }\n catch (error) {\n console.warn('Failed to load item by key:', key, error);\n // Clear loading flags on error too\n const cacheKey = this.createCacheKey(String(key));\n if (this.dataService.cacheList[cacheKey]) {\n delete this.dataService.cacheList[cacheKey]['_displayTextLoading'];\n delete this.dataService.cacheList[cacheKey]['_loadingTriggered'];\n }\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXSelectionValueComponent, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }\n static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXSelectionValueComponent }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: MXSelectionValueComponent, decorators: [{\n type: Injectable\n }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0aW9uLWJhc2UuY29tcG9uZW50LmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRTNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUUzRDs7R0FFRztBQUVILE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFFRSx3Q0FBd0M7UUFDakMsa0JBQWEsR0FBYyxFQUFFLENBQUM7UUFDckMsa0VBQWtFO1FBQzNELGNBQVMsR0FBcUMsRUFBRSxDQUFDO0tBQ3pEOytHQUxZLHdCQUF3QjttSEFBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQURwQyxVQUFVOztBQVFYOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQTJCLHlCQUF5QixDQUFDLENBQUM7QUFlL0c7OztHQUdHO0FBRUgsTUFBTSxPQUFnQix5QkFBdUMsU0FBUSxnQkFBeUI7SUFEOUY7O1FBRUUsbUJBQW1CO1FBQ0Ysa0JBQWEsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDeEMsZ0JBQVcsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQU8vRCx5Q0FBeUM7UUFDakMsZ0JBQVcsR0FBRyxJQUFJ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QzFCLENBQUM7Z0JBQ0gsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFeEQsbUNBQW1DO1lBQ25DLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDbEQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxPQUFRLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBUyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBQzVFLE9BQVEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7K0dBM25CbUIseUJBQXlCO21IQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRDlDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdFNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvZm9ybWF0JztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCwgZ2V0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEFYSXRlbUNsaWNrRXZlbnQsIEFYSXRlbVNlbGVjdGVkRXZlbnQgfSBmcm9tICcuLi9jbGFzc2VzL2V2ZW50cy5jbGFzcyc7XG5pbXBvcnQgeyBNWFZhbHVlQ29tcG9uZW50IH0gZnJvbSAnLi92YWx1ZS1jb21wb25lbnQuY2xhc3MnO1xuXG4vKipcbiAqIFNlcnZpY2UgdGhhdCBtYW5hZ2VzIHNlbGVjdGlvbiBzdGF0ZSBhbmQgY2FjaGluZyBmb3Igc2VsZWN0aW9uIGNvbXBvbmVudHNcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZSB7XG4gIC8qKiBBcnJheSBvZiBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgKi9cbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IHVua25vd25bXSA9IFtdO1xuICAvKiogQ2FjaGUgZm9yIG5vcm1hbGl6ZWQgaXRlbXMga2V5ZWQgYnkgdGhlaXIgdW5pcXVlIGlkZW50aWZpZXIgKi9cbiAgcHVibGljIGNhY2hlTGlzdDogUmVjb3JkPHN0cmluZyB8IG51bWJlciwgdW5rbm93bj4gPSB7fTtcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gZm9yIHRoZSBzZWxlY3Rpb24gYnJpZGdlIHNlcnZpY2VcbiAqL1xuZXhwb3J0IGNvbnN0IEFYX1NFTEVDVElPTl9EQVRBX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPE1YU2VsZWN0aW9uQnJpZGdlU2VydmljZT4oJ0FYX1NFTEVDVElPTl9EQVRBX1RPS0VOJyk7XG5cbi8qKlxuICogVHlwZSBkZWZpbml0aW9uIGZvciBkaXNhYmxlZCBjYWxsYmFjayBmdW5jdGlvblxuICovXG5leHBvcnQgdHlwZSBEaXNhYmxlZENhbGxiYWNrPFQ+ID0gKGV2ZW50OiB7IGl0ZW06IFQ7IGluZGV4OiBudW1iZXIgfSkgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBUeXBlIGRlZmluaXRpb24gZm9yIG5vcm1hbGl6ZWQgaXRlbSBvYmplY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3JtYWxpemVkSXRlbSB7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQWJzdHJhY3QgYmFzZSBjb21wb25lbnQgZm9yIHNlbGVjdGlvbi1iYXNlZCB2YWx1ZSBjb21wb25lbnRzXG4gKiBQcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0IHN1cHBvcnQgaXRlbSBzZWxlY3Rpb25cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1YU2VsZWN0aW9uVmFsdWVDb21wb25lbnQ8VCA9IHVua25vd24+IGV4dGVuZHMgTVhWYWx1ZUNvbXBvbmVudDx1bmtub3duPiB7XG4gIC8vICNyZWdpb24gU2VydmljZXNcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtYXRTZXJ2aWNlID0gaW5qZWN0KEFYRm9ybWF0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNlcnZpY2UgPSBpbmplY3QoQVhfU0VMRUNUSU9OX0RBVEFfVE9LRU4pO1xuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBQdWJsaWMgUHJvcGVydGllc1xuICAvKiogQ2FsbGJhY2sgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGFuIGl0ZW0gc2hvdWxkIGJlIGRpc2FibGVkICovXG4gIGRpc2FibGVkQ2FsbGJhY2s6IERpc2FibGVkQ2FsbGJhY2s8VD47XG5cbiAgLy8gI3JlZ2lvbiBGaWVsZCBDb25maWd1cmF0aW9uIFByb3BlcnRpZXNcbiAgcHJpdmF0ZSBfdmFsdWVGaWVsZCA9ICdpZCc7XG4gIC8qKiBGaWVsZCBuYW1lIHVzZWQgdG8gZXh0cmFjdCB0aGUgdW5pcXVlIHZhbHVlIGZyb20gaXRlbXMgKi9cbiAgcHVibGljIGdldCB2YWx1ZUZpZWxkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlRmllbGQ7XG4gIH1cbiAgcHVibGljIHNldCB2YWx1ZUZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7IG5hbWU6ICd2YWx1ZUZpZWxkJywgdmFsdWUgfSk7XG4gIH1cblxuICBwcml2YXRlIF90ZXh0RmllbGQgPSAndGV4dCc7XG4gIC8qKiBGaWVsZCBuYW1lIHVzZWQgdG8gZXh0cmFjdCB0aGUgZGlzcGxheSB0ZXh0IGZyb20gaXRlbXMgKi9cbiAgcHVibGljIGdldCB0ZXh0RmllbGQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dEZpZWxkO1xuICB9XG4gIHB1YmxpYyBzZXQgdGV4dEZpZWxkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNldE9wdGlvbih7IG5hbWU6ICd0ZXh0RmllbGQnLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3RleHRUZW1wbGF0ZSA9ICcnO1xuICAvKiogVGVtcGxhdGUgc3RyaW5nIGZvciBmb3JtYXR0aW5nIGl0ZW0gZGlzcGxheSB0ZXh0ICovXG4gIHB1YmxpYyBnZXQgdGV4dFRlbXBsYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRUZW1wbGF0ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHRleHRUZW1wbGF0ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAndGV4dFRlbXBsYXRlJywgdmFsdWUgfSk7XG4gIH1cblxuICBwcml2YXRlIF9kZWZhdWx0VGV4dCA9ICctJztcbiAgLyoqIFRleHQgdG8gZGlzcGxheSB3aGVuIG5laXRoZXIgdGV4dEZpZWxkIG5vciB2YWx1ZUZpZWxkIGV4aXN0IG9uIHRoZSBpdGVtICovXG4gIHB1YmxpYyBnZXQgZGVmYXVsdFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFRleHQ7XG4gIH1cbiAgcHVibGljIHNldCBkZWZhdWx0VGV4dCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAnZGVmYXVsdFRleHQnLCB2YWx1ZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVkRmllbGQgPSAnZGlzYWJsZWQnO1xuICAvKiogRmllbGQgbmFtZSB1c2VkIHRvIGRldGVybWluZSBpZiBhbiBpdGVtIGlzIGRpc2FibGVkICovXG4gIHB1YmxpYyBnZXQgZGlzYWJsZWRGaWVsZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZEZpZWxkO1xuICB9XG4gIHB1YmxpYyBzZXQgZGlzYWJsZWRGaWVsZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZXRPcHRpb24oeyBuYW1lOiAnZGlzYWJsZWRGaWVsZCcsIHZhbHVlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfbXVsdGlwbGUgPSBmYWxzZTtcbiAgLyoqIFdoZXRoZXIgbXVsdGlwbGUgaXRlbXMgY2FuIGJlIHNlbGVjdGVkICovXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNldE9wdGlvbih7XG4gICAgICBuYW1lOiAnbXVsdGlwbGUnLFxuICAgICAgdmFsdWUsXG4gICAgICBhZnRlckNhbGxiYWNrOiAoKSA9PiB0aGlzLnJlc2V0KGZhbHNlKSxcbiAgICB9KTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBDb21wdXRlZCBQcm9wZXJ0aWVzXG4gIC8qKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgKi9cbiAgZ2V0IHNlbGVjdGVkSXRlbXMoKTogdW5rbm93bltdIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5zZWxlY3RlZEl0ZW1zIHx8IFtdO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIEV2ZW50c1xuICBvbkl0ZW1TZWxlY3RlZDogRXZlbnRFbWl0dGVyPEFYSXRlbVNlbGVjdGVkRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxBWEl0ZW1TZWxlY3RlZEV2ZW50PigpO1xuXG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpbiB0aGUgbGlzdCBpcyBjbGlja2VkLlxuICAgKlxuICAgKiBAZXZlbnRcbiAgICovXG4gIG9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8QVhJdGVtQ2xpY2tFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPEFYSXRlbUNsaWNrRXZlbnQ+KCk7XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIEFic3RyYWN0IE1ldGhvZHNcbiAgLyoqXG4gICAqIEFic3RyYWN0IG1ldGhvZCB0byByZXRyaWV2ZSBhbiBpdGVtIGJ5IGl0cyBrZXlcbiAgICogQHBhcmFtIGtleSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW1cbiAgICogQHJldHVybnMgVGhlIGl0ZW0gb3IgYSBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGl0ZW1cbiAgICovXG4gIGFic3RyYWN0IGdldEl0ZW1CeUtleShrZXk6IHVua25vd24pOiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPjtcbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gT3ZlcnJpZGUgTWV0aG9kc1xuICAvKipcbiAgICogSW50ZXJuYWwgbWV0aG9kIHRvIHNldCBhbmQgbm9ybWFsaXplIHRoZSBjb21wb25lbnQgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQgKGNhbiBiZSBzaW5nbGUgaXRlbSBvciBhcnJheSlcbiAgICogQHJldHVybnMgTm9ybWFsaXplZCB2YWx1ZSBiYXNlZCBvbiBtdWx0aXBsZSBzZWxlY3Rpb24gbW9kZVxuICAgKi9cbiAgb3ZlcnJpZGUgaW50ZXJuYWxTZXRWYWx1ZSh2YWx1ZTogdW5rbm93bikge1xuICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcblxuICAgIC8vIEhhbmRsZSBudWxsL2VtcHR5IHZhbHVlc1xuICAgIGlmICh2YWx1ZSA9PSBudWxsIHx8IChpc0FycmF5ICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiB0aGlzLm11bHRpcGxlID8gW10gOiBudWxsO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGl0ZW1zIGFscmVhZHkgaGF2ZSB0ZXh0IHByb3BlcnRpZXMgdG8gYXZvaWQgdW5uZWNlc3NhcnkgZmluZEJ5S2V5IGNhbGxzXG4gICAgY29uc3QgaXRlbXNUb05vcm1hbGl6ZSA9IGlzQXJyYXkgPyB2YWx1ZSA6IFt2YWx1ZV07XG4gICAgY29uc3QgbmVlZHNGaW5kQnlLZXkgPSBpdGVtc1RvTm9ybWFsaXplLnNvbWUoKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZ2V0KGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudGV4dEZpZWxkKSA9PSBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7IC8vIFByaW1pdGl2ZSB2YWx1ZXMgbmVlZCBmaW5kQnlLZXlcbiAgICB9KTtcblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtcyA9IHRoaXMubm9ybWFsaXplSXRlbXNMaXN0KGl0ZW1zVG9Ob3JtYWxpemUsIG5lZWRzRmluZEJ5S2V5KTtcblxuICAgIGlmIChub3JtYWxpemVkSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5tdWx0aXBsZSA/IFtdIDogbnVsbDtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWN0IHZhbHVlcyBiYXNlZCBvbiBzZWxlY3Rpb24gbW9kZVxuICAgIHJldHVybiB0aGlzLm11bHRpcGxlXG4gICAgICA/IG5vcm1hbGl6ZWRJdGVtcy5tYXAoKGl0ZW0pID0+IGdldChpdGVtIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aGlzLnZhbHVlRmllbGQpKVxuICAgICAgOiAoZ2V0KG5vcm1hbGl6ZWRJdGVtc1swXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKSA/PyBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSB0byBub3JtYWxpemUgc2VsZWN0ZWQgaXRlbXMgd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gICAqL1xuICBvdmVycmlkZSBlbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZT86IHVua25vd24sIG5ld1ZhbHVlPzogdW5rbm93bikge1xuICAgIHRoaXMuX25vcm1hbGl6ZVNlbGVjdGVkSXRlbXMoKTtcbiAgICBzdXBlci5lbWl0T25WYWx1ZUNoYW5nZWRFdmVudChvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFByaXZhdGUgTm9ybWFsaXphdGlvbiBNZXRob2RzXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGEgbGlzdCBvZiBpdGVtcywgZmlsdGVyaW5nIG91dCBudWxsIHZhbHVlc1xuICAgKiBAcGFyYW0gaXRlbXMgQXJyYXkgb2YgaXRlbXMgdG8gbm9ybWFsaXplXG4gICAqIEBwYXJhbSBmaW5kQnlLZXkgV2hldGhlciB0byBhdHRlbXB0IGZpbmRpbmcgaXRlbXMgYnkga2V5XG4gICAqIEByZXR1cm5zIEFycmF5IG9mIG5vcm1hbGl6ZWQgaXRlbXNcbiAgICovXG4gIHByb3RlY3RlZCBub3JtYWxpemVJdGVtc0xpc3QoaXRlbXM6IHVua25vd25bXSwgZmluZEJ5S2V5ID0gZmFsc2UpOiBOb3JtYWxpemVkSXRlbVtdIHtcbiAgICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHJldHVybiBbXTtcbiAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiBpdGVtICE9IG51bGwpLm1hcCgoaXRlbSkgPT4gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0sIGZpbmRCeUtleSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgYSBzaW5nbGUgaXRlbSwgaGFuZGxpbmcgY2FjaGluZyBhbmQgYXN5bmMgbG9hZGluZ1xuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIG5vcm1hbGl6ZVxuICAgKiBAcGFyYW0gZmluZEJ5S2V5IFdoZXRoZXIgdG8gYXR0ZW1wdCBmaW5kaW5nIHRoZSBpdGVtIGJ5IGtleVxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIGl0ZW0gb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUl0ZW0oaXRlbTogdW5rbm93biwgZmluZEJ5S2V5ID0gZmFsc2UpOiBOb3JtYWxpemVkSXRlbSB7XG4gICAgY29uc3QgaXNDb21wbGV4T2JqZWN0ID0gdHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGw7XG4gICAgY29uc3QgaXRlbVJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY29uc3QgdmFsdWVLZXkgPSBpc0NvbXBsZXhPYmplY3QgPyBnZXQoaXRlbVJlY29yZCwgdGhpcy52YWx1ZUZpZWxkKSA6IGl0ZW07XG4gICAgY29uc3Qga2V5ID0gdmFsdWVLZXkgIT0gbnVsbCA/IFN0cmluZyh2YWx1ZUtleSBhcyB1bmtub3duKSA6IFN0cmluZyhpdGVtKTtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuY3JlYXRlQ2FjaGVLZXkoa2V5KTtcblxuICAgIC8vIFJldHVybiBjYWNoZWQgaXRlbSBpZiBhdmFpbGFibGUgYW5kIGhhcyB0ZXh0XG4gICAgY29uc3QgY2FjaGVkSXRlbSA9IHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSBhcyBOb3JtYWxpemVkSXRlbSB8IHVuZGVmaW5lZDtcbiAgICBpZiAoY2FjaGVkSXRlbSAmJiBnZXQoY2FjaGVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpICE9IG51bGwpIHtcbiAgICAgIHJldHVybiBjYWNoZWRJdGVtO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc1RleHRQcm9wZXJ0eSA9ICFpc0NvbXBsZXhPYmplY3QgfHwgZ2V0KGl0ZW1SZWNvcmQsIHRoaXMudGV4dEZpZWxkKSAhPSBudWxsO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRPYmo6IE5vcm1hbGl6ZWRJdGVtID0ge307XG5cbiAgICAvLyBJZiBmaW5kQnlLZXkgaXMgdHJ1ZSwgd2UgbmVlZCB0byByZXNvbHZlIHRoZSBpdGVtIHRvIGdldCBpdHMgdGV4dFxuICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBzdHJpbmcgdmFsdWVzIGxpa2UgJ2lyJywgJ3VzJyB0aGF0IGRvbid0IGhhdmUgdGV4dFxuICAgIGlmIChmaW5kQnlLZXkpIHtcbiAgICAgIHRoaXMuaGFuZGxlSXRlbU5vcm1hbGl6YXRpb24obm9ybWFsaXplZE9iaiwgaXRlbSwga2V5LCB0cnVlLCBjYWNoZUtleSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEl0ZW0gYWxyZWFkeSBoYXMgYWxsIHJlcXVpcmVkIHByb3BlcnRpZXMsIGp1c3QgY29weSB0aGVtXG4gICAgICBPYmplY3QuYXNzaWduKG5vcm1hbGl6ZWRPYmosIGl0ZW0pO1xuICAgIH1cblxuICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG5vcm1hbGl6ZWRPYmo7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRPYmo7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgbm9ybWFsaXphdGlvbiBsb2dpYyBmb3IgaXRlbXMgdGhhdCBuZWVkIHByb3BlcnR5IGFzc2lnbm1lbnRcbiAgICovXG4gIHByaXZhdGUgaGFuZGxlSXRlbU5vcm1hbGl6YXRpb24oXG4gICAgbm9ybWFsaXplZE9iajogTm9ybWFsaXplZEl0ZW0sXG4gICAgb3JpZ2luYWxJdGVtOiB1bmtub3duLFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZpbmRCeUtleTogYm9vbGVhbixcbiAgICBjYWNoZUtleTogc3RyaW5nLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBleGlzdGluZ0l0ZW0gPSBmaW5kQnlLZXkgPyB0aGlzLmdldEl0ZW1CeUtleShrZXkpIDogbnVsbDtcblxuICAgIGlmIChleGlzdGluZ0l0ZW0gaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICB0aGlzLmhhbmRsZUFzeW5jSXRlbShub3JtYWxpemVkT2JqLCBrZXksIGV4aXN0aW5nSXRlbSwgY2FjaGVLZXkpO1xuICAgIH0gZWxzZSBpZiAoZXhpc3RpbmdJdGVtKSB7XG4gICAgICB0aGlzLmFzc2lnbkl0ZW1Qcm9wZXJ0aWVzKG5vcm1hbGl6ZWRPYmosIGV4aXN0aW5nSXRlbSwgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzaWduSXRlbVByb3BlcnRpZXMobm9ybWFsaXplZE9iaiwgb3JpZ2luYWxJdGVtLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZXMgYXN5bmMgaXRlbSBsb2FkaW5nIHdpdGggbG9hZGluZyBzdGF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBoYW5kbGVBc3luY0l0ZW0ob2JqOiBOb3JtYWxpemVkSXRlbSwga2V5OiBzdHJpbmcsIHByb21pc2U6IFByb21pc2U8dW5rbm93bj4sIGNhY2hlS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAvLyBTZXQgbG9hZGluZyBzdGF0ZVxuICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0ga2V5O1xuICAgIG9ialsnaXNMb2FkaW5nJ10gPSB0cnVlO1xuICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSAnQGFjb3JleDpjb21tb24uc3RhdHVzLmxvYWRpbmcnO1xuXG4gICAgcHJvbWlzZVxuICAgICAgLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcgJiYgcmVzdWx0KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihvYmosIGNsb25lRGVlcChyZXN1bHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvYmpbdGhpcy52YWx1ZUZpZWxkXSA9IHJlc3VsdCB8fCBrZXk7XG4gICAgICAgICAgb2JqW3RoaXMudGV4dEZpZWxkXSA9IHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBpdGVtIGJ5IGtleTonLCBrZXksIGVycm9yKTtcbiAgICAgICAgLy8gT24gZXJyb3IsIGtlZXAgdGhlIG9yaWdpbmFsIHZhbHVlIGJ1dCBtYXJrIGFzIGZhaWxlZFxuICAgICAgICBvYmpbdGhpcy50ZXh0RmllbGRdID0gdGhpcy5kZWZhdWx0VGV4dDtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRlbGV0ZSBvYmpbJ2lzTG9hZGluZyddO1xuICAgICAgICBkZWxldGUgb2JqWydfZGlzcGxheVRleHRMb2FkaW5nJ107XG4gICAgICAgIGRlbGV0ZSBvYmpbJ19sb2FkaW5nVHJpZ2dlcmVkJ107XG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG9iajtcblxuICAgICAgICAvLyBVc2Ugc2V0VGltZW91dCB0byBkZWZlciBjaGFuZ2UgZGV0ZWN0aW9uIGFuZCBwcmV2ZW50IGltbWVkaWF0ZSByZS1yZW5kZXJpbmdcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY2RyKSB7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXNzaWducyB2YWx1ZSBhbmQgdGV4dCBwcm9wZXJ0aWVzIHRvIHRoZSBub3JtYWxpemVkIG9iamVjdFxuICAgKi9cbiAgcHJpdmF0ZSBhc3NpZ25JdGVtUHJvcGVydGllcyhvYmo6IE5vcm1hbGl6ZWRJdGVtLCBzb3VyY2VJdGVtOiB1bmtub3duLCBpc0NvbXBsZXhTb3VyY2U6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBpc1NvdXJjZU9iamVjdCA9IHR5cGVvZiBzb3VyY2VJdGVtID09PSAnb2JqZWN0JyAmJiBzb3VyY2VJdGVtICE9PSBudWxsO1xuICAgIGNvbnN0IHNvdXJjZVJlY29yZCA9IHNvdXJjZUl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgICBpZiAoaXNDb21wbGV4U291cmNlICYmIGlzU291cmNlT2JqZWN0KSB7XG4gICAgICBjb25zdCB2YWx1ZUZyb21Tb3VyY2UgPSBnZXQoc291cmNlUmVjb3JkLCB0aGlzLnZhbHVlRmllbGQpO1xuICAgICAgY29uc3QgdGV4dEZyb21Tb3VyY2UgPSBnZXQoc291cmNlUmVjb3JkLCB0aGlzLnRleHRGaWVsZCk7XG4gICAgICBvYmpbdGhpcy52YWx1ZUZpZWxkXSA9ICh2YWx1ZUZyb21Tb3VyY2UgPz8gdGV4dEZyb21Tb3VyY2UpIGFzIHVua25vd247XG4gICAgICBvYmpbdGhpcy50ZXh0RmllbGRdID0gKHRleHRGcm9tU291cmNlID8/IHZhbHVlRnJvbVNvdXJjZSA/PyB0aGlzLmRlZmF1bHRUZXh0KSBhcyB1bmtub3duO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWx1ZUZyb21Tb3VyY2UgPSBpc1NvdXJjZU9iamVjdCA/IGdldChzb3VyY2VSZWNvcmQsIHRoaXMudmFsdWVGaWVsZCkgOiAoc291cmNlSXRlbSBhcyB1bmtub3duKTtcbiAgICAgIGNvbnN0IHRleHRGcm9tU291cmNlID0gaXNTb3VyY2VPYmplY3QgPyBnZXQoc291cmNlUmVjb3JkLCB0aGlzLnRleHRGaWVsZCkgOiAoc291cmNlSXRlbSBhcyB1bmtub3duKTtcbiAgICAgIG9ialt0aGlzLnZhbHVlRmllbGRdID0gKHZhbHVlRnJvbVNvdXJjZSA/PyB0ZXh0RnJvbVNvdXJjZSkgYXMgdW5rbm93bjtcbiAgICAgIG9ialt0aGlzLnRleHRGaWVsZF0gPSAodGV4dEZyb21Tb3VyY2UgPz8gdmFsdWVGcm9tU291cmNlID8/IHRoaXMuZGVmYXVsdFRleHQpIGFzIHVua25vd247XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb25zaXN0ZW50IGNhY2hlIGtleSBmb3IgYW4gaXRlbVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVDYWNoZUtleShrZXk6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBrLSR7a2V5fWA7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBjdXJyZW50bHkgc2VsZWN0ZWQgaXRlbXMgYW5kIHVwZGF0ZXMgdGhlIGRhdGEgc2VydmljZVxuICAgKi9cbiAgcHJpdmF0ZSBfbm9ybWFsaXplU2VsZWN0ZWRJdGVtcygpOiB2b2lkIHtcbiAgICBjb25zdCB2YWx1ZXMgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IHRoaXMudmFsdWUgIT0gbnVsbCA/IFt0aGlzLnZhbHVlXSA6IFtdO1xuXG4gICAgLy8gT25seSBjYWxsIG5vcm1hbGl6ZUl0ZW0gd2l0aCBmaW5kQnlLZXk9dHJ1ZSBpZiB0aGUgaXRlbSBkb2Vzbid0IGhhdmUgdGV4dFxuICAgIC8vIFRoaXMgcHJldmVudHMgdW5uZWNlc3NhcnkgQVBJIGNhbGxzIGZvciBpdGVtcyB0aGF0IGFscmVhZHkgaGF2ZSB0ZXh0XG4gICAgdGhpcy5kYXRhU2VydmljZS5zZWxlY3RlZEl0ZW1zID0gdmFsdWVzLm1hcCgodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IGhhc1RleHQgPVxuICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIGdldCh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpICE9IG51bGw7XG4gICAgICByZXR1cm4gdGhpcy5ub3JtYWxpemVJdGVtKHZhbHVlLCAhaGFzVGV4dCk7XG4gICAgfSk7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUHVibGljIFNlbGVjdGlvbiBNZXRob2RzXG4gIC8qKlxuICAgKiBVbnNlbGVjdHMgdGhlIHNwZWNpZmllZCBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb25cbiAgICogQHBhcmFtIGl0ZW1zIEl0ZW1zIHRvIHVuc2VsZWN0XG4gICAqL1xuICBwdWJsaWMgdW5zZWxlY3RJdGVtcyguLi5pdGVtczogVFtdKTogdm9pZCB7XG4gICAgaWYgKCFpdGVtcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbW1pdFZhbHVlKFtdLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkSXRlbXMgPSB0aGlzLm5vcm1hbGl6ZUl0ZW1zTGlzdChpdGVtcyk7XG4gICAgY29uc3QgbmV3U2VsZWN0ZWRJdGVtcyA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maWx0ZXIoXG4gICAgICAoc2VsZWN0ZWRJdGVtKSA9PlxuICAgICAgICAhbm9ybWFsaXplZEl0ZW1zLnNvbWUoXG4gICAgICAgICAgKG5vcm1hbGl6ZWRJdGVtKSA9PlxuICAgICAgICAgICAgZ2V0KG5vcm1hbGl6ZWRJdGVtIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aGlzLnZhbHVlRmllbGQpID09PVxuICAgICAgICAgICAgZ2V0KHNlbGVjdGVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKSxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgdGhpcy5jb21taXRWYWx1ZShuZXdTZWxlY3RlZEl0ZW1zLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3RzIHRoZSBzcGVjaWZpZWQgaXRlbXNcbiAgICogQHBhcmFtIGl0ZW1zIEl0ZW1zIHRvIHNlbGVjdFxuICAgKi9cbiAgcHVibGljIHNlbGVjdEl0ZW1zKC4uLml0ZW1zOiBUW10pOiB2b2lkIHtcbiAgICBpZiAoIWl0ZW1zPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpID8gdGhpcy52YWx1ZSA6IFt0aGlzLnZhbHVlXTtcbiAgICBjb25zdCBub3JtYWxpemVkSXRlbXMgPSB0aGlzLm5vcm1hbGl6ZUl0ZW1zTGlzdChpdGVtcyk7XG5cbiAgICBjb25zdCBuZXdTZWxlY3RlZEl0ZW1zID0gdGhpcy5tdWx0aXBsZSA/IFsuLi5jdXJyZW50VmFsdWUsIC4uLm5vcm1hbGl6ZWRJdGVtc10gOiBub3JtYWxpemVkSXRlbXM7XG5cbiAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLFxuICAgICAgaXNVc2VySW50ZXJhY3Rpb246IHRydWUsXG4gICAgICBpdGVtOiBuZXdTZWxlY3RlZEl0ZW1zWzBdLFxuICAgICAgaHRtbEVsZW1lbnQ6IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29tbWl0VmFsdWUobmV3U2VsZWN0ZWRJdGVtcywgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlcyB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXNcbiAgICogQHBhcmFtIGl0ZW1zIEl0ZW1zIHRvIHRvZ2dsZVxuICAgKi9cbiAgcHVibGljIHRvZ2dsZVNlbGVjdCguLi5pdGVtczogVFtdKTogdm9pZCB7XG4gICAgaXRlbXM/LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuaXNJdGVtU2VsZWN0ZWQoaXRlbSkgPyB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSkgOiB0aGlzLnNlbGVjdEl0ZW1zKGl0ZW0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvLyAjZW5kcmVnaW9uXG5cbiAgLy8gI3JlZ2lvbiBQdWJsaWMgVXRpbGl0eSBNZXRob2RzXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBpcyBjdXJyZW50bHkgc2VsZWN0ZWRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBjaGVja1xuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBpdGVtIGlzIHNlbGVjdGVkXG4gICAqL1xuICBwdWJsaWMgaXNJdGVtU2VsZWN0ZWQoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zLnNvbWUoXG4gICAgICAoc2VsZWN0ZWRJdGVtKSA9PiBnZXQoc2VsZWN0ZWRJdGVtIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCB0aGlzLnZhbHVlRmllbGQpID09PSBub3JtYWxpemVkVmFsdWUsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBpcyBkaXNhYmxlZFxuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgZGlzYWJsZWRcbiAgICovXG4gIHB1YmxpYyBpc0l0ZW1EaXNhYmxlZChpdGVtOiBUKTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXRlbVJlY29yZCA9IGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZGlzYWJsZWQgfHxcbiAgICAgIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShnZXQoaXRlbVJlY29yZCwgdGhpcy5kaXNhYmxlZEZpZWxkKSBhcyBhbnkpID09PSB0cnVlIHx8XG4gICAgICAodGhpcy5kaXNhYmxlZENhbGxiYWNrPy4oeyBpdGVtLCBpbmRleDogLTEgfSkgPz8gZmFsc2UpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYW4gaXRlbSBpcyBjdXJyZW50bHkgbG9hZGluZ1xuICAgKiBAcGFyYW0gaXRlbSBJdGVtIHRvIGNoZWNrXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGl0ZW0gaXMgbG9hZGluZ1xuICAgKi9cbiAgcHVibGljIGlzSXRlbUxvYWRpbmcoaXRlbTogVCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pO1xuICAgIHJldHVybiBub3JtYWxpemVkSXRlbVsnaXNMb2FkaW5nJ10gPT09IHRydWU7XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxuXG4gIC8vICNyZWdpb24gUHJvdGVjdGVkIFV0aWxpdHkgTWV0aG9kc1xuICAvKipcbiAgICogR2V0cyB0aGUgZGlzcGxheSB0ZXh0IGZvciBhbiBpdGVtIHVzaW5nIHRlbXBsYXRlIG9yIHRleHQgZmllbGRcbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBnZXQgZGlzcGxheSB0ZXh0IGZvclxuICAgKiBAcmV0dXJucyBGb3JtYXR0ZWQgZGlzcGxheSB0ZXh0XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RGlzcGxheVRleHQoaXRlbTogVCk6IHN0cmluZyB7XG4gICAgLy8gUHJldmVudCByZWN1cnNpdmUgY2FsbHMgdGhhdCBjb3VsZCBjYXVzZSBpbmZpbml0ZSBsb29wc1xuICAgIGlmIChpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAoaXRlbSBhcyBhbnkpWydfZGlzcGxheVRleHRMb2FkaW5nJ10pIHtcbiAgICAgIHJldHVybiAnQGFjb3JleDpjb21tb24uc3RhdHVzLmxvYWRpbmcnO1xuICAgIH1cblxuICAgIC8vIEFkZCB0aW1lc3RhbXAtYmFzZWQgZGVib3VuY2luZyB0byBwcmV2ZW50IGV4Y2Vzc2l2ZSBjYWxscyBmb3IgQUxMIGl0ZW0gdHlwZXNcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGl0ZW1LZXkgPSB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogZ2V0KGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudmFsdWVGaWVsZCk7XG4gICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZyhpdGVtS2V5KSk7XG5cbiAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgcmVjZW50IHJlc3VsdCBpbiB0aGUgY2FjaGUgdG8gcHJldmVudCBkdXBsaWNhdGUgcHJvY2Vzc2luZ1xuICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XTtcbiAgICBpZiAoY2FjaGVkUmVzdWx0ICYmIChjYWNoZWRSZXN1bHQgYXMgYW55KVsnX2xhc3REaXNwbGF5VGV4dENhbGwnXSkge1xuICAgICAgY29uc3QgdGltZVNpbmNlTGFzdENhbGwgPSBub3cgLSAoY2FjaGVkUmVzdWx0IGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ107XG4gICAgICBpZiAodGltZVNpbmNlTGFzdENhbGwgPCA1MCkge1xuICAgICAgICAvLyA1MG1zIGRlYm91bmNlXG4gICAgICAgIHJldHVybiAoY2FjaGVkUmVzdWx0IGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXSB8fCBTdHJpbmcoaXRlbUtleSB8fCAnJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIHN0cmluZyB2YWx1ZXMsIHdlIG5lZWQgdG8gbm9ybWFsaXplIHdpdGggZmluZEJ5S2V5PXRydWUgdG8gdHJpZ2dlciBhc3luYyBsb2FkaW5nXG4gICAgY29uc3QgaXNTdHJpbmdWYWx1ZSA9IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJztcbiAgICBjb25zdCBub3JtYWxpemVkSXRlbSA9IHRoaXMubm9ybWFsaXplSXRlbShpdGVtLCBpc1N0cmluZ1ZhbHVlKTtcblxuICAgIC8vIFRyeSB0ZW1wbGF0ZSBmb3JtYXR0aW5nIEZJUlNUIGJlZm9yZSBjaGVja2luZyBjYWNoZWQgdGV4dEZpZWxkXG4gICAgaWYgKHRoaXMudGV4dFRlbXBsYXRlKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRUZW1wbGF0ZSA9IHRoaXMuZm9ybWF0U2VydmljZS5mb3JtYXQodGhpcy50ZXh0VGVtcGxhdGUsICdzdHJpbmcnLCBub3JtYWxpemVkSXRlbSk7XG4gICAgICBpZiAoZm9ybWF0dGVkVGVtcGxhdGUgIT09IHRoaXMudGV4dFRlbXBsYXRlKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZvcm1hdHRlZFRlbXBsYXRlO1xuICAgICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlXG4gICAgICAgIGlmIChub3JtYWxpemVkSXRlbSkge1xuICAgICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0Q2FsbCddID0gbm93O1xuICAgICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGlzIGl0ZW0gaXMgYWxyZWFkeSBpbiB0aGUgY2FjaGUgd2l0aCBwcm9wZXIgdGV4dFxuICAgIGNvbnN0IGl0ZW1WYWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICBpZiAoaXRlbVZhbHVlICE9IG51bGwgJiYgaXRlbVZhbHVlICE9PSAnJykge1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZyhpdGVtVmFsdWUpKTtcbiAgICAgIGNvbnN0IGNhY2hlZEl0ZW0gPSB0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdFtjYWNoZUtleV07XG4gICAgICBpZiAoY2FjaGVkSXRlbSAmJiBnZXQoY2FjaGVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpICE9IG51bGwpIHtcbiAgICAgICAgLy8gVXNlIGNhY2hlZCB0ZXh0IGlmIGF2YWlsYWJsZVxuICAgICAgICBjb25zdCBjYWNoZWRUZXh0ID0gZ2V0KGNhY2hlZEl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudGV4dEZpZWxkKTtcbiAgICAgICAgaWYgKGNhY2hlZFRleHQgJiYgY2FjaGVkVGV4dCAhPT0gJ0BhY29yZXg6Y29tbW9uLnN0YXR1cy5sb2FkaW5nJykge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFN0cmluZyhjYWNoZWRUZXh0KTtcbiAgICAgICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlICh3b3JrcyBmb3IgYWxsIGl0ZW0gdHlwZXMpXG4gICAgICAgICAgaWYgKGNhY2hlZEl0ZW0pIHtcbiAgICAgICAgICAgIChjYWNoZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ10gPSBub3c7XG4gICAgICAgICAgICAoY2FjaGVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBVc2UgdGV4dCBmaWVsZCBvciBmYWxsYmFjayB0byB2YWx1ZSBmaWVsZFxuICAgIGNvbnN0IHRleHRWYWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy50ZXh0RmllbGQpO1xuICAgIGlmICh0ZXh0VmFsdWUgIT0gbnVsbCAmJiB0ZXh0VmFsdWUgIT09ICcnKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBTdHJpbmcodGV4dFZhbHVlKTtcbiAgICAgIC8vIENhY2hlIHRoZSB0aW1lc3RhbXAgYW5kIHJlc3VsdCBmb3IgZGVib3VuY2luZyBpbiB0aGUgY2FjaGVcbiAgICAgIGlmIChub3JtYWxpemVkSXRlbSkge1xuICAgICAgICAobm9ybWFsaXplZEl0ZW0gYXMgYW55KVsnX2xhc3REaXNwbGF5VGV4dENhbGwnXSA9IG5vdztcbiAgICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXSA9IHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSWYgdGV4dCBpcyBtaXNzaW5nIGFuZCBpdGVtIGlzIGxvYWRpbmcsIHNob3cgbG9hZGluZyBzdGF0ZVxuICAgIGlmIChub3JtYWxpemVkSXRlbVsnaXNMb2FkaW5nJ10pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9ICdAYWNvcmV4OmNvbW1vbi5zdGF0dXMubG9hZGluZyc7XG4gICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlXG4gICAgICBpZiAobm9ybWFsaXplZEl0ZW0pIHtcbiAgICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ10gPSBub3c7XG4gICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIEF0dGVtcHQgdG8gbG9hZCBpdGVtIGJ5IGtleSBpZiB0ZXh0IGlzIG1pc3NpbmdcbiAgICBjb25zdCB2YWx1ZSA9IGdldChub3JtYWxpemVkSXRlbSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgdGhpcy52YWx1ZUZpZWxkKTtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZGVmYXVsdFRleHQ7XG4gICAgICAvLyBDYWNoZSB0aGUgdGltZXN0YW1wIGFuZCByZXN1bHQgZm9yIGRlYm91bmNpbmcgaW4gdGhlIGNhY2hlXG4gICAgICBpZiAobm9ybWFsaXplZEl0ZW0pIHtcbiAgICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRDYWxsJ10gPSBub3c7XG4gICAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0UmVzdWx0J10gPSByZXN1bHQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIC8vIElmIHdlIGhhdmUgYSB2YWx1ZSBidXQgbm8gdGV4dCwgdHJpZ2dlciBhc3luYyBsb2FkaW5nIG9ubHkgb25jZVxuICAgIC8vIFVzZSBhIGZsYWcgdG8gcHJldmVudCBtdWx0aXBsZSBjYWxsc1xuICAgIGlmICghbm9ybWFsaXplZEl0ZW1bJ19sb2FkaW5nVHJpZ2dlcmVkJ10gJiYgIW5vcm1hbGl6ZWRJdGVtW3RoaXMudGV4dEZpZWxkXSkge1xuICAgICAgbm9ybWFsaXplZEl0ZW1bJ19sb2FkaW5nVHJpZ2dlcmVkJ10gPSB0cnVlO1xuICAgICAgbm9ybWFsaXplZEl0ZW1bJ19kaXNwbGF5VGV4dExvYWRpbmcnXSA9IHRydWU7XG5cbiAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHRvIGRlZmVyIHRoZSBhc3luYyBsb2FkaW5nIGFuZCBwcmV2ZW50IGltbWVkaWF0ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkQW5kQ2FjaGVJdGVtQnlLZXkodmFsdWUpO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIHRoZSB2YWx1ZSBpdHNlbGYgYXMgYSBmYWxsYmFja1xuICAgIC8vIFRoaXMgd2lsbCBiZSB1cGRhdGVkIG9uY2UgdGhlIGFzeW5jIGxvYWRpbmcgY29tcGxldGVzXG4gICAgY29uc3QgcmVzdWx0ID0gU3RyaW5nKHZhbHVlKTtcblxuICAgIC8vIENhY2hlIHRoZSB0aW1lc3RhbXAgYW5kIHJlc3VsdCBmb3IgZGVib3VuY2luZyBpbiB0aGUgY2FjaGVcbiAgICBpZiAobm9ybWFsaXplZEl0ZW0pIHtcbiAgICAgIChub3JtYWxpemVkSXRlbSBhcyBhbnkpWydfbGFzdERpc3BsYXlUZXh0Q2FsbCddID0gbm93O1xuICAgICAgKG5vcm1hbGl6ZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXSA9IHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIG9mIGFuIGl0ZW1cbiAgICogQHBhcmFtIGl0ZW0gSXRlbSB0byBnZXQgdmFsdWUgZnJvbVxuICAgKiBAcmV0dXJucyBJdGVtIHZhbHVlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWUoaXRlbTogVCk6IHVua25vd24ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJdGVtID0gdGhpcy5ub3JtYWxpemVJdGVtKGl0ZW0pO1xuICAgIHJldHVybiBnZXQobm9ybWFsaXplZEl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudmFsdWVGaWVsZCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWxlY3Rpb24gY2FjaGUgYW5kIHNlbGVjdGVkIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgY2xlYXJTZWxlY3Rpb25DYWNoZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdCA9IHt9O1xuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBvbmx5IHRoZSBjYWNoZSB3aGlsZSBwcmVzZXJ2aW5nIHNlbGVjdGVkIGl0ZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgc29mdENsZWFyU2VsZWN0aW9uQ2FjaGUoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3QgPSB7fTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGRlYm91bmNpbmcgY2FjaGUgZm9yIHNwZWNpZmljIGl0ZW1zIHRvIGVuc3VyZSBmcmVzaCBkYXRhIGlzIGRpc3BsYXllZFxuICAgKi9cbiAgcHJvdGVjdGVkIGNsZWFySXRlbURlYm91bmNpbmdDYWNoZShpdGVtOiBUKTogdm9pZCB7XG4gICAgLy8gR2V0IHRoZSBjYWNoZSBrZXkgZm9yIHRoaXMgaXRlbVxuICAgIGNvbnN0IGl0ZW1LZXkgPSB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZycgPyBpdGVtIDogZ2V0KGl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIHRoaXMudmFsdWVGaWVsZCk7XG4gICAgaWYgKGl0ZW1LZXkgIT0gbnVsbCkge1xuICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZyhpdGVtS2V5KSk7XG4gICAgICBjb25zdCBjYWNoZWRJdGVtID0gdGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldO1xuXG4gICAgICBpZiAoY2FjaGVkSXRlbSkge1xuICAgICAgICBkZWxldGUgKGNhY2hlZEl0ZW0gYXMgYW55KVsnX2xhc3REaXNwbGF5VGV4dENhbGwnXTtcbiAgICAgICAgZGVsZXRlIChjYWNoZWRJdGVtIGFzIGFueSlbJ19sYXN0RGlzcGxheVRleHRSZXN1bHQnXTtcbiAgICAgICAgZGVsZXRlIChjYWNoZWRJdGVtIGFzIGFueSlbJ19kaXNwbGF5VGV4dExvYWRpbmcnXTtcbiAgICAgICAgZGVsZXRlIChjYWNoZWRJdGVtIGFzIGFueSlbJ19sb2FkaW5nVHJpZ2dlcmVkJ107XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhIHJlZnJlc2ggb2YgdGhlIGRpc3BsYXkgd2hlbiBpdGVtcyBhcmUgbG9hZGVkIGFzeW5jaHJvbm91c2x5XG4gICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyB1cGRhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVmcmVzaERpc3BsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBkaXNwbGF5IGZvciBhbGwgc2VsZWN0ZWQgaXRlbXMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5XG4gICAqIFRoaXMgaXMgdXNlZnVsIHdoZW4gdGhlIGRhdGEgc291cmNlIGhhcyBiZWVuIHVwZGF0ZWRcbiAgICovXG4gIHByb3RlY3RlZCByZWZyZXNoU2VsZWN0ZWRJdGVtc0Rpc3BsYXkoKTogdm9pZCB7XG4gICAgLy8gRm9yY2UgYSByZWZyZXNoIG9mIHRoZSBkaXNwbGF5IHdpdGhvdXQgcmUtbm9ybWFsaXppbmcgdG8gYXZvaWQgaW5maW5pdGUgbG9vcHNcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYSByZWZyZXNoIG9mIGFsbCBzZWxlY3RlZCBpdGVtcyBieSBjbGVhcmluZyB0aGVpciBkZWJvdW5jaW5nIGNhY2hlXG4gICAqIFRoaXMgZW5zdXJlcyBmcmVzaCBkYXRhIGlzIGRpc3BsYXllZCB3aGVuIHRoZSBkYXRhIHNvdXJjZSBpcyB1cGRhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZm9yY2VSZWZyZXNoU2VsZWN0ZWRJdGVtcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJJdGVtRGVib3VuY2luZ0NhY2hlKGl0ZW0gYXMgVCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIC8vICNlbmRyZWdpb25cblxuICAvLyAjcmVnaW9uIFByaXZhdGUgSGVscGVyIE1ldGhvZHNcbiAgLyoqXG4gICAqIEFzeW5jaHJvbm91c2x5IGxvYWRzIGFuIGl0ZW0gYnkgaXRzIGtleSBhbmQgY2FjaGVzIHRoZSByZXN1bHRcbiAgICogQHBhcmFtIGtleSBLZXkgdG8gbG9hZCBpdGVtIGJ5XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGxvYWRBbmRDYWNoZUl0ZW1CeUtleShrZXk6IHVua25vd24pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaXRlbSA9IGF3YWl0IHRoaXMuZ2V0SXRlbUJ5S2V5KGtleSk7XG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkSXRlbSA9IHRoaXMubm9ybWFsaXplSXRlbShpdGVtKTtcbiAgICAgICAgY29uc3QgY2FjaGVLZXkgPSB0aGlzLmNyZWF0ZUNhY2hlS2V5KFN0cmluZygobm9ybWFsaXplZEl0ZW0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW3RoaXMudmFsdWVGaWVsZF0pKTtcblxuICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlIHdpdGggdGhlIGxvYWRlZCBpdGVtXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSA9IG5vcm1hbGl6ZWRJdGVtO1xuXG4gICAgICAgIC8vIENsZWFyIGxvYWRpbmcgZmxhZ3NcbiAgICAgICAgaWYgKHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSkge1xuICAgICAgICAgIGRlbGV0ZSAodGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldIGFzIGFueSlbJ19kaXNwbGF5VGV4dExvYWRpbmcnXTtcbiAgICAgICAgICBkZWxldGUgKHRoaXMuZGF0YVNlcnZpY2UuY2FjaGVMaXN0W2NhY2hlS2V5XSBhcyBhbnkpWydfbG9hZGluZ1RyaWdnZXJlZCddO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQgdG8gZGVmZXIgY2hhbmdlIGRldGVjdGlvbiBhbmQgcHJldmVudCBpbW1lZGlhdGUgcmUtcmVuZGVyaW5nXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNkcikge1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS53YXJuKCdGYWlsZWQgdG8gbG9hZCBpdGVtIGJ5IGtleTonLCBrZXksIGVycm9yKTtcblxuICAgICAgLy8gQ2xlYXIgbG9hZGluZyBmbGFncyBvbiBlcnJvciB0b29cbiAgICAgIGNvbnN0IGNhY2hlS2V5ID0gdGhpcy5jcmVhdGVDYWNoZUtleShTdHJpbmcoa2V5KSk7XG4gICAgICBpZiAodGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldKSB7XG4gICAgICAgIGRlbGV0ZSAodGhpcy5kYXRhU2VydmljZS5jYWNoZUxpc3RbY2FjaGVLZXldIGFzIGFueSlbJ19kaXNwbGF5VGV4dExvYWRpbmcnXTtcbiAgICAgICAgZGVsZXRlICh0aGlzLmRhdGFTZXJ2aWNlLmNhY2hlTGlzdFtjYWNoZUtleV0gYXMgYW55KVsnX2xvYWRpbmdUcmlnZ2VyZWQnXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gI2VuZHJlZ2lvblxufVxuIl19","import { Directive, EventEmitter, Input, Output, inject } from '@angular/core';\nimport { NgModel } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged, skip } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nexport class AXNgModelDelayedValueChangedDirective {\n get delayTime() {\n return this._delayTime;\n }\n set delayTime(v) {\n if (v != this._delayTime) {\n this._delayTime = v;\n this.axDelayTimeChange.emit(v);\n this.update();\n }\n }\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n constructor() {\n this.ngModel = inject(NgModel);\n this.axDelayedValueChanged = new EventEmitter();\n this.axDelayTimeChange = new EventEmitter();\n this._delayTime = 0;\n this.delayTime = 0;\n }\n update() {\n this.subscription?.unsubscribe();\n //\n this.subscription = this.ngModel.control.valueChanges\n .pipe(skip(1), // skip initial value\n distinctUntilChanged(), debounceTime(this.delayTime))\n .subscribe((value) => this.axDelayedValueChanged.emit(value));\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXNgModelDelayedValueChangedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: AXNgModelDelayedValueChangedDirective, isStandalone: true, selector: \"[axDelayedValueChanged]\", inputs: { delayTime: \"delayTime\" }, outputs: { axDelayedValueChanged: \"axDelayedValueChanged\", axDelayTimeChange: \"axDelayTimeChange\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXNgModelDelayedValueChangedDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axDelayedValueChanged]',\n }]\n }], ctorParameters: () => [], propDecorators: { axDelayedValueChanged: [{\n type: Output\n }], axDelayTimeChange: [{\n type: Output\n }], delayTime: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXllZC12YWx1ZS1jaGFuZ2VkLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL2RlbGF5ZWQtdmFsdWUtY2hhbmdlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pDLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFLOUUsTUFBTSxPQUFPLHFDQUFxQztJQVVoRCxJQUNXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFXLFNBQVMsQ0FBQyxDQUFTO1FBQzVCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUlELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDtRQTNCUSxZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBR2xDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFHaEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV2QyxlQUFVLEdBQUcsQ0FBQyxDQUFDO1FBb0JyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsRUFBRTtRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWTthQUNsRCxJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLHFCQUFxQjtRQUM5QixvQkFBb0IsRUFBRSxFQUN0QixZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUM3QjthQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7K0dBMUNVLHFDQUFxQzttR0FBckMscUNBQXFDOzs0RkFBckMscUNBQXFDO2tCQUhqRCxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3BDOztzQkFJRSxNQUFNOztzQkFHTixNQUFNOztzQkFJTixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ01vZGVsIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBza2lwIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theERlbGF5ZWRWYWx1ZUNoYW5nZWRdJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhOZ01vZGVsRGVsYXllZFZhbHVlQ2hhbmdlZERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgbmdNb2RlbCA9IGluamVjdChOZ01vZGVsKTtcblxuICBAT3V0cHV0KClcbiAgYXhEZWxheWVkVmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpXG4gIGF4RGVsYXlUaW1lQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHJpdmF0ZSBfZGVsYXlUaW1lID0gMDtcbiAgQElucHV0KClcbiAgcHVibGljIGdldCBkZWxheVRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGVsYXlUaW1lO1xuICB9XG4gIHB1YmxpYyBzZXQgZGVsYXlUaW1lKHY6IG51bWJlcikge1xuICAgIGlmICh2ICE9IHRoaXMuX2RlbGF5VGltZSkge1xuICAgICAgdGhpcy5fZGVsYXlUaW1lID0gdjtcbiAgICAgIHRoaXMuYXhEZWxheVRpbWVDaGFuZ2UuZW1pdCh2KTtcbiAgICAgIHRoaXMudXBkYXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZGVsYXlUaW1lID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIC8vXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLm5nTW9kZWwuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKDEpLCAvLyBza2lwIGluaXRpYWwgdmFsdWVcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVsYXlUaW1lKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLmF4RGVsYXllZFZhbHVlQ2hhbmdlZC5lbWl0KHZhbHVlKSk7XG4gIH1cbn1cbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, PLATFORM_ID, ViewContainerRef, afterNextRender, effect, inject, input } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXInvertedColorDirective {\n constructor() {\n this.color = input.required(...(ngDevMode ? [{ debugName: \"color\" }] : []));\n this.ref = inject(ViewContainerRef);\n this.platformID = inject(PLATFORM_ID);\n afterNextRender(() => {\n this.invertColor();\n });\n effect(() => {\n this.invertColor();\n });\n }\n invertColor() {\n let color;\n let foreColor;\n const invertedVariables = [];\n if (isPlatformBrowser(this.platformID)) {\n if (this.color() === 'default') {\n color = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}`);\n foreColor = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}-fore`);\n invertedVariables.push({ name: `--ax-color-ghost`, value: `${foreColor}` });\n invertedVariables.push({ name: `--ax-color-ghost-fore`, value: `${color}` });\n }\n else {\n const range = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950];\n color = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}-500`);\n foreColor = getComputedStyle(document.documentElement).getPropertyValue(`--ax-color-${this.color()}-fore`);\n range.forEach((c) => {\n invertedVariables.push({ name: `--ax-color-${this.color()}-${c}`, value: `${foreColor}` });\n });\n invertedVariables.push({ name: `--ax-color-${this.color()}-fore`, value: `${color}` });\n invertedVariables.push({ name: `--ax-color-${this.color()}-fore-tint`, value: `${color}` });\n }\n invertedVariables.forEach((c) => {\n this.ref.element.nativeElement.style.setProperty(c.name, c.value);\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXInvertedColorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.3.15\", type: AXInvertedColorDirective, isStandalone: true, selector: \"[axInvertedColor]\", inputs: { color: { classPropertyName: \"color\", publicName: \"color\", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXInvertedColorDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axInvertedColor]',\n }]\n }], ctorParameters: () => [], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: \"color\", required: true }] }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52ZXJ0ZWQtY29sb3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NvbW1vbi9zcmMvbGliL2RpcmVjdGl2ZXMvaW52ZXJ0ZWQtY29sb3IuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFNakgsTUFBTSxPQUFPLHdCQUF3QjtJQUluQztRQUhBLFVBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxnREFBb0IsQ0FBQztRQUMzQyxRQUFHLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUV2QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNuQixJQUFJLEtBQUssQ0FBQztRQUNWLElBQUksU0FBUyxDQUFDO1FBQ2QsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFN0IsSUFBSSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDL0IsS0FBSyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2xHLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLEdBQUcsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1RSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9FLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLEtBQUssR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFFckUsS0FBSyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ3RHLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUMzRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ2xCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzdGLENBQUMsQ0FBQyxDQUFDO2dCQUNILGlCQUFpQixDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLElBQUksQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkYsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsSUFBSSxDQUFDLEtBQUssRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLENBQUM7WUFFRCxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBNkIsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBeENVLHdCQUF3QjttR0FBeEIsd0JBQXdCOzs0RkFBeEIsd0JBQXdCO2tCQUhwQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBQTEFURk9STV9JRCwgVmlld0NvbnRhaW5lclJlZiwgYWZ0ZXJOZXh0UmVuZGVyLCBlZmZlY3QsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYU3R5bGVDb2xvclR5cGUgfSBmcm9tICcuLi9jbGFzc2VzL3N0eWxlcy5jbGFzcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1theEludmVydGVkQ29sb3JdJyxcbn0pXG5leHBvcnQgY2xhc3MgQVhJbnZlcnRlZENvbG9yRGlyZWN0aXZlIHtcbiAgY29sb3IgPSBpbnB1dC5yZXF1aXJlZDxBWFN0eWxlQ29sb3JUeXBlPigpO1xuICByZWYgPSBpbmplY3QoVmlld0NvbnRhaW5lclJlZik7XG4gIHByaXZhdGUgcGxhdGZvcm1JRCA9IGluamVjdChQTEFURk9STV9JRCk7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICB0aGlzLmludmVydENvbG9yKCk7XG4gICAgfSk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMuaW52ZXJ0Q29sb3IoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbnZlcnRDb2xvcigpIHtcbiAgICBsZXQgY29sb3I7XG4gICAgbGV0IGZvcmVDb2xvcjtcbiAgICBjb25zdCBpbnZlcnRlZFZhcmlhYmxlcyA9IFtdO1xuXG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JRCkpIHtcbiAgICAgIGlmICh0aGlzLmNvbG9yKCkgPT09ICdkZWZhdWx0Jykge1xuICAgICAgICBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLWF4LWNvbG9yLSR7dGhpcy5jb2xvcigpfWApO1xuICAgICAgICBmb3JlQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZShgLS1heC1jb2xvci0ke3RoaXMuY29sb3IoKX0tZm9yZWApO1xuICAgICAgICBpbnZlcnRlZFZhcmlhYmxlcy5wdXNoKHsgbmFtZTogYC0tYXgtY29sb3ItZ2hvc3RgLCB2YWx1ZTogYCR7Zm9yZUNvbG9yfWAgfSk7XG4gICAgICAgIGludmVydGVkVmFyaWFibGVzLnB1c2goeyBuYW1lOiBgLS1heC1jb2xvci1naG9zdC1mb3JlYCwgdmFsdWU6IGAke2NvbG9yfWAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByYW5nZSA9IFs1MCwgMTAwLCAyMDAsIDMwMCwgNDAwLCA1MDAsIDYwMCwgNzAwLCA4MDAsIDkwMCwgOTUwXTtcblxuICAgICAgICBjb2xvciA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKGAtLWF4LWNvbG9yLSR7dGhpcy5jb2xvcigpfS01MDBgKTtcbiAgICAgICAgZm9yZUNvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoYC0tYXgtY29sb3ItJHt0aGlzLmNvbG9yKCl9LWZvcmVgKTtcbiAgICAgICAgcmFuZ2UuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgICAgIGludmVydGVkVmFyaWFibGVzLnB1c2goeyBuYW1lOiBgLS1heC1jb2xvci0ke3RoaXMuY29sb3IoKX0tJHtjfWAsIHZhbHVlOiBgJHtmb3JlQ29sb3J9YCB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGludmVydGVkVmFyaWFibGVzLnB1c2goeyBuYW1lOiBgLS1heC1jb2xvci0ke3RoaXMuY29sb3IoKX0tZm9yZWAsIHZhbHVlOiBgJHtjb2xvcn1gIH0pO1xuICAgICAgICBpbnZlcnRlZFZhcmlhYmxlcy5wdXNoKHsgbmFtZTogYC0tYXgtY29sb3ItJHt0aGlzLmNvbG9yKCl9LWZvcmUtdGludGAsIHZhbHVlOiBgJHtjb2xvcn1gIH0pO1xuICAgICAgfVxuXG4gICAgICBpbnZlcnRlZFZhcmlhYmxlcy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICAgICh0aGlzLnJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnNldFByb3BlcnR5KGMubmFtZSwgYy52YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","import { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Directive, DOCUMENT, ElementRef, inject, Input, PLATFORM_ID, } from '@angular/core';\nimport * as i0 from \"@angular/core\";\nexport class AXRippleDirective {\n constructor() {\n this.el = inject(ElementRef);\n this.cdr = inject(ChangeDetectorRef);\n this.enabled = true;\n this.axRippleColor = 'var(--ax-comp-ripple-bg-color, rgba(255, 255, 255, 0.3))';\n this.document = inject(DOCUMENT);\n this.platformID = inject(PLATFORM_ID);\n }\n ngOnInit() {\n if (this.enabled) {\n this.el.nativeElement.addEventListener('click', (event) => {\n this.onElementClick(event);\n });\n }\n }\n ngOnDestroy() {\n this.el.nativeElement.removeEventListener('click', this.createRipple.bind(this));\n }\n onElementClick(event) {\n this.createRipple(event);\n }\n createRipple(event) {\n const element = event.currentTarget;\n const exists = element.querySelector('.ax-ripple');\n if (exists)\n exists.remove();\n this.el.nativeElement.style.overflow = 'hidden';\n const rect = element.getBoundingClientRect();\n const x = Math.floor(((event.clientX - rect.left) / (rect.right - rect.left)) * element.clientWidth);\n const y = Math.floor(((event.clientY - rect.top) / (rect.bottom - rect.top)) * element.clientHeight);\n if (isPlatformBrowser(this.platformID)) {\n const circle = this.document.createElement('span');\n const diameter = Math.max(element.clientWidth, element.clientHeight);\n const radius = diameter / 2;\n circle.style.width = circle.style.height = `${diameter}px`;\n circle.style.left = `${x - radius}px`;\n circle.style.top = `${y - radius}px`;\n circle.style.backgroundColor = `${this.axRippleColor}`;\n circle.classList.add('ax-ripple');\n element.appendChild(circle);\n circle.addEventListener('animationend', () => {\n circle?.remove();\n });\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXRippleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.15\", type: AXRippleDirective, isStandalone: true, selector: \"[axRipple]\", inputs: { enabled: [\"axRipple\", \"enabled\"], axRippleColor: \"axRippleColor\" }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.15\", ngImport: i0, type: AXRippleDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[axRipple]',\n }]\n }], propDecorators: { enabled: [{\n type: Input,\n args: ['axRipple']\n }], axRippleColor: [{\n type: Input\n }] } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jb21tb24vc3JjL2xpYi9kaXJlY3RpdmVzL3JpcHBsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUNSLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLFdBQVcsR0FDWixNQUFNLGVBQWUsQ0FBQzs7QUFLdkIsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUlVLE9BQUUsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUdqQyxZQUFPLEdBQWEsSUFBSSxDQUFDO1FBRXZCLGtCQUFhLEdBQUcsMERBQTBELENBQUM7UUFHNUUsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixlQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBMkMxQztJQXpDQyxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO2dCQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFFTyxZQUFZLENBQUMsS0FBaUI7UUFDcEMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQTRCLENBQUM7UUFDbkQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxJQUFJLE1BQU07WUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFNUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNyRyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDdkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyRSxNQUFNLE1BQU0sR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1lBRTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxJQUFJLENBQUM7WUFDM0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUM7WUFDdEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUM7WUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUM1QixNQUFNLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxFQUFFLEdBQUcsRUFBRTtnQkFDM0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7K0dBckRVLGlCQUFpQjttR0FBakIsaUJBQWlCOzs0RkFBakIsaUJBQWlCO2tCQUg3QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO2lCQUN2Qjs7c0JBS0UsS0FBSzt1QkFBQyxVQUFVOztzQkFHaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIERPQ1VNRU5ULFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFBMQVRGT1JNX0lELFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2F4UmlwcGxlXScsXG59KVxuZXhwb3J0IGNsYXNzIEFYUmlwcGxlRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBlbCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICBASW5wdXQoJ2F4UmlwcGxlJylcbiAgcHVibGljIGVuYWJsZWQ/OiBib29sZWFuID0gdHJ1ZTtcblxuICBASW5wdXQoKSBheFJpcHBsZUNvbG9yID0gJ3ZhcigtLWF4LWNvbXAtcmlwcGxlLWJnLWNvbG9yLCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMykpJztcblxuICByaXBwbGU6IEhUTUxTcGFuRWxlbWVudCB8IG51bGw7XG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICBwcml2YXRlIHBsYXRmb3JtSUQgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLm9uRWxlbWVudENsaWNrKGV2ZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY3JlYXRlUmlwcGxlLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkVsZW1lbnRDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuY3JlYXRlUmlwcGxlKGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUmlwcGxlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgY29uc3QgZXhpc3RzID0gZWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuYXgtcmlwcGxlJyk7XG4gICAgaWYgKGV4aXN0cykgZXhpc3RzLnJlbW92ZSgpO1xuXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeCA9IE1hdGguZmxvb3IoKChldmVudC5jbGllbnRYIC0gcmVjdC5sZWZ0KSAvIChyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KSkgKiBlbGVtZW50LmNsaWVudFdpZHRoKTtcbiAgICBjb25zdCB5ID0gTWF0aC5mbG9vcigoKGV2ZW50LmNsaWVudFkgLSByZWN0LnRvcCkgLyAocmVjdC5ib3R0b20gLSByZWN0LnRvcCkpICogZWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSUQpKSB7XG4gICAgICBjb25zdCBjaXJjbGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgIGNvbnN0IGRpYW1ldGVyID0gTWF0aC5tYXgoZWxlbWVudC5jbGllbnRXaWR0aCwgZWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgICAgY29uc3QgcmFkaXVzID0gZGlhbWV0ZXIgLyAyO1xuXG4gICAgICBjaXJjbGUuc3R5bGUud2lkdGggPSBjaXJjbGUuc3R5bGUuaGVpZ2h0ID0gYCR7ZGlhbWV0ZXJ9cHhgO1xuICAgICAgY2lyY2xlLnN0eWxlLmxlZnQgPSBgJHt4IC0gcmFkaXVzfXB4YDtcbiAgICAgIGNpcmNsZS5zdHlsZS50b3AgPSBgJHt5IC0gcmFkaXVzfXB4YDtcbiAgICAgIGNpcmNsZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBgJHt0aGlzLmF4UmlwcGxlQ29sb3J9YDtcbiAgICAgIGNpcmNsZS5jbGFzc0xpc3QuYWRkKCdheC1yaXBwbGUnKTtcbiAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2lyY2xlKTtcbiAgICAgIGNpcmNsZS5hZGRFdmVudExpc3RlbmVyKCdhbmltYXRpb25lbmQnLCAoKSA9PiB7XG4gICAgICAgIGNpcmNsZT8ucmVtb3ZlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNkay1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY29tbW9uL3NyYy9hY29yZXgtY2RrLWNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}