@acorex/components 18.12.42 → 18.12.43
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.
- package/esm2022/notification/lib/notification.service.mjs +60 -58
- package/esm2022/toast/lib/toast.service.mjs +65 -64
- package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +7 -3
- package/fesm2022/acorex-components-notification.mjs +59 -58
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +63 -63
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +6 -2
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/notification/lib/notification.service.d.ts +3 -3
- package/package.json +1 -1
- package/toast/lib/toast.service.d.ts +3 -3
- package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +1 -0
| @@ -27,6 +27,7 @@ export class AXWysiwygContainerComponent extends classes((MXInputBaseValueCompon | |
| 27 27 | 
             
                     *
         | 
| 28 28 | 
             
                     */
         | 
| 29 29 | 
             
                    this.placeHolder = input();
         | 
| 30 | 
            +
                    this.isQuillLoaded = signal(false);
         | 
| 30 31 | 
             
                    this.#init = afterNextRender(() => {
         | 
| 31 32 | 
             
                        const view = this.getHostElement().querySelector('ax-wysiwyg-view');
         | 
| 32 33 | 
             
                        this.zone.runOutsideAngular(async () => {
         | 
| @@ -36,6 +37,7 @@ export class AXWysiwygContainerComponent extends classes((MXInputBaseValueCompon | |
| 36 37 | 
             
                                    readOnly: true,
         | 
| 37 38 | 
             
                                });
         | 
| 38 39 | 
             
                                this.service.wysiwyg.set(newWysiwyg);
         | 
| 40 | 
            +
                                this.isQuillLoaded.set(true);
         | 
| 39 41 | 
             
                            }
         | 
| 40 42 | 
             
                        });
         | 
| 41 43 | 
             
                    });
         | 
| @@ -48,7 +50,7 @@ export class AXWysiwygContainerComponent extends classes((MXInputBaseValueCompon | |
| 48 50 | 
             
                        }
         | 
| 49 51 | 
             
                    });
         | 
| 50 52 | 
             
                    this.#effect2 = effect(() => {
         | 
| 51 | 
            -
                        if (this. | 
| 53 | 
            +
                        if (this.isQuillLoaded() && this.value) {
         | 
| 52 54 | 
             
                            this.service.wysiwyg().quillObj().root.innerHTML = this.value;
         | 
| 53 55 | 
             
                        }
         | 
| 54 56 | 
             
                    });
         | 
| @@ -95,10 +97,12 @@ export class AXWysiwygContainerComponent extends classes((MXInputBaseValueCompon | |
| 95 97 | 
             
                    clearTimeout(this.setTimeOut);
         | 
| 96 98 | 
             
                }
         | 
| 97 99 | 
             
                internalValueChanged(value) {
         | 
| 100 | 
            +
                    if (!this.isQuillLoaded())
         | 
| 101 | 
            +
                        return;
         | 
| 98 102 | 
             
                    if (this.quillChangeTriggred())
         | 
| 99 103 | 
             
                        return;
         | 
| 100 104 | 
             
                    this.ngModleChangeTriggred.set(true);
         | 
| 101 | 
            -
                    this.service.wysiwyg() | 
| 105 | 
            +
                    this.service.wysiwyg().quillObj().root.innerHTML = value;
         | 
| 102 106 | 
             
                    this.ngModleChangeTriggred.set(false);
         | 
| 103 107 | 
             
                }
         | 
| 104 108 | 
             
                static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXWysiwygContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
         | 
| @@ -130,4 +134,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor | |
| 130 134 | 
             
                                    },
         | 
| 131 135 | 
             
                                ], template: "<div class=\"ax-editor-container ax-look-{{ look }}\">\n  <ng-content></ng-content>\n  <ng-content select=\"ax-validation-rule\"> </ng-content>\n</div>\n<div class=\"ax-error-container\"></div>\n", styles: [".ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container:not(.ql-disabled) li[data-list=checked]>.ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked]>.ql-ui{cursor:pointer}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0}@supports (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor p,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;padding-left:1.5em;position:relative}.ql-editor li>.ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked]>.ql-ui,.ql-editor li[data-list=unchecked]>.ql-ui{color:#777}.ql-editor li[data-list=bullet]>.ql-ui:before{content:\"\\2022\"}.ql-editor li[data-list=checked]>.ql-ui:before{content:\"\\2611\"}.ql-editor li[data-list=unchecked]>.ql-ui:before{content:\"\\2610\"}@supports (counter-set:none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered]>.ql-ui:before{content:counter(list-0,decimal) \". \"}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1>.ql-ui:before{content:counter(list-1,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2>.ql-ui:before{content:counter(list-2,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3>.ql-ui:before{content:counter(list-3,decimal) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4>.ql-ui:before{content:counter(list-4,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5>.ql-ui:before{content:counter(list-5,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6>.ql-ui:before{content:counter(list-6,decimal) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7>.ql-ui:before{content:counter(list-7,lower-alpha) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8>.ql-ui:before{content:counter(list-8,lower-roman) \". \"}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9>.ql-ui:before{content:counter(list-9,decimal) \". \"}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl>.ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor .ql-ui{position:absolute}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}ax-wysiwyg-container{width:100%;display:block}ax-wysiwyg-container>.ax-editor-container{display:block;height:auto!important}\n/*! Bundled license information:\n\nquill/dist/quill.core.css:\n  (*!\n   * Quill Editor v2.0.2\n   * https://quilljs.com\n   * Copyright (c) 2017-2024, Slab\n   * Copyright (c) 2014, Jason Chen\n   * Copyright (c) 2013, salesforce.com\n   *)\n*/\n"] }]
         | 
| 132 136 | 
             
                    }] });
         | 
