@spicainternational/ngx-sds-components 5.10.4 → 5.11.0

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 (61) hide show
  1. package/esm2020/public-api.mjs +3 -1
  2. package/esm2020/src/lib/highlight-text/directives/highlight-text.directive.mjs +60 -0
  3. package/esm2020/src/lib/highlight-text/directives/index.mjs +2 -0
  4. package/esm2020/src/lib/highlight-text/highlight-text.module.mjs +31 -0
  5. package/esm2020/src/lib/highlight-text/pipes/highlight-text.pipe.mjs +29 -0
  6. package/esm2020/src/lib/highlight-text/pipes/index.mjs +2 -0
  7. package/esm2020/src/lib/highlight-text/public-api.mjs +4 -0
  8. package/esm2020/src/lib/highlight-text/spicainternational-ngx-sds-components-src-lib-highlight-text.mjs +5 -0
  9. package/esm2020/src/lib/highlight-text/utils/highlight-text.utils.mjs +97 -0
  10. package/esm2020/src/lib/highlight-text/utils/index.mjs +2 -0
  11. package/esm2020/src/lib/message/message.component.mjs +41 -0
  12. package/esm2020/src/lib/message/message.module.mjs +30 -0
  13. package/esm2020/src/lib/message/public-api.mjs +3 -0
  14. package/esm2020/src/lib/message/spicainternational-ngx-sds-components-src-lib-message.mjs +5 -0
  15. package/esm2020/src/lib/modal/dialog/dialog.component.mjs +8 -3
  16. package/esm2020/src/lib/modal/modal.component.mjs +6 -2
  17. package/esm2020/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.mjs +50 -0
  18. package/esm2020/src/lib/navigation/navigation.module.mjs +22 -8
  19. package/esm2020/src/lib/navigation/public-api.mjs +2 -1
  20. package/fesm2015/spicainternational-ngx-sds-components-src-lib-highlight-text.mjs +217 -0
  21. package/fesm2015/spicainternational-ngx-sds-components-src-lib-highlight-text.mjs.map +1 -0
  22. package/fesm2015/spicainternational-ngx-sds-components-src-lib-message.mjs +75 -0
  23. package/fesm2015/spicainternational-ngx-sds-components-src-lib-message.mjs.map +1 -0
  24. package/fesm2015/spicainternational-ngx-sds-components-src-lib-modal.mjs +12 -3
  25. package/fesm2015/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
  26. package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs +69 -9
  27. package/fesm2015/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
  28. package/fesm2015/spicainternational-ngx-sds-components.mjs +2 -0
  29. package/fesm2015/spicainternational-ngx-sds-components.mjs.map +1 -1
  30. package/fesm2020/spicainternational-ngx-sds-components-src-lib-highlight-text.mjs +214 -0
  31. package/fesm2020/spicainternational-ngx-sds-components-src-lib-highlight-text.mjs.map +1 -0
  32. package/fesm2020/spicainternational-ngx-sds-components-src-lib-message.mjs +75 -0
  33. package/fesm2020/spicainternational-ngx-sds-components-src-lib-message.mjs.map +1 -0
  34. package/fesm2020/spicainternational-ngx-sds-components-src-lib-modal.mjs +12 -3
  35. package/fesm2020/spicainternational-ngx-sds-components-src-lib-modal.mjs.map +1 -1
  36. package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs +69 -9
  37. package/fesm2020/spicainternational-ngx-sds-components-src-lib-navigation.mjs.map +1 -1
  38. package/fesm2020/spicainternational-ngx-sds-components.mjs +2 -0
  39. package/fesm2020/spicainternational-ngx-sds-components.mjs.map +1 -1
  40. package/package.json +17 -1
  41. package/public-api.d.ts +2 -0
  42. package/src/lib/highlight-text/directives/highlight-text.directive.d.ts +33 -0
  43. package/src/lib/highlight-text/directives/index.d.ts +1 -0
  44. package/src/lib/highlight-text/highlight-text.module.d.ts +9 -0
  45. package/src/lib/highlight-text/package.json +10 -0
  46. package/src/lib/highlight-text/pipes/highlight-text.pipe.d.ts +11 -0
  47. package/src/lib/highlight-text/pipes/index.d.ts +1 -0
  48. package/src/lib/highlight-text/public-api.d.ts +3 -0
  49. package/src/lib/highlight-text/spicainternational-ngx-sds-components-src-lib-highlight-text.d.ts +5 -0
  50. package/src/lib/highlight-text/utils/highlight-text.utils.d.ts +23 -0
  51. package/src/lib/highlight-text/utils/index.d.ts +1 -0
  52. package/src/lib/message/message.component.d.ts +18 -0
  53. package/src/lib/message/message.module.d.ts +9 -0
  54. package/src/lib/message/package.json +10 -0
  55. package/src/lib/message/public-api.d.ts +2 -0
  56. package/src/lib/message/spicainternational-ngx-sds-components-src-lib-message.d.ts +5 -0
  57. package/src/lib/modal/dialog/dialog.component.d.ts +1 -0
  58. package/src/lib/modal/modal.component.d.ts +2 -1
  59. package/src/lib/navigation/navigation-user-profile/navigation-user-profile.component.d.ts +19 -0
  60. package/src/lib/navigation/navigation.module.d.ts +8 -5
  61. package/src/lib/navigation/public-api.d.ts +1 -0
@@ -16,6 +16,7 @@ export class SdsModalComponent {
16
16
  this.modalOpen = new EventEmitter();
17
17
  this.modalClose = new EventEmitter();
18
18
  this.closeClick = new EventEmitter();
19
+ this.closeEscapeKeypress = new EventEmitter();
19
20
  this.closeIcon = faXmark;
20
21
  this.isOpen = false;
21
22
  this.translations = {
@@ -49,12 +50,13 @@ export class SdsModalComponent {
49
50
  this._modal != undefined &&
50
51
  this._modal.nativeElement.style.display === 'block') {
51
52
  // console.log(`${this.constructor.name} got event: ${event.code}`);
53
+ this.closeEscapeKeypress.emit();
52
54
  this.close();
53
55
  }
54
56
  }
55
57
  }
56
58
  SdsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
- SdsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsModalComponent, selector: "sds-modal", inputs: { modalTitle: "modalTitle", showHeader: "showHeader", showFooter: "showFooter", size: "size", modalDialogId: "modalDialogId", showCloseButton: "showCloseButton", autoFocusCloseButton: "autoFocusCloseButton", translations: "translations", isScrollable: "isScrollable", closeOnEscape: "closeOnEscape" }, outputs: { modalOpen: "modalOpen", modalClose: "modalClose", closeClick: "closeClick" }, queries: [{ propertyName: "headerContent", first: true, predicate: ["header"], descendants: true }], viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true }, { propertyName: "_closeButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<div #modal class=\"modal\" (keydown)=\"onKeydown($event)\" [cdkTrapFocus]=\"isOpen\" [cdkTrapFocusAutoCapture]=\"true\" >\r\n <div\r\n class=\"modal-dialog modal-dialog-centered\"\r\n [class.modal-dialog-scrollable] = \"isScrollable\"\r\n [attr.id]=\"modalDialogId\"\r\n [ngClass]=\"'modal-' + size\"\r\n role=\"document\"\r\n >\r\n <div class=\"modal-content\">\r\n\r\n <div *ngIf=\"showHeader && headerContent\" class=\"modal-header\">\r\n <ng-content select='header'></ng-content>\r\n </div> \r\n\r\n <div *ngIf=\"showHeader && !headerContent\" class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\r\n <button \r\n #closeButton\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\" \r\n class=\"btn-close\" \r\n [title]=\"translations.close ?? ''\"\r\n (click)=\"onCloseButtonClick()\">\r\n </button>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\r\n <ng-content select=\"footer\"></ng-content>\r\n </div> \r\n </div>\r\n </div>\r\n</div>", styles: [".modal{background:rgba(0,0,0,.5)}.modal .modal-header button.btn-close:hover{background-color:#e9ecef}.modal.in{opacity:1}.modal.in .modal-dialog{transform:translate(0)}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}\n"], directives: [{ type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
59
+ SdsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsModalComponent, selector: "sds-modal", inputs: { modalTitle: "modalTitle", showHeader: "showHeader", showFooter: "showFooter", size: "size", modalDialogId: "modalDialogId", showCloseButton: "showCloseButton", autoFocusCloseButton: "autoFocusCloseButton", translations: "translations", isScrollable: "isScrollable", closeOnEscape: "closeOnEscape" }, outputs: { modalOpen: "modalOpen", modalClose: "modalClose", closeClick: "closeClick", closeEscapeKeypress: "closeEscapeKeypress" }, queries: [{ propertyName: "headerContent", first: true, predicate: ["header"], descendants: true }], viewQueries: [{ propertyName: "_modal", first: true, predicate: ["modal"], descendants: true }, { propertyName: "_closeButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: "<div #modal class=\"modal\" (keydown)=\"onKeydown($event)\" [cdkTrapFocus]=\"isOpen\" [cdkTrapFocusAutoCapture]=\"true\" >\r\n <div\r\n class=\"modal-dialog modal-dialog-centered\"\r\n [class.modal-dialog-scrollable] = \"isScrollable\"\r\n [attr.id]=\"modalDialogId\"\r\n [ngClass]=\"'modal-' + size\"\r\n role=\"document\"\r\n >\r\n <div class=\"modal-content\">\r\n\r\n <div *ngIf=\"showHeader && headerContent\" class=\"modal-header\">\r\n <ng-content select='header'></ng-content>\r\n </div> \r\n\r\n <div *ngIf=\"showHeader && !headerContent\" class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\r\n <button \r\n #closeButton\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\" \r\n class=\"btn-close\" \r\n [title]=\"translations.close ?? ''\"\r\n (click)=\"onCloseButtonClick()\">\r\n </button>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\r\n <ng-content select=\"footer\"></ng-content>\r\n </div> \r\n </div>\r\n </div>\r\n</div>", styles: [".modal{background:rgba(0,0,0,.5)}.modal .modal-header button.btn-close:hover{background-color:#e9ecef}.modal.in{opacity:1}.modal.in .modal-dialog{transform:translate(0)}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}\n"], directives: [{ type: i1.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
58
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsModalComponent, decorators: [{
59
61
  type: Component,
60
62
  args: [{ selector: 'sds-modal', template: "<div #modal class=\"modal\" (keydown)=\"onKeydown($event)\" [cdkTrapFocus]=\"isOpen\" [cdkTrapFocusAutoCapture]=\"true\" >\r\n <div\r\n class=\"modal-dialog modal-dialog-centered\"\r\n [class.modal-dialog-scrollable] = \"isScrollable\"\r\n [attr.id]=\"modalDialogId\"\r\n [ngClass]=\"'modal-' + size\"\r\n role=\"document\"\r\n >\r\n <div class=\"modal-content\">\r\n\r\n <div *ngIf=\"showHeader && headerContent\" class=\"modal-header\">\r\n <ng-content select='header'></ng-content>\r\n </div> \r\n\r\n <div *ngIf=\"showHeader && !headerContent\" class=\"modal-header\">\r\n <h5 class=\"modal-title\">{{modalTitle}}</h5>\r\n <button \r\n #closeButton\r\n *ngIf=\"showCloseButton\"\r\n type=\"button\" \r\n class=\"btn-close\" \r\n [title]=\"translations.close ?? ''\"\r\n (click)=\"onCloseButtonClick()\">\r\n </button>\r\n </div>\r\n\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"modal-footer\">\r\n <ng-content select=\"footer\"></ng-content>\r\n </div> \r\n </div>\r\n </div>\r\n</div>", styles: [".modal{background:rgba(0,0,0,.5)}.modal .modal-header button.btn-close:hover{background-color:#e9ecef}.modal.in{opacity:1}.modal.in .modal-dialog{transform:translate(0)}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}\n"] }]
@@ -87,6 +89,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
87
89
  type: Output
88
90
  }], closeClick: [{
89
91
  type: Output
92
+ }], closeEscapeKeypress: [{
93
+ type: Output
90
94
  }], _modal: [{
91
95
  type: ViewChild,
92
96
  args: ['modal', { static: false }]
@@ -94,4 +98,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
94
98
  type: ViewChild,
95
99
  args: ['closeButton', { static: false }]
96
100
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVE3RCxNQUFNLE9BQU8saUJBQWlCO0lBNEIxQjtRQTNCd0Isa0JBQWEsR0FBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUdqRSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsU0FBSSxHQUE4QixJQUFJLENBQUM7UUFFdkMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBR3RDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6RCxlQUFVLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFMUQsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRXBFLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFFcEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQU8zQixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLEtBQUssRUFBRSxTQUFTO1NBQ25CLENBQUE7SUFDTCxDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFWixJQUFJO1FBQ1AsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFHLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUNJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN2QixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUM7WUFDaEQsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNwQjtJQUNMLENBQUM7OzhHQXBFUSxpQkFBaUI7a0dBQWpCLGlCQUFpQixvdUJDbEI5Qiw2NUNBbUNNOzJGRGpCTyxpQkFBaUI7a0JBTDdCLFNBQVM7K0JBQ0ksV0FBVzswRUFLRyxhQUFhO3NCQUFwQyxZQUFZO3VCQUFDLFFBQVE7Z0JBRU4sVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUVVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUVXLFNBQVM7c0JBQXpCLE1BQU07Z0JBQ1UsVUFBVTtzQkFBMUIsTUFBTTtnQkFFVSxVQUFVO3NCQUExQixNQUFNO2dCQU13QyxNQUFNO3NCQUFwRCxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ2dCLFlBQVk7c0JBQWhFLFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFbGVtZW50UmVmLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBDb250ZW50Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZmFYbWFyayB9IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5pbXBvcnQgeyBNb2RhbFRyYW5zbGF0aW9ucyB9IGZyb20gJy4vbW9kYWwubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Nkcy1tb2RhbCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkc01vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBDb250ZW50Q2hpbGQoJ2hlYWRlcicpIGhlYWRlckNvbnRlbnQ6IEVsZW1lbnRSZWYgPSB7IG5hdGl2ZUVsZW1lbnQ6IHVuZGVmaW5lZCB9O1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtb2RhbFRpdGxlPzogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNpemU6ICdzbScgfCAnbWQnIHwgJ2xnJyB8ICd4bCcgPSAnbWQnO1xyXG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsRGlhbG9nSWQ/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0Nsb3NlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhdXRvRm9jdXNDbG9zZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB0cmFuc2xhdGlvbnM6IE1vZGFsVHJhbnNsYXRpb25zO1xyXG4gICAgQElucHV0KCkgcHVibGljIGlzU2Nyb2xsYWJsZSA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY2xvc2VPbkVzY2FwZSA9IGZhbHNlO1xyXG5cclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgbW9kYWxPcGVuOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIG1vZGFsQ2xvc2U6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBAT3V0cHV0KCkgcHVibGljIGNsb3NlQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgICBwdWJsaWMgY2xvc2VJY29uID0gZmFYbWFyaztcclxuXHJcbiAgICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbW9kYWwnLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBfbW9kYWw6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ1dHRvbicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIF9jbG9zZUJ1dHRvbjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcclxuICAgIFxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICBjbG9zZTogdW5kZWZpbmVkXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge31cclxuXHJcbiAgICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbW9kYWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vZGFsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYodGhpcy5hdXRvRm9jdXNDbG9zZUJ1dHRvbilcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Nsb3NlQnV0dG9uPy5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIHRoaXMubW9kYWxPcGVuLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9tb2RhbCAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsQ2xvc2UuZW1pdCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25DbG9zZUJ1dHRvbkNsaWNrKCl7XHJcbiAgICAgICAgdGhpcy5jbG9zZUNsaWNrLmVtaXQoKTtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KXtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnICYmXHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VPbkVzY2FwZSAmJiBcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwgIT0gdW5kZWZpbmVkICYmIFxyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPT09ICdibG9jaycpe1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfSBnb3QgZXZlbnQ6ICR7ZXZlbnQuY29kZX1gKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiAjbW9kYWwgY2xhc3M9XCJtb2RhbFwiIChrZXlkb3duKT1cIm9uS2V5ZG93bigkZXZlbnQpXCIgW2Nka1RyYXBGb2N1c109XCJpc09wZW5cIiBbY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmVdPVwidHJ1ZVwiID5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1kaWFsb2ctY2VudGVyZWRcIlxyXG4gICAgICAgIFtjbGFzcy5tb2RhbC1kaWFsb2ctc2Nyb2xsYWJsZV0gPSBcImlzU2Nyb2xsYWJsZVwiXHJcbiAgICAgICAgW2F0dHIuaWRdPVwibW9kYWxEaWFsb2dJZFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwiJ21vZGFsLScgKyBzaXplXCJcclxuICAgICAgICByb2xlPVwiZG9jdW1lbnRcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dIZWFkZXIgJiYgaGVhZGVyQ29udGVudFwiIGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9J2hlYWRlcic+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hlYWRlciAmJiAhaGVhZGVyQ29udGVudFwiIGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiPnt7bW9kYWxUaXRsZX19PC9oNT5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gXHJcbiAgICAgICAgICAgICAgICAgICAgI2Nsb3NlQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93Q2xvc2VCdXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIiBcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1jbG9zZVwiIFxyXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJ0cmFuc2xhdGlvbnMuY2xvc2UgPz8gJydcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQnV0dG9uQ2xpY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Zvb3RlclwiIGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJmb290ZXJcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFFVCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQVE3RCxNQUFNLE9BQU8saUJBQWlCO0lBNkIxQjtRQTVCd0Isa0JBQWEsR0FBZSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQztRQUdqRSxlQUFVLEdBQVksSUFBSSxDQUFDO1FBQzNCLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFDM0IsU0FBSSxHQUE4QixJQUFJLENBQUM7UUFFdkMsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFDaEMseUJBQW9CLEdBQVksS0FBSyxDQUFDO1FBR3RDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBRXJCLGNBQVMsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUN6RCxlQUFVLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFFMUQsZUFBVSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzFELHdCQUFtQixHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTdFLGNBQVMsR0FBRyxPQUFPLENBQUM7UUFFcEIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQU8zQixJQUFJLENBQUMsWUFBWSxHQUFHO1lBQ2hCLEtBQUssRUFBRSxTQUFTO1NBQ25CLENBQUE7SUFDTCxDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFWixJQUFJO1FBQ1AsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztZQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNuQixJQUFHLElBQUksQ0FBQyxvQkFBb0I7Z0JBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekI7SUFDTCxDQUFDO0lBRU0sS0FBSztRQUNSLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMxQjtJQUNMLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFvQjtRQUMxQixJQUNJLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUTtZQUN2QixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE9BQU8sS0FBSyxPQUFPLEVBQUM7WUFDaEQsb0VBQW9FO1lBQ3BFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEI7SUFDTCxDQUFDOzs4R0F0RVEsaUJBQWlCO2tHQUFqQixpQkFBaUIsZ3hCQ2xCOUIsNjVDQW1DTTsyRkRqQk8saUJBQWlCO2tCQUw3QixTQUFTOytCQUNJLFdBQVc7MEVBS0csYUFBYTtzQkFBcEMsWUFBWTt1QkFBQyxRQUFRO2dCQUVOLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLG9CQUFvQjtzQkFBbkMsS0FBSztnQkFFVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFFVyxTQUFTO3NCQUF6QixNQUFNO2dCQUNVLFVBQVU7c0JBQTFCLE1BQU07Z0JBRVUsVUFBVTtzQkFBMUIsTUFBTTtnQkFDVSxtQkFBbUI7c0JBQW5DLE1BQU07Z0JBTXdDLE1BQU07c0JBQXBELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDZ0IsWUFBWTtzQkFBaEUsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIENvbnRlbnRDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmYVhtYXJrIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1yZWd1bGFyLXN2Zy1pY29ucyc7XHJcbmltcG9ydCB7IE1vZGFsVHJhbnNsYXRpb25zIH0gZnJvbSAnLi9tb2RhbC5tb2RlbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLW1vZGFsJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tb2RhbC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgQENvbnRlbnRDaGlsZCgnaGVhZGVyJykgaGVhZGVyQ29udGVudDogRWxlbWVudFJlZiA9IHsgbmF0aXZlRWxlbWVudDogdW5kZWZpbmVkIH07XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIG1vZGFsVGl0bGU/OiBzdHJpbmc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd0Zvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2l6ZTogJ3NtJyB8ICdtZCcgfCAnbGcnIHwgJ3hsJyA9ICdtZCc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbW9kYWxEaWFsb2dJZD86IHN0cmluZztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93Q2xvc2VCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgQElucHV0KCkgcHVibGljIGF1dG9Gb2N1c0Nsb3NlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHRyYW5zbGF0aW9uczogTW9kYWxUcmFuc2xhdGlvbnM7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgaXNTY3JvbGxhYmxlID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjbG9zZU9uRXNjYXBlID0gZmFsc2U7XHJcblxyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBtb2RhbE9wZW46IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgbW9kYWxDbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgY2xvc2VDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBjbG9zZUVzY2FwZUtleXByZXNzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIGNsb3NlSWNvbiA9IGZhWG1hcms7XHJcblxyXG4gICAgcHVibGljIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgX21vZGFsOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnY2xvc2VCdXR0b24nLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBfY2xvc2VCdXR0b246IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XHJcbiAgICBcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHtcclxuICAgICAgICAgICAgY2xvc2U6IHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX21vZGFsICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbC5uYXRpdmVFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYXV0b0ZvY3VzQ2xvc2VCdXR0b24pXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jbG9zZUJ1dHRvbj8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgICAgICB0aGlzLm1vZGFsT3Blbi5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fbW9kYWwgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vZGFsLm5hdGl2ZUVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbENsb3NlLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uQ2xvc2VCdXR0b25DbGljaygpe1xyXG4gICAgICAgIHRoaXMuY2xvc2VDbGljay5lbWl0KCk7XHJcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCl7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBldmVudC5jb2RlID09PSAnRXNjYXBlJyAmJlxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlT25Fc2NhcGUgJiYgXHJcbiAgICAgICAgICAgIHRoaXMuX21vZGFsICE9IHVuZGVmaW5lZCAmJiBcclxuICAgICAgICAgICAgdGhpcy5fbW9kYWwubmF0aXZlRWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnYmxvY2snKXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX0gZ290IGV2ZW50OiAke2V2ZW50LmNvZGV9YCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRXNjYXBlS2V5cHJlc3MuZW1pdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2ICNtb2RhbCBjbGFzcz1cIm1vZGFsXCIgKGtleWRvd24pPVwib25LZXlkb3duKCRldmVudClcIiBbY2RrVHJhcEZvY3VzXT1cImlzT3BlblwiIFtjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZV09XCJ0cnVlXCIgPlxyXG4gICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLWRpYWxvZy1jZW50ZXJlZFwiXHJcbiAgICAgICAgW2NsYXNzLm1vZGFsLWRpYWxvZy1zY3JvbGxhYmxlXSA9IFwiaXNTY3JvbGxhYmxlXCJcclxuICAgICAgICBbYXR0ci5pZF09XCJtb2RhbERpYWxvZ0lkXCJcclxuICAgICAgICBbbmdDbGFzc109XCInbW9kYWwtJyArIHNpemVcIlxyXG4gICAgICAgIHJvbGU9XCJkb2N1bWVudFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcblxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0hlYWRlciAmJiBoZWFkZXJDb250ZW50XCIgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0naGVhZGVyJz48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PiAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93SGVhZGVyICYmICFoZWFkZXJDb250ZW50XCIgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3ttb2RhbFRpdGxlfX08L2g1PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBcclxuICAgICAgICAgICAgICAgICAgICAjY2xvc2VCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dDbG9zZUJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiIFxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWNsb3NlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cInRyYW5zbGF0aW9ucy5jbG9zZSA/PyAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VCdXR0b25DbGljaygpXCI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93Rm9vdGVyXCIgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZvb3RlclwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPC9kaXY+ICAgICAgICAgICAgXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
@@ -0,0 +1,50 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@spicainternational/ngx-sds-components/src/lib/avatar";
4
+ import * as i2 from "devextreme-angular/ui/popover";
5
+ import * as i3 from "@angular/common";
6
+ export class SdsNavigationUserProfileComponent {
7
+ constructor() {
8
+ this.name = 'name';
9
+ this.id = 'id';
10
+ this.showSignOut = true;
11
+ this.showProfile = true;
12
+ this.signOutText = 'Sign out';
13
+ this.profileText = 'Profile';
14
+ this.profileClick = new EventEmitter();
15
+ this.signOutClick = new EventEmitter();
16
+ this.showOptions = false;
17
+ }
18
+ ngOnInit() { }
19
+ onProfileClick() {
20
+ this.showOptions = false;
21
+ this.profileClick.emit();
22
+ }
23
+ onSignOutClick() {
24
+ this.showOptions = false;
25
+ this.signOutClick.emit();
26
+ }
27
+ }
28
+ SdsNavigationUserProfileComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsNavigationUserProfileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
29
+ SdsNavigationUserProfileComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsNavigationUserProfileComponent, selector: "sds-navigation-user-profile", inputs: { name: "name", id: "id", showSignOut: "showSignOut", showProfile: "showProfile", signOutText: "signOutText", profileText: "profileText" }, outputs: { profileClick: "profileClick", signOutClick: "signOutClick" }, ngImport: i0, template: "\r\n\r\n\r\n<div class=\"d-flex flex-row align-items-center gap-2 sds-navigation-user-profile-container\"\r\n (click)=\"showOptions = !showOptions\">\r\n\r\n <sds-avatar\r\n [text]=\"name\"\r\n [colorKey]=\"id\"> \r\n </sds-avatar>\r\n \r\n \r\n <span class=\"truncate-two-lines\">\r\n {{name}}\r\n </span> \r\n\r\n</div> \r\n\r\n<dx-popover\r\n target=\".sds-navigation-user-profile-container\"\r\n width=\"12.5rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-user-profile-popover' }\"\r\n [(visible)]=\"showOptions\"\r\n >\r\n\r\n <div class=\"d-flex flex-row gap-2 align-items-center p-2 mb-1\">\r\n <sds-avatar\r\n [text]=\"name\"\r\n [colorKey]=\"id\"\r\n [size]=\"2\"> \r\n </sds-avatar>\r\n \r\n <span class=\"truncate-two-lines font-weight-500\">\r\n {{name}}\r\n </span>\r\n </div>\r\n\r\n <ul class=\"list-unstyled sds-navigation-user-profile-actions mb-0\">\r\n <li *ngIf=\"showProfile\">\r\n <a \r\n class=\"d-block text-black\"\r\n (click)=\"onProfileClick()\" \r\n >\r\n {{profileText}}\r\n </a>\r\n </li>\r\n\r\n <li>\r\n <a \r\n *ngIf=\"showSignOut\"\r\n class=\"d-block text-black\"\r\n (click)=\"onSignOutClick()\" \r\n >\r\n {{signOutText}}\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n</dx-popover>", styles: [".sds-navigation-user-profile-container{padding:.8rem;cursor:pointer}.sds-navigation-user-profile-actions li{margin-bottom:.25rem}.sds-navigation-user-profile-actions li a{-webkit-user-select:none;user-select:none;text-decoration:none;padding:.5rem 1rem;width:100%;border-radius:4px}.sds-navigation-user-profile-actions li a:hover{background-color:#e9ecef;cursor:pointer}.truncate-two-lines{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}::ng-deep .sds-navigation-user-profile-popover .dx-popup-content{padding:.25rem;font-size:1rem}\n"], components: [{ type: i1.SdsAvatarComponent, selector: "sds-avatar", inputs: ["text", "colorKey", "pictureUri", "showHint", "borderStyle", "borderColor", "initialsText", "cursor", "size"] }, { type: i2.DxPopoverComponent, selector: "dx-popover", inputs: ["animation", "closeOnOutsideClick", "container", "contentTemplate", "copyRootClassesToWrapper", "deferRendering", "disabled", "elementAttr", "height", "hideEvent", "hideOnOutsideClick", "hideOnParentScroll", "hint", "hoverStateEnabled", "maxHeight", "maxWidth", "minHeight", "minWidth", "position", "rtlEnabled", "shading", "shadingColor", "showCloseButton", "showEvent", "showTitle", "target", "title", "titleTemplate", "toolbarItems", "visible", "width", "wrapperAttr"], outputs: ["onContentReady", "onDisposing", "onHidden", "onHiding", "onInitialized", "onOptionChanged", "onShowing", "onShown", "onTitleRendered", "animationChange", "closeOnOutsideClickChange", "containerChange", "contentTemplateChange", "copyRootClassesToWrapperChange", "deferRenderingChange", "disabledChange", "elementAttrChange", "heightChange", "hideEventChange", "hideOnOutsideClickChange", "hideOnParentScrollChange", "hintChange", "hoverStateEnabledChange", "maxHeightChange", "maxWidthChange", "minHeightChange", "minWidthChange", "positionChange", "rtlEnabledChange", "shadingChange", "shadingColorChange", "showCloseButtonChange", "showEventChange", "showTitleChange", "targetChange", "titleChange", "titleTemplateChange", "toolbarItemsChange", "visibleChange", "widthChange", "wrapperAttrChange"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsNavigationUserProfileComponent, decorators: [{
31
+ type: Component,
32
+ args: [{ selector: 'sds-navigation-user-profile', template: "\r\n\r\n\r\n<div class=\"d-flex flex-row align-items-center gap-2 sds-navigation-user-profile-container\"\r\n (click)=\"showOptions = !showOptions\">\r\n\r\n <sds-avatar\r\n [text]=\"name\"\r\n [colorKey]=\"id\"> \r\n </sds-avatar>\r\n \r\n \r\n <span class=\"truncate-two-lines\">\r\n {{name}}\r\n </span> \r\n\r\n</div> \r\n\r\n<dx-popover\r\n target=\".sds-navigation-user-profile-container\"\r\n width=\"12.5rem\"\r\n [wrapperAttr]=\"{ class: 'sds-navigation-user-profile-popover' }\"\r\n [(visible)]=\"showOptions\"\r\n >\r\n\r\n <div class=\"d-flex flex-row gap-2 align-items-center p-2 mb-1\">\r\n <sds-avatar\r\n [text]=\"name\"\r\n [colorKey]=\"id\"\r\n [size]=\"2\"> \r\n </sds-avatar>\r\n \r\n <span class=\"truncate-two-lines font-weight-500\">\r\n {{name}}\r\n </span>\r\n </div>\r\n\r\n <ul class=\"list-unstyled sds-navigation-user-profile-actions mb-0\">\r\n <li *ngIf=\"showProfile\">\r\n <a \r\n class=\"d-block text-black\"\r\n (click)=\"onProfileClick()\" \r\n >\r\n {{profileText}}\r\n </a>\r\n </li>\r\n\r\n <li>\r\n <a \r\n *ngIf=\"showSignOut\"\r\n class=\"d-block text-black\"\r\n (click)=\"onSignOutClick()\" \r\n >\r\n {{signOutText}}\r\n </a>\r\n </li>\r\n </ul>\r\n\r\n</dx-popover>", styles: [".sds-navigation-user-profile-container{padding:.8rem;cursor:pointer}.sds-navigation-user-profile-actions li{margin-bottom:.25rem}.sds-navigation-user-profile-actions li a{-webkit-user-select:none;user-select:none;text-decoration:none;padding:.5rem 1rem;width:100%;border-radius:4px}.sds-navigation-user-profile-actions li a:hover{background-color:#e9ecef;cursor:pointer}.truncate-two-lines{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical}::ng-deep .sds-navigation-user-profile-popover .dx-popup-content{padding:.25rem;font-size:1rem}\n"] }]
33
+ }], ctorParameters: function () { return []; }, propDecorators: { name: [{
34
+ type: Input
35
+ }], id: [{
36
+ type: Input
37
+ }], showSignOut: [{
38
+ type: Input
39
+ }], showProfile: [{
40
+ type: Input
41
+ }], signOutText: [{
42
+ type: Input
43
+ }], profileText: [{
44
+ type: Input
45
+ }], profileClick: [{
46
+ type: Output
47
+ }], signOutClick: [{
48
+ type: Output
49
+ }] } });
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi11c2VyLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24tdXNlci1wcm9maWxlL25hdmlnYXRpb24tdXNlci1wcm9maWxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBTy9FLE1BQU0sT0FBTyxpQ0FBaUM7SUFlMUM7UUFkUyxTQUFJLEdBQVcsTUFBTSxDQUFDO1FBQ3RCLE9BQUUsR0FBVyxJQUFJLENBQUM7UUFFbEIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFDNUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFFNUIsZ0JBQVcsR0FBVyxVQUFVLENBQUM7UUFDakMsZ0JBQVcsR0FBVyxTQUFTLENBQUM7UUFFL0IsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUM1RCxpQkFBWSxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRS9ELGdCQUFXLEdBQVksS0FBSyxDQUFDO0lBRXJCLENBQUM7SUFFaEIsUUFBUSxLQUFVLENBQUM7SUFFWixjQUFjO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGNBQWM7UUFDakIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDOzs4SEEzQlEsaUNBQWlDO2tIQUFqQyxpQ0FBaUMsZ1NDUDlDLHNpREEwRGE7MkZEbkRBLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDSSw2QkFBNkI7MEVBSzlCLElBQUk7c0JBQVosS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLW5hdmlnYXRpb24tdXNlci1wcm9maWxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzTmF2aWdhdGlvblVzZXJQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAgIEBJbnB1dCgpIG5hbWU6IHN0cmluZyA9ICduYW1lJztcclxuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgPSAnaWQnO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3dTaWduT3V0OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIEBJbnB1dCgpIHNob3dQcm9maWxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBzaWduT3V0VGV4dDogc3RyaW5nID0gJ1NpZ24gb3V0JztcclxuICAgIEBJbnB1dCgpIHByb2ZpbGVUZXh0OiBzdHJpbmcgPSAnUHJvZmlsZSc7XHJcblxyXG4gICAgQE91dHB1dCgpIHByb2ZpbGVDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIHNpZ25PdXRDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHB1YmxpYyBzaG93T3B0aW9uczogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gICAgcHVibGljIG9uUHJvZmlsZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd09wdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnByb2ZpbGVDbGljay5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU2lnbk91dENsaWNrKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc2hvd09wdGlvbnMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNpZ25PdXRDbGljay5lbWl0KCk7XHJcbiAgICB9XHJcbn1cclxuIiwiXHJcblxyXG5cclxuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgc2RzLW5hdmlnYXRpb24tdXNlci1wcm9maWxlLWNvbnRhaW5lclwiXHJcbiAgICAoY2xpY2spPVwic2hvd09wdGlvbnMgPSAhc2hvd09wdGlvbnNcIj5cclxuXHJcbiAgICA8c2RzLWF2YXRhclxyXG4gICAgICAgIFt0ZXh0XT1cIm5hbWVcIlxyXG4gICAgICAgIFtjb2xvcktleV09XCJpZFwiPiAgICBcclxuICAgIDwvc2RzLWF2YXRhcj5cclxuICAgIFxyXG4gICAgXHJcbiAgICA8c3BhbiBjbGFzcz1cInRydW5jYXRlLXR3by1saW5lc1wiPlxyXG4gICAgICAgIHt7bmFtZX19XHJcbiAgICA8L3NwYW4+ICAgIFxyXG5cclxuPC9kaXY+IFxyXG5cclxuPGR4LXBvcG92ZXJcclxuICAgIHRhcmdldD1cIi5zZHMtbmF2aWdhdGlvbi11c2VyLXByb2ZpbGUtY29udGFpbmVyXCJcclxuICAgIHdpZHRoPVwiMTIuNXJlbVwiXHJcbiAgICBbd3JhcHBlckF0dHJdPVwieyBjbGFzczogJ3Nkcy1uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS1wb3BvdmVyJyB9XCJcclxuICAgIFsodmlzaWJsZSldPVwic2hvd09wdGlvbnNcIlxyXG4gICAgPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIHAtMiBtYi0xXCI+XHJcbiAgICAgICAgPHNkcy1hdmF0YXJcclxuICAgICAgICAgICAgW3RleHRdPVwibmFtZVwiXHJcbiAgICAgICAgICAgIFtjb2xvcktleV09XCJpZFwiXHJcbiAgICAgICAgICAgIFtzaXplXT1cIjJcIj4gICAgXHJcbiAgICAgICAgPC9zZHMtYXZhdGFyPlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidHJ1bmNhdGUtdHdvLWxpbmVzIGZvbnQtd2VpZ2h0LTUwMFwiPlxyXG4gICAgICAgICAgICB7e25hbWV9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgc2RzLW5hdmlnYXRpb24tdXNlci1wcm9maWxlLWFjdGlvbnMgbWItMFwiPlxyXG4gICAgICAgIDxsaSAqbmdJZj1cInNob3dQcm9maWxlXCI+XHJcbiAgICAgICAgICAgIDxhIFxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkLWJsb2NrIHRleHQtYmxhY2tcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJvZmlsZUNsaWNrKClcIiBcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3twcm9maWxlVGV4dH19XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgIDxhIFxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2lnbk91dFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtYmxvY2sgdGV4dC1ibGFja1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TaWduT3V0Q2xpY2soKVwiICAgICAgXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7c2lnbk91dFRleHR9fVxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcblxyXG48L2R4LXBvcG92ZXI+Il19
@@ -9,6 +9,9 @@ import { SdsNavigationRouteLinkComponent } from './navigation-route-link/navigat
9
9
  import { SdsNavigationContainerComponent } from './navigation-container/navigation-container.component';
10
10
  import { SdsNavigationExternalLinkComponent } from './navigation-external-link/navigation-external-link.component';
11
11
  import { NavigationRouteActivePipe } from './pipes';
12
+ import { SdsNavigationUserProfileComponent } from './navigation-user-profile/navigation-user-profile.component';
13
+ import { SdsAvatarModule } from '@spicainternational/ngx-sds-components/src/lib/avatar';
14
+ import { DxPopoverModule } from 'devextreme-angular/ui/popover';
12
15
  import * as i0 from "@angular/core";
13
16
  // import { NavigationGroupComponent } from './navigation-group/navigation-group.component';
14
17
  // import { NavigationRouteLinkComponent } from './navigation-route-link/navigation-route-link.component';
@@ -20,7 +23,8 @@ const components = [
20
23
  SdsNavigationSeparatorComponent,
21
24
  SdsNavigationHeaderComponent,
22
25
  SdsNavigationContainerComponent,
23
- SdsNavigationExternalLinkComponent
26
+ SdsNavigationExternalLinkComponent,
27
+ SdsNavigationUserProfileComponent
24
28
  ];
25
29
  export class SdsNavigationModule {
26
30
  }
@@ -30,34 +34,44 @@ SdsNavigationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", ver
30
34
  SdsNavigationSeparatorComponent,
31
35
  SdsNavigationHeaderComponent,
32
36
  SdsNavigationContainerComponent,
33
- SdsNavigationExternalLinkComponent, NavigationRouteActivePipe], imports: [CommonModule,
37
+ SdsNavigationExternalLinkComponent,
38
+ SdsNavigationUserProfileComponent, NavigationRouteActivePipe,
39
+ SdsNavigationUserProfileComponent], imports: [CommonModule,
34
40
  RouterModule,
35
- FontAwesomeModule], exports: [SdsNavigationGroupComponent,
41
+ SdsAvatarModule,
42
+ FontAwesomeModule,
43
+ DxPopoverModule], exports: [SdsNavigationGroupComponent,
36
44
  SdsNavigationRouteLinkComponent,
37
45
  SdsNavigationSeparatorComponent,
38
46
  SdsNavigationHeaderComponent,
39
47
  SdsNavigationContainerComponent,
40
- SdsNavigationExternalLinkComponent] });
48
+ SdsNavigationExternalLinkComponent,
49
+ SdsNavigationUserProfileComponent] });
41
50
  SdsNavigationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsNavigationModule, imports: [[
42
51
  CommonModule,
43
52
  RouterModule,
44
- FontAwesomeModule
53
+ SdsAvatarModule,
54
+ FontAwesomeModule,
55
+ DxPopoverModule
45
56
  ]] });
