@tsi-developpement/tsi-shared-ui 1.7.36 → 1.7.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { Component, ContentChildren, EventEmitter, Input, Output } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, ContentChildren, EventEmitter, inject, Input, Output } from '@angular/core';
2
2
  import { TsiTabPanelComponent } from '..';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/common";
@@ -10,6 +10,8 @@ import * as i3 from "primeng/tabview";
10
10
  */
11
11
  export class TsiTabViewComponent {
12
12
  constructor() {
13
+ this.isInitialized = false;
14
+ this.haveTabPanels = false;
13
15
  /**
14
16
  * Index of the active tab to change selected tab programmatically.
15
17
  * @group Props
@@ -30,6 +32,7 @@ export class TsiTabViewComponent {
30
32
  * @group Props
31
33
  */
32
34
  this.tabindex = 0;
35
+ // Outputs
33
36
  /**
34
37
  * Callback to invoke on tab change.
35
38
  * @param {TabViewChangeEvent} event - Custom tab change event
@@ -48,7 +51,26 @@ export class TsiTabViewComponent {
48
51
  * @group Emits
49
52
  */
50
53
  this.activeIndexChange = new EventEmitter();
54
+ // DI
55
+ this.cd = inject(ChangeDetectorRef);
51
56
  }
57
+ // Lifecycle hooks
58
+ ngAfterViewInit() {
59
+ try {
60
+ this.calculateProperties();
61
+ this.tabPanels.changes.subscribe((panels) => {
62
+ this.calculateProperties();
63
+ this.cd.markForCheck();
64
+ });
65
+ }
66
+ catch (error) {
67
+ console.error(error);
68
+ }
69
+ finally {
70
+ this.isInitialized = true;
71
+ }
72
+ }
73
+ // Events handlers
52
74
  onActiveIndexChange(index) {
53
75
  this.activeIndexChange.emit(index);
54
76
  }
@@ -58,12 +80,17 @@ export class TsiTabViewComponent {
58
80
  onTabChange(event) {
59
81
  this.onChange.emit(event);
60
82
  }
83
+ // Utils
84
+ calculateProperties() {
85
+ this.tabs = this.tabPanels.toArray();
86
+ this.haveTabPanels = this.tabPanels && this.tabPanels.length > 0;
87
+ }
61
88
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTabViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
62
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTabViewComponent, selector: "tsi-tab-view", inputs: { style: "style", styleClass: "styleClass", controlClose: "controlClose", scrollable: "scrollable", activeIndex: "activeIndex", selectOnFocus: "selectOnFocus", nextButtonAriaLabel: "nextButtonAriaLabel", prevButtonAriaLabel: "prevButtonAriaLabel", autoHideButtons: "autoHideButtons", tabindex: "tabindex" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "tabPanels", predicate: TsiTabPanelComponent }], ngImport: i0, template: "<p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n</p-tabView>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i3.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }] }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTabViewComponent, selector: "tsi-tab-view", inputs: { style: "style", styleClass: "styleClass", controlClose: "controlClose", scrollable: "scrollable", activeIndex: "activeIndex", selectOnFocus: "selectOnFocus", nextButtonAriaLabel: "nextButtonAriaLabel", prevButtonAriaLabel: "prevButtonAriaLabel", autoHideButtons: "autoHideButtons", tabindex: "tabindex" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "tabPanels", predicate: TsiTabPanelComponent }], ngImport: i0, template: "<ng-container *ngIf=\"isInitialized\">\r\n <ng-container *ngIf=\"haveTabPanels; else noTabPanels\">\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </ng-container>\r\n\r\n <ng-template #noTabPanels>\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <ng-content></ng-content>\r\n </p-tabView>\r\n </ng-template>\r\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i3.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }] }); }
63
90
  }