| 133 | 
            -
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3lzaXd5Zy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3d5c2l3eWcvc3JjL2xpYi93eXNpd3lnL3d5c2l3eWctY29udGFpbmVyL3d5c2l3eWctY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy93eXNpd3lnL3NyYy9saWIvd3lzaXd5Zy93eXNpd3lnLWNvbnRhaW5lci93eXNpd3lnLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsZUFBZSxHQUNoQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBRU4saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXREOzs7R0FHRztBQXNCSCxNQUFNLE9BQU8sMkJBQ1gsU0FBUSxPQUFPLENBQUMsQ0FBQSx5QkFB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RCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDbkRILHFNQUtBOzsyRkRnRGEsMkJBQTJCO2tCQXJCdkMsU0FBUzsrQkFDRSxzQkFBc0IsVUFHeEIsQ0FBQyxNQUFNLENBQUMsV0FDUCxDQUFDLGdCQUFnQixDQUFDLG1CQUNWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1QsZ0JBQWdCO3dCQUNoQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDbEUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDM0UsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDM0UsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDMUU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUM7NEJBQzFELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhXeXNpd3lnIH0gZnJvbSAnQGFjb3JleC9jZGsvd3lzaXd5Zyc7XHJcbmltcG9ydCB7XHJcbiAgQVhDbGVhcmFibGVDb21wb25lbnQsXHJcbiAgQVhDb21wb25lbnQsXHJcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXHJcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcclxuICBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50LFxyXG4gIE1YTG9va0NvbXBvbmVudCxcclxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcclxuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBhZnRlck5leHRSZW5kZXIsXHJcbiAgZWZmZWN0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XHJcbmltcG9ydCB7IFF1aWxsRGVsdGFUb0h0bWxDb252ZXJ0ZXIgfSBmcm9tICdxdWlsbC1kZWx0YS10by1odG1sJztcclxuaW1wb3J0IHsgQVhXeXNpd3lnU2VydmljZSB9IGZyb20gJy4uL3d5c2l3eWcuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQSBjb250YWluZXIgY29tcG9uZW50IGZvciBXWVNJV1lHIChXaGF0IFlvdSBTZWUgSXMgV2hhdCBZb3UgR2V0KSBlZGl0b3IgZnVuY3Rpb25hbGl0eS5cclxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtd3lzaXd5Zy1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93eXNpd3lnLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3d5c2l3eWctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcclxuICBpbnB1dHM6IFsnbG9vayddLFxyXG4gIG91dHB1dHM6IFsnb25WYWx1ZUNoYW5nZWQnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQVhXeXNpd3lnU2VydmljZSxcclxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQgfSxcclxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQgfSxcclxuICAgIHsgcHJvdmlkZTogQVhDbGVhcmFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQgfSxcclxuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudCB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnRcclxuICBleHRlbmRzIGNsYXNzZXMoTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxzdHJpbmc+LCBNWExvb2tDb21wb25lbnQpXHJcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcclxue1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhXeXNpd3lnU2VydmljZSk7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNldFRpbWVPdXQ7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHF1aWxsQ2hhbmdlVHJpZ2dyZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBuZ01vZGxlQ2hhbmdlVHJpZ2dyZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAvKipcclxuICAgKiBTcGVjaWZpZXMgdGhlIHBsYWNlaG9sZGVyIHRleHQuXHJcbiAgICpcclxuICAgKi9cclxuICBwbGFjZUhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcclxuXHJcbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xyXG4gICAgY29uc3QgdmlldyA9IHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCdheC13eXNpd3lnLXZpZXcnKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoYXN5bmMgKCkgPT4ge1xyXG4gICAgICBpZiAoaXNCcm93c2VyKCkpIHtcclxuICAgICAgICBjb25zdCBuZXdXeXNpd3lnID0gbmV3IEFYV3lzaXd5ZygpO1xyXG5cclxuICAgICAgICBhd2FpdCBuZXdXeXNpd3lnLmluaXQodmlldywge1xyXG4gICAgICAgICAgcmVhZE9ubHk6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VydmljZS53eXNpd3lnLnNldChuZXdXeXNpd3lnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSk7XHJcblxyXG4gICNlZmZlY3QxID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLnBsYWNlSG9sZGVyKCkgJiYgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKSkge1xyXG4gICAgICB0aGlzLnNlcnZpY2Uud3lzaXd5ZygpLnF1aWxsT2JqKCkucm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhY2Vob2xkZXInLCB0aGlzLnBsYWNlSG9sZGVyKCkpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlcnZpY2Uud3lzaXd5ZygpPy5xdWlsbE9iaigpKSB7XHJcbiAgICAgIHRoaXMuc2VydmljZS53eXNpd3lnKCkucXVpbGxPYmooKS5yb290LnNldEF0dHJpYnV0ZSgnZGF0YS1wbGFjZWhvbGRlcicsICdXcml0ZSBZb3VyIE1lc3NhZ2UgLi4uJyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gICNlZmZlY3QyID0gZWZmZWN0KCgpID0+IHtcclxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMuc2VydmljZS53eXNpd3lnKCk/LnF1aWxsT2JqKCkpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKS5xdWlsbE9iaigpLnJvb3QuaW5uZXJIVE1MID0gdGhpcy52YWx1ZTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgI2VmZmVjdDMgPSBlZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuc2VydmljZS53eXNpd3lnKCk/LnF1aWxsT2JqKCkpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKS5xdWlsbE9iaigpLm9uKCd0ZXh0LWNoYW5nZScsIHRoaXMuY2hhbmdlSGFuZGxlci5iaW5kKHRoaXMpKTtcclxuXHJcbiAgICAgIHRoaXMuc2V0VGltZU91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VydmljZS53eXNpd3lnKCk/LnF1aWxsT2JqKCkuZW5hYmxlKCk7XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBjaGFuZ2VIYW5kbGVyKCkge1xyXG4gICAgaWYgKHRoaXMubmdNb2RsZUNoYW5nZVRyaWdncmVkKCkpIHJldHVybjtcclxuICAgIHRoaXMucXVpbGxDaGFuZ2VUcmlnZ3JlZC5zZXQodHJ1ZSk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VydmljZS53eXNpd3lnKCk/LnF1aWxsT2JqKCkucm9vdC5pbm5lckhUTUw7XHJcbiAgICBpZiAodmFsdWUgPT09ICc8cD48YnI+PC9wPicgfHwgIXZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29tbWl0VmFsdWUobnVsbCk7XHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2UuaXNFZGl0b3JDbGVhbigpKSByZXR1cm47XHJcbiAgICAgIHRoaXMuc2VydmljZS5pc0VkaXRvckNsZWFuLnNldCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRlbHRhID0gdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKS5lZGl0b3IuZGVsdGEub3BzO1xyXG4gICAgICBjb25zdCBjZmcgPSB7IGlubGluZVN0eWxlczogdHJ1ZSB9O1xyXG4gICAgICBjb25zdCBjb252ZXJ0ZXIgPSBuZXcgUXVpbGxEZWx0YVRvSHRtbENvbnZlcnRlcihkZWx0YSwgY2ZnKTtcclxuICAgICAgY29uc3QgaHRtbCA9IGNvbnZlcnRlci5jb252ZXJ0KCk7XHJcbiAgICAgIHRoaXMuY29tbWl0VmFsdWUoaHRtbCk7XHJcbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlLmlzRWRpdG9yQ2xlYW4oKSkgcmV0dXJuO1xyXG4gICAgICB0aGlzLnNlcnZpY2UuaXNFZGl0b3JDbGVhbi5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5xdWlsbENoYW5nZVRyaWdncmVkLnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKS5vZmYoJ3RleHQtY2hhbmdlJywgdGhpcy5jaGFuZ2VIYW5kbGVyKTtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnNldFRpbWVPdXQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnF1aWxsQ2hhbmdlVHJpZ2dyZWQoKSkgcmV0dXJuO1xyXG4gICAgdGhpcy5uZ01vZGxlQ2hhbmdlVHJpZ2dyZWQuc2V0KHRydWUpO1xyXG4gICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8uc2V0Q29udGVudCh2YWx1ZSk7XHJcbiAgICB0aGlzLm5nTW9kbGVDaGFuZ2VUcmlnZ3JlZC5zZXQoZmFsc2UpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYXgtZWRpdG9yLWNvbnRhaW5lciBheC1sb29rLXt7IGxvb2sgfX1cIj5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC12YWxpZGF0aW9uLXJ1bGVcIj4gPC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXgtZXJyb3ItY29udGFpbmVyXCI+PC9kaXY+XG4iXX0=
         | 