46
57
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsNavigationModule, decorators: [{
47
58
  type: NgModule,
48
59
  args: [{
49
60
  declarations: [
50
61
  ...components,
51
- NavigationRouteActivePipe
62
+ NavigationRouteActivePipe,
63
+ SdsNavigationUserProfileComponent
52
64
  ],
53
65
  imports: [
54
66
  CommonModule,
55
67
  RouterModule,
56
- FontAwesomeModule
68
+ SdsAvatarModule,
69
+ FontAwesomeModule,
70
+ DxPopoverModule
57
71
  ],
58
72
  exports: [
59
73
  ...components
60
74
  ]
61
75
  }]
62
76
  }] });
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNuSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXBELDRGQUE0RjtBQUM1RiwwR0FBMEc7QUFDMUcsd0dBQXdHO0FBQ3hHLCtGQUErRjtBQUUvRixNQUFNLFVBQVUsR0FBRztJQUNmLDJCQUEyQjtJQUMzQiwrQkFBK0I7SUFDL0IsK0JBQStCO0lBQy9CLDRCQUE0QjtJQUM1QiwrQkFBK0I7SUFDL0Isa0NBQWtDO0NBQ3JDLENBQUE7QUFnQkQsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQXRCNUIsMkJBQTJCO1FBQzNCLCtCQUErQjtRQUMvQiwrQkFBK0I7UUFDL0IsNEJBQTRCO1FBQzVCLCtCQUErQjtRQUMvQixrQ0FBa0MsRUFNaEMseUJBQXlCLGFBRzNCLFlBQVk7UUFDWixZQUFZO1FBQ1osaUJBQWlCLGFBaEJqQiwyQkFBMkI7UUFDM0IsK0JBQStCO1FBQy9CLCtCQUErQjtRQUMvQiw0QkFBNEI7UUFDNUIsK0JBQStCO1FBQy9CLGtDQUFrQztpSEFpQnpCLG1CQUFtQixZQVRyQjtZQUNQLFlBQVk7WUFDWixZQUFZO1lBQ1osaUJBQWlCO1NBQ2xCOzJGQUtVLG1CQUFtQjtrQkFkL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1YsR0FBRyxVQUFVO3dCQUNiLHlCQUF5QjtxQkFDNUI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osWUFBWTt3QkFDWixpQkFBaUI7cUJBQ2xCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxHQUFHLFVBQVU7cUJBQ2Q7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgRm9udEF3ZXNvbWVNb2R1bGUgfSBmcm9tICdAZm9ydGF3ZXNvbWUvYW5ndWxhci1mb250YXdlc29tZSc7XHJcblxyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uU2VwYXJhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXNlcGFyYXRvci9uYXZpZ2F0aW9uLXNlcGFyYXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWhlYWRlci9uYXZpZ2F0aW9uLWhlYWRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uUm91dGVMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXJvdXRlLWxpbmsvbmF2aWdhdGlvbi1yb3V0ZS1saW5rLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkc05hdmlnYXRpb25Db250YWluZXJDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tY29udGFpbmVyL25hdmlnYXRpb24tY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNkc05hdmlnYXRpb25FeHRlcm5hbExpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tZXh0ZXJuYWwtbGluay9uYXZpZ2F0aW9uLWV4dGVybmFsLWxpbmsuY29tcG9uZW50JztcclxuaW1wb3J0IHsgTmF2aWdhdGlvblJvdXRlQWN0aXZlUGlwZSB9IGZyb20gJy4vcGlwZXMnO1xyXG5cclxuLy8gaW1wb3J0IHsgTmF2aWdhdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWdyb3VwL25hdmlnYXRpb24tZ3JvdXAuY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1yb3V0ZS1saW5rL25hdmlnYXRpb24tcm91dGUtbGluay5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBOYXZpZ2F0aW9uU2VwYXJhdG9yQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXNlcGFyYXRvci9uYXZpZ2F0aW9uLXNlcGFyYXRvci5jb21wb25lbnQnO1xyXG4vLyBpbXBvcnQgeyBOYXZpZ2F0aW9uSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWhlYWRlci9uYXZpZ2F0aW9uLWhlYWRlci5jb21wb25lbnQnO1xyXG5cclxuY29uc3QgY29tcG9uZW50cyA9IFtcclxuICAgIFNkc05hdmlnYXRpb25Hcm91cENvbXBvbmVudCxcclxuICAgIFNkc05hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQsXHJcbiAgICBTZHNOYXZpZ2F0aW9uU2VwYXJhdG9yQ29tcG9uZW50LFxyXG4gICAgU2RzTmF2aWdhdGlvbkhlYWRlckNvbXBvbmVudCxcclxuICAgIFNkc05hdmlnYXRpb25Db250YWluZXJDb21wb25lbnQsXHJcbiAgICBTZHNOYXZpZ2F0aW9uRXh0ZXJuYWxMaW5rQ29tcG9uZW50XHJcbl1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICAgIC4uLmNvbXBvbmVudHMsXHJcbiAgICAgIE5hdmlnYXRpb25Sb3V0ZUFjdGl2ZVBpcGVcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIEZvbnRBd2Vzb21lTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICAuLi5jb21wb25lbnRzXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzTmF2aWdhdGlvbk1vZHVsZSB7IH1cclxuIl19
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtc2RzLWNvbXBvbmVudHMvc3JjL2xpYi9uYXZpZ2F0aW9uL25hdmlnYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVyRSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMvRixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUNuSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDaEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFFaEUsNEZBQTRGO0FBQzVGLDBHQUEwRztBQUMxRyx3R0FBd0c7QUFDeEcsK0ZBQStGO0FBRS9GLE1BQU0sVUFBVSxHQUFHO0lBQ2YsMkJBQTJCO0lBQzNCLCtCQUErQjtJQUMvQiwrQkFBK0I7SUFDL0IsNEJBQTRCO0lBQzVCLCtCQUErQjtJQUMvQixrQ0FBa0M7SUFDbEMsaUNBQWlDO0NBQ3BDLENBQUE7QUFtQkQsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQTFCNUIsMkJBQTJCO1FBQzNCLCtCQUErQjtRQUMvQiwrQkFBK0I7UUFDL0IsNEJBQTRCO1FBQzVCLCtCQUErQjtRQUMvQixrQ0FBa0M7UUFDbEMsaUNBQWlDLEVBTS9CLHlCQUF5QjtRQUN6QixpQ0FBaUMsYUFHbkMsWUFBWTtRQUNaLFlBQVk7UUFDWixlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGVBQWUsYUFwQmYsMkJBQTJCO1FBQzNCLCtCQUErQjtRQUMvQiwrQkFBK0I7UUFDL0IsNEJBQTRCO1FBQzVCLCtCQUErQjtRQUMvQixrQ0FBa0M7UUFDbEMsaUNBQWlDO2lIQW9CeEIsbUJBQW1CLFlBWHJCO1lBQ1AsWUFBWTtZQUNaLFlBQVk7WUFDWixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGVBQWU7U0FDaEI7MkZBS1UsbUJBQW1CO2tCQWpCL0IsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1YsR0FBRyxVQUFVO3dCQUNiLHlCQUF5Qjt3QkFDekIsaUNBQWlDO3FCQUNwQztvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNoQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsR0FBRyxVQUFVO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IEZvbnRBd2Vzb21lTW9kdWxlIH0gZnJvbSAnQGZvcnRhd2Vzb21lL2FuZ3VsYXItZm9udGF3ZXNvbWUnO1xyXG5cclxuaW1wb3J0IHsgU2RzTmF2aWdhdGlvblNlcGFyYXRvckNvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1zZXBhcmF0b3IvbmF2aWdhdGlvbi1zZXBhcmF0b3IuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RzTmF2aWdhdGlvbkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1oZWFkZXIvbmF2aWdhdGlvbi1oZWFkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RzTmF2aWdhdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWdyb3VwL25hdmlnYXRpb24tZ3JvdXAuY29tcG9uZW50JztcclxuaW1wb3J0IHsgU2RzTmF2aWdhdGlvblJvdXRlTGlua0NvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1yb3V0ZS1saW5rL25hdmlnYXRpb24tcm91dGUtbGluay5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWNvbnRhaW5lci9uYXZpZ2F0aW9uLWNvbnRhaW5lci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZHNOYXZpZ2F0aW9uRXh0ZXJuYWxMaW5rQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWV4dGVybmFsLWxpbmsvbmF2aWdhdGlvbi1leHRlcm5hbC1saW5rLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25Sb3V0ZUFjdGl2ZVBpcGUgfSBmcm9tICcuL3BpcGVzJztcclxuaW1wb3J0IHsgU2RzTmF2aWdhdGlvblVzZXJQcm9maWxlQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZHNBdmF0YXJNb2R1bGUgfSBmcm9tICdAc3BpY2FpbnRlcm5hdGlvbmFsL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL2F2YXRhcic7XHJcbmltcG9ydCB7IER4UG9wb3Zlck1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9wb3BvdmVyJztcclxuXHJcbi8vIGltcG9ydCB7IE5hdmlnYXRpb25Hcm91cENvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1ncm91cC9uYXZpZ2F0aW9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbi8vIGltcG9ydCB7IE5hdmlnYXRpb25Sb3V0ZUxpbmtDb21wb25lbnQgfSBmcm9tICcuL25hdmlnYXRpb24tcm91dGUtbGluay9uYXZpZ2F0aW9uLXJvdXRlLWxpbmsuY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgTmF2aWdhdGlvblNlcGFyYXRvckNvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1zZXBhcmF0b3IvbmF2aWdhdGlvbi1zZXBhcmF0b3IuY29tcG9uZW50JztcclxuLy8gaW1wb3J0IHsgTmF2aWdhdGlvbkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vbmF2aWdhdGlvbi1oZWFkZXIvbmF2aWdhdGlvbi1oZWFkZXIuY29tcG9uZW50JztcclxuXHJcbmNvbnN0IGNvbXBvbmVudHMgPSBbXHJcbiAgICBTZHNOYXZpZ2F0aW9uR3JvdXBDb21wb25lbnQsXHJcbiAgICBTZHNOYXZpZ2F0aW9uUm91dGVMaW5rQ29tcG9uZW50LFxyXG4gICAgU2RzTmF2aWdhdGlvblNlcGFyYXRvckNvbXBvbmVudCxcclxuICAgIFNkc05hdmlnYXRpb25IZWFkZXJDb21wb25lbnQsXHJcbiAgICBTZHNOYXZpZ2F0aW9uQ29udGFpbmVyQ29tcG9uZW50LFxyXG4gICAgU2RzTmF2aWdhdGlvbkV4dGVybmFsTGlua0NvbXBvbmVudCxcclxuICAgIFNkc05hdmlnYXRpb25Vc2VyUHJvZmlsZUNvbXBvbmVudFxyXG5dXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1xyXG4gICAgICAuLi5jb21wb25lbnRzLFxyXG4gICAgICBOYXZpZ2F0aW9uUm91dGVBY3RpdmVQaXBlLFxyXG4gICAgICBTZHNOYXZpZ2F0aW9uVXNlclByb2ZpbGVDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIFJvdXRlck1vZHVsZSxcclxuICAgIFNkc0F2YXRhck1vZHVsZSxcclxuICAgIEZvbnRBd2Vzb21lTW9kdWxlLFxyXG4gICAgRHhQb3BvdmVyTW9kdWxlXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICAuLi5jb21wb25lbnRzXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzTmF2aWdhdGlvbk1vZHVsZSB7IH1cclxuIl19
@@ -5,4 +5,5 @@ export * from './navigation-group/navigation-group.component';
5
5
  export * from './navigation-header/navigation-header.component';