64
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTabViewComponent, decorators: [{
65
92
  type: Component,
66
- args: [{ selector: 'tsi-tab-view', template: "<p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n</p-tabView>" }]
93
+ args: [{ selector: 'tsi-tab-view', template: "<ng-container *ngIf=\"isInitialized\">\r\n <ng-container *ngIf=\"haveTabPanels; else noTabPanels\">\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </ng-container>\r\n\r\n <ng-template #noTabPanels>\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <ng-content></ng-content>\r\n </p-tabView>\r\n </ng-template>\r\n</ng-container>" }]
67
94
  }], propDecorators: { tabPanels: [{
68
95
  type: ContentChildren,
69
96
  args: [TsiTabPanelComponent]
@@ -94,4 +121,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
94
121
  }], activeIndexChange: [{
95
122
  type: Output
96
123
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLXRhYi12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktdGFiLXZpZXcvdHNpLXRhYi12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktdGFiLXZpZXcvdHNpLXRhYi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBR25HLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLElBQUksQ0FBQzs7Ozs7QUFFMUM7OztHQUdHO0FBTUgsTUFBTSxPQUFPLG1CQUFtQjtJQUxoQztRQThCRTs7O1dBR0c7UUFDTSxnQkFBVyxHQUFXLENBQUMsQ0FBQztRQUNqQzs7O1dBR0c7UUFDTSxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQVd4Qzs7O1dBR0c7UUFDTSxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUN6Qzs7O1dBR0c7UUFDTSxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQzlCOzs7O1dBSUc7UUFDTyxhQUFRLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQ3BHOzs7O1dBSUc7UUFDTyxZQUFPLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQ2pHOzs7O1dBSUc7UUFDTyxzQkFBaUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQWFoRjtJQVhDLG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXdCO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQTZCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXlCO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQThCLENBQUMsQ0FBQztJQUNyRCxDQUFDOytHQXBGVSxtQkFBbUI7bUdBQW5CLG1CQUFtQix5ZUFDYixvQkFBb0IsNkJDZnZDLCtyRUFtRFk7OzRGRHJDQyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsY0FBYzs4QkFLZSxTQUFTO3NCQUEvQyxlQUFlO3VCQUFDLG9CQUFvQjtnQkFNNUIsS0FBSztzQkFBYixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBS0csYUFBYTtzQkFBckIsS0FBSztnQkFLRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUtHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBS0csUUFBUTtzQkFBaEIsS0FBSztnQkFNSSxRQUFRO3NCQUFqQixNQUFNO2dCQU1HLE9BQU87c0JBQWhCLE1BQU07Z0JBTUcsaUJBQWlCO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRzaVRhYlZpZXdDaGFuZ2VFdmVudCwgVHNpVGFiVmlld0Nsb3NlRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvdGFiLXZpZXcvdGFiLXZpZXctZXZlbnRzJztcclxuaW1wb3J0IHsgVGFiVmlld0NoYW5nZUV2ZW50LCBUYWJWaWV3Q2xvc2VFdmVudCB9IGZyb20gJ3ByaW1lbmcvdGFidmlldyc7XHJcbmltcG9ydCB7IFRzaVRhYlBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4nO1xyXG5cclxuLyoqXHJcbiAqIFRzaVRhYlZpZXcgaXMgYSBjb250YWluZXIgY29tcG9uZW50IHRvIGdyb3VwIGNvbnRlbnQgd2l0aCB0YWJzLlxyXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0c2ktdGFiLXZpZXcnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi90c2ktdGFiLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RzaS10YWItdmlldy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUc2lUYWJWaWV3Q29tcG9uZW50IHtcclxuICBAQ29udGVudENoaWxkcmVuKFRzaVRhYlBhbmVsQ29tcG9uZW50KSB0YWJQYW5lbHMhOiBRdWVyeUxpc3Q8VHNpVGFiUGFuZWxDb21wb25lbnQ+O1xyXG5cclxuICAvKipcclxuICAgKiBJbmxpbmUgc3R5bGUgb2YgdGhlIGNvbXBvbmVudC5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBzdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRhYiBjbG9zZSBpcyBjb250cm9sbGVkIGF0IG9uQ2xvc2UgZXZlbnQgb3Igbm90LlxyXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBjb250cm9sQ2xvc2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgLyoqXHJcbiAgICogV2hlbiBlbmFibGVkIGRpc3BsYXlzIGJ1dHRvbnMgYXQgZWFjaCBzaWRlIG9mIHRoZSB0YWIgaGVhZGVycyB0byBzY3JvbGwgdGhlIHRhYiBsaXN0LlxyXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBzY3JvbGxhYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIC8qKlxyXG4gICAqIEluZGV4IG9mIHRoZSBhY3RpdmUgdGFiIHRvIGNoYW5nZSBzZWxlY3RlZCB0YWIgcHJvZ3JhbW1hdGljYWxseS5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBhY3RpdmVJbmRleDogbnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBXaGVuIGVuYWJsZWQsIHRoZSBmb2N1c2VkIHRhYiBpcyBhY3RpdmF0ZWQuXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2VsZWN0T25Gb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gZGVmaW5lIGEgc3RyaW5nIGFyaWEgbGFiZWwgYXR0cmlidXRlIHRoZSBmb3J3YXJkIG5hdmlnYXRpb24gYnV0dG9uLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG5leHRCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyBhcmlhIGxhYmVsIGF0dHJpYnV0ZSB0aGUgYmFja3dhcmQgbmF2aWdhdGlvbiBidXR0b24uXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHJldkJ1dHRvbkFyaWFMYWJlbDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIC8qKlxyXG4gICAqIFdoZW4gYWN0aXZhdGVkLCBuYXZpZ2F0aW9uIGJ1dHRvbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGhpZGUgb3Igc2hvdyBiYXNlZCBvbiB0aGUgYXZhaWxhYmxlIHNwYWNlIHdpdGhpbiB0aGUgY29udGFpbmVyLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGF1dG9IaWRlQnV0dG9uczogYm9vbGVhbiA9IHRydWU7XHJcbiAgLyoqXHJcbiAgICogSW5kZXggb2YgdGhlIGVsZW1lbnQgaW4gdGFiYmluZyBvcmRlci5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuICAvKipcclxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdGFiIGNoYW5nZS5cclxuICAgKiBAcGFyYW0ge1RhYlZpZXdDaGFuZ2VFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFiIGNoYW5nZSBldmVudFxyXG4gICAqIEBncm91cCBFbWl0c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFRzaVRhYlZpZXdDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRzaVRhYlZpZXdDaGFuZ2VFdmVudD4oKTtcclxuICAvKipcclxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdGFiIGNsb3NlLlxyXG4gICAqIEBwYXJhbSB7VGFiVmlld0Nsb3NlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHRhYiBjbG9zZSBldmVudFxyXG4gICAqIEBncm91cCBFbWl0c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8VHNpVGFiVmlld0Nsb3NlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUc2lUYWJWaWV3Q2xvc2VFdmVudD4oKTtcclxuICAvKipcclxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdGhlIGFjdGl2ZSB0YWIgY2hhbmdlLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIE5ldyBhY3RpdmUgaW5kZXhcclxuICAgKiBAZ3JvdXAgRW1pdHNcclxuICAgKi9cclxuICBAT3V0cHV0KCkgYWN0aXZlSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIG9uQWN0aXZlSW5kZXhDaGFuZ2UoaW5kZXg6IG51bWJlcikge1xyXG4gICAgdGhpcy5hY3RpdmVJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcclxuICB9XHJcblxyXG4gIG9uVGFiQ2xvc2UoZXZlbnQ6IFRhYlZpZXdDbG9zZUV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ2xvc2UuZW1pdChldmVudCBhcyBUc2lUYWJWaWV3Q2xvc2VFdmVudCk7XHJcbiAgfVxyXG5cclxuICBvblRhYkNoYW5nZShldmVudDogVGFiVmlld0NoYW5nZUV2ZW50KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZXZlbnQgYXMgVHNpVGFiVmlld0NoYW5nZUV2ZW50KTtcclxuICB9XHJcbn0iLCI8cC10YWJWaWV3XHJcbiAgW3N0eWxlXT1cInN0eWxlXCJcclxuICBbc3R5bGVDbGFzc109XCJzdHlsZUNsYXNzXCJcclxuICBbY29udHJvbENsb3NlXT1cImNvbnRyb2xDbG9zZVwiXHJcbiAgW3Njcm9sbGFibGVdPVwic2Nyb2xsYWJsZVwiXHJcbiAgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCJcclxuICBbc2VsZWN0T25Gb2N1c109XCJzZWxlY3RPbkZvY3VzXCJcclxuICBbbmV4dEJ1dHRvbkFyaWFMYWJlbF09XCJuZXh0QnV0dG9uQXJpYUxhYmVsXCJcclxuICBbcHJldkJ1dHRvbkFyaWFMYWJlbF09XCJwcmV2QnV0dG9uQXJpYUxhYmVsXCJcclxuICBbYXV0b0hpZGVCdXR0b25zXT1cImF1dG9IaWRlQnV0dG9uc1wiXHJcbiAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcclxuICAoYWN0aXZlSW5kZXhDaGFuZ2UpPVwib25BY3RpdmVJbmRleENoYW5nZSgkZXZlbnQpXCJcclxuICAob25DbG9zZSk9XCJvblRhYkNsb3NlKCRldmVudClcIlxyXG4gIChvbkNoYW5nZSk9XCJvblRhYkNoYW5nZSgkZXZlbnQpXCI+XHJcbiAgPHAtdGFiUGFuZWwgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJQYW5lbHNcIlxyXG4gICAgW2Nsb3NhYmxlXT1cInRhYi5jbG9zYWJsZVwiXHJcbiAgICBbaGVhZGVyU3R5bGVdPVwidGFiLmhlYWRlclN0eWxlXCJcclxuICAgIFtoZWFkZXJTdHlsZUNsYXNzXT1cInRhYi5oZWFkZXJTdHlsZUNsYXNzXCJcclxuICAgIFtjYWNoZV09XCJ0YWIuY2FjaGVcIlxyXG4gICAgW3Rvb2x0aXBdPVwidGFiLnRvb2x0aXBcIlxyXG4gICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0YWIudG9vbHRpcFBvc2l0aW9uXCJcclxuICAgIFt0b29sdGlwUG9zaXRpb25TdHlsZV09XCJ0YWIudG9vbHRpcFBvc2l0aW9uU3R5bGVcIlxyXG4gICAgW3Rvb2x0aXBTdHlsZUNsYXNzXT1cInRhYi50b29sdGlwU3R5bGVDbGFzc1wiXHJcbiAgICBbc2VsZWN0ZWRdPVwidGFiLnNlbGVjdGVkXCJcclxuICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxyXG4gICAgW2hlYWRlcl09XCJ0YWIuaGVhZGVyXCJcclxuICAgIFtsZWZ0SWNvbl09XCJ0YWIubGVmdEljb25cIlxyXG4gICAgW3JpZ2h0SWNvbl09XCJ0YWIucmlnaHRJY29uXCI+XHJcbiAgICA8IS0tIExBWlkgTE9BREVEIENPTlRFTlQ6IFRoaXMgaXMgdGhlIGtleSBwYXJ0IC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNvbnRlbnRcIiAqbmdJZj1cInRhYi5jb250ZW50VGVtcGxhdGVSZWZcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5jb250ZW50VGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPCEtLSBDdXN0b20gaGVhZGVyIHRlbXBsYXRlIGlmIHByb3ZpZGVkIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiICpuZ0lmPVwidGFiLmhlYWRlclRlbXBsYXRlUmVmXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIuaGVhZGVyVGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBcclxuICAgIDwhLS0gQ3VzdG9tIGljb24gdGVtcGxhdGVzIGlmIHByb3ZpZGVkIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRpY29uXCIgKm5nSWY9XCJ0YWIubGVmdEljb25UZW1wbGF0ZVJlZlwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmxlZnRJY29uVGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICBcclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodGljb25cIiAqbmdJZj1cInRhYi5yaWdodEljb25UZW1wbGF0ZVJlZlwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnJpZ2h0SWNvblRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2xvc2VpY29uXCIgKm5nSWY9XCJ0YWIuY2xvc2VJY29uVGVtcGxhdGVSZWZcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5jbG9zZUljb25UZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L3AtdGFiUGFuZWw+XHJcbjwvcC10YWJWaWV3PiJdfQ==
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHNpLXRhYi12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktdGFiLXZpZXcvdHNpLXRhYi12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy90c2ktdGFiLXZpZXcvdHNpLXRhYi12aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHN0ksT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sSUFBSSxDQUFDOzs7OztBQUUxQzs7O0dBR0c7QUFNSCxNQUFNLE9BQU8sbUJBQW1CO0lBTGhDO1FBU0Usa0JBQWEsR0FBWSxLQUFLLENBQUM7UUFDL0Isa0JBQWEsR0FBWSxLQUFLLENBQUM7UUF5Qi9COzs7V0FHRztRQUNNLGdCQUFXLEdBQVcsQ0FBQyxDQUFDO1FBQ2pDOzs7V0FHRztRQUNNLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBV3hDOzs7V0FHRztRQUNNLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBQ3pDOzs7V0FHRztRQUNNLGFBQVEsR0FBVyxDQUFDLENBQUM7UUFFOUIsVUFBVTtRQUNWOzs7O1dBSUc7UUFDTyxhQUFRLEdBQXdDLElBQUksWUFBWSxFQUF5QixDQUFDO1FBQ3BHOzs7O1dBSUc7UUFDTyxZQUFPLEdBQXVDLElBQUksWUFBWSxFQUF3QixDQUFDO1FBQ2pHOzs7O1dBSUc7UUFDTyxzQkFBaUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUvRSxPQUFPO1FBQ1AsT0FBRSxHQUFzQixNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztLQXNDbkQ7SUFwQ0Msa0JBQWtCO0lBQ2xCLGVBQWU7UUFDYixJQUFJLENBQUM7WUFDSCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUUzQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUF1QyxFQUFFLEVBQUU7Z0JBQzNFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUwsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7Z0JBQ08sQ0FBQztZQUNQLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLG1CQUFtQixDQUFDLEtBQWE7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQXdCO1FBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQTZCLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXlCO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQThCLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsUUFBUTtJQUNBLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFJLElBQUksQ0FBQyxTQUE2QyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbkUsQ0FBQzsrR0F2SFUsbUJBQW1CO21HQUFuQixtQkFBbUIseWVBRWIsb0JBQW9CLDZCQ2hCdkMsc3JHQTBFZTs7NEZENURGLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxjQUFjOzhCQU1lLFNBQVM7c0JBQS9DLGVBQWU7dUJBQUMsb0JBQW9CO2dCQVU1QixLQUFLO3NCQUFiLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxZQUFZO3NCQUFwQixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS0csV0FBVztzQkFBbkIsS0FBSztnQkFLRyxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFLRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0csZUFBZTtzQkFBdkIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQVFJLFFBQVE7c0JBQWpCLE1BQU07Z0JBTUcsT0FBTztzQkFBaEIsTUFBTTtnQkFNRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGRyZW4sIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHNpVGFiVmlld0NoYW5nZUV2ZW50LCBUc2lUYWJWaWV3Q2xvc2VFdmVudCB9IGZyb20gJy4uLy4uL21vZGVscy90YWItdmlldy90YWItdmlldy1ldmVudHMnO1xyXG5pbXBvcnQgeyBUYWJWaWV3Q2hhbmdlRXZlbnQsIFRhYlZpZXdDbG9zZUV2ZW50IH0gZnJvbSAncHJpbWVuZy90YWJ2aWV3JztcclxuaW1wb3J0IHsgVHNpVGFiUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLic7XHJcblxyXG4vKipcclxuICogVHNpVGFiVmlldyBpcyBhIGNvbnRhaW5lciBjb21wb25lbnQgdG8gZ3JvdXAgY29udGVudCB3aXRoIHRhYnMuXHJcbiAqIEBncm91cCBDb21wb25lbnRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RzaS10YWItdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RzaS10YWItdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHNpLXRhYi12aWV3LmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFRzaVRhYlZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICAvLyBQcm9wc1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oVHNpVGFiUGFuZWxDb21wb25lbnQpIHRhYlBhbmVscyE6IFF1ZXJ5TGlzdDxUc2lUYWJQYW5lbENvbXBvbmVudD47XHJcbiAgdGFicyE6IFRzaVRhYlBhbmVsQ29tcG9uZW50W107XHJcbiAgaXNJbml0aWFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGhhdmVUYWJQYW5lbHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gSW5wdXRzXHJcbiAgLyoqXHJcbiAgICogSW5saW5lIHN0eWxlIG9mIHRoZSBjb21wb25lbnQuXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgc3R5bGU6IHsgW2tsYXNzOiBzdHJpbmddOiBhbnkgfSB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgLyoqXHJcbiAgICogU3R5bGUgY2xhc3Mgb2YgdGhlIGNvbXBvbmVudC5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0YWIgY2xvc2UgaXMgY29udHJvbGxlZCBhdCBvbkNsb3NlIGV2ZW50IG9yIG5vdC5cclxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgY29udHJvbENsb3NlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xyXG4gIC8qKlxyXG4gICAqIFdoZW4gZW5hYmxlZCBkaXNwbGF5cyBidXR0b25zIGF0IGVhY2ggc2lkZSBvZiB0aGUgdGFiIGhlYWRlcnMgdG8gc2Nyb2xsIHRoZSB0YWIgbGlzdC5cclxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2Nyb2xsYWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBJbmRleCBvZiB0aGUgYWN0aXZlIHRhYiB0byBjaGFuZ2Ugc2VsZWN0ZWQgdGFiIHByb2dyYW1tYXRpY2FsbHkuXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgYWN0aXZlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgLyoqXHJcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgZm9jdXNlZCB0YWIgaXMgYWN0aXZhdGVkLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNlbGVjdE9uRm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAvKipcclxuICAgKiBVc2VkIHRvIGRlZmluZSBhIHN0cmluZyBhcmlhIGxhYmVsIGF0dHJpYnV0ZSB0aGUgZm9yd2FyZCBuYXZpZ2F0aW9uIGJ1dHRvbi5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBuZXh0QnV0dG9uQXJpYUxhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBkZWZpbmUgYSBzdHJpbmcgYXJpYSBsYWJlbCBhdHRyaWJ1dGUgdGhlIGJhY2t3YXJkIG5hdmlnYXRpb24gYnV0dG9uLlxyXG4gICAqIEBncm91cCBQcm9wc1xyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHByZXZCdXR0b25BcmlhTGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAvKipcclxuICAgKiBXaGVuIGFjdGl2YXRlZCwgbmF2aWdhdGlvbiBidXR0b25zIHdpbGwgYXV0b21hdGljYWxseSBoaWRlIG9yIHNob3cgYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBzcGFjZSB3aXRoaW4gdGhlIGNvbnRhaW5lci5cclxuICAgKiBAZ3JvdXAgUHJvcHNcclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvSGlkZUJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIC8qKlxyXG4gICAqIEluZGV4IG9mIHRoZSBlbGVtZW50IGluIHRhYmJpbmcgb3JkZXIuXHJcbiAgICogQGdyb3VwIFByb3BzXHJcbiAgICovXHJcbiAgQElucHV0KCkgdGFiaW5kZXg6IG51bWJlciA9IDA7XHJcblxyXG4gIC8vIE91dHB1dHNcclxuICAvKipcclxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdGFiIGNoYW5nZS5cclxuICAgKiBAcGFyYW0ge1RhYlZpZXdDaGFuZ2VFdmVudH0gZXZlbnQgLSBDdXN0b20gdGFiIGNoYW5nZSBldmVudFxyXG4gICAqIEBncm91cCBFbWl0c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkNoYW5nZTogRXZlbnRFbWl0dGVyPFRzaVRhYlZpZXdDaGFuZ2VFdmVudD4gPSBuZXcgRXZlbnRFbWl0dGVyPFRzaVRhYlZpZXdDaGFuZ2VFdmVudD4oKTtcclxuICAvKipcclxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdGFiIGNsb3NlLlxyXG4gICAqIEBwYXJhbSB7VGFiVmlld0Nsb3NlRXZlbnR9IGV2ZW50IC0gQ3VzdG9tIHRhYiBjbG9zZSBldmVudFxyXG4gICAqIEBncm91cCBFbWl0c1xyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBvbkNsb3NlOiBFdmVudEVtaXR0ZXI8VHNpVGFiVmlld0Nsb3NlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxUc2lUYWJWaWV3Q2xvc2VFdmVudD4oKTtcclxuICAvKipcclxuICAgKiBDYWxsYmFjayB0byBpbnZva2Ugb24gdGhlIGFjdGl2ZSB0YWIgY2hhbmdlLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAtIE5ldyBhY3RpdmUgaW5kZXhcclxuICAgKiBAZ3JvdXAgRW1pdHNcclxuICAgKi9cclxuICBAT3V0cHV0KCkgYWN0aXZlSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIC8vIERJICBcclxuICBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cclxuICAvLyBMaWZlY3ljbGUgaG9va3NcclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLmNhbGN1bGF0ZVByb3BlcnRpZXMoKTtcclxuXHJcbiAgICAgIHRoaXMudGFiUGFuZWxzLmNoYW5nZXMuc3Vic2NyaWJlKChwYW5lbHM6IFF1ZXJ5TGlzdDxUc2lUYWJQYW5lbENvbXBvbmVudD4pID0+IHtcclxuICAgICAgICB0aGlzLmNhbGN1bGF0ZVByb3BlcnRpZXMoKTtcclxuICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgIH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gRXZlbnRzIGhhbmRsZXJzXHJcbiAgb25BY3RpdmVJbmRleENoYW5nZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgb25UYWJDbG9zZShldmVudDogVGFiVmlld0Nsb3NlRXZlbnQpIHtcclxuICAgIHRoaXMub25DbG9zZS5lbWl0KGV2ZW50IGFzIFRzaVRhYlZpZXdDbG9zZUV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uVGFiQ2hhbmdlKGV2ZW50OiBUYWJWaWV3Q2hhbmdlRXZlbnQpIHtcclxuICAgIHRoaXMub25DaGFuZ2UuZW1pdChldmVudCBhcyBUc2lUYWJWaWV3Q2hhbmdlRXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgLy8gVXRpbHNcclxuICBwcml2YXRlIGNhbGN1bGF0ZVByb3BlcnRpZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRhYnMgPSAodGhpcy50YWJQYW5lbHMgYXMgUXVlcnlMaXN0PFRzaVRhYlBhbmVsQ29tcG9uZW50PikudG9BcnJheSgpO1xyXG4gICAgdGhpcy5oYXZlVGFiUGFuZWxzID0gdGhpcy50YWJQYW5lbHMgJiYgdGhpcy50YWJQYW5lbHMubGVuZ3RoID4gMDtcclxuICB9XHJcbn0iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbml0aWFsaXplZFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXZlVGFiUGFuZWxzOyBlbHNlIG5vVGFiUGFuZWxzXCI+XHJcbiAgICA8cC10YWJWaWV3XHJcbiAgICAgIFtzdHlsZV09XCJzdHlsZVwiXHJcbiAgICAgIFtzdHlsZUNsYXNzXT1cInN0eWxlQ2xhc3NcIlxyXG4gICAgICBbY29udHJvbENsb3NlXT1cImNvbnRyb2xDbG9zZVwiXHJcbiAgICAgIFtzY3JvbGxhYmxlXT1cInNjcm9sbGFibGVcIlxyXG4gICAgICBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlSW5kZXhcIlxyXG4gICAgICBbc2VsZWN0T25Gb2N1c109XCJzZWxlY3RPbkZvY3VzXCJcclxuICAgICAgW25leHRCdXR0b25BcmlhTGFiZWxdPVwibmV4dEJ1dHRvbkFyaWFMYWJlbFwiXHJcbiAgICAgIFtwcmV2QnV0dG9uQXJpYUxhYmVsXT1cInByZXZCdXR0b25BcmlhTGFiZWxcIlxyXG4gICAgICBbYXV0b0hpZGVCdXR0b25zXT1cImF1dG9IaWRlQnV0dG9uc1wiXHJcbiAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXHJcbiAgICAgIChhY3RpdmVJbmRleENoYW5nZSk9XCJvbkFjdGl2ZUluZGV4Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAob25DbG9zZSk9XCJvblRhYkNsb3NlKCRldmVudClcIlxyXG4gICAgICAob25DaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICA8cC10YWJQYW5lbCAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYlBhbmVsc1wiXHJcbiAgICAgICAgW2Nsb3NhYmxlXT1cInRhYi5jbG9zYWJsZVwiXHJcbiAgICAgICAgW2hlYWRlclN0eWxlXT1cInRhYi5oZWFkZXJTdHlsZVwiXHJcbiAgICAgICAgW2hlYWRlclN0eWxlQ2xhc3NdPVwidGFiLmhlYWRlclN0eWxlQ2xhc3NcIlxyXG4gICAgICAgIFtjYWNoZV09XCJ0YWIuY2FjaGVcIlxyXG4gICAgICAgIFt0b29sdGlwXT1cInRhYi50b29sdGlwXCJcclxuICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRhYi50b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICAgIFt0b29sdGlwUG9zaXRpb25TdHlsZV09XCJ0YWIudG9vbHRpcFBvc2l0aW9uU3R5bGVcIlxyXG4gICAgICAgIFt0b29sdGlwU3R5bGVDbGFzc109XCJ0YWIudG9vbHRpcFN0eWxlQ2xhc3NcIlxyXG4gICAgICAgIFtzZWxlY3RlZF09XCJ0YWIuc2VsZWN0ZWRcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJ0YWIuZGlzYWJsZWRcIlxyXG4gICAgICAgIFtoZWFkZXJdPVwidGFiLmhlYWRlclwiXHJcbiAgICAgICAgW2xlZnRJY29uXT1cInRhYi5sZWZ0SWNvblwiXHJcbiAgICAgICAgW3JpZ2h0SWNvbl09XCJ0YWIucmlnaHRJY29uXCI+XHJcbiAgICAgICAgPCEtLSBMQVpZIExPQURFRCBDT05URU5UOiBUaGlzIGlzIHRoZSBrZXkgcGFydCAtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiICpuZ0lmPVwidGFiLmNvbnRlbnRUZW1wbGF0ZVJlZlwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5jb250ZW50VGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8IS0tIEN1c3RvbSBoZWFkZXIgdGVtcGxhdGUgaWYgcHJvdmlkZWQgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiICpuZ0lmPVwidGFiLmhlYWRlclRlbXBsYXRlUmVmXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmhlYWRlclRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSBDdXN0b20gaWNvbiB0ZW1wbGF0ZXMgaWYgcHJvdmlkZWQgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRpY29uXCIgKm5nSWY9XCJ0YWIubGVmdEljb25UZW1wbGF0ZVJlZlwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRhYi5sZWZ0SWNvblRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInJpZ2h0aWNvblwiICpuZ0lmPVwidGFiLnJpZ2h0SWNvblRlbXBsYXRlUmVmXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLnJpZ2h0SWNvblRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNsb3NlaWNvblwiICpuZ0lmPVwidGFiLmNsb3NlSWNvblRlbXBsYXRlUmVmXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGFiLmNsb3NlSWNvblRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9wLXRhYlBhbmVsPlxyXG4gICAgPC9wLXRhYlZpZXc+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy10ZW1wbGF0ZSAjbm9UYWJQYW5lbHM+XHJcbiAgICA8cC10YWJWaWV3XHJcbiAgICAgIFtzdHlsZV09XCJzdHlsZVwiXHJcbiAgICAgIFtzdHlsZUNsYXNzXT1cInN0eWxlQ2xhc3NcIlxyXG4gICAgICBbY29udHJvbENsb3NlXT1cImNvbnRyb2xDbG9zZVwiXHJcbiAgICAgIFtzY3JvbGxhYmxlXT1cInNjcm9sbGFibGVcIlxyXG4gICAgICBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlSW5kZXhcIlxyXG4gICAgICBbc2VsZWN0T25Gb2N1c109XCJzZWxlY3RPbkZvY3VzXCJcclxuICAgICAgW25leHRCdXR0b25BcmlhTGFiZWxdPVwibmV4dEJ1dHRvbkFyaWFMYWJlbFwiXHJcbiAgICAgIFtwcmV2QnV0dG9uQXJpYUxhYmVsXT1cInByZXZCdXR0b25BcmlhTGFiZWxcIlxyXG4gICAgICBbYXV0b0hpZGVCdXR0b25zXT1cImF1dG9IaWRlQnV0dG9uc1wiXHJcbiAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXHJcbiAgICAgIChhY3RpdmVJbmRleENoYW5nZSk9XCJvbkFjdGl2ZUluZGV4Q2hhbmdlKCRldmVudClcIlxyXG4gICAgICAob25DbG9zZSk9XCJvblRhYkNsb3NlKCRldmVudClcIlxyXG4gICAgICAob25DaGFuZ2UpPVwib25UYWJDaGFuZ2UoJGV2ZW50KVwiPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L3AtdGFiVmlldz5cclxuICA8L25nLXRlbXBsYXRlPlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Pipe, Injectable, HostListener, Directive, Component, Input, inject, EventEmitter, Output, ViewEncapsulation, runInInjectionContext, ViewChild, signal, ElementRef, ContentChild, Optional, ContentChildren, Renderer2, ViewContainerRef, ViewChildren, NgModule } from '@angular/core';
2
+ import { Pipe, Injectable, HostListener, Directive, Component, Input, inject, EventEmitter, Output, ViewEncapsulation, runInInjectionContext, ViewChild, signal, ElementRef, ContentChild, Optional, ContentChildren, Renderer2, ViewContainerRef, ViewChildren, ChangeDetectorRef, NgModule } from '@angular/core';
3
3
  import { Subject, firstValueFrom, tap, BehaviorSubject, map, catchError, of, forkJoin } from 'rxjs';
4
4
  import * as i1 from '@angular/common/http';
5
5
  import { HttpHeaders, HttpParams, HttpStatusCode, HttpClientModule } from '@angular/common/http';
@@ -18275,6 +18275,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
18275
18275
  */
18276
18276
  class TsiTabViewComponent {
18277
18277
  constructor() {
18278
+ this.isInitialized = false;
18279
+ this.haveTabPanels = false;
18278
18280
  /**
18279
18281
  * Index of the active tab to change selected tab programmatically.
18280
18282
  * @group Props
@@ -18295,6 +18297,7 @@ class TsiTabViewComponent {
18295
18297
  * @group Props
18296
18298
  */
18297
18299
  this.tabindex = 0;
18300
+ // Outputs
18298
18301
  /**
18299
18302
  * Callback to invoke on tab change.
18300
18303
  * @param {TabViewChangeEvent} event - Custom tab change event
@@ -18313,7 +18316,26 @@ class TsiTabViewComponent {
18313
18316
  * @group Emits
18314
18317
  */
18315
18318
  this.activeIndexChange = new EventEmitter();
18319
+ // DI
18320
+ this.cd = inject(ChangeDetectorRef);
18316
18321
  }
18322
+ // Lifecycle hooks
18323
+ ngAfterViewInit() {
18324
+ try {
18325
+ this.calculateProperties();
18326
+ this.tabPanels.changes.subscribe((panels) => {
18327
+ this.calculateProperties();
18328
+ this.cd.markForCheck();
18329
+ });
18330
+ }
18331
+ catch (error) {
18332
+ console.error(error);
18333
+ }
18334
+ finally {
18335
+ this.isInitialized = true;
18336
+ }
18337
+ }
18338
+ // Events handlers
18317
18339
  onActiveIndexChange(index) {
18318
18340
  this.activeIndexChange.emit(index);
18319
18341
  }
@@ -18323,12 +18345,17 @@ class TsiTabViewComponent {
18323
18345
  onTabChange(event) {
18324
18346
  this.onChange.emit(event);
18325
18347
  }
18348
+ // Utils
18349
+ calculateProperties() {
18350
+ this.tabs = this.tabPanels.toArray();
18351
+ this.haveTabPanels = this.tabPanels && this.tabPanels.length > 0;
18352
+ }
18326
18353
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTabViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
18327
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTabViewComponent, selector: "tsi-tab-view", inputs: { style: "style", styleClass: "styleClass", controlClose: "controlClose", scrollable: "scrollable", activeIndex: "activeIndex", selectOnFocus: "selectOnFocus", nextButtonAriaLabel: "nextButtonAriaLabel", prevButtonAriaLabel: "prevButtonAriaLabel", autoHideButtons: "autoHideButtons", tabindex: "tabindex" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "tabPanels", predicate: TsiTabPanelComponent }], ngImport: i0, template: "<p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n</p-tabView>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }] }); }
18354
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TsiTabViewComponent, selector: "tsi-tab-view", inputs: { style: "style", styleClass: "styleClass", controlClose: "controlClose", scrollable: "scrollable", activeIndex: "activeIndex", selectOnFocus: "selectOnFocus", nextButtonAriaLabel: "nextButtonAriaLabel", prevButtonAriaLabel: "prevButtonAriaLabel", autoHideButtons: "autoHideButtons", tabindex: "tabindex" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, queries: [{ propertyName: "tabPanels", predicate: TsiTabPanelComponent }], ngImport: i0, template: "<ng-container *ngIf=\"isInitialized\">\r\n <ng-container *ngIf=\"haveTabPanels; else noTabPanels\">\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </ng-container>\r\n\r\n <ng-template #noTabPanels>\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <ng-content></ng-content>\r\n </p-tabView>\r\n </ng-template>\r\n</ng-container>", styles: [""], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i7.TabView, selector: "p-tabView", inputs: ["style", "styleClass", "controlClose", "scrollable", "activeIndex", "selectOnFocus", "nextButtonAriaLabel", "prevButtonAriaLabel", "autoHideButtons", "tabindex"], outputs: ["onChange", "onClose", "activeIndexChange"] }, { kind: "component", type: i7.TabPanel, selector: "p-tabPanel", inputs: ["closable", "headerStyle", "headerStyleClass", "cache", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "selected", "disabled", "header", "leftIcon", "rightIcon"] }] }); }
18328
18355
  }