| 137 | 
            +
            //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3lzaXd5Zy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3d5c2l3eWcvc3JjL2xpYi93eXNpd3lnL3d5c2l3eWctY29udGFpbmVyL3d5c2l3eWctY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy93eXNpd3lnL3NyYy9saWIvd3lzaXd5Zy93eXNpd3lnLWNvbnRhaW5lci93eXNpd3lnLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsZUFBZSxHQUNoQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxNQUFNLEVBRU4saUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixNQUFNLEVBQ04sVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRXREOzs7R0FHRztBQXNCSCxNQUFNLE9BQU8sMkJBQ1gsU0FBUSxPQUFPLENBQUMsQ0FBQSx5QkFBaUMsQ0FBQSxFQUFFLGVBQWUsQ0FBQztJQXRCckU7O1FBeUJFLGNBQWM7UUFDSixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFLN0MsY0FBYztRQUNOLFNBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUIsY0FBYztRQUNKLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QyxjQUFjO1FBQ0osMEJBQXFCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWhEOzs7V0FHRztRQUNILGdCQUFXLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFFcEIsa0JBQWEsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEMsVUFBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBZ0IsQ0FBQztZQUVuRixJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNyQyxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7b0JBRW5DLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7d0JBQzFCLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FBQztvQkFFSCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILGFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzlGLENBQUM7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7Z0JBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1lBQ3BHLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILGFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ3JCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDaEUsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsYUFBUSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDckIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUVuRixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzlDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztLQXNDSjtJQTdFQyxLQUFLLENBZUY7SUFFSCxRQUFRLENBTUw7SUFFSCxRQUFRLENBSUw7SUFFSCxRQUFRLENBUUw7SUFFSCxjQUFjO0lBQ0osYUFBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRTtZQUFFLE9BQU87UUFFekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDaEUsSUFBSSxLQUFLLEtBQUssYUFBYSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFO2dCQUFFLE9BQU87WUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztZQUNsRSxNQUFNLEdBQUcsR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHlCQUF5QixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUM1RCxNQUFNLElBQUksR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7Z0JBQUUsT0FBTztZQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGNBQWM7SUFDTCxXQUFXO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUUsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRWtCLG9CQUFvQixDQUFDLEtBQVU7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFBRSxPQUFPO1FBQ2xDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQUUsT0FBTztRQUV2QyxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDekQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQXZHVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiwwV0FiM0I7WUFDVCxnQkFBZ0I7WUFDaEIsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBRTtZQUNsRSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsMkJBQTJCLEVBQUU7WUFDM0UsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFO1lBQzNFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSwyQkFBMkIsRUFBRTtZQUMxRTtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDO2dCQUMxRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDbkRILHFNQUtBOzsyRkRnRGEsMkJBQTJCO2tCQXJCdkMsU0FBUzsrQkFDRSxzQkFBc0IsVUFHeEIsQ0FBQyxNQUFNLENBQUMsV0FDUCxDQUFDLGdCQUFnQixDQUFDLG1CQUNWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1QsZ0JBQWdCO3dCQUNoQixFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDbEUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDM0UsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDM0UsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyw2QkFBNkIsRUFBRTt3QkFDMUU7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUM7NEJBQzFELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhXeXNpd3lnIH0gZnJvbSAnQGFjb3JleC9jZGsvd3lzaXd5Zyc7XHJcbmltcG9ydCB7XHJcbiAgQVhDbGVhcmFibGVDb21wb25lbnQsXHJcbiAgQVhDb21wb25lbnQsXHJcbiAgQVhGb2N1c2FibGVDb21wb25lbnQsXHJcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcclxuICBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50LFxyXG4gIE1YTG9va0NvbXBvbmVudCxcclxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcclxuaW1wb3J0IHsgaXNCcm93c2VyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3BsYXRmb3JtJztcclxuaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDb21wb25lbnQsXHJcbiAgTmdab25lLFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBhZnRlck5leHRSZW5kZXIsXHJcbiAgZWZmZWN0LFxyXG4gIGZvcndhcmRSZWYsXHJcbiAgaW5qZWN0LFxyXG4gIGlucHV0LFxyXG4gIHNpZ25hbCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XHJcbmltcG9ydCB7IFF1aWxsRGVsdGFUb0h0bWxDb252ZXJ0ZXIgfSBmcm9tICdxdWlsbC1kZWx0YS10by1odG1sJztcclxuaW1wb3J0IHsgQVhXeXNpd3lnU2VydmljZSB9IGZyb20gJy4uL3d5c2l3eWcuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogQSBjb250YWluZXIgY29tcG9uZW50IGZvciBXWVNJV1lHIChXaGF0IFlvdSBTZWUgSXMgV2hhdCBZb3UgR2V0KSBlZGl0b3IgZnVuY3Rpb25hbGl0eS5cclxuICogQGNhdGVnb3J5IENvbXBvbmVudHNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtd3lzaXd5Zy1jb250YWluZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi93eXNpd3lnLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL3d5c2l3eWctY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcclxuICBpbnB1dHM6IFsnbG9vayddLFxyXG4gIG91dHB1dHM6IFsnb25WYWx1ZUNoYW5nZWQnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgQVhXeXNpd3lnU2VydmljZSxcclxuICAgIHsgcHJvdmlkZTogQVhDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQgfSxcclxuICAgIHsgcHJvdmlkZTogQVhGb2N1c2FibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQgfSxcclxuICAgIHsgcHJvdmlkZTogQVhDbGVhcmFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnQgfSxcclxuICAgIHsgcHJvdmlkZTogQVhWYWx1YWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYV3lzaXd5Z0NvbnRhaW5lckNvbXBvbmVudCB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhXeXNpd3lnQ29udGFpbmVyQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBWFd5c2l3eWdDb250YWluZXJDb21wb25lbnRcclxuICBleHRlbmRzIGNsYXNzZXMoTVhJbnB1dEJhc2VWYWx1ZUNvbXBvbmVudDxzdHJpbmc+LCBNWExvb2tDb21wb25lbnQpXHJcbiAgaW1wbGVtZW50cyBPbkRlc3Ryb3lcclxue1xyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNlcnZpY2UgPSBpbmplY3QoQVhXeXNpd3lnU2VydmljZSk7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHNldFRpbWVPdXQ7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIHF1aWxsQ2hhbmdlVHJpZ2dyZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIHByb3RlY3RlZCBuZ01vZGxlQ2hhbmdlVHJpZ2dyZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAvKipcclxuICAgKiBTcGVjaWZpZXMgdGhlIHBsYWNlaG9sZGVyIHRleHQuXHJcbiAgICpcclxuICAgKi9cclxuICBwbGFjZUhvbGRlciA9IGlucHV0PHN0cmluZz4oKTtcclxuXHJcbiAgcHJvdGVjdGVkIGlzUXVpbGxMb2FkZWQgPSBzaWduYWwoZmFsc2UpO1xyXG5cclxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XHJcbiAgICBjb25zdCB2aWV3ID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJ2F4LXd5c2l3eWctdmlldycpIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcihhc3luYyAoKSA9PiB7XHJcbiAgICAgIGlmIChpc0Jyb3dzZXIoKSkge1xyXG4gICAgICAgIGNvbnN0IG5ld1d5c2l3eWcgPSBuZXcgQVhXeXNpd3lnKCk7XHJcblxyXG4gICAgICAgIGF3YWl0IG5ld1d5c2l3eWcuaW5pdCh2aWV3LCB7XHJcbiAgICAgICAgICByZWFkT25seTogdHJ1ZSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcuc2V0KG5ld1d5c2l3eWcpO1xyXG4gICAgICAgIHRoaXMuaXNRdWlsbExvYWRlZC5zZXQodHJ1ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0pO1xyXG5cclxuICAjZWZmZWN0MSA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5wbGFjZUhvbGRlcigpICYmIHRoaXMuc2VydmljZS53eXNpd3lnKCk/LnF1aWxsT2JqKCkpIHtcclxuICAgICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKS5xdWlsbE9iaigpLnJvb3Quc2V0QXR0cmlidXRlKCdkYXRhLXBsYWNlaG9sZGVyJywgdGhpcy5wbGFjZUhvbGRlcigpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKSkge1xyXG4gICAgICB0aGlzLnNlcnZpY2Uud3lzaXd5ZygpLnF1aWxsT2JqKCkucm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcGxhY2Vob2xkZXInLCAnV3JpdGUgWW91ciBNZXNzYWdlIC4uLicpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAjZWZmZWN0MiA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5pc1F1aWxsTG9hZGVkKCkgJiYgdGhpcy52YWx1ZSkge1xyXG4gICAgICB0aGlzLnNlcnZpY2Uud3lzaXd5ZygpLnF1aWxsT2JqKCkucm9vdC5pbm5lckhUTUwgPSB0aGlzLnZhbHVlO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICAjZWZmZWN0MyA9IGVmZmVjdCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKSkge1xyXG4gICAgICB0aGlzLnNlcnZpY2Uud3lzaXd5ZygpLnF1aWxsT2JqKCkub24oJ3RleHQtY2hhbmdlJywgdGhpcy5jaGFuZ2VIYW5kbGVyLmJpbmQodGhpcykpO1xyXG5cclxuICAgICAgdGhpcy5zZXRUaW1lT3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKS5lbmFibGUoKTtcclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIC8qKiBAaWdub3JlICovXHJcbiAgcHJvdGVjdGVkIGNoYW5nZUhhbmRsZXIoKSB7XHJcbiAgICBpZiAodGhpcy5uZ01vZGxlQ2hhbmdlVHJpZ2dyZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMucXVpbGxDaGFuZ2VUcmlnZ3JlZC5zZXQodHJ1ZSk7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMuc2VydmljZS53eXNpd3lnKCk/LnF1aWxsT2JqKCkucm9vdC5pbm5lckhUTUw7XHJcbiAgICBpZiAodmFsdWUgPT09ICc8cD48YnI+PC9wPicgfHwgIXZhbHVlKSB7XHJcbiAgICAgIHRoaXMuY29tbWl0VmFsdWUobnVsbCk7XHJcbiAgICAgIGlmICh0aGlzLnNlcnZpY2UuaXNFZGl0b3JDbGVhbigpKSByZXR1cm47XHJcbiAgICAgIHRoaXMuc2VydmljZS5pc0VkaXRvckNsZWFuLnNldCh0cnVlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGRlbHRhID0gdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKS5lZGl0b3IuZGVsdGEub3BzO1xyXG4gICAgICBjb25zdCBjZmcgPSB7IGlubGluZVN0eWxlczogdHJ1ZSB9O1xyXG4gICAgICBjb25zdCBjb252ZXJ0ZXIgPSBuZXcgUXVpbGxEZWx0YVRvSHRtbENvbnZlcnRlcihkZWx0YSwgY2ZnKTtcclxuICAgICAgY29uc3QgaHRtbCA9IGNvbnZlcnRlci5jb252ZXJ0KCk7XHJcbiAgICAgIHRoaXMuY29tbWl0VmFsdWUoaHRtbCk7XHJcbiAgICAgIGlmICghdGhpcy5zZXJ2aWNlLmlzRWRpdG9yQ2xlYW4oKSkgcmV0dXJuO1xyXG4gICAgICB0aGlzLnNlcnZpY2UuaXNFZGl0b3JDbGVhbi5zZXQoZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5xdWlsbENoYW5nZVRyaWdncmVkLnNldChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKiogQGlnbm9yZSAqL1xyXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXJ2aWNlLnd5c2l3eWcoKT8ucXVpbGxPYmooKS5vZmYoJ3RleHQtY2hhbmdlJywgdGhpcy5jaGFuZ2VIYW5kbGVyKTtcclxuICAgIGNsZWFyVGltZW91dCh0aGlzLnNldFRpbWVPdXQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG92ZXJyaWRlIGludGVybmFsVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1F1aWxsTG9hZGVkKCkpIHJldHVybjtcclxuICAgIGlmICh0aGlzLnF1aWxsQ2hhbmdlVHJpZ2dyZWQoKSkgcmV0dXJuO1xyXG5cclxuICAgIHRoaXMubmdNb2RsZUNoYW5nZVRyaWdncmVkLnNldCh0cnVlKTtcclxuICAgIHRoaXMuc2VydmljZS53eXNpd3lnKCkucXVpbGxPYmooKS5yb290LmlubmVySFRNTCA9IHZhbHVlO1xyXG4gICAgdGhpcy5uZ01vZGxlQ2hhbmdlVHJpZ2dyZWQuc2V0KGZhbHNlKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImF4LWVkaXRvci1jb250YWluZXIgYXgtbG9vay17eyBsb29rIH19XCI+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+IDwvbmctY29udGVudD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImF4LWVycm9yLWNvbnRhaW5lclwiPjwvZGl2PlxuIl19
         | 