6
6
  export * from './navigation-route-link/navigation-route-link.component';
7
7
  export * from './navigation-separator/navigation-separator.component';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL25hdmlnYXRpb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHVEQUF1RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLm1vZHVsZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24tY29udGFpbmVyL25hdmlnYXRpb24tY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1leHRlcm5hbC1saW5rL25hdmlnYXRpb24tZXh0ZXJuYWwtbGluay5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24tZ3JvdXAvbmF2aWdhdGlvbi1ncm91cC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24taGVhZGVyL25hdmlnYXRpb24taGVhZGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1yb3V0ZS1saW5rL25hdmlnYXRpb24tcm91dGUtbGluay5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24tc2VwYXJhdG9yL25hdmlnYXRpb24tc2VwYXJhdG9yLmNvbXBvbmVudCc7XHJcblxyXG5cclxuIl19
8
+ export * from './navigation-user-profile/navigation-user-profile.component';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1zZHMtY29tcG9uZW50cy9zcmMvbGliL25hdmlnYXRpb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBRXBDLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrREFBK0QsQ0FBQztBQUM5RSxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyx5REFBeUQsQ0FBQztBQUN4RSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsNkRBQTZELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25hdmlnYXRpb24ubW9kdWxlJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1jb250YWluZXIvbmF2aWdhdGlvbi1jb250YWluZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLWV4dGVybmFsLWxpbmsvbmF2aWdhdGlvbi1leHRlcm5hbC1saW5rLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1ncm91cC9uYXZpZ2F0aW9uLWdyb3VwLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1oZWFkZXIvbmF2aWdhdGlvbi1oZWFkZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLXJvdXRlLWxpbmsvbmF2aWdhdGlvbi1yb3V0ZS1saW5rLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbmF2aWdhdGlvbi1zZXBhcmF0b3IvbmF2aWdhdGlvbi1zZXBhcmF0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS9uYXZpZ2F0aW9uLXVzZXItcHJvZmlsZS5jb21wb25lbnQnO1xyXG5cclxuXHJcbiJdfQ==
@@ -0,0 +1,217 @@
1
+ import * as i0 from '@angular/core';
2
+ import { SecurityContext, Directive, Input, HostBinding, Pipe, NgModule } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import * as i1 from '@angular/platform-browser';
5
+
6
+ /**
7
+ * @public @function escapeRegex
8
+ * @description
9
+ * Function responsible for substitution of chars that are a no-go for regex
10
+ * @param { string } phrase
11
+ * @returns { string }
12
+ */
13
+ const escapeRegex = (phrase) => {
14
+ return phrase.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
15
+ };
16
+ /**
17
+ * @public @function highlightSearchedText
18
+ * @description
19
+ * Function responsible for returning html string
20
+ * with included marker that contains string that matches
21
+ * provided search phrase
22
+ * @param { string } highlightText
23
+ * @param { string } stringToBeChecked
24
+ * @param { string } existingHtmlContent
25
+ * @param { string } additionalClasses
26
+ * @param { string } sanitizer
27
+ * @returns { string }
28
+ */
29
+ const highlightSearchedText = (highlightText, stringToBeChecked, existingHtmlContent, sanitizer, additionalClasses) => {
30
+ var _a;
31
+ // If search is empty just return current content
32
+ if (highlightText === '') {
33
+ return stringToBeChecked;
34
+ }
35
+ // Split search string into words
36
+ const splittedValue = highlightText.split(' ');
37
+ if (!splittedValue || splittedValue.length === 0) {
38
+ return stringToBeChecked;
39
+ }
40
+ const splittedStringToBeChecked = stringToBeChecked
41
+ ? stringToBeChecked.split(' ')
42
+ : [];
43
+ const searchPhrases = splittedValue.filter(phrase => phrase.length > 0);
44
+ const markedWords = [];
45
+ // Go through search phrases and validate each string
46
+ const newContent = splittedStringToBeChecked
47
+ .map((wordToBeChecked) => {
48
+ const searchMarkRawResult = searchPhrases
49
+ .map(phrase => {
50
+ const safeString = escapeRegex(phrase);
51
+ const searchRegEx = new RegExp(safeString, 'i');
52
+ const testResult = searchRegEx.test(wordToBeChecked);
53
+ if (!testResult) {
54
+ return wordToBeChecked;
55
+ }
56
+ // Prevent text duplication when user enters same word multiple times
57
+ const wordIsAlreadyMarked = markedWords.some(alreadyMarkedWord => alreadyMarkedWord === wordToBeChecked);
58
+ if (wordIsAlreadyMarked) {
59
+ return wordToBeChecked;
60
+ }
61
+ markedWords.push(wordToBeChecked);
62
+ // Prepare content to be replaced with mark text
63
+ const markedContent = wordToBeChecked.replace(searchRegEx, (match) => {
64
+ return `<mark class='bg-primary text-white p-0 ${additionalClasses !== null && additionalClasses !== void 0 ? additionalClasses : ''}'>${match}</mark>`;
65
+ });
66
+ return markedContent;
67
+ })
68
+ .reduce((accumulator, currentItem) => {
69
+ const itemAlreadyExists = accumulator.some(item => item === currentItem);
70
+ if (!itemAlreadyExists) {
71
+ accumulator.push(currentItem);
72
+ }
73
+ return accumulator;
74
+ }, []);
75
+ /**
76
+ * At this point we have correctly marker content, however there can be
77
+ * duplicate words in the array. E.g. we have text First Client and user
78
+ * types Client First. This will give us two array. First one would be:
79
+ * ['First', '<mark class='highlighted-text '>First</mark>']
80
+ * Second one would be:
81
+ * ['<mark class='highlighted-text '>Client</mark>', 'Client']
82
+ * We have to filter out those plain values that are marked
83
+ */
84
+ const sanitizedMarkedContent = searchMarkRawResult.filter(markedContentItem => {
85
+ const wordIsAlsoMarked = markedWords.some(word => word === markedContentItem);
86
+ if (wordIsAlsoMarked) {
87
+ return false;
88
+ }
89
+ return true;
90
+ });
91
+ return sanitizedMarkedContent;
92
+ })
93
+ .join(' ');
94
+ /**
95
+ * We want to sanitize this before pushing to DOM.
96
+ * Just to be on the safe side. Fallback to existing value if
97
+ * sanitize returns null
98
+ */
99
+ const sanitizedContent = (_a = sanitizer.sanitize(SecurityContext.HTML, newContent)) !== null && _a !== void 0 ? _a : existingHtmlContent;
100
+ return sanitizedContent;
101
+ };
102
+
103
+ class HighlightTextDirective {
104
+ constructor(_elementRef, _sanitizer) {
105
+ this._elementRef = _elementRef;
106
+ this._sanitizer = _sanitizer;
107
+ /**
108
+ * INPUTS
109
+ */
110
+ /**
111
+ * CSS classes to be appended to the marked text
112
+ */
113
+ this.additionalClasses = '';
114
+ /**
115
+ * Search term that should be found
116
+ */
117
+ this._search = '';
118
+ /**
119
+ * For now make this case insensitive. We might change this to
120
+ * input latter if needed
121
+ */
122
+ this.caseSensitive = false;
123
+ }
124
+ get highlightText() {
125
+ return this._search;
126
+ }
127
+ set highlightText(value) {
128
+ this._search = value;
129
+ // Now process the search value
130
+ this.markSearchedText(value);
131
+ }
132
+ markSearchedText(highlightText) {
133
+ var _a, _b;
134
+ // Make sure that native element is present
135
+ if ((_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) {
136
+ const currentHtmlContent = this._elementRef.nativeElement
137
+ .innerHTML;
138
+ const text = (_b = this._elementRef.nativeElement.textContent) !== null && _b !== void 0 ? _b : '';
139
+ const highlightedText = highlightSearchedText(highlightText, text, currentHtmlContent, this._sanitizer, this.additionalClasses);
140
+ this.content = highlightedText;
141
+ }
142
+ }
143
+ }
144
+ HighlightTextDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HighlightTextDirective, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Directive });
145
+ HighlightTextDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.3.1", type: HighlightTextDirective, selector: "[highlightText]", inputs: { additionalClasses: "additionalClasses", highlightText: "highlightText" }, host: { properties: { "innerHtml": "this.content" } }, ngImport: i0 });
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HighlightTextDirective, decorators: [{
147
+ type: Directive,
148
+ args: [{
149
+ selector: '[highlightText]'
150
+ }]
151
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }]; }, propDecorators: { additionalClasses: [{
152
+ type: Input
153
+ }], highlightText: [{
154
+ type: Input
155
+ }], content: [{
156
+ type: HostBinding,
157
+ args: ['innerHtml']
158
+ }] } });
159
+
160
+ class HighlightTextPipe {
161
+ constructor(_elementRef, _sanitizer) {
162
+ this._elementRef = _elementRef;
163
+ this._sanitizer = _sanitizer;
164
+ }
165
+ transform(highlightText, stringToBeChecked, additionalClasses) {
166
+ var _a;
167
+ // Make sure that native element is present
168
+ if ((_a = this._elementRef) === null || _a === void 0 ? void 0 : _a.nativeElement) {
169
+ const currentHtmlContent = this._elementRef.nativeElement
170
+ .innerHTML;
171
+ const highlightedText = highlightSearchedText(highlightText, stringToBeChecked, currentHtmlContent, this._sanitizer, additionalClasses);
172
+ return highlightedText;
173
+ }
174
+ return stringToBeChecked;
175
+ }
176
+ }
177
+ HighlightTextPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HighlightTextPipe, deps: [{ token: i0.ElementRef }, { token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
178
+ HighlightTextPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HighlightTextPipe, name: "highlightText" });
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: HighlightTextPipe, decorators: [{
180
+ type: Pipe,
181
+ args: [{
182
+ name: 'highlightText'
183
+ }]
184
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DomSanitizer }]; } });
185
+
186
+ class SdsHighlightTextModule {
187
+ }
188
+ SdsHighlightTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsHighlightTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
189
+ SdsHighlightTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsHighlightTextModule, declarations: [HighlightTextDirective,
190
+ HighlightTextPipe], imports: [CommonModule], exports: [HighlightTextDirective,
191
+ HighlightTextPipe] });
192
+ SdsHighlightTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsHighlightTextModule, imports: [[
193
+ CommonModule
194
+ ]] });
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsHighlightTextModule, decorators: [{
196
+ type: NgModule,
197
+ args: [{
198
+ declarations: [
199
+ HighlightTextDirective,
200
+ HighlightTextPipe
201
+ ],
202
+ exports: [
203
+ HighlightTextDirective,
204
+ HighlightTextPipe
205
+ ],
206
+ imports: [
207
+ CommonModule
208
+ ]
209
+ }]
210
+ }] });
211
+
212
+ /**
213
+ * Generated bundle index. Do not edit.
214
+ */
215
+
216
+ export { HighlightTextDirective, HighlightTextPipe, SdsHighlightTextModule };
217
+ //# sourceMappingURL=spicainternational-ngx-sds-components-src-lib-highlight-text.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-highlight-text.mjs","sources":["../../../projects/ngx-sds-components/src/lib/highlight-text/utils/highlight-text.utils.ts","../../../projects/ngx-sds-components/src/lib/highlight-text/directives/highlight-text.directive.ts","../../../projects/ngx-sds-components/src/lib/highlight-text/pipes/highlight-text.pipe.ts","../../../projects/ngx-sds-components/src/lib/highlight-text/highlight-text.module.ts","../../../projects/ngx-sds-components/src/lib/highlight-text/spicainternational-ngx-sds-components-src-lib-highlight-text.ts"],"sourcesContent":["import { SecurityContext } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n/**\r\n * @public @function escapeRegex\r\n * @description\r\n * Function responsible for substitution of chars that are a no-go for regex\r\n * @param { string } phrase\r\n * @returns { string }\r\n */\r\nexport const escapeRegex = (phrase: string): string => {\r\n return phrase.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n};\r\n\r\n/**\r\n * @public @function highlightSearchedText\r\n * @description\r\n * Function responsible for returning html string\r\n * with included marker that contains string that matches\r\n * provided search phrase\r\n * @param { string } highlightText\r\n * @param { string } stringToBeChecked\r\n * @param { string } existingHtmlContent\r\n * @param { string } additionalClasses\r\n * @param { string } sanitizer\r\n * @returns { string }\r\n */\r\nexport const highlightSearchedText = (\r\n highlightText: string,\r\n stringToBeChecked: string,\r\n existingHtmlContent: string,\r\n sanitizer: DomSanitizer,\r\n additionalClasses?: string\r\n ): string => {\r\n // If search is empty just return current content\r\n if (highlightText === '') {\r\n return stringToBeChecked;\r\n }\r\n\r\n // Split search string into words\r\n const splittedValue = highlightText.split(' ');\r\n\r\n if (!splittedValue || splittedValue.length === 0) {\r\n return stringToBeChecked;\r\n }\r\n\r\n const splittedStringToBeChecked: string[] = stringToBeChecked\r\n ? stringToBeChecked.split(' ')\r\n : [];\r\n\r\n const searchPhrases: string[] = splittedValue.filter(\r\n phrase => phrase.length > 0\r\n );\r\n\r\n const markedWords: string[] = [];\r\n\r\n // Go through search phrases and validate each string\r\n const newContent = splittedStringToBeChecked\r\n .map((wordToBeChecked: string) => {\r\n const searchMarkRawResult = searchPhrases\r\n .map(phrase => {\r\n const safeString = escapeRegex(phrase);\r\n\r\n const searchRegEx = new RegExp(safeString, 'i');\r\n\r\n const testResult: boolean = searchRegEx.test(wordToBeChecked);\r\n\r\n if (!testResult) {\r\n return wordToBeChecked;\r\n }\r\n\r\n // Prevent text duplication when user enters same word multiple times\r\n const wordIsAlreadyMarked = markedWords.some(alreadyMarkedWord => alreadyMarkedWord === wordToBeChecked)\r\n\r\n if (wordIsAlreadyMarked) {\r\n return wordToBeChecked;\r\n }\r\n\r\n markedWords.push(wordToBeChecked);\r\n\r\n // Prepare content to be replaced with mark text\r\n const markedContent = wordToBeChecked.replace(\r\n searchRegEx,\r\n (match: string) => {\r\n return `<mark class='bg-primary text-white p-0 ${\r\n additionalClasses ?? ''\r\n }'>${match}</mark>`;\r\n }\r\n );\r\n return markedContent;\r\n })\r\n .reduce((accumulator: string[], currentItem: string) => {\r\n const itemAlreadyExists = accumulator.some(\r\n item => item === currentItem\r\n );\r\n\r\n if (!itemAlreadyExists) {\r\n accumulator.push(currentItem);\r\n }\r\n\r\n return accumulator;\r\n }, []);\r\n\r\n /**\r\n * At this point we have correctly marker content, however there can be\r\n * duplicate words in the array. E.g. we have text First Client and user\r\n * types Client First. This will give us two array. First one would be:\r\n * ['First', '<mark class='highlighted-text '>First</mark>']\r\n * Second one would be:\r\n * ['<mark class='highlighted-text '>Client</mark>', 'Client']\r\n * We have to filter out those plain values that are marked\r\n */\r\n const sanitizedMarkedContent = searchMarkRawResult.filter(\r\n markedContentItem => {\r\n const wordIsAlsoMarked = markedWords.some(\r\n word => word === markedContentItem\r\n );\r\n\r\n if (wordIsAlsoMarked) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n );\r\n\r\n return sanitizedMarkedContent;\r\n })\r\n .join(' ');\r\n\r\n /**\r\n * We want to sanitize this before pushing to DOM.\r\n * Just to be on the safe side. Fallback to existing value if\r\n * sanitize returns null\r\n */\r\n const sanitizedContent =\r\n sanitizer.sanitize(SecurityContext.HTML, newContent) ?? existingHtmlContent;\r\n\r\n return sanitizedContent;\r\n};\r\n","import { Directive, ElementRef, HostBinding, Input } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { highlightSearchedText } from '../utils';\r\n\r\n@Directive({\r\n selector: '[highlightText]'\r\n})\r\nexport class HighlightTextDirective {\r\n/**\r\n * INPUTS\r\n */\r\n /**\r\n * CSS classes to be appended to the marked text\r\n */\r\n @Input() additionalClasses: string = '';\r\n\r\n /**\r\n * Search term that should be found\r\n */\r\n private _search: string = '';\r\n @Input()\r\n get highlightText(): string {\r\n return this._search;\r\n }\r\n set highlightText(value: string) {\r\n this._search = value;\r\n\r\n // Now process the search value\r\n this.markSearchedText(value);\r\n }\r\n\r\n /**\r\n * OTHER PROPS\r\n */\r\n @HostBinding('innerHtml')\r\n content!: string;\r\n\r\n /**\r\n * For now make this case insensitive. We might change this to\r\n * input latter if needed\r\n */\r\n protected caseSensitive: boolean = false;\r\n\r\n constructor(\r\n private readonly _elementRef: ElementRef,\r\n private readonly _sanitizer: DomSanitizer\r\n ) {}\r\n\r\n protected markSearchedText(highlightText: string): void {\r\n // Make sure that native element is present\r\n if (this._elementRef?.nativeElement) {\r\n const currentHtmlContent = (this._elementRef.nativeElement as HTMLElement)\r\n .innerHTML;\r\n\r\n const text =\r\n (this._elementRef.nativeElement as HTMLElement).textContent ?? '';\r\n\r\n const highlightedText = highlightSearchedText(\r\n highlightText,\r\n text,\r\n currentHtmlContent,\r\n this._sanitizer,\r\n this.additionalClasses\r\n );\r\n\r\n this.content = highlightedText;\r\n }\r\n }\r\n}\r\n","import { ElementRef, Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { highlightSearchedText } from '../utils';\r\n\r\n@Pipe({\r\n name: 'highlightText'\r\n})\r\nexport class HighlightTextPipe implements PipeTransform {\r\n constructor(\r\n private readonly _elementRef: ElementRef,\r\n private readonly _sanitizer: DomSanitizer\r\n ) {}\r\n\r\n transform(\r\n highlightText: string,\r\n stringToBeChecked: string,\r\n additionalClasses?: string\r\n ): string {\r\n // Make sure that native element is present\r\n if (this._elementRef?.nativeElement) {\r\n const currentHtmlContent = (this._elementRef.nativeElement as HTMLElement)\r\n .innerHTML;\r\n\r\n const highlightedText = highlightSearchedText(\r\n highlightText,\r\n stringToBeChecked,\r\n currentHtmlContent,\r\n this._sanitizer,\r\n additionalClasses\r\n );\r\n\r\n return highlightedText;\r\n }\r\n\r\n return stringToBeChecked;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HighlightTextDirective } from './directives';\r\nimport { HighlightTextPipe } from './pipes';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n HighlightTextDirective,\r\n HighlightTextPipe\r\n ],\r\n exports: [\r\n HighlightTextDirective,\r\n HighlightTextPipe\r\n ],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class SdsHighlightTextModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import * as i0 from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
3
+ import * as i2 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import * as i1 from '@fortawesome/angular-fontawesome';
6
+ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
7
+
8
+ class SdsMessageComponent {
9
+ constructor() {
10
+ this.text = '';
11
+ this.showCloseButton = false;
12
+ this.close = new EventEmitter();
13
+ this.showLearnMoreLink = false;
14
+ this.learnMoreLinkText = 'Learn more';
15
+ this.learnMoreLinkUrl = '';
16
+ this.showMessage = true;
17
+ }
18
+ ngOnInit() { }
19
+ onCloseButtonClick() {
20
+ this.showMessage = false;
21
+ this.close.emit();
22
+ }
23
+ }
24
+ SdsMessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsMessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ SdsMessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.1", type: SdsMessageComponent, selector: "sds-message", inputs: { icon: "icon", text: "text", showCloseButton: "showCloseButton", showLearnMoreLink: "showLearnMoreLink", learnMoreLinkText: "learnMoreLinkText", learnMoreLinkUrl: "learnMoreLinkUrl" }, outputs: { close: "close" }, ngImport: i0, template: "<div \r\n *ngIf=\"showMessage\"\r\n class=\"px-3 py-2 bg-gray-300 d-flex rounded\"\r\n >\r\n\r\n <fa-icon \r\n *ngIf=\"icon\"\r\n [icon]=\"icon\"\r\n class=\"mr-2\"\r\n >\r\n </fa-icon>\r\n\r\n <div class=\"flex-grow-1\">\r\n <div class=\"\">\r\n <span>\r\n {{text}}\r\n </span>\r\n <span \r\n *ngIf=\"showLearnMoreLink\"\r\n >\r\n <a \r\n class=\"\"\r\n [href]=\"learnMoreLinkUrl\"\r\n target=\"_learnmore\"\r\n >\r\n {{learnMoreLinkText}}\r\n </a>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showCloseButton\">\r\n <button \r\n class=\"close rounded ml-2\" \r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <fa-icon \r\n [icon]=\"['far', 'times']\"\r\n size=\"xs\"\r\n >\r\n </fa-icon>\r\n </button>\r\n </div>\r\n\r\n</div>\r\n", styles: [""], components: [{ type: i1.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsMessageComponent, decorators: [{
27
+ type: Component,
28
+ args: [{ selector: 'sds-message', template: "<div \r\n *ngIf=\"showMessage\"\r\n class=\"px-3 py-2 bg-gray-300 d-flex rounded\"\r\n >\r\n\r\n <fa-icon \r\n *ngIf=\"icon\"\r\n [icon]=\"icon\"\r\n class=\"mr-2\"\r\n >\r\n </fa-icon>\r\n\r\n <div class=\"flex-grow-1\">\r\n <div class=\"\">\r\n <span>\r\n {{text}}\r\n </span>\r\n <span \r\n *ngIf=\"showLearnMoreLink\"\r\n >\r\n <a \r\n class=\"\"\r\n [href]=\"learnMoreLinkUrl\"\r\n target=\"_learnmore\"\r\n >\r\n {{learnMoreLinkText}}\r\n </a>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showCloseButton\">\r\n <button \r\n class=\"close rounded ml-2\" \r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <fa-icon \r\n [icon]=\"['far', 'times']\"\r\n size=\"xs\"\r\n >\r\n </fa-icon>\r\n </button>\r\n </div>\r\n\r\n</div>\r\n", styles: [""] }]
29
+ }], ctorParameters: function () { return []; }, propDecorators: { icon: [{
30
+ type: Input
31
+ }], text: [{
32
+ type: Input
33
+ }], showCloseButton: [{
34
+ type: Input
35
+ }], close: [{
36
+ type: Output
37
+ }], showLearnMoreLink: [{
38
+ type: Input
39
+ }], learnMoreLinkText: [{
40
+ type: Input
41
+ }], learnMoreLinkUrl: [{
42
+ type: Input
43
+ }] } });
44
+
45
+ class SdsMessageModule {
46
+ }
47
+ SdsMessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsMessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
48
+ SdsMessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsMessageModule, declarations: [SdsMessageComponent], imports: [CommonModule,
49
+ FontAwesomeModule], exports: [SdsMessageComponent] });
50
+ SdsMessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsMessageModule, imports: [[
51
+ CommonModule,
52
+ FontAwesomeModule
53
+ ]] });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImport: i0, type: SdsMessageModule, decorators: [{
55
+ type: NgModule,
56
+ args: [{
57
+ declarations: [
58
+ SdsMessageComponent
59
+ ],
60
+ imports: [
61
+ CommonModule,
62
+ FontAwesomeModule
63
+ ],
64
+ exports: [
65
+ SdsMessageComponent
66
+ ]
67
+ }]
68
+ }] });
69
+
70
+ /**
71
+ * Generated bundle index. Do not edit.
72
+ */
73
+
74
+ export { SdsMessageComponent, SdsMessageModule };
75
+ //# sourceMappingURL=spicainternational-ngx-sds-components-src-lib-message.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spicainternational-ngx-sds-components-src-lib-message.mjs","sources":["../../../projects/ngx-sds-components/src/lib/message/message.component.ts","../../../projects/ngx-sds-components/src/lib/message/message.component.html","../../../projects/ngx-sds-components/src/lib/message/message.module.ts","../../../projects/ngx-sds-components/src/lib/message/spicainternational-ngx-sds-components-src-lib-message.ts"],"sourcesContent":["import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\r\n\r\n@Component({\r\n selector: 'sds-message',\r\n templateUrl: './message.component.html',\r\n styleUrls: ['./message.component.scss'],\r\n})\r\nexport class SdsMessageComponent implements OnInit {\r\n\r\n @Input() public icon?: IconProp;\r\n @Input() public text: string = '';\r\n @Input() public showCloseButton: boolean = false;\r\n\r\n @Output() public close: EventEmitter<void> = new EventEmitter();\r\n\r\n @Input() public showLearnMoreLink: boolean = false;\r\n @Input() public learnMoreLinkText: string = 'Learn more';\r\n @Input() public learnMoreLinkUrl: string = '';\r\n\r\n public showMessage: boolean = true;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n\r\n public onCloseButtonClick(): void {\r\n this.showMessage = false;\r\n this.close.emit();\r\n }\r\n\r\n}\r\n","<div \r\n *ngIf=\"showMessage\"\r\n class=\"px-3 py-2 bg-gray-300 d-flex rounded\"\r\n >\r\n\r\n <fa-icon \r\n *ngIf=\"icon\"\r\n [icon]=\"icon\"\r\n class=\"mr-2\"\r\n >\r\n </fa-icon>\r\n\r\n <div class=\"flex-grow-1\">\r\n <div class=\"\">\r\n <span>\r\n {{text}}\r\n </span>\r\n <span \r\n *ngIf=\"showLearnMoreLink\"\r\n >\r\n <a \r\n class=\"\"\r\n [href]=\"learnMoreLinkUrl\"\r\n target=\"_learnmore\"\r\n >\r\n {{learnMoreLinkText}}\r\n </a>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showCloseButton\">\r\n <button \r\n class=\"close rounded ml-2\" \r\n (click)=\"onCloseButtonClick()\"\r\n >\r\n <fa-icon \r\n [icon]=\"['far', 'times']\"\r\n size=\"xs\"\r\n >\r\n </fa-icon>\r\n </button>\r\n </div>\r\n\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdsMessageComponent } from './message.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@NgModule({\r\n declarations: [\r\n SdsMessageComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule\r\n ],\r\n exports: [\r\n SdsMessageComponent\r\n ]\r\n})\r\nexport class SdsMessageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;MAQa,mBAAmB,CAAA;AAc5B,IAAA,WAAA,GAAA;AAXgB,QAAA,IAAI,CAAA,IAAA,GAAW,EAAE,CAAC;AAClB,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAEhC,QAAA,IAAA,CAAA,KAAK,GAAuB,IAAI,YAAY,EAAE,CAAC;AAEhD,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AACnC,QAAA,IAAiB,CAAA,iBAAA,GAAW,YAAY,CAAC;AACzC,QAAA,IAAgB,CAAA,gBAAA,GAAW,EAAE,CAAC;AAEvC,QAAA,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;KAEnB;AAEhB,IAAA,QAAQ,MAAW;IAEZ,kBAAkB,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;KACrB;;gHArBQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,kRCRhC,8mCA6CA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDrCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,aAAa,EAAA,QAAA,EAAA,8mCAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA;0EAMP,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,IAAI,EAAA,CAAA;sBAAnB,KAAK;gBACU,eAAe,EAAA,CAAA;sBAA9B,KAAK;gBAEW,KAAK,EAAA,CAAA;sBAArB,MAAM;gBAES,iBAAiB,EAAA,CAAA;sBAAhC,KAAK;gBACU,iBAAiB,EAAA,CAAA;sBAAhC,KAAK;gBACU,gBAAgB,EAAA,CAAA;sBAA/B,KAAK;;;MEDG,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;8GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAVrB,mBAAmB,CAAA,EAAA,OAAA,EAAA,CAGnB,YAAY;QACZ,iBAAiB,aAGjB,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAGd,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EARhB,OAAA,EAAA,CAAA;YACL,YAAY;YACZ,iBAAiB;SACpB,CAAA,EAAA,CAAA,CAAA;2FAKQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,mBAAmB;AACtB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,iBAAiB;AACpB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,mBAAmB;AACtB,qBAAA;iBACJ,CAAA;;;AChBD;;AAEG;;;;"}