18329
18356
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TsiTabViewComponent, decorators: [{
18330
18357
  type: Component,
18331
- args: [{ selector: 'tsi-tab-view', template: "<p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n \r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n</p-tabView>" }]
18358
+ args: [{ selector: 'tsi-tab-view', template: "<ng-container *ngIf=\"isInitialized\">\r\n <ng-container *ngIf=\"haveTabPanels; else noTabPanels\">\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <p-tabPanel *ngFor=\"let tab of tabPanels\"\r\n [closable]=\"tab.closable\"\r\n [headerStyle]=\"tab.headerStyle\"\r\n [headerStyleClass]=\"tab.headerStyleClass\"\r\n [cache]=\"tab.cache\"\r\n [tooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [tooltipPositionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [selected]=\"tab.selected\"\r\n [disabled]=\"tab.disabled\"\r\n [header]=\"tab.header\"\r\n [leftIcon]=\"tab.leftIcon\"\r\n [rightIcon]=\"tab.rightIcon\">\r\n <!-- LAZY LOADED CONTENT: This is the key part -->\r\n <ng-template pTemplate=\"content\" *ngIf=\"tab.contentTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.contentTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom header template if provided -->\r\n <ng-template pTemplate=\"header\" *ngIf=\"tab.headerTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <!-- Custom icon templates if provided -->\r\n <ng-template pTemplate=\"lefticon\" *ngIf=\"tab.leftIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.leftIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"righticon\" *ngIf=\"tab.rightIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.rightIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n\r\n <ng-template pTemplate=\"closeicon\" *ngIf=\"tab.closeIconTemplateRef\">\r\n <ng-container *ngTemplateOutlet=\"tab.closeIconTemplateRef\"></ng-container>\r\n </ng-template>\r\n </p-tabPanel>\r\n </p-tabView>\r\n </ng-container>\r\n\r\n <ng-template #noTabPanels>\r\n <p-tabView\r\n [style]=\"style\"\r\n [styleClass]=\"styleClass\"\r\n [controlClose]=\"controlClose\"\r\n [scrollable]=\"scrollable\"\r\n [activeIndex]=\"activeIndex\"\r\n [selectOnFocus]=\"selectOnFocus\"\r\n [nextButtonAriaLabel]=\"nextButtonAriaLabel\"\r\n [prevButtonAriaLabel]=\"prevButtonAriaLabel\"\r\n [autoHideButtons]=\"autoHideButtons\"\r\n [tabindex]=\"tabindex\"\r\n (activeIndexChange)=\"onActiveIndexChange($event)\"\r\n (onClose)=\"onTabClose($event)\"\r\n (onChange)=\"onTabChange($event)\">\r\n <ng-content></ng-content>\r\n </p-tabView>\r\n </ng-template>\r\n</ng-container>" }]
18332
18359
  }], propDecorators: { tabPanels: [{
18333
18360
  type: ContentChildren,
18334
18361
  args: [TsiTabPanelComponent]