| @@ -4,7 +4,7 @@ import { DIALOG_DATA, Dialog, DialogModule } from '@angular/cdk/dialog'; | |
| 4 4 | 
             
            import * as i2 from '@angular/cdk/portal';
         | 
| 5 5 | 
             
            import { TemplatePortal, ComponentPortal, PortalModule } from '@angular/cdk/portal';
         | 
| 6 6 | 
             
            import * as i0 from '@angular/core';
         | 
| 7 | 
            -
            import { TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, InjectionToken, inject,  | 
| 7 | 
            +
            import { TemplateRef, Component, ChangeDetectionStrategy, ViewEncapsulation, Inject, HostBinding, InjectionToken, inject, Injectable, NgModule } from '@angular/core';
         | 
| 8 8 | 
             
            import * as i3 from '@acorex/components/button';
         | 
| 9 9 | 
             
            import { AXButtonModule } from '@acorex/components/button';
         | 
| 10 10 | 
             
            import * as i4 from '@acorex/components/loading';
         | 
| @@ -14,7 +14,7 @@ import { AXDecoratorModule } from '@acorex/components/decorators'; | |
| 14 14 | 
             
            import * as i6 from '@angular/common';
         | 
| 15 15 | 
             
            import { CommonModule } from '@angular/common';
         | 
| 16 16 | 
             
            import * as i7 from '@acorex/core/translation';
         | 
| 17 | 
            -
            import { AXTranslationModule } from '@acorex/core/translation';
         | 
| 17 | 
            +
            import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
         | 
| 18 18 | 
             
            import { GlobalPositionStrategy } from '@angular/cdk/overlay';
         | 
| 19 19 |  | 
| 20 20 | 
             
            /**
         | 
| @@ -138,39 +138,32 @@ function notificationConfig(config = {}) { | |
| 138 138 | 
             
            class AXNotificationService {
         | 
| 139 139 | 
             
                constructor() {
         | 
| 140 140 | 
             
                    this.dialog = inject(Dialog);
         | 
| 141 | 
            +
                    this.translationService = inject(AXTranslationService);
         | 
| 141 142 | 
             
                    this.defaultConfig = inject(AX_NOTIFICATION_CONFIG);
         | 
| 142 | 
            -
                    this.activeNotifications =  | 
| 143 | 
            -
                    this.reservedNotifications =  | 
| 144 | 
            -
                    this.notificationCounterElement =  | 
| 145 | 
            -
                    this.moreNotificationsColor =  | 
| 146 | 
            -
                    this.moreNotificationsLocation =  | 
| 147 | 
            -
                    this.reserveCounter =  | 
| 148 | 
            -
                    this.#effect = effect(() => {
         | 
| 149 | 
            -
                        if (this.defaultConfig.limit <= 0)
         | 
| 150 | 
            -
                            return;
         | 
| 151 | 
            -
                        this.handleShowReservedNotification();
         | 
| 152 | 
            -
                        this.handleShowReservedNotificationCounter();
         | 
| 153 | 
            -
                        this.handleReserveCounter();
         | 
| 154 | 
            -
                    }, { allowSignalWrites: true });
         | 
| 143 | 
            +
                    this.activeNotifications = [];
         | 
| 144 | 
            +
                    this.reservedNotifications = [];
         | 
| 145 | 
            +
                    this.notificationCounterElement = null;
         | 
| 146 | 
            +
                    this.moreNotificationsColor = 'primary';
         | 
| 147 | 
            +
                    this.moreNotificationsLocation = 'bottom-center';
         | 
| 148 | 
            +
                    this.reserveCounter = 0;
         | 
| 155 149 | 
             
                }
         | 
| 156 | 
            -
                #effect;
         | 
| 157 150 | 
             
                show(config) {
         | 
| 158 | 
            -
                    config =  | 
| 159 | 
            -
             | 
| 160 | 
            -
             | 
| 161 | 
            -
                     | 
| 162 | 
            -
             | 
| 163 | 
            -
             | 
| 164 | 
            -
             | 
| 165 | 
            -
             | 
| 166 | 
            -
             | 
| 167 | 
            -
             | 
| 168 | 
            -
             | 
| 169 | 
            -
             | 
| 170 | 
            -
                                },
         | 
| 171 | 
            -
                            };
         | 
| 172 | 
            -
                        }
         | 
| 151 | 
            +
                    config = { ...this.defaultConfig, ...config };
         | 
| 152 | 
            +
                    this.moreNotificationsColor = config.color;
         | 
| 153 | 
            +
                    this.moreNotificationsLocation = config.location;
         | 
| 154 | 
            +
                    if (this.defaultConfig.limit > 0 && this.activeNotifications.length >= this.defaultConfig.limit) {
         | 
| 155 | 
            +
                        const reservedRef = {
         | 
| 156 | 
            +
                            close: () => {
         | 
| 157 | 
            +
                                console.warn('Reserved notification cannot be closed until it is displayed.');
         | 
| 158 | 
            +
                            },
         | 
| 159 | 
            +
                        };
         | 
| 160 | 
            +
                        this.reservedNotifications.push({ config, reservedRef });
         | 
| 161 | 
            +
                        this.handleReservedNotificationCounter();
         | 
| 162 | 
            +
                        return reservedRef;
         | 
| 173 163 | 
             
                    }
         | 
| 164 | 
            +
                    return this.displayNotification(config);
         | 
| 165 | 
            +
                }
         | 
| 166 | 
            +
                displayNotification(config) {
         | 
| 174 167 | 
             
                    const gap = this.defaultConfig.gap;
         | 
| 175 168 | 
             
                    const pos = this.getPosition(config.location) + gap + 'px';
         | 
| 176 169 | 
             
                    const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), config.location, pos, gap);
         | 
| @@ -186,10 +179,13 @@ class AXNotificationService { | |
| 186 179 | 
             
                        panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
         | 
| 187 180 | 
             
                        positionStrategy,
         | 
| 188 181 | 
             
                    });
         | 
| 189 | 
            -
                    this.activeNotifications. | 
| 182 | 
            +
                    this.activeNotifications.push(dialogRef.id);
         | 
| 183 | 
            +
                    this.handleReservedNotificationCounter();
         | 
| 190 184 | 
             
                    const notificationRef = dialogRef.componentInstance;
         | 
| 191 185 | 
             
                    dialogRef.closed.subscribe(() => {
         | 
| 192 | 
            -
                        this.activeNotifications | 
| 186 | 
            +
                        this.activeNotifications = this.activeNotifications.filter((id) => id !== dialogRef.id);
         | 
| 187 | 
            +
                        this.handleShowReservedNotification();
         | 
| 188 | 
            +
                        this.handleReservedNotificationCounter();
         | 
| 193 189 | 
             
                        setTimeout(() => {
         | 
| 194 190 | 
             
                            this.reposition(config.location, gap);
         | 
| 195 191 | 
             
                        }, 0);
         | 
| @@ -202,40 +198,45 @@ class AXNotificationService { | |
| 202 198 | 
             
                }
         | 
| 203 199 | 
             
                hideAll() {
         | 
| 204 200 | 
             
                    this.dialog.closeAll();
         | 
| 201 | 
            +
                    this.reserveCounter = 0;
         | 
| 202 | 
            +
                    this.reservedNotifications = [];
         | 
| 203 | 
            +
                    this.activeNotifications = [];
         | 
| 204 | 
            +
                    this.handleReservedNotificationCounter();
         | 
| 205 205 | 
             
                }
         | 
| 206 206 | 
             
                handleShowReservedNotification() {
         | 
| 207 | 
            -
                    if (this.activeNotifications | 
| 208 | 
            -
                        return;
         | 
| 209 | 
            -
                    if (!this.reservedNotifications().length)
         | 
| 207 | 
            +
                    if (this.activeNotifications.length > this.defaultConfig.limit - 1)
         | 
| 210 208 | 
             
                        return;
         | 
| 211 | 
            -
                     | 
| 212 | 
            -
                    this.reservedNotifications.update((value) => {
         | 
| 213 | 
            -
                        const arr = [...value];
         | 
| 214 | 
            -
                        arr.shift();
         | 
| 215 | 
            -
                        return arr;
         | 
| 216 | 
            -
                    });
         | 
| 217 | 
            -
                }
         | 
| 218 | 
            -
                handleShowReservedNotificationCounter() {
         | 
| 219 | 
            -
                    if (this.reservedNotifications().length === this.reserveCounter())
         | 
| 209 | 
            +
                    if (!this.reservedNotifications.length)
         | 
| 220 210 | 
             
                        return;
         | 
| 221 | 
            -
                    this. | 
| 222 | 
            -
                     | 
| 223 | 
            -
             | 
| 224 | 
            -
                     | 
| 211 | 
            +
                    const { config, reservedRef } = this.reservedNotifications.shift();
         | 
| 212 | 
            +
                    const displayedRef = this.displayNotification(config);
         | 
| 213 | 
            +
                    this.handleReservedNotificationCounter();
         | 
| 214 | 
            +
                    reservedRef.close = displayedRef.close;
         | 
| 225 215 | 
             
                }
         | 
| 226 | 
            -
                 | 
| 227 | 
            -
                     | 
| 216 | 
            +
                handleReservedNotificationCounter() {
         | 
| 217 | 
            +
                    const reservedCount = this.reservedNotifications.length;
         | 
| 218 | 
            +
                    if (reservedCount === this.reserveCounter)
         | 
| 228 219 | 
             
                        return;
         | 
| 229 | 
            -
                     | 
| 220 | 
            +
                    this.reserveCounter = reservedCount;
         | 
| 221 | 
            +
                    if (reservedCount === 0 && this.notificationCounterElement !== null) {
         | 
| 222 | 
            +
                        this.notificationCounterElement.close();
         | 
| 230 223 | 
             
                        return;
         | 
| 231 | 
            -
                     | 
| 224 | 
            +
                    }
         | 
| 225 | 
            +
                    if (reservedCount > 0) {
         | 
| 226 | 
            +
                        if (this.notificationCounterElement !== null) {
         | 
| 227 | 
            +
                            this.notificationCounterElement.close();
         | 
| 228 | 
            +
                        }
         | 
| 229 | 
            +
                        this.createReservedCounterToast();
         | 
| 230 | 
            +
                    }
         | 
| 232 231 | 
             
                }
         | 
| 233 | 
            -
                createReservedCounterToast() {
         | 
| 232 | 
            +
                async createReservedCounterToast() {
         | 
| 234 233 | 
             
                    const opt = {
         | 
| 235 234 | 
             
                        closeButton: false,
         | 
| 236 | 
            -
                        color: this.moreNotificationsColor | 
| 237 | 
            -
                        location: this.moreNotificationsLocation | 
| 238 | 
            -
                        title:  | 
| 235 | 
            +
                        color: this.moreNotificationsColor,
         | 
| 236 | 
            +
                        location: this.moreNotificationsLocation,
         | 
| 237 | 
            +
                        title: await this.translationService.translateAsync('more-notification', {
         | 
| 238 | 
            +
                            params: { number: this.reserveCounter },
         | 
| 239 | 
            +
                        }),
         | 
| 239 240 | 
             
                        timeOutProgress: false,
         | 
| 240 241 | 
             
                    };
         | 
| 241 242 | 
             
                    const gap = this.defaultConfig.gap;
         | 
| @@ -253,7 +254,7 @@ class AXNotificationService { | |
| 253 254 | 
             
                        panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
         | 
| 254 255 | 
             
                        positionStrategy,
         | 
| 255 256 | 
             
                    });
         | 
| 256 | 
            -
                    this.notificationCounterElement | 
| 257 | 
            +
                    this.notificationCounterElement = dialogRef.componentInstance;
         | 
| 257 258 | 
             
                }
         | 
| 258 259 | 
             
                reposition(notificationLocation, gap) {
         | 
| 259 260 | 
             
                    const list = this.dialog.openDialogs
         | 
| @@ -1 +1 @@ | |
| 1 | 
            -
            {"version":3,"file":"acorex-components-notification.mjs","sources":["../../../../libs/components/notification/src/lib/notification.component.ts","../../../../libs/components/notification/src/lib/notification.component.html","../../../../libs/components/notification/src/lib/notification.config.ts","../../../../libs/components/notification/src/lib/notification.service.ts","../../../../libs/components/notification/src/lib/notification.module.ts","../../../../libs/components/notification/src/acorex-components-notification.ts"],"sourcesContent":["import { AXClosbaleComponent, AXComponentCloseEvent, MXBaseComponent } from '@acorex/components/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { ComponentPortal, ComponentType, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Inject,\n  TemplateRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { AXNotificationButtonItem, AXNotificationData } from './notification.class';\n\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-notification',\n  templateUrl: './notification.component.html',\n  styleUrls: ['./notification.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: AXClosbaleComponent, useExisting: AXNotificationComponent }],\n})\nexport class AXNotificationComponent extends MXBaseComponent {\n  /** @ignore */\n  _selectedPortal: Portal<unknown>;\n\n  /** @ignore */\n  _icon: string;\n\n  /**\n   *  @ignore\n   */\n  constructor(\n    @Inject(DIALOG_DATA)\n    public config: AXNotificationData,\n    public dialogRef: DialogRef<AXComponentCloseEvent>,\n  ) {\n    super();\n  }\n\n  /** @ignore */\n  override ngOnInit() {\n    super.ngOnInit();\n    this._initContent();\n    this._initIcon();\n    this._handleTimeOut();\n  }\n\n  /** @ignore */\n  private _handleTimeOut() {\n    if (this.config.timeOut) {\n      setTimeout(() => {\n        this.close();\n      }, this.config.timeOut);\n    }\n  }\n\n  /** @ignore */\n  private _initContent() {\n    if (this.config.content instanceof TemplateRef) {\n      this._selectedPortal = new TemplatePortal(\n        this.config.content as TemplateRef<unknown>,\n        this.getViewContainer(),\n      );\n      this.cdr.markForCheck();\n    } else if (typeof this.config.content === 'function') {\n      this._selectedPortal = new ComponentPortal(this.config.content as ComponentType<unknown>);\n      this.cdr.markForCheck();\n    }\n  }\n\n  /** @ignore */\n  private _initIcon() {\n    if (!this.config.icon) {\n      switch (this.config.color) {\n        case 'success':\n          this._icon = 'ax-icon ax-icon-check-circle';\n          break;\n        case 'danger':\n          this._icon = 'ax-icon ax-icon-error';\n          break;\n        case 'warning':\n          this._icon = 'ax-icon ax-icon-warning';\n          break;\n        case 'info':\n          this._icon = 'ax-icon ax-icon-info';\n          break;\n        default:\n          this._icon = this.config.icon || 'ax-icon ax-icon-check-circle';\n          break;\n      }\n    } else {\n      this._icon = this.config.icon;\n    }\n  }\n\n  /** @ignore */\n  protected _handleButtonClick(button: AXNotificationButtonItem) {\n    if (button.onClick) {\n      button.onClick({ source: button });\n    }\n  }\n\n  /** @ignore */\n  @HostBinding('class')\n  private get __hostClass(): string {\n    return `ax-${this.config.color}`;\n  }\n\n  /**\n   * Closes the dialog and provides the component and HTML element for reference.\n   */\n  close() {\n    this.dialogRef.close({\n      component: this,\n      htmlElement: this.getHostElement(),\n    });\n  }\n}\n","<span class=\"ax-notification-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-notification-content\">\n  <div class=\"ax-notification-title\">{{ config.title | translate | async }}</div>\n  @if(_selectedPortal){\n  <ng-template [cdkPortalOutlet]=\"_selectedPortal\"></ng-template>\n  } @else{\n  <div>{{ config.content }}</div>\n  }\n\n  @if(config.buttons?.length){\n  <div class=\"ax-notification-buttons\">\n    @for(button of config.buttons; track $index){\n    <ax-button class=\"ax-xs\" [text]=\"button.text | translate | async\" [color]=\"button.color\" [look]=\"button.look\"\n      [disabled]=\"button.disabled\" (onClick)=\"_handleButtonClick(button)\">\n      @if(button.loading){\n      <ax-loading></ax-loading>\n      }\n    </ax-button>\n    }\n  </div>\n  }\n\n</div>\n@if(config.closeButton){\n<ax-close-button></ax-close-button>\n}\n@if(config.timeOutProgress && config.timeOut){\n<div class=\"ax-notification-progress\" [style.animation-duration.ms]=\"config.timeOut\"></div>\n}","import { AXLocation } from '@acorex/components/common';\nimport { InjectionToken } from '@angular/core';\n\nexport interface AXNotificationConfig {\n  gap: number;\n  timeOut: number;\n  timeOutProgress: boolean;\n  location: AXLocation;\n  closeButton: boolean;\n  limit: number;\n}\n\nexport const AX_NOTIFICATION_CONFIG = new InjectionToken<AXNotificationConfig>('AX_NOTIFICATION_CONFIG', {\n  providedIn: 'root',\n  factory: () => AXNotificationDefaultConfig,\n});\n\nexport const AXNotificationDefaultConfig: AXNotificationConfig = {\n  gap: 5,\n  timeOut: 2500,\n  timeOutProgress: true,\n  closeButton: true,\n  location: 'top-end',\n  limit: 3,\n};\n\nexport type PartialNotificationConfig = Partial<AXNotificationConfig>;\n\nexport function notificationConfig(config: PartialNotificationConfig = {}): AXNotificationConfig {\n  const result = {\n    ...AXNotificationDefaultConfig,\n    ...config,\n  };\n  return result;\n}\n","import { AXLocation, AXStyleColorType } from '@acorex/components/common';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { Injectable, effect, inject, signal } from '@angular/core';\nimport {\n  AXNotificationOptions as AXNotificationDisplayConfig,\n  AXNotificationRef,\n} from './notification.class';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationConfig, AX_NOTIFICATION_CONFIG } from './notification.config';\n\n@Injectable()\nexport class AXNotificationService {\n  private dialog: Dialog = inject(Dialog);\n  private defaultConfig: AXNotificationConfig = inject(AX_NOTIFICATION_CONFIG);\n  private activeNotifications = signal<string[]>([]);\n  private reservedNotifications = signal<AXNotificationDisplayConfig[]>([]);\n  private notificationCounterElement = signal<AXNotificationComponent | null>(null);\n  private moreNotificationsColor = signal<AXStyleColorType>('primary');\n  private moreNotificationsLocation = signal<AXLocation>('bottom-center');\n  private reserveCounter = signal(0);\n\n  #effect = effect(\n    () => {\n      if (this.defaultConfig.limit <= 0) return;\n      this.handleShowReservedNotification();\n      this.handleShowReservedNotificationCounter();\n      this.handleReserveCounter();\n    },\n    { allowSignalWrites: true },\n  );\n\n  show(config: AXNotificationDisplayConfig): AXNotificationRef {\n    config = Object.assign(\n      {\n        closeButton: true,\n        location: this.defaultConfig.location,\n      },\n      config,\n    );\n    this.moreNotificationsColor.set(config.color);\n    this.moreNotificationsLocation.set(config.location);\n\n    if (this.defaultConfig.limit > 0) {\n      if (this.activeNotifications().length >= this.defaultConfig.limit) {\n        this.reservedNotifications.update((value) => [...value, config]);\n        return {\n          close: () => {\n            //TODO close reserved notification\n          },\n        };\n      }\n    }\n\n    const gap = this.defaultConfig.gap;\n    const pos = this.getPosition(config.location) + gap + 'px';\n    const positionStrategy = this.getPositionStrategy(\n      new GlobalPositionStrategy(),\n      config.location,\n      pos,\n      gap,\n    );\n    const dialogRef = this.dialog.open(AXNotificationComponent, {\n      data: config,\n      autoFocus: '__no_element__',\n      restoreFocus: false,\n      role: 'dialog',\n      ariaModal: true,\n      closeOnNavigation: true,\n      closeOnDestroy: true,\n      hasBackdrop: false,\n      panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n      positionStrategy,\n    });\n\n    this.activeNotifications.update((value) => [...value, dialogRef.id]);\n\n    const notificationRef = dialogRef.componentInstance as AXNotificationComponent;\n    dialogRef.closed.subscribe(() => {\n      this.activeNotifications.update((value) => [...value].filter((dialogID) => dialogID !== dialogRef.id));\n      setTimeout(() => {\n        this.reposition(config.location, gap);\n      }, 0);\n    });\n\n    return {\n      close: () => {\n        notificationRef.close();\n      },\n    };\n  }\n\n  hideAll() {\n    this.dialog.closeAll();\n  }\n\n  private handleShowReservedNotification() {\n    if (this.activeNotifications().length > this.defaultConfig.limit - 1) return;\n    if (!this.reservedNotifications().length) return;\n\n    this.show(this.reservedNotifications()[0]);\n    this.reservedNotifications.update((value) => {\n      const arr = [...value];\n      arr.shift();\n      return arr;\n    });\n  }\n\n  private handleShowReservedNotificationCounter() {\n    if (this.reservedNotifications().length === this.reserveCounter()) return;\n\n    this.reserveCounter.set(this.reservedNotifications().length);\n\n    if (this.notificationCounterElement() !== null) this.notificationCounterElement().close();\n\n    this.createReservedCounterToast();\n  }\n\n  private handleReserveCounter() {\n    if (this.reserveCounter() !== 0) return;\n\n    if (this.notificationCounterElement() === null) return;\n\n    this.notificationCounterElement().close();\n  }\n\n  private createReservedCounterToast() {\n    const opt: AXNotificationDisplayConfig = {\n      closeButton: false,\n      color: this.moreNotificationsColor(),\n      location: this.moreNotificationsLocation(),\n      title: `And ${this.reserveCounter()} more...`,\n      timeOutProgress: false,\n    };\n    const gap = this.defaultConfig.gap;\n    const pos = this.getPosition(opt.location) + gap + 'px';\n    const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), opt.location, pos, gap);\n    const dialogRef = this.dialog.open(AXNotificationComponent, {\n      data: opt,\n      autoFocus: '__no_element__',\n      restoreFocus: true,\n      role: 'dialog',\n      ariaModal: true,\n      closeOnNavigation: true,\n      closeOnDestroy: true,\n      hasBackdrop: false,\n      panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n      positionStrategy,\n    });\n    this.notificationCounterElement.set(dialogRef.componentInstance as AXNotificationComponent);\n  }\n\n  private reposition(notificationLocation: AXLocation, gap: number): void {\n    const list = this.dialog.openDialogs\n      .map((c) => c.componentInstance as AXNotificationComponent)\n      .filter((c) => c.config?.location == notificationLocation);\n    list.forEach((element, index) => {\n      const pos = this.getRepositionPosition(index, gap, list, notificationLocation);\n\n      this.getPositionStrategy(\n        element.dialogRef.config.positionStrategy as GlobalPositionStrategy,\n        notificationLocation,\n        pos,\n        gap,\n      ).apply();\n    });\n  }\n\n  private getRepositionPosition(\n    index: number,\n    gap: number,\n    list: AXNotificationComponent[],\n    notificationLocation: string,\n  ) {\n    if (index === 0) return gap + 'px';\n    const previouseElement = list[index - 1];\n    if (notificationLocation.split('-')[0] == 'bottom') {\n      return window.innerHeight - previouseElement.getHostElement().offsetTop + gap + 'px';\n    }\n    return (\n      previouseElement.getHostElement().offsetTop +\n      previouseElement.getHostElement().offsetHeight +\n      gap +\n      'px'\n    );\n  }\n\n  private getPosition(location: string) {\n    const list = this.dialog.openDialogs\n      .map((c) => c.componentInstance as AXNotificationComponent)\n      .filter((c) => c.config.location == location);\n    if (list.length == 0) return 0;\n    if (location.split('-')[0] == 'bottom') {\n      return window.innerHeight - list[list.length - 1].getHostElement().offsetTop;\n    }\n    return (\n      list[list.length - 1].getHostElement().offsetTop + list[list.length - 1].getHostElement().offsetHeight\n    );\n  }\n\n  private getPositionStrategy(\n    positionStrategy: GlobalPositionStrategy,\n    location: AXLocation,\n    pos: string,\n    gap: number,\n  ) {\n    switch (location) {\n      case 'bottom-center':\n        return positionStrategy.bottom(pos).centerHorizontally();\n        break;\n      case 'bottom-end':\n        return positionStrategy.bottom(pos).right(gap + 'px');\n        break;\n      case 'bottom-start':\n        return positionStrategy.bottom(pos).left(gap + 'px');\n        break;\n      case 'top-center':\n        return positionStrategy.top(pos).centerHorizontally();\n        break;\n      case 'top-end':\n        return positionStrategy.top(pos).right(gap + 'px');\n        break;\n      case 'top-start':\n        return positionStrategy.top(pos).left(gap + 'px');\n        break;\n      case 'center-start':\n        return positionStrategy.centerVertically().left(gap + 'px');\n        break;\n      case 'center-end':\n        return positionStrategy.centerVertically().right(gap + 'px');\n        break;\n    }\n  }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationService } from './notification.service';\n\nconst COMPONENT = [AXNotificationComponent];\nconst MODULES = [CommonModule, PortalModule, AXButtonModule, DialogModule, AXLoadingModule, AXDecoratorModule, AXTranslationModule];\n\n@NgModule({\n  declarations: [...COMPONENT],\n  imports: [...MODULES],\n  exports: [...COMPONENT],\n  providers: [AXNotificationService],\n})\nexport class AXNotificationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
         | 
| 1 | 
            +
            {"version":3,"file":"acorex-components-notification.mjs","sources":["../../../../libs/components/notification/src/lib/notification.component.ts","../../../../libs/components/notification/src/lib/notification.component.html","../../../../libs/components/notification/src/lib/notification.config.ts","../../../../libs/components/notification/src/lib/notification.service.ts","../../../../libs/components/notification/src/lib/notification.module.ts","../../../../libs/components/notification/src/acorex-components-notification.ts"],"sourcesContent":["import { AXClosbaleComponent, AXComponentCloseEvent, MXBaseComponent } from '@acorex/components/common';\nimport { DIALOG_DATA, DialogRef } from '@angular/cdk/dialog';\nimport { ComponentPortal, ComponentType, Portal, TemplatePortal } from '@angular/cdk/portal';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  HostBinding,\n  Inject,\n  TemplateRef,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { AXNotificationButtonItem, AXNotificationData } from './notification.class';\n\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n *\n * @category Components\n */\n@Component({\n  selector: 'ax-notification',\n  templateUrl: './notification.component.html',\n  styleUrls: ['./notification.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [{ provide: AXClosbaleComponent, useExisting: AXNotificationComponent }],\n})\nexport class AXNotificationComponent extends MXBaseComponent {\n  /** @ignore */\n  _selectedPortal: Portal<unknown>;\n\n  /** @ignore */\n  _icon: string;\n\n  /**\n   *  @ignore\n   */\n  constructor(\n    @Inject(DIALOG_DATA)\n    public config: AXNotificationData,\n    public dialogRef: DialogRef<AXComponentCloseEvent>,\n  ) {\n    super();\n  }\n\n  /** @ignore */\n  override ngOnInit() {\n    super.ngOnInit();\n    this._initContent();\n    this._initIcon();\n    this._handleTimeOut();\n  }\n\n  /** @ignore */\n  private _handleTimeOut() {\n    if (this.config.timeOut) {\n      setTimeout(() => {\n        this.close();\n      }, this.config.timeOut);\n    }\n  }\n\n  /** @ignore */\n  private _initContent() {\n    if (this.config.content instanceof TemplateRef) {\n      this._selectedPortal = new TemplatePortal(\n        this.config.content as TemplateRef<unknown>,\n        this.getViewContainer(),\n      );\n      this.cdr.markForCheck();\n    } else if (typeof this.config.content === 'function') {\n      this._selectedPortal = new ComponentPortal(this.config.content as ComponentType<unknown>);\n      this.cdr.markForCheck();\n    }\n  }\n\n  /** @ignore */\n  private _initIcon() {\n    if (!this.config.icon) {\n      switch (this.config.color) {\n        case 'success':\n          this._icon = 'ax-icon ax-icon-check-circle';\n          break;\n        case 'danger':\n          this._icon = 'ax-icon ax-icon-error';\n          break;\n        case 'warning':\n          this._icon = 'ax-icon ax-icon-warning';\n          break;\n        case 'info':\n          this._icon = 'ax-icon ax-icon-info';\n          break;\n        default:\n          this._icon = this.config.icon || 'ax-icon ax-icon-check-circle';\n          break;\n      }\n    } else {\n      this._icon = this.config.icon;\n    }\n  }\n\n  /** @ignore */\n  protected _handleButtonClick(button: AXNotificationButtonItem) {\n    if (button.onClick) {\n      button.onClick({ source: button });\n    }\n  }\n\n  /** @ignore */\n  @HostBinding('class')\n  private get __hostClass(): string {\n    return `ax-${this.config.color}`;\n  }\n\n  /**\n   * Closes the dialog and provides the component and HTML element for reference.\n   */\n  close() {\n    this.dialogRef.close({\n      component: this,\n      htmlElement: this.getHostElement(),\n    });\n  }\n}\n","<span class=\"ax-notification-icon ax-icon-solid {{ _icon }}\"></span>\n<div class=\"ax-notification-content\">\n  <div class=\"ax-notification-title\">{{ config.title | translate | async }}</div>\n  @if(_selectedPortal){\n  <ng-template [cdkPortalOutlet]=\"_selectedPortal\"></ng-template>\n  } @else{\n  <div>{{ config.content }}</div>\n  }\n\n  @if(config.buttons?.length){\n  <div class=\"ax-notification-buttons\">\n    @for(button of config.buttons; track $index){\n    <ax-button class=\"ax-xs\" [text]=\"button.text | translate | async\" [color]=\"button.color\" [look]=\"button.look\"\n      [disabled]=\"button.disabled\" (onClick)=\"_handleButtonClick(button)\">\n      @if(button.loading){\n      <ax-loading></ax-loading>\n      }\n    </ax-button>\n    }\n  </div>\n  }\n\n</div>\n@if(config.closeButton){\n<ax-close-button></ax-close-button>\n}\n@if(config.timeOutProgress && config.timeOut){\n<div class=\"ax-notification-progress\" [style.animation-duration.ms]=\"config.timeOut\"></div>\n}","import { AXLocation } from '@acorex/components/common';\nimport { InjectionToken } from '@angular/core';\n\nexport interface AXNotificationConfig {\n  gap: number;\n  timeOut: number;\n  timeOutProgress: boolean;\n  location: AXLocation;\n  closeButton: boolean;\n  limit: number;\n}\n\nexport const AX_NOTIFICATION_CONFIG = new InjectionToken<AXNotificationConfig>('AX_NOTIFICATION_CONFIG', {\n  providedIn: 'root',\n  factory: () => AXNotificationDefaultConfig,\n});\n\nexport const AXNotificationDefaultConfig: AXNotificationConfig = {\n  gap: 5,\n  timeOut: 2500,\n  timeOutProgress: true,\n  closeButton: true,\n  location: 'top-end',\n  limit: 3,\n};\n\nexport type PartialNotificationConfig = Partial<AXNotificationConfig>;\n\nexport function notificationConfig(config: PartialNotificationConfig = {}): AXNotificationConfig {\n  const result = {\n    ...AXNotificationDefaultConfig,\n    ...config,\n  };\n  return result;\n}\n","import { AXLocation, AXStyleColorType } from '@acorex/components/common';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { Dialog } from '@angular/cdk/dialog';\nimport { GlobalPositionStrategy } from '@angular/cdk/overlay';\nimport { Injectable, inject } from '@angular/core';\nimport {\n  AXNotificationOptions as AXNotificationDisplayConfig,\n  AXNotificationRef,\n} from './notification.class';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationConfig, AX_NOTIFICATION_CONFIG } from './notification.config';\n\ntype AXReservedNotifications = {\n  config: AXNotificationDisplayConfig;\n  reservedRef: {\n    close: () => void;\n  };\n};\n\n@Injectable()\nexport class AXNotificationService {\n  private dialog: Dialog = inject(Dialog);\n  private translationService: AXTranslationService = inject(AXTranslationService);\n  private defaultConfig: AXNotificationConfig = inject(AX_NOTIFICATION_CONFIG);\n  private activeNotifications: string[] = [];\n  private reservedNotifications: AXReservedNotifications[] = [];\n  private notificationCounterElement: AXNotificationComponent | null = null;\n  private moreNotificationsColor: AXStyleColorType = 'primary';\n  private moreNotificationsLocation: AXLocation = 'bottom-center';\n  private reserveCounter = 0;\n\n  show(config: AXNotificationDisplayConfig): AXNotificationRef {\n    config = { ...this.defaultConfig, ...config };\n\n    this.moreNotificationsColor = config.color;\n    this.moreNotificationsLocation = config.location;\n\n    if (this.defaultConfig.limit > 0 && this.activeNotifications.length >= this.defaultConfig.limit) {\n      const reservedRef = {\n        close: () => {\n          console.warn('Reserved notification cannot be closed until it is displayed.');\n        },\n      };\n      this.reservedNotifications.push({ config, reservedRef });\n      this.handleReservedNotificationCounter();\n      return reservedRef;\n    }\n\n    return this.displayNotification(config);\n  }\n\n  private displayNotification(config: AXNotificationDisplayConfig): AXNotificationRef {\n    const gap = this.defaultConfig.gap;\n    const pos = this.getPosition(config.location) + gap + 'px';\n    const positionStrategy = this.getPositionStrategy(\n      new GlobalPositionStrategy(),\n      config.location,\n      pos,\n      gap,\n    );\n\n    const dialogRef = this.dialog.open(AXNotificationComponent, {\n      data: config,\n      autoFocus: '__no_element__',\n      restoreFocus: false,\n      role: 'dialog',\n      ariaModal: true,\n      closeOnNavigation: true,\n      closeOnDestroy: true,\n      hasBackdrop: false,\n      panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n      positionStrategy,\n    });\n\n    this.activeNotifications.push(dialogRef.id);\n    this.handleReservedNotificationCounter();\n\n    const notificationRef = dialogRef.componentInstance as AXNotificationComponent;\n    dialogRef.closed.subscribe(() => {\n      this.activeNotifications = this.activeNotifications.filter((id) => id !== dialogRef.id);\n\n      this.handleShowReservedNotification();\n      this.handleReservedNotificationCounter();\n\n      setTimeout(() => {\n        this.reposition(config.location, gap);\n      }, 0);\n    });\n\n    return {\n      close: () => {\n        notificationRef.close();\n      },\n    };\n  }\n\n  hideAll() {\n    this.dialog.closeAll();\n    this.reserveCounter = 0;\n    this.reservedNotifications = [];\n    this.activeNotifications = [];\n    this.handleReservedNotificationCounter();\n  }\n\n  private handleShowReservedNotification() {\n    if (this.activeNotifications.length > this.defaultConfig.limit - 1) return;\n    if (!this.reservedNotifications.length) return;\n\n    const { config, reservedRef } = this.reservedNotifications.shift();\n\n    const displayedRef = this.displayNotification(config);\n    this.handleReservedNotificationCounter();\n    reservedRef.close = displayedRef.close;\n  }\n\n  private handleReservedNotificationCounter() {\n    const reservedCount = this.reservedNotifications.length;\n\n    if (reservedCount === this.reserveCounter) return;\n\n    this.reserveCounter = reservedCount;\n\n    if (reservedCount === 0 && this.notificationCounterElement !== null) {\n      this.notificationCounterElement.close();\n      return;\n    }\n\n    if (reservedCount > 0) {\n      if (this.notificationCounterElement !== null) {\n        this.notificationCounterElement.close();\n      }\n      this.createReservedCounterToast();\n    }\n  }\n\n  private async createReservedCounterToast() {\n    const opt: AXNotificationDisplayConfig = {\n      closeButton: false,\n      color: this.moreNotificationsColor,\n      location: this.moreNotificationsLocation,\n      title: await this.translationService.translateAsync('more-notification', {\n        params: { number: this.reserveCounter },\n      }),\n      timeOutProgress: false,\n    };\n    const gap = this.defaultConfig.gap;\n    const pos = this.getPosition(opt.location) + gap + 'px';\n    const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), opt.location, pos, gap);\n    const dialogRef = this.dialog.open(AXNotificationComponent, {\n      data: opt,\n      autoFocus: '__no_element__',\n      restoreFocus: true,\n      role: 'dialog',\n      ariaModal: true,\n      closeOnNavigation: true,\n      closeOnDestroy: true,\n      hasBackdrop: false,\n      panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],\n      positionStrategy,\n    });\n    this.notificationCounterElement = dialogRef.componentInstance as AXNotificationComponent;\n  }\n\n  private reposition(notificationLocation: AXLocation, gap: number): void {\n    const list = this.dialog.openDialogs\n      .map((c) => c.componentInstance as AXNotificationComponent)\n      .filter((c) => c.config?.location == notificationLocation);\n    list.forEach((element, index) => {\n      const pos = this.getRepositionPosition(index, gap, list, notificationLocation);\n\n      this.getPositionStrategy(\n        element.dialogRef.config.positionStrategy as GlobalPositionStrategy,\n        notificationLocation,\n        pos,\n        gap,\n      ).apply();\n    });\n  }\n\n  private getRepositionPosition(\n    index: number,\n    gap: number,\n    list: AXNotificationComponent[],\n    notificationLocation: string,\n  ) {\n    if (index === 0) return gap + 'px';\n    const previouseElement = list[index - 1];\n    if (notificationLocation.split('-')[0] == 'bottom') {\n      return window.innerHeight - previouseElement.getHostElement().offsetTop + gap + 'px';\n    }\n    return (\n      previouseElement.getHostElement().offsetTop +\n      previouseElement.getHostElement().offsetHeight +\n      gap +\n      'px'\n    );\n  }\n\n  private getPosition(location: string) {\n    const list = this.dialog.openDialogs\n      .map((c) => c.componentInstance as AXNotificationComponent)\n      .filter((c) => c.config.location == location);\n    if (list.length == 0) return 0;\n    if (location.split('-')[0] == 'bottom') {\n      return window.innerHeight - list[list.length - 1].getHostElement().offsetTop;\n    }\n    return (\n      list[list.length - 1].getHostElement().offsetTop + list[list.length - 1].getHostElement().offsetHeight\n    );\n  }\n\n  private getPositionStrategy(\n    positionStrategy: GlobalPositionStrategy,\n    location: AXLocation,\n    pos: string,\n    gap: number,\n  ) {\n    switch (location) {\n      case 'bottom-center':\n        return positionStrategy.bottom(pos).centerHorizontally();\n        break;\n      case 'bottom-end':\n        return positionStrategy.bottom(pos).right(gap + 'px');\n        break;\n      case 'bottom-start':\n        return positionStrategy.bottom(pos).left(gap + 'px');\n        break;\n      case 'top-center':\n        return positionStrategy.top(pos).centerHorizontally();\n        break;\n      case 'top-end':\n        return positionStrategy.top(pos).right(gap + 'px');\n        break;\n      case 'top-start':\n        return positionStrategy.top(pos).left(gap + 'px');\n        break;\n      case 'center-start':\n        return positionStrategy.centerVertically().left(gap + 'px');\n        break;\n      case 'center-end':\n        return positionStrategy.centerVertically().right(gap + 'px');\n        break;\n    }\n  }\n}\n","import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { DialogModule } from '@angular/cdk/dialog';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { AXNotificationComponent } from './notification.component';\nimport { AXNotificationService } from './notification.service';\n\nconst COMPONENT = [AXNotificationComponent];\nconst MODULES = [CommonModule, PortalModule, AXButtonModule, DialogModule, AXLoadingModule, AXDecoratorModule, AXTranslationModule];\n\n@NgModule({\n  declarations: [...COMPONENT],\n  imports: [...MODULES],\n  exports: [...COMPONENT],\n  providers: [AXNotificationService],\n})\nexport class AXNotificationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
         |