@hug/ngx-layout 22.0.0-alpha.10 → 22.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## 22.0.0-alpha.12 (2026-05-07)
2
+
3
+ ### 🐛 Fixes
4
+
5
+ - **layout:** fix component styles for improved responsif #DESIGNSYS-114 ([71b728a](https://github.com/DSI-HUG/ngx-components/commit/71b728a))
6
+
7
+ ### ❤️ Thank You
8
+
9
+ - Esther Layat
10
+
11
+ ## 22.0.0-alpha.11 (2026-04-24)
12
+
13
+ ### 🐛 Fixes
14
+
15
+ - **panel-bar:** rename hasBackButton to withBackButton for consistency #DESIGNSYS-115 ([92365ba](https://github.com/DSI-HUG/ngx-components/commit/92365ba))
16
+
17
+ ### ❤️ Thank You
18
+
19
+ - Esther Layat
20
+
1
21
  ## 22.0.0-alpha.10 (2026-04-22)
2
22
 
3
23
  ### 🐛 Fixes
@@ -145,7 +145,7 @@ class NgxActionsGroupComponent {
145
145
  return maxVisibleActions - 1;
146
146
  }
147
147
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxActionsGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
148
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgxActionsGroupComponent, isStandalone: true, selector: "ngx-actions-group", queries: [{ propertyName: "iconButtons", predicate: NgxActionDirective, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "hiddenContainer", first: true, predicate: ["hiddenContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container class=\"container\">\n <ng-content select=\"button, [ngxAction]\"></ng-content>\n @if (hiddenActions().length > 0) {\n <button\n matIconButton\n class=\"more-actions-button\"\n [matMenuTriggerFor]=\"menuActionsGroup\"\n matTooltip=\"{{ intl?.moreActions ?? 'More actions' }}\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n }\n <mat-menu #menuActionsGroup=\"matMenu\" class=\"actions-group-menu\">\n <div #hiddenContainer></div>\n </mat-menu>\n</div>\n", styles: ["ngx-actions-group{display:flex;inline-size:100%;max-width:364px}ngx-actions-group .container{display:flex;inline-size:fit-content;align-items:center;gap:var(--ngx-actions-group-gap, .75rem);border-radius:var(--ngx-actions-group-radius, 2rem);padding:var(--ngx-actions-group-padding, .25rem);background-color:var(--mat-sys-surface-container-low);max-width:100%;box-sizing:border-box}ngx-actions-group .container .more-actions-button{order:999}.actions-group-menu.mat-mdc-menu-panel{padding:var(--ngx-actions-group-menu-padding, 0 .75rem)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
148
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgxActionsGroupComponent, isStandalone: true, selector: "ngx-actions-group", queries: [{ propertyName: "iconButtons", predicate: NgxActionDirective, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, isSignal: true }, { propertyName: "hiddenContainer", first: true, predicate: ["hiddenContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div #container class=\"container\">\n <ng-content select=\"button, [ngxAction]\"></ng-content>\n @if (hiddenActions().length > 0) {\n <button\n matIconButton\n class=\"more-actions-button\"\n [matMenuTriggerFor]=\"menuActionsGroup\"\n matTooltip=\"{{ intl?.moreActions ?? 'More actions' }}\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n }\n <mat-menu #menuActionsGroup=\"matMenu\" class=\"actions-group-menu\">\n <div #hiddenContainer></div>\n </mat-menu>\n</div>\n", styles: ["ngx-actions-group{display:flex;inline-size:100%;max-width:364px}ngx-actions-group>.container{display:flex;inline-size:fit-content;align-items:center;gap:var(--ngx-actions-group-gap, .75rem);border-radius:var(--ngx-actions-group-radius, 2rem);padding:var(--ngx-actions-group-padding, .25rem);background-color:var(--mat-sys-surface-container-low);max-width:100%;box-sizing:border-box}ngx-actions-group>.container>.more-actions-button{order:999}.actions-group-menu.mat-mdc-menu-panel{padding:var(--ngx-actions-group-menu-padding, 0 .75rem)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "directive", type: MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
149
149
  }
150
150
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxActionsGroupComponent, decorators: [{
151
151
  type: Component,
@@ -155,7 +155,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
155
155
  MatTooltip,
156
156
  MatMenu,
157
157
  MatMenuTrigger
158
- ], template: "<div #container class=\"container\">\n <ng-content select=\"button, [ngxAction]\"></ng-content>\n @if (hiddenActions().length > 0) {\n <button\n matIconButton\n class=\"more-actions-button\"\n [matMenuTriggerFor]=\"menuActionsGroup\"\n matTooltip=\"{{ intl?.moreActions ?? 'More actions' }}\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n }\n <mat-menu #menuActionsGroup=\"matMenu\" class=\"actions-group-menu\">\n <div #hiddenContainer></div>\n </mat-menu>\n</div>\n", styles: ["ngx-actions-group{display:flex;inline-size:100%;max-width:364px}ngx-actions-group .container{display:flex;inline-size:fit-content;align-items:center;gap:var(--ngx-actions-group-gap, .75rem);border-radius:var(--ngx-actions-group-radius, 2rem);padding:var(--ngx-actions-group-padding, .25rem);background-color:var(--mat-sys-surface-container-low);max-width:100%;box-sizing:border-box}ngx-actions-group .container .more-actions-button{order:999}.actions-group-menu.mat-mdc-menu-panel{padding:var(--ngx-actions-group-menu-padding, 0 .75rem)}\n"] }]
158
+ ], template: "<div #container class=\"container\">\n <ng-content select=\"button, [ngxAction]\"></ng-content>\n @if (hiddenActions().length > 0) {\n <button\n matIconButton\n class=\"more-actions-button\"\n [matMenuTriggerFor]=\"menuActionsGroup\"\n matTooltip=\"{{ intl?.moreActions ?? 'More actions' }}\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n }\n <mat-menu #menuActionsGroup=\"matMenu\" class=\"actions-group-menu\">\n <div #hiddenContainer></div>\n </mat-menu>\n</div>\n", styles: ["ngx-actions-group{display:flex;inline-size:100%;max-width:364px}ngx-actions-group>.container{display:flex;inline-size:fit-content;align-items:center;gap:var(--ngx-actions-group-gap, .75rem);border-radius:var(--ngx-actions-group-radius, 2rem);padding:var(--ngx-actions-group-padding, .25rem);background-color:var(--mat-sys-surface-container-low);max-width:100%;box-sizing:border-box}ngx-actions-group>.container>.more-actions-button{order:999}.actions-group-menu.mat-mdc-menu-panel{padding:var(--ngx-actions-group-menu-padding, 0 .75rem)}\n"] }]
159
159
  }], ctorParameters: () => [], propDecorators: { iconButtons: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => NgxActionDirective), { ...{ read: ElementRef }, isSignal: true }] }], container: [{ type: i0.ViewChild, args: ['container', { isSignal: true }] }], hiddenContainer: [{ type: i0.ViewChild, args: ['hiddenContainer', { isSignal: true }] }] } });
160
160
 
161
161
  class NgxAppBarComponent {
@@ -196,11 +196,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
196
196
  class NgxColumnComponent {
197
197
  contentPadding = input(undefined, ...(ngDevMode ? [{ debugName: "contentPadding" }] : []));
198
198
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxColumnComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
199
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.6", type: NgxColumnComponent, isStandalone: true, selector: "ngx-column", inputs: { contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-content select=\"ngx-column-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: [":host{flex:1;display:flex;flex-direction:column;box-sizing:border-box;block-size:100%;min-width:min-content;position:relative;overflow:visible}:host .content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-column-content-gap, .5rem);padding:var(--ngx-column-content-padding, .25rem .5rem);flex:1}:host .content.no-padding{padding:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
199
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.6", type: NgxColumnComponent, isStandalone: true, selector: "ngx-column", inputs: { contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ng-content select=\"ngx-column-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: [":host{flex:1;display:flex;flex-direction:column;box-sizing:border-box;block-size:100%;position:relative;overflow:visible;min-width:0}:host .content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-column-content-gap, .5rem);padding:var(--ngx-column-content-padding, .25rem .5rem);flex:1}:host .content.no-padding{padding:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
200
200
  }
201
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxColumnComponent, decorators: [{
202
202
  type: Component,
203
- args: [{ selector: 'ngx-column', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ngx-column-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: [":host{flex:1;display:flex;flex-direction:column;box-sizing:border-box;block-size:100%;min-width:min-content;position:relative;overflow:visible}:host .content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-column-content-gap, .5rem);padding:var(--ngx-column-content-padding, .25rem .5rem);flex:1}:host .content.no-padding{padding:0}\n"] }]
203
+ args: [{ selector: 'ngx-column', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ngx-column-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: [":host{flex:1;display:flex;flex-direction:column;box-sizing:border-box;block-size:100%;position:relative;overflow:visible;min-width:0}:host .content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-column-content-gap, .5rem);padding:var(--ngx-column-content-padding, .25rem .5rem);flex:1}:host .content.no-padding{padding:0}\n"] }]
204
204
  }], propDecorators: { contentPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentPadding", required: false }] }] } });
205
205
 
206
206
  class NgxBarTitleDirective {
@@ -493,11 +493,11 @@ class NgxColumnBarComponent {
493
493
  searchBarContainer = contentChild(NgxSearchBarContainerComponent, ...(ngDevMode ? [{ debugName: "searchBarContainer" }] : []));
494
494
  barTitle = contentChild(NgxBarTitleDirective, ...(ngDevMode ? [{ debugName: "barTitle" }] : []));
495
495
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxColumnBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
496
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgxColumnBarComponent, isStandalone: true, selector: "ngx-column-bar", queries: [{ propertyName: "filtersGroup", first: true, predicate: NgxFiltersGroupComponent, descendants: true, isSignal: true }, { propertyName: "searchBarContainer", first: true, predicate: NgxSearchBarContainerComponent, descendants: true, isSignal: true }, { propertyName: "barTitle", first: true, predicate: NgxBarTitleDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-column-bar{display:flex;align-items:center;min-height:var(--ngx-column-bar-min-height, 3rem);padding:var(--ngx-column-bar-padding, .25rem 0);gap:var(--ngx-column-bar-gap, .75rem)}ngx-column-bar h1,ngx-column-bar h2,ngx-column-bar h3,ngx-column-bar h4,ngx-column-bar h5,ngx-column-bar h6{white-space:nowrap;margin:0;font:var(--mat-sys-title-medium);letter-spacing:var(--mat-sys-title-medium-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-column-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-column-bar h1:first-child,ngx-column-bar h2:first-child,ngx-column-bar h3:first-child,ngx-column-bar h4:first-child,ngx-column-bar h5:first-child,ngx-column-bar h6:first-child{margin-inline-start:var(--ngx-column-bar-title-margin-inline-start, .5rem)}ngx-column-bar:has(h1,h2,h3,h4,h5,h6) .right:has(ngx-actions-group) ngx-filters-group{flex:none}ngx-column-bar:has(h1,h2,h3,h4,h5,h6) ngx-actions-group{justify-content:flex-end}ngx-column-bar .right,ngx-column-bar ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-column-bar-elements-gap, .75rem)}ngx-column-bar .right{flex:1;justify-content:flex-end}ngx-column-bar ngx-actions-group{flex:1;min-inline-size:var(--ngx-column-bar-actions-group-min-inline-size, 3rem)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
496
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgxColumnBarComponent, isStandalone: true, selector: "ngx-column-bar", queries: [{ propertyName: "filtersGroup", first: true, predicate: NgxFiltersGroupComponent, descendants: true, isSignal: true }, { propertyName: "searchBarContainer", first: true, predicate: NgxSearchBarContainerComponent, descendants: true, isSignal: true }, { propertyName: "barTitle", first: true, predicate: NgxBarTitleDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-column-bar{display:flex;align-items:center;min-height:var(--ngx-column-bar-min-height, 3rem);padding:var(--ngx-column-bar-padding, .25rem 0);gap:var(--ngx-column-bar-gap, .75rem);min-width:0}ngx-column-bar h1[ngxBarTitle],ngx-column-bar h2[ngxBarTitle],ngx-column-bar h3[ngxBarTitle],ngx-column-bar h4[ngxBarTitle],ngx-column-bar h5[ngxBarTitle],ngx-column-bar h6[ngxBarTitle]{white-space:nowrap;margin:0;font:var(--mat-sys-title-medium);letter-spacing:var(--mat-sys-title-medium-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-column-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-column-bar h1[ngxBarTitle]:first-child,ngx-column-bar h2[ngxBarTitle]:first-child,ngx-column-bar h3[ngxBarTitle]:first-child,ngx-column-bar h4[ngxBarTitle]:first-child,ngx-column-bar h5[ngxBarTitle]:first-child,ngx-column-bar h6[ngxBarTitle]:first-child{margin-inline-start:var(--ngx-column-bar-title-margin-inline-start, .5rem)}ngx-column-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>.right:has(ngx-actions-group)>ngx-filters-group{flex:none}ngx-column-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle]) ngx-actions-group{justify-content:flex-end}ngx-column-bar>.right,ngx-column-bar>ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-column-bar-elements-gap, .75rem)}ngx-column-bar>.right{flex:1;justify-content:flex-end}ngx-column-bar>ngx-actions-group{flex:1;min-inline-size:var(--ngx-column-bar-actions-group-min-inline-size, 3rem)}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
497
497
  }
498
498
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxColumnBarComponent, decorators: [{
499
499
  type: Component,
500
- args: [{ selector: 'ngx-column-bar', imports: [NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-column-bar{display:flex;align-items:center;min-height:var(--ngx-column-bar-min-height, 3rem);padding:var(--ngx-column-bar-padding, .25rem 0);gap:var(--ngx-column-bar-gap, .75rem)}ngx-column-bar h1,ngx-column-bar h2,ngx-column-bar h3,ngx-column-bar h4,ngx-column-bar h5,ngx-column-bar h6{white-space:nowrap;margin:0;font:var(--mat-sys-title-medium);letter-spacing:var(--mat-sys-title-medium-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-column-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-column-bar h1:first-child,ngx-column-bar h2:first-child,ngx-column-bar h3:first-child,ngx-column-bar h4:first-child,ngx-column-bar h5:first-child,ngx-column-bar h6:first-child{margin-inline-start:var(--ngx-column-bar-title-margin-inline-start, .5rem)}ngx-column-bar:has(h1,h2,h3,h4,h5,h6) .right:has(ngx-actions-group) ngx-filters-group{flex:none}ngx-column-bar:has(h1,h2,h3,h4,h5,h6) ngx-actions-group{justify-content:flex-end}ngx-column-bar .right,ngx-column-bar ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-column-bar-elements-gap, .75rem)}ngx-column-bar .right{flex:1;justify-content:flex-end}ngx-column-bar ngx-actions-group{flex:1;min-inline-size:var(--ngx-column-bar-actions-group-min-inline-size, 3rem)}\n"] }]
500
+ args: [{ selector: 'ngx-column-bar', imports: [NgTemplateOutlet], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-column-bar{display:flex;align-items:center;min-height:var(--ngx-column-bar-min-height, 3rem);padding:var(--ngx-column-bar-padding, .25rem 0);gap:var(--ngx-column-bar-gap, .75rem);min-width:0}ngx-column-bar h1[ngxBarTitle],ngx-column-bar h2[ngxBarTitle],ngx-column-bar h3[ngxBarTitle],ngx-column-bar h4[ngxBarTitle],ngx-column-bar h5[ngxBarTitle],ngx-column-bar h6[ngxBarTitle]{white-space:nowrap;margin:0;font:var(--mat-sys-title-medium);letter-spacing:var(--mat-sys-title-medium-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-column-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-column-bar h1[ngxBarTitle]:first-child,ngx-column-bar h2[ngxBarTitle]:first-child,ngx-column-bar h3[ngxBarTitle]:first-child,ngx-column-bar h4[ngxBarTitle]:first-child,ngx-column-bar h5[ngxBarTitle]:first-child,ngx-column-bar h6[ngxBarTitle]:first-child{margin-inline-start:var(--ngx-column-bar-title-margin-inline-start, .5rem)}ngx-column-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>.right:has(ngx-actions-group)>ngx-filters-group{flex:none}ngx-column-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle]) ngx-actions-group{justify-content:flex-end}ngx-column-bar>.right,ngx-column-bar>ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-column-bar-elements-gap, .75rem)}ngx-column-bar>.right{flex:1;justify-content:flex-end}ngx-column-bar>ngx-actions-group{flex:1;min-inline-size:var(--ngx-column-bar-actions-group-min-inline-size, 3rem)}\n"] }]
501
501
  }], propDecorators: { filtersGroup: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxFiltersGroupComponent), { isSignal: true }] }], searchBarContainer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxSearchBarContainerComponent), { isSignal: true }] }], barTitle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxBarTitleDirective), { isSignal: true }] }] } });
502
502
 
503
503
  class NgxLayoutComponent {
@@ -511,30 +511,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
511
511
 
512
512
  class NgxMainBarComponent {
513
513
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxMainBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
514
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.6", type: NgxMainBarComponent, isStandalone: true, selector: "ngx-main-bar", ngImport: i0, template: "<ng-content select=\"ngx-actions-group\"></ng-content>\n<ng-content select=\"[ngxContentLeft]\"></ng-content>\n<div class=\"right\">\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n</div>\n", styles: [":host{display:flex;align-items:center;padding:var(--ngx-main-bar-padding, .25rem 1rem);gap:var(--ngx-main-bar-gap, .75rem)}:host .right{flex:1;display:flex;justify-content:flex-end;gap:var(--ngx-main-bar-right-gap, .75rem)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
514
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.6", type: NgxMainBarComponent, isStandalone: true, selector: "ngx-main-bar", ngImport: i0, template: "<ng-content select=\"ngx-actions-group\"></ng-content>\n<ng-content select=\"[ngxContentLeft]\"></ng-content>\n<div class=\"right\">\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n</div>\n", styles: [":host{display:flex;align-items:center;padding:var(--ngx-main-bar-padding, .25rem 1rem);gap:var(--ngx-main-bar-gap, .75rem)}:host>.right{flex:1;display:flex;justify-content:flex-end;gap:var(--ngx-main-bar-right-gap, .75rem)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
515
515
  }
516
516
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxMainBarComponent, decorators: [{
517
517
  type: Component,
518
- args: [{ selector: 'ngx-main-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ngx-actions-group\"></ng-content>\n<ng-content select=\"[ngxContentLeft]\"></ng-content>\n<div class=\"right\">\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n</div>\n", styles: [":host{display:flex;align-items:center;padding:var(--ngx-main-bar-padding, .25rem 1rem);gap:var(--ngx-main-bar-gap, .75rem)}:host .right{flex:1;display:flex;justify-content:flex-end;gap:var(--ngx-main-bar-right-gap, .75rem)}\n"] }]
518
+ args: [{ selector: 'ngx-main-bar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ngx-actions-group\"></ng-content>\n<ng-content select=\"[ngxContentLeft]\"></ng-content>\n<div class=\"right\">\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n</div>\n", styles: [":host{display:flex;align-items:center;padding:var(--ngx-main-bar-padding, .25rem 1rem);gap:var(--ngx-main-bar-gap, .75rem)}:host>.right{flex:1;display:flex;justify-content:flex-end;gap:var(--ngx-main-bar-right-gap, .75rem)}\n"] }]
519
519
  }] });
520
520
 
521
521
  class NgxPanelComponent {
522
522
  appearance = input(undefined, ...(ngDevMode ? [{ debugName: "appearance" }] : []));
523
523
  contentPadding = input(undefined, ...(ngDevMode ? [{ debugName: "contentPadding" }] : []));
524
524
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
525
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.6", type: NgxPanelComponent, isStandalone: true, selector: "ngx-panel", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.appearance": "this.appearance()" } }, ngImport: i0, template: "<ng-content select=\"ngx-panel-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: ["ngx-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box;block-size:100%;border-radius:var(--ngx-panel-radius, 2rem);padding:var(--ngx-panel-padding, .25rem);background-color:var(--mat-sys-surface-container-lowest);min-width:min-content}ngx-panel[appearance=transparent]{background-color:transparent}ngx-panel .content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-panel-content-gap, .5rem);padding:var(--ngx-panel-content-padding, .25rem .75rem);flex:1}ngx-panel .content:has(>ngx-column){padding:0;flex-direction:row;gap:var(--ngx-panel-content-column-gap, 1rem)}ngx-panel .content:has(>ngx-column) ngx-column+ngx-column:before{position:absolute;content:\"\";display:block;width:var(--ngx-panel-content-column-divider-width, 1px);background-color:var(--mat-sys-outline-variant);inset-block:0;inset-inline-start:var(--ngx-panel-content-divider-inset-inline-start, -8.5px)}ngx-panel .content:has(>ngx-column) ngx-column:first-child{margin-inline-start:var(--ngx-panel-first-column-margin-inline-start, .25rem)}ngx-panel .content:has(>ngx-column) ngx-column:last-child{margin-inline-end:var(--ngx-panel-last-column-margin-inline-end, .25rem)}ngx-panel .content.no-padding{padding:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
525
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.6", type: NgxPanelComponent, isStandalone: true, selector: "ngx-panel", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, contentPadding: { classPropertyName: "contentPadding", publicName: "contentPadding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.appearance": "this.appearance()" } }, ngImport: i0, template: "<ng-content select=\"ngx-panel-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: ["ngx-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box;block-size:100%;border-radius:var(--ngx-panel-radius, 2rem);padding:var(--ngx-panel-padding, .25rem);background-color:var(--mat-sys-surface-container-lowest);min-width:0}ngx-panel[appearance=transparent]{background-color:transparent}ngx-panel>.content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-panel-content-gap, .5rem);padding:var(--ngx-panel-content-padding, .25rem .75rem);flex:1}ngx-panel>.content:has(>ngx-column){padding:0;flex-direction:row;gap:var(--ngx-panel-content-column-gap, 1rem)}ngx-panel>.content:has(>ngx-column) ngx-column+ngx-column:before{position:absolute;content:\"\";display:block;width:var(--ngx-panel-content-column-divider-width, 1px);background-color:var(--mat-sys-outline-variant);inset-block:0;inset-inline-start:var(--ngx-panel-content-divider-inset-inline-start, -8.5px)}ngx-panel>.content:has(>ngx-column) ngx-column:first-child{margin-inline-start:var(--ngx-panel-first-column-margin-inline-start, .25rem)}ngx-panel>.content:has(>ngx-column) ngx-column:last-child{margin-inline-end:var(--ngx-panel-last-column-margin-inline-end, .25rem)}ngx-panel>.content.no-padding{padding:0}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
526
526
  }
527
527
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxPanelComponent, decorators: [{
528
528
  type: Component,
529
529
  args: [{ selector: 'ngx-panel', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
530
530
  // eslint-disable-next-line @typescript-eslint/naming-convention
531
531
  '[attr.appearance]': 'this.appearance()'
532
- }, template: "<ng-content select=\"ngx-panel-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: ["ngx-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box;block-size:100%;border-radius:var(--ngx-panel-radius, 2rem);padding:var(--ngx-panel-padding, .25rem);background-color:var(--mat-sys-surface-container-lowest);min-width:min-content}ngx-panel[appearance=transparent]{background-color:transparent}ngx-panel .content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-panel-content-gap, .5rem);padding:var(--ngx-panel-content-padding, .25rem .75rem);flex:1}ngx-panel .content:has(>ngx-column){padding:0;flex-direction:row;gap:var(--ngx-panel-content-column-gap, 1rem)}ngx-panel .content:has(>ngx-column) ngx-column+ngx-column:before{position:absolute;content:\"\";display:block;width:var(--ngx-panel-content-column-divider-width, 1px);background-color:var(--mat-sys-outline-variant);inset-block:0;inset-inline-start:var(--ngx-panel-content-divider-inset-inline-start, -8.5px)}ngx-panel .content:has(>ngx-column) ngx-column:first-child{margin-inline-start:var(--ngx-panel-first-column-margin-inline-start, .25rem)}ngx-panel .content:has(>ngx-column) ngx-column:last-child{margin-inline-end:var(--ngx-panel-last-column-margin-inline-end, .25rem)}ngx-panel .content.no-padding{padding:0}\n"] }]
532
+ }, template: "<ng-content select=\"ngx-panel-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n", styles: ["ngx-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;box-sizing:border-box;block-size:100%;border-radius:var(--ngx-panel-radius, 2rem);padding:var(--ngx-panel-padding, .25rem);background-color:var(--mat-sys-surface-container-lowest);min-width:0}ngx-panel[appearance=transparent]{background-color:transparent}ngx-panel>.content{overflow:auto;display:flex;flex-direction:column;gap:var(--ngx-panel-content-gap, .5rem);padding:var(--ngx-panel-content-padding, .25rem .75rem);flex:1}ngx-panel>.content:has(>ngx-column){padding:0;flex-direction:row;gap:var(--ngx-panel-content-column-gap, 1rem)}ngx-panel>.content:has(>ngx-column) ngx-column+ngx-column:before{position:absolute;content:\"\";display:block;width:var(--ngx-panel-content-column-divider-width, 1px);background-color:var(--mat-sys-outline-variant);inset-block:0;inset-inline-start:var(--ngx-panel-content-divider-inset-inline-start, -8.5px)}ngx-panel>.content:has(>ngx-column) ngx-column:first-child{margin-inline-start:var(--ngx-panel-first-column-margin-inline-start, .25rem)}ngx-panel>.content:has(>ngx-column) ngx-column:last-child{margin-inline-end:var(--ngx-panel-last-column-margin-inline-end, .25rem)}ngx-panel>.content.no-padding{padding:0}\n"] }]
533
533
  }], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], contentPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentPadding", required: false }] }] } });
534
534
 
535
535
  class NgxPanelBarComponent {
536
536
  // inputs
537
- hasBackButton = input(...(ngDevMode ? [undefined, { debugName: "hasBackButton" }] : []));
537
+ withBackButton = input(...(ngDevMode ? [undefined, { debugName: "withBackButton" }] : []));
538
538
  closable = input(...(ngDevMode ? [undefined, { debugName: "closable" }] : []));
539
539
  // output
540
540
  backClicked = output();
@@ -556,12 +556,12 @@ class NgxPanelBarComponent {
556
556
  this.closeClicked.emit();
557
557
  }
558
558
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxPanelBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
559
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgxPanelBarComponent, isStandalone: true, selector: "ngx-panel-bar", inputs: { hasBackButton: { classPropertyName: "hasBackButton", publicName: "hasBackButton", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backClicked: "backClicked", closeClicked: "closeClicked" }, queries: [{ propertyName: "actionsGroup", first: true, predicate: NgxActionsGroupComponent, descendants: true, isSignal: true }, { propertyName: "filtersGroup", first: true, predicate: NgxFiltersGroupComponent, descendants: true, isSignal: true }, { propertyName: "searchBarContainer", first: true, predicate: NgxSearchBarContainerComponent, descendants: true, isSignal: true }, { propertyName: "barTitle", first: true, predicate: NgxBarTitleDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (hasBackButton()) {\n <button\n mat-icon-button\n aria-label=\"Back button\"\n matTooltip=\"{{ intl?.back ?? 'Back' }}\"\n (click)=\"emitBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n @if (closable()) {\n <button\n mat-icon-button\n class=\"close-button\"\n aria-label=\"Close button\"\n matTooltip=\"{{ intl?.close ?? 'Close' }}\"\n (click)=\"emitCloseClicked()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-panel-bar{display:flex;align-items:center;padding:var(--ngx-panel-bar-padding, .25rem);gap:var(--ngx-panel-bar-gap, .75rem);min-height:var(--ngx-panel-bar-min-height, 3rem);flex-wrap:nowrap}ngx-panel-bar h1,ngx-panel-bar h2,ngx-panel-bar h3,ngx-panel-bar h4,ngx-panel-bar h5,ngx-panel-bar h6{white-space:nowrap;margin:0;font:var(--mat-sys-title-large);letter-spacing:var(--mat-sys-title-large-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-panel-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-panel-bar h1:first-child,ngx-panel-bar h2:first-child,ngx-panel-bar h3:first-child,ngx-panel-bar h4:first-child,ngx-panel-bar h5:first-child,ngx-panel-bar h6:first-child{padding-inline-start:var(--ngx-panel-bar-title-first-child-padding-start, .5rem)}ngx-panel-bar:has(h1,h2,h3,h4,h5,h6) .right:has(ngx-actions-group) ngx-filters-group{flex:none}ngx-panel-bar:has(h1,h2,h3,h4,h5,h6) ngx-actions-group{justify-content:flex-end}ngx-panel-bar .right,ngx-panel-bar ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-panel-bar-elements-gap, .75rem)}ngx-panel-bar .right{flex:1;justify-content:flex-end}ngx-panel-bar ngx-actions-group{flex:1;min-inline-size:var(--ngx-panel-bar-actions-group-min-inline-size, 3rem)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
559
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: NgxPanelBarComponent, isStandalone: true, selector: "ngx-panel-bar", inputs: { withBackButton: { classPropertyName: "withBackButton", publicName: "withBackButton", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { backClicked: "backClicked", closeClicked: "closeClicked" }, queries: [{ propertyName: "actionsGroup", first: true, predicate: NgxActionsGroupComponent, descendants: true, isSignal: true }, { propertyName: "filtersGroup", first: true, predicate: NgxFiltersGroupComponent, descendants: true, isSignal: true }, { propertyName: "searchBarContainer", first: true, predicate: NgxSearchBarContainerComponent, descendants: true, isSignal: true }, { propertyName: "barTitle", first: true, predicate: NgxBarTitleDirective, descendants: true, isSignal: true }], ngImport: i0, template: "@if (withBackButton()) {\n <button\n mat-icon-button\n aria-label=\"Back button\"\n matTooltip=\"{{ intl?.back ?? 'Back' }}\"\n (click)=\"emitBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n @if (closable()) {\n <button\n mat-icon-button\n class=\"close-button\"\n aria-label=\"Close button\"\n matTooltip=\"{{ intl?.close ?? 'Close' }}\"\n (click)=\"emitCloseClicked()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-panel-bar{display:flex;align-items:center;padding:var(--ngx-panel-bar-padding, .25rem);gap:var(--ngx-panel-bar-gap, .75rem);min-height:var(--ngx-panel-bar-min-height, 3rem);flex-wrap:nowrap;min-width:0}ngx-panel-bar h1[ngxBarTitle],ngx-panel-bar h2[ngxBarTitle],ngx-panel-bar h3[ngxBarTitle],ngx-panel-bar h4[ngxBarTitle],ngx-panel-bar h5[ngxBarTitle],ngx-panel-bar h6[ngxBarTitle]{white-space:nowrap;margin:0;font:var(--mat-sys-title-large);letter-spacing:var(--mat-sys-title-large-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-panel-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-panel-bar h1[ngxBarTitle]:first-child,ngx-panel-bar h2[ngxBarTitle]:first-child,ngx-panel-bar h3[ngxBarTitle]:first-child,ngx-panel-bar h4[ngxBarTitle]:first-child,ngx-panel-bar h5[ngxBarTitle]:first-child,ngx-panel-bar h6[ngxBarTitle]:first-child{padding-inline-start:var(--ngx-panel-bar-title-first-child-padding-start, .5rem)}ngx-panel-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>.right:has(ngx-actions-group)>ngx-filters-group{flex:none}ngx-panel-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>ngx-actions-group,ngx-panel-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>.right>ngx-actions-group{justify-content:flex-end}ngx-panel-bar>.right,ngx-panel-bar>ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-panel-bar-elements-gap, .75rem)}ngx-panel-bar>.right{flex:1;justify-content:flex-end}ngx-panel-bar>ngx-actions-group{flex:1;min-inline-size:var(--ngx-panel-bar-actions-group-min-inline-size, 3rem)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
560
560
  }
561
561
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: NgxPanelBarComponent, decorators: [{
562
562
  type: Component,
563
- args: [{ selector: 'ngx-panel-bar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatIcon, MatIconButton, MatTooltip, NgTemplateOutlet], template: "@if (hasBackButton()) {\n <button\n mat-icon-button\n aria-label=\"Back button\"\n matTooltip=\"{{ intl?.back ?? 'Back' }}\"\n (click)=\"emitBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n @if (closable()) {\n <button\n mat-icon-button\n class=\"close-button\"\n aria-label=\"Close button\"\n matTooltip=\"{{ intl?.close ?? 'Close' }}\"\n (click)=\"emitCloseClicked()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-panel-bar{display:flex;align-items:center;padding:var(--ngx-panel-bar-padding, .25rem);gap:var(--ngx-panel-bar-gap, .75rem);min-height:var(--ngx-panel-bar-min-height, 3rem);flex-wrap:nowrap}ngx-panel-bar h1,ngx-panel-bar h2,ngx-panel-bar h3,ngx-panel-bar h4,ngx-panel-bar h5,ngx-panel-bar h6{white-space:nowrap;margin:0;font:var(--mat-sys-title-large);letter-spacing:var(--mat-sys-title-large-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-panel-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-panel-bar h1:first-child,ngx-panel-bar h2:first-child,ngx-panel-bar h3:first-child,ngx-panel-bar h4:first-child,ngx-panel-bar h5:first-child,ngx-panel-bar h6:first-child{padding-inline-start:var(--ngx-panel-bar-title-first-child-padding-start, .5rem)}ngx-panel-bar:has(h1,h2,h3,h4,h5,h6) .right:has(ngx-actions-group) ngx-filters-group{flex:none}ngx-panel-bar:has(h1,h2,h3,h4,h5,h6) ngx-actions-group{justify-content:flex-end}ngx-panel-bar .right,ngx-panel-bar ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-panel-bar-elements-gap, .75rem)}ngx-panel-bar .right{flex:1;justify-content:flex-end}ngx-panel-bar ngx-actions-group{flex:1;min-inline-size:var(--ngx-panel-bar-actions-group-min-inline-size, 3rem)}\n"] }]
564
- }], propDecorators: { hasBackButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasBackButton", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], backClicked: [{ type: i0.Output, args: ["backClicked"] }], closeClicked: [{ type: i0.Output, args: ["closeClicked"] }], actionsGroup: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxActionsGroupComponent), { isSignal: true }] }], filtersGroup: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxFiltersGroupComponent), { isSignal: true }] }], searchBarContainer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxSearchBarContainerComponent), { isSignal: true }] }], barTitle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxBarTitleDirective), { isSignal: true }] }] } });
563
+ args: [{ selector: 'ngx-panel-bar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatIcon, MatIconButton, MatTooltip, NgTemplateOutlet], template: "@if (withBackButton()) {\n <button\n mat-icon-button\n aria-label=\"Back button\"\n matTooltip=\"{{ intl?.back ?? 'Back' }}\"\n (click)=\"emitBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n @if (closable()) {\n <button\n mat-icon-button\n class=\"close-button\"\n aria-label=\"Close button\"\n matTooltip=\"{{ intl?.close ?? 'Close' }}\"\n (click)=\"emitCloseClicked()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n", styles: ["ngx-panel-bar{display:flex;align-items:center;padding:var(--ngx-panel-bar-padding, .25rem);gap:var(--ngx-panel-bar-gap, .75rem);min-height:var(--ngx-panel-bar-min-height, 3rem);flex-wrap:nowrap;min-width:0}ngx-panel-bar h1[ngxBarTitle],ngx-panel-bar h2[ngxBarTitle],ngx-panel-bar h3[ngxBarTitle],ngx-panel-bar h4[ngxBarTitle],ngx-panel-bar h5[ngxBarTitle],ngx-panel-bar h6[ngxBarTitle]{white-space:nowrap;margin:0;font:var(--mat-sys-title-large);letter-spacing:var(--mat-sys-title-large-tracking);color:var(--mat-sys-on-surface-variant);overflow:hidden;min-width:var(--ngx-panel-bar-title-min-width, 6ch);text-overflow:ellipsis}ngx-panel-bar h1[ngxBarTitle]:first-child,ngx-panel-bar h2[ngxBarTitle]:first-child,ngx-panel-bar h3[ngxBarTitle]:first-child,ngx-panel-bar h4[ngxBarTitle]:first-child,ngx-panel-bar h5[ngxBarTitle]:first-child,ngx-panel-bar h6[ngxBarTitle]:first-child{padding-inline-start:var(--ngx-panel-bar-title-first-child-padding-start, .5rem)}ngx-panel-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>.right:has(ngx-actions-group)>ngx-filters-group{flex:none}ngx-panel-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>ngx-actions-group,ngx-panel-bar:has(h1[ngxBarTitle],h2[ngxBarTitle],h3[ngxBarTitle],h4[ngxBarTitle],h5[ngxBarTitle],h6[ngxBarTitle])>.right>ngx-actions-group{justify-content:flex-end}ngx-panel-bar>.right,ngx-panel-bar>ngx-actions-group{display:flex;align-items:center;gap:var(--ngx-panel-bar-elements-gap, .75rem)}ngx-panel-bar>.right{flex:1;justify-content:flex-end}ngx-panel-bar>ngx-actions-group{flex:1;min-inline-size:var(--ngx-panel-bar-actions-group-min-inline-size, 3rem)}\n"] }]
564
+ }], propDecorators: { withBackButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "withBackButton", required: false }] }], closable: [{ type: i0.Input, args: [{ isSignal: true, alias: "closable", required: false }] }], backClicked: [{ type: i0.Output, args: ["backClicked"] }], closeClicked: [{ type: i0.Output, args: ["closeClicked"] }], actionsGroup: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxActionsGroupComponent), { isSignal: true }] }], filtersGroup: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxFiltersGroupComponent), { isSignal: true }] }], searchBarContainer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxSearchBarContainerComponent), { isSignal: true }] }], barTitle: [{ type: i0.ContentChild, args: [i0.forwardRef(() => NgxBarTitleDirective), { isSignal: true }] }] } });
565
565
 
566
566
  /**
567
567
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"hug-ngx-layout.mjs","sources":["../../../projects/layout/src/actions-group/action.directive.ts","../../../projects/layout/src/providers/ngx-layout-intl.ts","../../../projects/layout/src/providers/index.ts","../../../projects/layout/src/actions-group/actions-group.component.ts","../../../projects/layout/src/actions-group/actions-group.component.html","../../../projects/layout/src/app-bar/app-bar.component.ts","../../../projects/layout/src/app-bar/app-bar.component.html","../../../projects/layout/src/column/column.component.ts","../../../projects/layout/src/column/column.component.html","../../../projects/layout/src/directives/bar-title.directive.ts","../../../projects/layout/src/filters-group/filter-chip.model.ts","../../../projects/layout/src/filters-group/filter-chip.directive.ts","../../../projects/layout/src/filters-group/filter-toggle.directive.ts","../../../projects/layout/src/filters-group/filters-group.component.ts","../../../projects/layout/src/filters-group/filters-group.component.html","../../../projects/layout/src/search-bar-container/directives/search-input.directive.ts","../../../projects/layout/src/search-bar-container/search-bar-container.component.ts","../../../projects/layout/src/search-bar-container/search-bar-container.component.html","../../../projects/layout/src/column-bar/column-bar.component.ts","../../../projects/layout/src/column-bar/column-bar.component.html","../../../projects/layout/src/layout.component.ts","../../../projects/layout/src/layout.component.html","../../../projects/layout/src/main-bar/main-bar.component.ts","../../../projects/layout/src/main-bar/main-bar.component.html","../../../projects/layout/src/panel/panel.component.ts","../../../projects/layout/src/panel/panel.component.html","../../../projects/layout/src/panel-bar/panel-bar.component.ts","../../../projects/layout/src/panel-bar/panel-bar.component.html","../../../projects/layout/src/hug-ngx-layout.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'button, [ngxAction]',\n standalone: true\n})\nexport class NgxActionDirective {}\n","import { Injectable } from '@angular/core';\nimport { NgxAbstractIntl } from '@hug/ngx-core';\n/**\n * Data for internationalization\n */\n@Injectable()\nexport class NgxLayoutIntl extends NgxAbstractIntl<NgxLayoutIntl> {\n public help = '';\n public back = '';\n public deleteSearch = '';\n public openSearchBar = '';\n public moreActions = '';\n public allFilters = '';\n public filters = '';\n public actives = '';\n public reset = '';\n public close = '';\n}\n","import { EnvironmentProviders } from '@angular/core';\nimport { NgxOptionsIntl, provideNgxIntl } from '@hug/ngx-core';\n\nimport { NgxLayoutIntl } from './ngx-layout-intl';\n\nexport * from './ngx-layout-intl';\n\n/**\n * Provide the component to the application level.\n * @param options - The component's providing options.\n * @param options.translationsPath - The path to the translations files (default: `translations/ngx-layout`).\n * @param options.customIntl - A custom internationalization class to inject.\n */\nexport const provideNgxLayout = (\n options?: NgxOptionsIntl<NgxLayoutIntl>\n): EnvironmentProviders =>\n provideNgxIntl(\n NgxLayoutIntl,\n options?.translationsPath ?? 'translations/ngx-layout',\n options?.customIntl ?? NgxLayoutIntl\n );\n","import { ChangeDetectionStrategy, Component, computed, contentChildren, effect, ElementRef, inject, Renderer2, type Signal, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\nimport { NgxActionDirective } from './action.directive';\n\nconst buttonGap = 12;\nconst buttonDimensions = 40;\n\n/**\n *\n * @param element\n * @param destroyRef\n * @param box\n * @param defaultSize\n */\nconst resizeSignal = (\n element: () => ElementRef<HTMLElement> | undefined,\n box: ResizeObserverBoxOptions = 'border-box'\n): Signal<ResizeObserverEntry | undefined> => {\n\n const value = signal<ResizeObserverEntry | undefined>(undefined);\n\n effect(onCleanup => {\n const el = element()?.nativeElement;\n if (!el) {\n return;\n }\n\n const initialValue: ResizeObserverEntry = {\n borderBoxSize: [],\n contentRect: new DOMRect(),\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n target: el\n };\n\n value.set(initialValue);\n\n const ro = new ResizeObserver(entries => {\n value.set(entries[0] || initialValue);\n });\n\n ro.observe(el, { box });\n onCleanup(() => {\n ro.disconnect();\n });\n });\n\n return value;\n};\n\n@Component({\n selector: 'ngx-actions-group',\n templateUrl: './actions-group.component.html',\n styleUrl: './actions-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatIcon,\n MatIconButton,\n MatTooltip,\n MatMenu,\n MatMenuTrigger\n ]\n})\nexport class NgxActionsGroupComponent {\n protected readonly hiddenActions = computed(() => {\n const maxVisible = this.getMaxVisibleAction(this.hostWidth());\n return this.iconButtons().slice(maxVisible);\n });\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n private readonly iconButtons = contentChildren<NgxActionDirective, ElementRef<HTMLElement>>(NgxActionDirective, { read: ElementRef });\n\n private readonly container = viewChild.required<ElementRef<HTMLElement>>('container');\n private readonly hiddenContainer = viewChild.required<ElementRef<HTMLElement>>('hiddenContainer');\n\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly hostSize = resizeSignal(() => this.hostElement);\n private readonly hostWidth = computed(() => Math.ceil(this.hostSize()?.contentRect.width || 0));\n\n private readonly visibleActions = computed(() => {\n const maxVisible = this.getMaxVisibleAction(this.hostWidth());\n return this.iconButtons().slice(0, maxVisible);\n });\n\n public constructor() {\n\n effect(() => {\n const buttons = this.iconButtons();\n\n if (buttons.length === 0) {\n return;\n }\n\n const visibleButtons = this.visibleActions();\n const containerEl = this.container();\n visibleButtons.forEach(button => {\n const element = button.nativeElement;\n containerEl.nativeElement.appendChild(element);\n });\n\n const hiddenButtons = this.hiddenActions();\n const hiddenContainerEl = this.hiddenContainer();\n if (hiddenButtons.length > 0) {\n hiddenButtons.forEach(button => {\n const element = button.nativeElement;\n\n const hasMenu =\n element.classList.contains('mat-mdc-menu-trigger');\n\n if (hasMenu) {\n this.renderer.listen(element, 'click', (event: MouseEvent) => {\n event.stopPropagation();\n });\n }\n\n hiddenContainerEl.nativeElement.appendChild(element);\n });\n }\n });\n }\n\n private getMaxVisibleAction(width: number): number {\n\n const maxNumberOfActions = Math.floor(width / (buttonDimensions + buttonGap));\n\n const maxVisibleActions = Math.max(1, maxNumberOfActions);\n\n const totalButtons = this.iconButtons().length;\n\n if (maxVisibleActions >= totalButtons) {\n return totalButtons;\n }\n\n // -1 => Allows for the more button to be displayed\n return maxVisibleActions - 1;\n }\n}\n","<div #container class=\"container\">\n <ng-content select=\"button, [ngxAction]\"></ng-content>\n @if (hiddenActions().length > 0) {\n <button\n matIconButton\n class=\"more-actions-button\"\n [matMenuTriggerFor]=\"menuActionsGroup\"\n matTooltip=\"{{ intl?.moreActions ?? 'More actions' }}\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n }\n <mat-menu #menuActionsGroup=\"matMenu\" class=\"actions-group-menu\">\n <div #hiddenContainer></div>\n </mat-menu>\n</div>\n","import { ChangeDetectionStrategy, Component, inject, input, output } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\n\ntype AppBarMode = 'standard' | 'condensed';\n\n@Component({\n selector: 'ngx-app-bar',\n templateUrl: './app-bar.component.html',\n styleUrl: './app-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIcon, MatIconButton, MatTooltip],\n host: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '[class.condensed]': 'mode()===\"condensed\"'\n }\n})\nexport class NgxAppBarComponent {\n public mode = input<AppBarMode>('standard');\n public title = input.required<string>();\n public subtitle = input<string>();\n public helpUrl = input<string | URL>();\n public withBackButton = input<boolean>(false);\n\n public readonly goBack = output();\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n private helpPopup: Window | undefined;\n\n protected openHelp(): void {\n const params = [\n `height=${screen.height}`,\n `width=${screen.width}`,\n 'fullscreen=yes'\n ].join(',');\n\n if (this.helpPopup) {\n this.helpPopup.close();\n }\n\n this.helpPopup = window.open(this.helpUrl(), 'help_popup', params) ?? undefined;\n this.helpPopup?.moveTo(0, 0);\n }\n\n protected triggerGoBack(): void {\n this.goBack.emit();\n }\n}\n","@if (withBackButton()) {\n <button matIconButton matTooltip=\"{{ intl?.back ?? 'Back' }}\" (click)=\"triggerGoBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n<header class=\"{{ mode() }}\">\n <h1 class=\"title\">{{ title() }}</h1>\n @if (subtitle()) {\n @if (mode() === 'condensed') {\n <mat-icon>chevron_right</mat-icon>\n }\n <h2 class=\"subtitle\">{{ subtitle() }}</h2>\n }\n</header>\n\n<section class=\"actions\">\n <ng-content />\n @if (helpUrl()) {\n <button matIconButton matTooltip=\"{{ intl?.help ?? 'Help' }}\" (click)=\"openHelp()\">\n <mat-icon>help</mat-icon>\n </button>\n }\n</section>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\ntype ContentPadding = 'none' | 'default';\n\n@Component({\n selector: 'ngx-column',\n templateUrl: './column.component.html',\n styleUrl: './column.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxColumnComponent {\n public readonly contentPadding = input<ContentPadding | undefined>(undefined);\n}\n","<ng-content select=\"ngx-column-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'h2[ngxBarTitle], h3[ngxBarTitle], h4[ngxBarTitle], h5[ngxBarTitle], h6[ngxBarTitle]',\n standalone: true\n})\nexport class NgxBarTitleDirective {}\n","import { InjectionToken, type InputSignal, type ModelSignal, type TemplateRef } from '@angular/core';\n\nexport type FilterType = 'toggle' | 'complex';\n\ninterface NgxBaseFilter {\n readonly label: InputSignal<string>;\n readonly active: InputSignal<boolean>;\n readonly type: FilterType;\n}\n\nexport interface NgxToggleFilter extends NgxBaseFilter {\n readonly type: 'toggle';\n readonly active: ModelSignal<boolean>;\n}\n\nexport interface NgxComplexFilter extends NgxBaseFilter {\n readonly selectedFilterLabel: InputSignal<string>;\n readonly templateRef: TemplateRef<unknown>;\n readonly type: 'complex';\n}\n\nexport type NgxFilter = NgxToggleFilter | NgxComplexFilter;\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const FILTER_TOKEN = new InjectionToken<NgxFilter>('FILTER_TOKEN');\n","import { Directive, forwardRef, inject, input, TemplateRef } from '@angular/core';\n\nimport { FILTER_TOKEN, type NgxComplexFilter } from './filter-chip.model';\n\n\n@Directive({\n selector: 'ng-template[ngxFilter]',\n standalone: true,\n providers: [{ provide: FILTER_TOKEN, useExisting: forwardRef(() => NgxFilterDirective) }]\n\n})\nexport class NgxFilterDirective implements NgxComplexFilter {\n public readonly type = 'complex';\n public readonly label = input.required<string>();\n public readonly active = input.required<boolean>();\n public readonly selectedFilterLabel = input('');\n public readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Directive, forwardRef, input, model } from '@angular/core';\n\nimport { FILTER_TOKEN, type NgxToggleFilter } from './filter-chip.model';\n\n\n@Directive({\n selector: 'ng-template[ngxFilterToggle]',\n standalone: true,\n providers: [{ provide: FILTER_TOKEN, useExisting: forwardRef(() => NgxFilterToggleDirective) }]\n})\nexport class NgxFilterToggleDirective implements NgxToggleFilter {\n public readonly type = 'toggle';\n public readonly label = input.required<string>();\n public readonly active = model.required<boolean>();\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { LowerCasePipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, effect, ElementRef, inject, input, output, type Signal, signal, type TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatBadge } from '@angular/material/badge';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatChip, MatChipOption, MatChipSet, MatChipTrailingIcon } from '@angular/material/chips';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\nimport { FILTER_TOKEN } from './filter-chip.model';\n\nconst resizeSignal = (\n element: () => ElementRef<HTMLElement> | undefined,\n box: ResizeObserverBoxOptions = 'border-box'\n): Signal<ResizeObserverEntry | undefined> => {\n\n const value = signal<ResizeObserverEntry | undefined>(undefined);\n\n effect(onCleanup => {\n const el = element()?.nativeElement;\n if (!el) {\n return;\n }\n\n const initialValue: ResizeObserverEntry = {\n borderBoxSize: [],\n contentRect: new DOMRect(),\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n target: el\n };\n\n value.set(initialValue);\n\n const ro = new ResizeObserver(entries => {\n value.set(entries[0] || initialValue);\n });\n\n ro.observe(el, { box });\n onCleanup(() => {\n ro.disconnect();\n });\n });\n\n return value;\n};\n\n@Component({\n selector: 'ngx-filters-group',\n templateUrl: './filters-group.component.html',\n styleUrl: './filters-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatIcon,\n MatIconButton,\n MatChip,\n MatChipOption,\n MatChipTrailingIcon,\n MatChipSet,\n MatTooltip,\n NgTemplateOutlet,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n MatSlideToggle,\n FormsModule,\n MatBadge,\n LowerCasePipe\n ]\n})\nexport class NgxFiltersGroupComponent {\n public readonly resetFilters = output();\n public readonly folded = input<boolean>();\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n // #region Overlay\n protected readonly overlayOrigin = signal<CdkOverlayOrigin | undefined>(undefined);\n protected readonly overlayContent = signal<TemplateRef<unknown> | undefined>(undefined);\n protected readonly overlayOpen = signal<boolean>(false);\n protected readonly moreFiltersOverlay = signal<boolean>(false);\n protected readonly overlayPositions: ConnectionPositionPair[] = [{\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 16\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 16\n }];\n // #endregion\n\n // #region Filters\n protected allFilters = contentChildren(FILTER_TOKEN);\n protected readonly activeFiltersAmount = computed(() => this.invisibleFilters().filter(filter => filter.active()).length);\n\n protected readonly visibleFilters = computed(() => {\n const lastFittingIndex = this.lastFittingIndex();\n if (lastFittingIndex < 0) {\n return [];\n }\n\n return this.allFilters().slice(0, lastFittingIndex);\n });\n\n protected readonly invisibleFilters = computed(() => {\n const lastFittingIndex = this.lastFittingIndex();\n if (lastFittingIndex < 0) {\n return this.allFilters();\n }\n\n return this.allFilters().slice(lastFittingIndex);\n });\n\n private readonly filterContainerRef = viewChild.required<ElementRef<HTMLElement>>('container');\n private readonly filterContainerPadding = computed(() => Number.parseFloat(globalThis.getComputedStyle(this.filterContainerRef().nativeElement).paddingInline));\n\n // #endregion\n\n // #region Host\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly hostSize = resizeSignal(() => this.hostElement);\n private readonly hostWidth = computed(() => Math.ceil(this.hostSize()?.contentRect.width || 0));\n // #endregion\n\n // #region MeasureRow\n private readonly measureRowRef = viewChild<ElementRef<HTMLElement>>('measureRow');\n private readonly measureRowSize = resizeSignal(() => this.measureRowRef());\n private readonly measureRowWidth = computed(() => Math.ceil(this.measureRowSize()?.contentRect.width || 0));\n // #endregion\n\n // #region StaticFields\n private readonly staticFieldsRef = viewChild<ElementRef<HTMLElement>>('static');\n private readonly staticFieldsSize = resizeSignal(() => this.staticFieldsRef());\n private readonly staticFieldsWidth = computed(() => Math.ceil(this.staticFieldsSize()?.contentRect.width || 0));\n // #endregion\n\n private readonly lastFittingIndex = computed(() => {\n const hostWidth = this.hostWidth();\n if (!hostWidth) {\n return -1;\n }\n\n const availableSpace = hostWidth - (this.staticFieldsWidth() + (2 * this.filterContainerPadding()));\n const filters = Array.from(this.measureRowRef()?.nativeElement.querySelectorAll<HTMLElement>('mat-chip-option') ?? []);\n\n if (availableSpace - this.measureRowWidth() >= 0) {\n return filters.length;\n }\n\n return this.getLastFittingIndex(availableSpace, filters);\n });\n\n protected emitResetClicked(): void {\n this.resetFilters.emit();\n }\n\n private getLastFittingIndex(availableSpace: number, elements: readonly HTMLElement[]): number {\n const firstEl = elements[0];\n\n if (!firstEl || availableSpace <= 0 || availableSpace - firstEl.offsetWidth < 0) {\n return -1;\n }\n\n let residualAvailableSpace = availableSpace;\n\n const lastFittingIndex = elements.findIndex(el => {\n residualAvailableSpace -= el.offsetWidth + 16;\n return residualAvailableSpace <= 0;\n });\n\n return lastFittingIndex >= 0 ? lastFittingIndex : elements.length - 1;\n }\n}\n","@if (folded()) {\n <section\n class=\"filter-container\"\n #container\n [matBadge]=\"activeFiltersAmount()\"\n [matBadgeHidden]=\"activeFiltersAmount() <= 0\">\n <button\n mat-icon-button\n aria-label=\"All filters\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"\n this.overlayOrigin.set(trigger);\n this.overlayContent.set(moreFilters);\n this.overlayOpen.set(true);\n this.moreFiltersOverlay.set(true)\n \"\n matTooltip=\"{{ intl?.allFilters ?? 'All filters' }}\">\n <mat-icon>filter_alt</mat-icon>\n </button>\n </section>\n} @else {\n @if (allFilters()) {\n <section #measureRow class=\"measure-row\">\n <mat-chip-set>\n @for (f of allFilters(); track $index) {\n <mat-chip-option [selectable]=\"false\" [selected]=\"f.active()\">\n {{ f.label() }}\n @if (f.type === 'complex' && f.selectedFilterLabel()) {\n <span class=\"selected-label\">: {{ f.selectedFilterLabel() }}</span>\n }\n @if (f.type === 'complex') {\n <mat-icon matChipTrailingIcon>arrow_drop_down</mat-icon>\n }\n </mat-chip-option>\n }\n <mat-chip #overflowMeasure>\n +00 {{ intl?.filters ?? 'Filters' | lowercase }} (00 {{ intl?.actives ?? 'Actives' | lowercase }})\n <mat-icon matChipTrailingIcon>arrow_drop_down</mat-icon>\n </mat-chip>\n </mat-chip-set>\n </section>\n }\n\n <section class=\"filter-container\" #container>\n @if (this.visibleFilters().length) {\n <mat-chip-set>\n @for (f of visibleFilters(); track $index) {\n @if (f.type === 'toggle') {\n <mat-chip-option\n selectable=\"true\"\n [selected]=\"f.active()\"\n (selectionChange)=\"f.active.set($event.selected)\">\n {{ f.label() }}\n </mat-chip-option>\n } @else {\n <mat-chip-option\n [selectable]=\"false\"\n [selected]=\"f.active()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"\n this.overlayOrigin.set(trigger);\n this.overlayContent.set(f.templateRef);\n this.overlayOpen.set(true);\n this.moreFiltersOverlay.set(false)\n \">\n {{ f.label() }}\n @if (f.selectedFilterLabel()) {\n <span class=\"selected-label\">: {{ f.selectedFilterLabel() }}</span>\n }\n <mat-icon\n [class.is-overlay-open]=\"this.overlayOpen() && this.overlayContent() === f.templateRef\"\n matChipTrailingIcon>\n arrow_drop_down\n </mat-icon>\n </mat-chip-option>\n }\n }\n </mat-chip-set>\n }\n <section class=\"static\" #static>\n @if (invisibleFilters().length; as invisibleFiltersAmount) {\n <mat-chip-set>\n <mat-chip\n cdkOverlayOrigin\n [class.filter-active]=\"activeFiltersAmount()\"\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"\n this.overlayOrigin.set(trigger);\n this.overlayContent.set(moreFilters);\n this.overlayOpen.set(true);\n this.moreFiltersOverlay.set(true)\n \">\n +{{ invisibleFiltersAmount }} {{ intl?.filters ?? 'Filters' | lowercase }} ({{\n activeFiltersAmount()\n }}\n {{ intl?.actives ?? 'Actives' | lowercase }})\n <mat-icon\n [class.is-overlay-open]=\"this.overlayOpen() && this.overlayContent() === moreFilters\"\n matChipTrailingIcon>\n arrow_drop_down\n </mat-icon>\n </mat-chip>\n </mat-chip-set>\n }\n <button\n mat-icon-button\n aria-label=\"Reset filters\"\n (click)=\"emitResetClicked()\"\n matTooltip=\"{{ intl?.reset ?? 'Reset' }}\">\n <mat-icon>settings_backup_restore</mat-icon>\n </button>\n </section>\n </section>\n}\n\n<ng-template #moreFilters>\n @if (allFilters()) {\n @for (f of allFilters(); track $index) {\n @if (f.type === 'toggle') {\n <section class=\"filter\">\n <mat-slide-toggle labelPosition=\"before\" [(ngModel)]=\"f.active\">\n {{ f.label() }}\n </mat-slide-toggle>\n </section>\n } @else {\n <section class=\"filter\">\n <div class=\"title\">\n <span class=\"label\">{{ f.label() }}</span>\n <span class=\"value\">{{ f.selectedFilterLabel() }}</span>\n </div>\n @if (f.templateRef) {\n <ng-container *ngTemplateOutlet=\"f.templateRef\"></ng-container>\n }\n </section>\n }\n }\n }\n</ng-template>\n\n@let overlayOrigin = this.overlayOrigin();\n@let overlayOpen = this.overlayOpen();\n@let overlayContent = this.overlayContent();\n@if (overlayOrigin && overlayOpen && overlayContent) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n (detach)=\"this.overlayOpen.set(false)\"\n cdkConnectedOverlayHasBackdrop=\"true\"\n backdrop\n (backdropClick)=\"this.overlayOpen.set(false)\"\n cdkConnectedOverlayPanelClass=\"filter-group--overlay\"\n cdkConnectedOverlayBackdropClass=\"filter-group--overlay--backdrop--transparent\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"32\">\n <div class=\"filters-group--overlay--container\">\n @if (moreFiltersOverlay()) {\n <div class=\"filters--title\">\n <span>{{ intl?.filters ?? 'Filters' }}</span>\n <button\n mat-icon-button\n aria-label=\"Reset filters\"\n (click)=\"emitResetClicked()\"\n matTooltip=\"{{ intl?.reset ?? 'Reset' }}\">\n <mat-icon>settings_backup_restore</mat-icon>\n </button>\n </div>\n }\n <div class=\"filters--content\">\n <ng-container *ngTemplateOutlet=\"overlayContent\"></ng-container>\n </div>\n </div>\n </ng-template>\n}\n","import { Directive, ElementRef, inject, type Signal, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { type FormControl, NgControl } from '@angular/forms';\n\n@Directive({\n selector: 'input[ngxSearchInput]',\n /* eslint-disable @typescript-eslint/naming-convention */\n host: {\n '(blur)': 'blurred.set(true);',\n '(focus)': 'blurred.set(false);'\n }\n})\nexport class NgxSearchInputDirective {\n public readonly blurred = signal<boolean>(false);\n public readonly value: Signal<string>;\n\n private readonly ngControl = inject(NgControl);\n private readonly input = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly control = this.ngControl.control as FormControl<string>;\n\n public constructor() {\n this.value = toSignal(this.control.valueChanges, { initialValue: '' });\n }\n\n public focus(): void {\n this.input.nativeElement.focus();\n }\n\n public reset(): void {\n this.control.reset();\n }\n}\n","import { afterRenderEffect, ChangeDetectionStrategy, Component, computed, contentChild, effect, inject, input, signal, untracked, ViewEncapsulation } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\nimport { NgxSearchInputDirective } from './directives/search-input.directive';\n\n// type SearchBarContainerSize = 'medium' | 'small';\n\n@Component({\n selector: 'ngx-search-bar-container',\n templateUrl: './search-bar-container.component.html',\n styleUrl: './search-bar-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIcon, MatIconButton, MatTooltip]\n /*\n host: {\n '[class.small]': 'size()===\"small\"'\n }\n */\n})\nexport class NgxSearchBarContainerComponent {\n // inputs\n public readonly folded = input<boolean>(false);\n\n /*\n protected size = input<SearchBarContainerSize>('medium');\n protected sizeButtonAttributeName = input<string>();\n protected sizeButtonAttributeValue = input<string>();\n */\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n protected readonly manualFoldingState = signal<boolean>(true);\n protected readonly isFolded = computed(() => this.folded() && this.manualFoldingState() && !this.searchText());\n\n protected readonly searchInput = contentChild(NgxSearchInputDirective);\n protected readonly searchText = computed(() => this.searchInput()?.value());\n\n /*\n private hostElement = inject(ElementRef);\n private renderer = inject(Renderer2);\n */\n\n public constructor() {\n\n /*\n afterRender(() => {\n const containerElement = this.hostElement.nativeElement;\n const buttons = containerElement.querySelectorAll('button') as NodeListOf<HTMLElement>;\n\n buttons.forEach((button: HTMLElement) => {\n if (this.sizeButtonAttributeName()?.trim() && this.sizeButtonAttributeValue()?.trim()) {\n this.renderer.setAttribute(button, this.sizeButtonAttributeName(), this.sizeButtonAttributeValue());\n }\n\n });\n });\n */\n\n afterRenderEffect(() => {\n const searchInput = this.searchInput();\n if (!searchInput) {\n return;\n }\n\n if (!this.isFolded() && this.folded()) {\n searchInput.focus();\n }\n });\n\n effect(() => {\n const baseFoldStatus = this.folded();\n\n if (baseFoldStatus) {\n const searchText = untracked(this.searchText);\n const blurred = this.searchInput()?.blurred();\n\n if (blurred && !searchText) {\n this.manualFoldingState.set(true);\n }\n }\n });\n }\n\n protected toggleFolded(): void {\n this.manualFoldingState.update(folded => !folded);\n }\n\n protected resetInput(): void {\n const searchInput = this.searchInput();\n\n if (!searchInput) {\n return;\n }\n\n searchInput.reset();\n searchInput.focus();\n }\n}\n\n","@if (isFolded()) {\n <button\n matIconButton\n aria-label=\"Open search bar\"\n (click)=\"toggleFolded()\"\n matTooltip=\"{{ intl?.openSearchBar ?? 'Open search bar' }}\">\n <mat-icon>search</mat-icon>\n </button>\n} @else {\n <ng-content select=\"[ngxSearchInput]\"></ng-content>\n\n @if (searchText()) {\n <button\n matIconButton\n aria-label=\"Clear button\"\n (click)=\"resetInput()\"\n matTooltip=\"{{ intl?.deleteSearch ?? 'Clear search' }}\">\n <mat-icon>close</mat-icon>\n </button>\n } @else {\n <mat-icon class=\"icon-search-bar\" aria-hidden=\"false\" aria-label=\"Search icon\" fontIcon=\"search\" />\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, ViewEncapsulation } from '@angular/core';\n\nimport { NgxBarTitleDirective } from '../directives';\nimport { NgxFiltersGroupComponent } from '../filters-group';\nimport { NgxSearchBarContainerComponent } from '../search-bar-container';\n\n@Component({\n selector: 'ngx-column-bar',\n templateUrl: './column-bar.component.html',\n styleUrl: './column-bar.component.scss',\n imports: [NgTemplateOutlet],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxColumnBarComponent {\n protected hasRightContent = computed(() => this.filtersGroup() ?? this.searchBarContainer());\n protected hasTitle = computed(() => !!this.barTitle());\n\n private readonly filtersGroup = contentChild(NgxFiltersGroupComponent);\n private readonly searchBarContainer = contentChild(NgxSearchBarContainerComponent);\n private readonly barTitle = contentChild(NgxBarTitleDirective);\n}\n","@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n\n@Component({\n selector: 'ngx-layout',\n templateUrl: './layout.component.html',\n styleUrl: './layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxLayoutComponent {\n}\n","<ng-content select=\"ngx-app-bar\"></ng-content>\n<ng-content select=\"ngx-main-bar\"></ng-content>\n<!--\n The ng-content's is not clearly defined yet. The potential use-cases are:\n - Display GPD bars\n - Display warnings\n -->\n<div class=\"extra-content\">\n <ng-content></ng-content>\n</div>\n<section class=\"content\">\n <ng-content select=\"ngx-panel\"></ng-content>\n</section>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-main-bar',\n templateUrl: './main-bar.component.html',\n styleUrl: './main-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxMainBarComponent { }\n","<ng-content select=\"ngx-actions-group\"></ng-content>\n<ng-content select=\"[ngxContentLeft]\"></ng-content>\n<div class=\"right\">\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\ntype Appearance = 'transparent' | 'default';\ntype ContentPadding = 'none' | 'default';\n\n@Component({\n selector: 'ngx-panel',\n templateUrl: './panel.component.html',\n styleUrl: './panel.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '[attr.appearance]': 'this.appearance()'\n }\n})\nexport class NgxPanelComponent {\n public readonly appearance = input<Appearance | undefined>(undefined);\n public readonly contentPadding = input<ContentPadding | undefined>(undefined);\n}\n","<ng-content select=\"ngx-panel-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, inject, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxActionsGroupComponent } from '../actions-group';\nimport { NgxBarTitleDirective } from '../directives';\nimport { NgxFiltersGroupComponent } from '../filters-group';\nimport { NgxLayoutIntl } from '../providers';\nimport { NgxSearchBarContainerComponent } from '../search-bar-container';\n\n@Component({\n selector: 'ngx-panel-bar',\n templateUrl: './panel-bar.component.html',\n styleUrl: './panel-bar.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIcon, MatIconButton, MatTooltip, NgTemplateOutlet]\n})\nexport class NgxPanelBarComponent {\n // inputs\n public hasBackButton = input<boolean>();\n public closable = input<boolean>();\n\n // output\n public readonly backClicked = output();\n public readonly closeClicked = output();\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n protected hasRightContent = computed(() => !!(\n this.searchBarContainer()\n ?? this.filtersGroup()\n ?? this.closable()\n ?? (!this.hasTitle() && this.actionsGroup())\n ));\n\n protected hasTitle = computed(() => !!this.barTitle());\n\n private readonly actionsGroup = contentChild(NgxActionsGroupComponent);\n private readonly filtersGroup = contentChild(NgxFiltersGroupComponent);\n private readonly searchBarContainer = contentChild(NgxSearchBarContainerComponent);\n private readonly barTitle = contentChild(NgxBarTitleDirective);\n\n protected emitBackClicked(): void {\n this.backClicked.emit();\n }\n\n protected emitCloseClicked(): void {\n this.closeClicked.emit();\n }\n}\n","@if (hasBackButton()) {\n <button\n mat-icon-button\n aria-label=\"Back button\"\n matTooltip=\"{{ intl?.back ?? 'Back' }}\"\n (click)=\"emitBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n @if (closable()) {\n <button\n mat-icon-button\n class=\"close-button\"\n aria-label=\"Close button\"\n matTooltip=\"{{ intl?.close ?? 'Close' }}\"\n (click)=\"emitCloseClicked()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["resizeSignal"],"mappings":";;;;;;;;;;;;;;;;MAMa,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACHD;;AAEG;AAEG,MAAO,aAAc,SAAQ,eAA8B,CAAA;IACtD,IAAI,GAAG,EAAE;IACT,IAAI,GAAG,EAAE;IACT,YAAY,GAAG,EAAE;IACjB,aAAa,GAAG,EAAE;IAClB,WAAW,GAAG,EAAE;IAChB,UAAU,GAAG,EAAE;IACf,OAAO,GAAG,EAAE;IACZ,OAAO,GAAG,EAAE;IACZ,KAAK,GAAG,EAAE;IACV,KAAK,GAAG,EAAE;uGAVR,aAAa,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;2GAAb,aAAa,EAAA,CAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB;;;ACED;;;;;AAKG;AACI,MAAM,gBAAgB,GAAG,CAC5B,OAAuC,KAEvC,cAAc,CACV,aAAa,EACb,OAAO,EAAE,gBAAgB,IAAI,yBAAyB,EACtD,OAAO,EAAE,UAAU,IAAI,aAAa;;ACV5C,MAAM,SAAS,GAAG,EAAE;AACpB,MAAM,gBAAgB,GAAG,EAAE;AAE3B;;;;;;AAMG;AACH,MAAMA,cAAY,GAAG,CACjB,OAAkD,EAClD,GAAA,GAAgC,YAAY,KACH;AAEzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAkC,SAAS,iDAAC;IAEhE,MAAM,CAAC,SAAS,IAAG;AACf,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,aAAa;QACnC,IAAI,CAAC,EAAE,EAAE;YACL;QACJ;AAEA,QAAA,MAAM,YAAY,GAAwB;AACtC,YAAA,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,IAAI,OAAO,EAAE;AAC1B,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,yBAAyB,EAAE,EAAE;AAC7B,YAAA,MAAM,EAAE;SACX;AAED,QAAA,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAEvB,QAAA,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;YACpC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;AACzC,QAAA,CAAC,CAAC;QAEF,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACvB,SAAS,CAAC,MAAK;YACX,EAAE,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;AACN,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK;AAChB,CAAC;MAgBY,wBAAwB,CAAA;AACd,IAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC;AAC/C,IAAA,CAAC,yDAAC;IAEiB,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAElD,WAAW,GAAG,eAAe,CAA8C,kBAAkB,wDAAI,IAAI,EAAE,UAAU,EAAA,CAAG;AAEpH,IAAA,SAAS,GAAG,SAAS,CAAC,QAAQ,CAA0B,WAAW,CAAC;AACpE,IAAA,eAAe,GAAG,SAAS,CAAC,QAAQ,CAA0B,iBAAiB,CAAC;AAEhF,IAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;AACzD,IAAA,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC;IAE5B,QAAQ,GAAGA,cAAY,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC;IAC/C,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE9E,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;AAClD,IAAA,CAAC,0DAAC;AAEF,IAAA,WAAA,GAAA;QAEI,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAElC,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACtB;YACJ;AAEA,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE;AACpC,YAAA,cAAc,CAAC,OAAO,CAAC,MAAM,IAAG;AAC5B,gBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa;AACpC,gBAAA,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC;AAClD,YAAA,CAAC,CAAC;AAEF,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE;AAC1C,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,EAAE;AAChD,YAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,gBAAA,aAAa,CAAC,OAAO,CAAC,MAAM,IAAG;AAC3B,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa;oBAEpC,MAAM,OAAO,GACT,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC;oBAEtD,IAAI,OAAO,EAAE;AACT,wBAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,KAAiB,KAAI;4BACzD,KAAK,CAAC,eAAe,EAAE;AAC3B,wBAAA,CAAC,CAAC;oBACN;AAEA,oBAAA,iBAAiB,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC;AACxD,gBAAA,CAAC,CAAC;YACN;AACJ,QAAA,CAAC,CAAC;IACN;AAEQ,IAAA,mBAAmB,CAAC,KAAa,EAAA;AAErC,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,gBAAgB,GAAG,SAAS,CAAC,CAAC;QAE7E,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,kBAAkB,CAAC;QAEzD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;AAE9C,QAAA,IAAI,iBAAiB,IAAI,YAAY,EAAE;AACnC,YAAA,OAAO,YAAY;QACvB;;QAGA,OAAO,iBAAiB,GAAG,CAAC;IAChC;uGA3ES,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAQ2D,kBAAkB,EAAA,IAAA,EAAU,UAAU,0RC7EtI,mjBAeA,EAAA,MAAA,EAAA,CAAA,6hBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED+CQ,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,2QACP,cAAc,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAGT,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAdpC,SAAS;+BACI,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B;wBACL,OAAO;wBACP,aAAa;wBACb,UAAU;wBACV,OAAO;wBACP;AACH,qBAAA,EAAA,QAAA,EAAA,mjBAAA,EAAA,MAAA,EAAA,CAAA,6hBAAA,CAAA,EAAA;6HAU2F,kBAAkB,CAAA,EAAA,EAAA,GAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAE3D,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CACL,iBAAiB,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME5DvF,kBAAkB,CAAA;AACpB,IAAA,IAAI,GAAG,KAAK,CAAa,UAAU,gDAAC;AACpC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;IAChC,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;IAC1B,OAAO,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAgB;AAC/B,IAAA,cAAc,GAAG,KAAK,CAAU,KAAK,0DAAC;IAE7B,MAAM,GAAG,MAAM,EAAE;IAEd,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAE3D,IAAA,SAAS;IAEP,QAAQ,GAAA;AACd,QAAA,MAAM,MAAM,GAAG;YACX,CAAA,OAAA,EAAU,MAAM,CAAC,MAAM,CAAA,CAAE;YACzB,CAAA,MAAA,EAAS,MAAM,CAAC,KAAK,CAAA,CAAE;YACvB;AACH,SAAA,CAAC,IAAI,CAAC,GAAG,CAAC;AAEX,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;QAC1B;AAEA,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,IAAI,SAAS;QAC/E,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAChC;IAEU,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB;uGA9BS,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,uzBCpB/B,msBAwBA,EAAA,MAAA,EAAA,CAAA,s+BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDVc,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,uKAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAMnC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAX9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,EAAA,IAAA,EACvC;;AAEF,wBAAA,mBAAmB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,msBAAA,EAAA,MAAA,EAAA,CAAA,s+BAAA,CAAA,EAAA;;;MERQ,kBAAkB,CAAA;AACX,IAAA,cAAc,GAAG,KAAK,CAA6B,SAAS,0DAAC;uGADpE,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,qOCV/B,kLAIA,EAAA,MAAA,EAAA,CAAA,+VAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDMa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACI,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kLAAA,EAAA,MAAA,EAAA,CAAA,+VAAA,CAAA,EAAA;;;MEFtC,oBAAoB,CAAA;uGAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qFAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,qFAAqF;AAC/F,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACkBD;AACO,MAAM,YAAY,GAAG,IAAI,cAAc,CAAY,cAAc,CAAC;;MCb5D,kBAAkB,CAAA;IACX,IAAI,GAAG,SAAS;AAChB,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAW;AAClC,IAAA,mBAAmB,GAAG,KAAK,CAAC,EAAE,+DAAC;AAC/B,IAAA,WAAW,GAAG,MAAM,CAAuB,WAAW,CAAC;uGAL9D,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,oeAHhB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,kBAAkB,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAGhF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,kBAAmB,CAAC,EAAE;AAE3F,iBAAA;;;MCAY,wBAAwB,CAAA;IACjB,IAAI,GAAG,QAAQ;AACf,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAW;uGAHzC,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,6WAFtB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,MAAM,wBAAwB,CAAC,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAEtF,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBALpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,8BAA8B;AACxC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,MAAK,wBAAyB,CAAC,EAAE;AACjG,iBAAA;;;ACKD,MAAM,YAAY,GAAG,CACjB,OAAkD,EAClD,GAAA,GAAgC,YAAY,KACH;AAEzC,IAAA,MAAM,KAAK,GAAG,MAAM,CAAkC,SAAS,iDAAC;IAEhE,MAAM,CAAC,SAAS,IAAG;AACf,QAAA,MAAM,EAAE,GAAG,OAAO,EAAE,EAAE,aAAa;QACnC,IAAI,CAAC,EAAE,EAAE;YACL;QACJ;AAEA,QAAA,MAAM,YAAY,GAAwB;AACtC,YAAA,aAAa,EAAE,EAAE;YACjB,WAAW,EAAE,IAAI,OAAO,EAAE;AAC1B,YAAA,cAAc,EAAE,EAAE;AAClB,YAAA,yBAAyB,EAAE,EAAE;AAC7B,YAAA,MAAM,EAAE;SACX;AAED,QAAA,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;AAEvB,QAAA,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;YACpC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;AACzC,QAAA,CAAC,CAAC;QAEF,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACvB,SAAS,CAAC,MAAK;YACX,EAAE,CAAC,UAAU,EAAE;AACnB,QAAA,CAAC,CAAC;AACN,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,KAAK;AAChB,CAAC;MAyBY,wBAAwB,CAAA;IACjB,YAAY,GAAG,MAAM,EAAE;IACvB,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;IAEtB,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;AAGhD,IAAA,aAAa,GAAG,MAAM,CAA+B,SAAS,yDAAC;AAC/D,IAAA,cAAc,GAAG,MAAM,CAAmC,SAAS,0DAAC;AACpE,IAAA,WAAW,GAAG,MAAM,CAAU,KAAK,uDAAC;AACpC,IAAA,kBAAkB,GAAG,MAAM,CAAU,KAAK,8DAAC;AAC3C,IAAA,gBAAgB,GAA6B,CAAC;AAC7D,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE;SACZ,EAAE;AACC,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,OAAO,EAAE;AACZ,SAAA,CAAC;;;AAIQ,IAAA,UAAU,GAAG,eAAe,CAAC,YAAY,sDAAC;IACjC,mBAAmB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAEtG,IAAA,cAAc,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,QAAA,IAAI,gBAAgB,GAAG,CAAC,EAAE;AACtB,YAAA,OAAO,EAAE;QACb;QAEA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC;AACvD,IAAA,CAAC,0DAAC;AAEiB,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAChD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAChD,QAAA,IAAI,gBAAgB,GAAG,CAAC,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC,UAAU,EAAE;QAC5B;QAEA,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACpD,IAAA,CAAC,4DAAC;AAEe,IAAA,kBAAkB,GAAG,SAAS,CAAC,QAAQ,CAA0B,WAAW,CAAC;IAC7E,sBAAsB,GAAG,QAAQ,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,wBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;;AAK9I,IAAA,WAAW,GAAG,MAAM,CAA0B,UAAU,CAAC;IACzD,QAAQ,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC;IAC/C,SAAS,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,WAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;;AAI9E,IAAA,aAAa,GAAG,SAAS,CAA0B,YAAY,yDAAC;IAChE,cAAc,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACzD,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;;AAI1F,IAAA,eAAe,GAAG,SAAS,CAA0B,QAAQ,2DAAC;IAC9D,gBAAgB,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC7D,iBAAiB,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;;AAG9F,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;QAClC,IAAI,CAAC,SAAS,EAAE;YACZ,OAAO,CAAC,CAAC;QACb;AAEA,QAAA,MAAM,cAAc,GAAG,SAAS,IAAI,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACnG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,aAAa,CAAC,gBAAgB,CAAc,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAEtH,IAAI,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE;YAC9C,OAAO,OAAO,CAAC,MAAM;QACzB;QAEA,OAAO,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC;AAC5D,IAAA,CAAC,4DAAC;IAEQ,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC5B;IAEQ,mBAAmB,CAAC,cAAsB,EAAE,QAAgC,EAAA;AAChF,QAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE3B,QAAA,IAAI,CAAC,OAAO,IAAI,cAAc,IAAI,CAAC,IAAI,cAAc,GAAG,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE;YAC7E,OAAO,CAAC,CAAC;QACb;QAEA,IAAI,sBAAsB,GAAG,cAAc;QAE3C,MAAM,gBAAgB,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAG;AAC7C,YAAA,sBAAsB,IAAI,EAAE,CAAC,WAAW,GAAG,EAAE;YAC7C,OAAO,sBAAsB,IAAI,CAAC;AACtC,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,gBAAgB,IAAI,CAAC,GAAG,gBAAgB,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;IACzE;uGA1GS,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAxB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EA2BM,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpGvD,ktPAkLA,EAAA,MAAA,EAAA,CAAA,k/IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDzHQ,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,OAAO,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,OAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,aAAa,iMACb,mBAAmB,EAAA,QAAA,EAAA,+CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,EAAA,QAAA,EAAA,qEAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,EAAA,8BAAA,EAAA,qCAAA,EAAA,4BAAA,EAAA,4BAAA,EAAA,0BAAA,EAAA,2BAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,+BAAA,EAAA,mCAAA,EAAA,mCAAA,EAAA,yBAAA,EAAA,iCAAA,EAAA,sCAAA,EAAA,gCAAA,EAAA,iCAAA,EAAA,uCAAA,EAAA,kCAAA,EAAA,yBAAA,EAAA,wCAAA,EAAA,+BAAA,EAAA,+BAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,gBAAgB,EAAA,QAAA,EAAA,4DAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,QAAQ,6MACR,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAGR,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAvBpC,SAAS;+BACI,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B;wBACL,OAAO;wBACP,aAAa;wBACb,OAAO;wBACP,aAAa;wBACb,mBAAmB;wBACnB,UAAU;wBACV,UAAU;wBACV,gBAAgB;wBAChB,mBAAmB;wBACnB,gBAAgB;wBAChB,cAAc;wBACd,WAAW;wBACX,QAAQ;wBACR;AACH,qBAAA,EAAA,QAAA,EAAA,ktPAAA,EAAA,MAAA,EAAA,CAAA,k/IAAA,CAAA,EAAA;AA6BsC,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,YAAY,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAqB+B,WAAW,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,CAYzB,YAAY,yEAMV,QAAQ,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;ME/HrE,uBAAuB,CAAA;AAChB,IAAA,OAAO,GAAG,MAAM,CAAU,KAAK,mDAAC;AAChC,IAAA,KAAK;AAEJ,IAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,IAAA,KAAK,GAAG,MAAM,CAA+B,UAAU,CAAC;AACxD,IAAA,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAA8B;AAExE,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC1E;IAEO,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;IACpC;IAEO,KAAK,GAAA;AACR,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;IACxB;uGAlBS,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBARnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,uBAAuB;;AAEjC,oBAAA,IAAI,EAAE;AACF,wBAAA,QAAQ,EAAE,oBAAoB;AAC9B,wBAAA,SAAS,EAAE;AACd;AACJ,iBAAA;;;ACHD;MAea,8BAA8B,CAAA;;AAEvB,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;AAE9C;;;;AAIE;IAEiB,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEhD,IAAA,kBAAkB,GAAG,MAAM,CAAU,IAAI,8DAAC;IAC1C,QAAQ,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC;AAE3F,IAAA,WAAW,GAAG,YAAY,CAAC,uBAAuB,uDAAC;AACnD,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,sDAAC;AAE3E;;;AAGE;AAEF,IAAA,WAAA,GAAA;AAEI;;;;;;;;;;;;AAYE;QAEF,iBAAiB,CAAC,MAAK;AACnB,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE;gBACd;YACJ;YAEA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;gBACnC,WAAW,CAAC,KAAK,EAAE;YACvB;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,CAAC,MAAK;AACR,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE;YAEpC,IAAI,cAAc,EAAE;gBAChB,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE;AAE7C,gBAAA,IAAI,OAAO,IAAI,CAAC,UAAU,EAAE;AACxB,oBAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC;gBACrC;YACJ;AACJ,QAAA,CAAC,CAAC;IACN;IAEU,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC;IACrD;IAEU,UAAU,GAAA;AAChB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QAEtC,IAAI,CAAC,WAAW,EAAE;YACd;QACJ;QAEA,WAAW,CAAC,KAAK,EAAE;QACnB,WAAW,CAAC,KAAK,EAAE;IACvB;uGA7ES,8BAA8B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA9B,8BAA8B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAeO,uBAAuB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtCzE,gvBAuBA,kxCDPc,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,YAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAOnC,8BAA8B,EAAA,UAAA,EAAA,CAAA;kBAb1C,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,aAAA,EAGrB,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,EAAA,QAAA,EAAA,gvBAAA,EAAA,MAAA,EAAA,CAAA,0tCAAA,CAAA,EAAA;sNAsBC,uBAAuB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEvB5D,qBAAqB,CAAA;AACpB,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,2DAAC;AAClF,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,oDAAC;AAErC,IAAA,YAAY,GAAG,YAAY,CAAC,wBAAwB,wDAAC;AACrD,IAAA,kBAAkB,GAAG,YAAY,CAAC,8BAA8B,8DAAC;AACjE,IAAA,QAAQ,GAAG,YAAY,CAAC,oBAAoB,oDAAC;uGANrD,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAIe,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAClB,8BAA8B,2FACxC,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBjE,k6BA2BA,EAAA,MAAA,EAAA,CAAA,0vCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDhBc,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAIjB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBARjC,SAAS;+BACI,gBAAgB,EAAA,OAAA,EAGjB,CAAC,gBAAgB,CAAC,EAAA,aAAA,EACZ,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,k6BAAA,EAAA,MAAA,EAAA,CAAA,0vCAAA,CAAA,EAAA;iGAMF,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAClB,8BAA8B,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACxC,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEZpD,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,sECT/B,qZAaA,EAAA,MAAA,EAAA,CAAA,yeAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDJa,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;+BACI,YAAY,EAAA,eAAA,EAGL,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,qZAAA,EAAA,MAAA,EAAA,CAAA,yeAAA,CAAA,EAAA;;;MECtC,mBAAmB,CAAA;uGAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,wECRhC,2UAOA,EAAA,MAAA,EAAA,CAAA,mOAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FDCa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACI,cAAc,EAAA,eAAA,EAGP,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2UAAA,EAAA,MAAA,EAAA,CAAA,mOAAA,CAAA,EAAA;;;MEUtC,iBAAiB,CAAA;AACV,IAAA,UAAU,GAAG,KAAK,CAAyB,SAAS,sDAAC;AACrD,IAAA,cAAc,GAAG,KAAK,CAA6B,SAAS,0DAAC;uGAFpE,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,6aChB9B,iLAIA,EAAA,MAAA,EAAA,CAAA,mtCAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDYa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAX7B,SAAS;+BACI,WAAW,EAAA,aAAA,EAGN,iBAAiB,CAAC,IAAI,mBACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;;AAEF,wBAAA,mBAAmB,EAAE;AACxB,qBAAA,EAAA,QAAA,EAAA,iLAAA,EAAA,MAAA,EAAA,CAAA,mtCAAA,CAAA,EAAA;;;MEMQ,oBAAoB,CAAA;;IAEtB,aAAa,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,eAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;IAChC,QAAQ,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,UAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAW;;IAGlB,WAAW,GAAG,MAAM,EAAE;IACtB,YAAY,GAAG,MAAM,EAAE;IAEpB,IAAI,GAAG,MAAM,CAAC,aAAa,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AAEzD,IAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,EACxC,IAAI,CAAC,kBAAkB;WACpB,IAAI,CAAC,YAAY;WACjB,IAAI,CAAC,QAAQ;AACb,YAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,CAC/C,2DAAC;AAEQ,IAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,oDAAC;AAErC,IAAA,YAAY,GAAG,YAAY,CAAC,wBAAwB,wDAAC;AACrD,IAAA,YAAY,GAAG,YAAY,CAAC,wBAAwB,wDAAC;AACrD,IAAA,kBAAkB,GAAG,YAAY,CAAC,8BAA8B,8DAAC;AACjE,IAAA,QAAQ,GAAG,YAAY,CAAC,oBAAoB,oDAAC;IAEpD,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;IAC3B;IAEU,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;IAC5B;uGA/BS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAApB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,udAoBgB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACxB,wBAAwB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAClB,8BAA8B,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACxC,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3CjE,ggDA+CA,4yCD7Bc,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,sFAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,iRAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAErD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,iBAGV,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,ggDAAA,EAAA,MAAA,EAAA,CAAA,ovCAAA,CAAA,EAAA;AAsBlB,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,aAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,aAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,IAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAAA,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MACxB,wBAAwB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,UAAA,CAAA,MAClB,8BAA8B,0FACxC,oBAAoB,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;AE3CjE;;AAEG;;;;"}
1
+ {"version":3,"file":"hug-ngx-layout.mjs","sources":["../../../projects/layout/src/actions-group/action.directive.ts","../../../projects/layout/src/providers/ngx-layout-intl.ts","../../../projects/layout/src/providers/index.ts","../../../projects/layout/src/actions-group/actions-group.component.ts","../../../projects/layout/src/actions-group/actions-group.component.html","../../../projects/layout/src/app-bar/app-bar.component.ts","../../../projects/layout/src/app-bar/app-bar.component.html","../../../projects/layout/src/column/column.component.ts","../../../projects/layout/src/column/column.component.html","../../../projects/layout/src/directives/bar-title.directive.ts","../../../projects/layout/src/filters-group/filter-chip.model.ts","../../../projects/layout/src/filters-group/filter-chip.directive.ts","../../../projects/layout/src/filters-group/filter-toggle.directive.ts","../../../projects/layout/src/filters-group/filters-group.component.ts","../../../projects/layout/src/filters-group/filters-group.component.html","../../../projects/layout/src/search-bar-container/directives/search-input.directive.ts","../../../projects/layout/src/search-bar-container/search-bar-container.component.ts","../../../projects/layout/src/search-bar-container/search-bar-container.component.html","../../../projects/layout/src/column-bar/column-bar.component.ts","../../../projects/layout/src/column-bar/column-bar.component.html","../../../projects/layout/src/layout.component.ts","../../../projects/layout/src/layout.component.html","../../../projects/layout/src/main-bar/main-bar.component.ts","../../../projects/layout/src/main-bar/main-bar.component.html","../../../projects/layout/src/panel/panel.component.ts","../../../projects/layout/src/panel/panel.component.html","../../../projects/layout/src/panel-bar/panel-bar.component.ts","../../../projects/layout/src/panel-bar/panel-bar.component.html","../../../projects/layout/src/hug-ngx-layout.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'button, [ngxAction]',\n standalone: true\n})\nexport class NgxActionDirective {}\n","import { Injectable } from '@angular/core';\nimport { NgxAbstractIntl } from '@hug/ngx-core';\n/**\n * Data for internationalization\n */\n@Injectable()\nexport class NgxLayoutIntl extends NgxAbstractIntl<NgxLayoutIntl> {\n public help = '';\n public back = '';\n public deleteSearch = '';\n public openSearchBar = '';\n public moreActions = '';\n public allFilters = '';\n public filters = '';\n public actives = '';\n public reset = '';\n public close = '';\n}\n","import { EnvironmentProviders } from '@angular/core';\nimport { NgxOptionsIntl, provideNgxIntl } from '@hug/ngx-core';\n\nimport { NgxLayoutIntl } from './ngx-layout-intl';\n\nexport * from './ngx-layout-intl';\n\n/**\n * Provide the component to the application level.\n * @param options - The component's providing options.\n * @param options.translationsPath - The path to the translations files (default: `translations/ngx-layout`).\n * @param options.customIntl - A custom internationalization class to inject.\n */\nexport const provideNgxLayout = (\n options?: NgxOptionsIntl<NgxLayoutIntl>\n): EnvironmentProviders =>\n provideNgxIntl(\n NgxLayoutIntl,\n options?.translationsPath ?? 'translations/ngx-layout',\n options?.customIntl ?? NgxLayoutIntl\n );\n","import { ChangeDetectionStrategy, Component, computed, contentChildren, effect, ElementRef, inject, Renderer2, type Signal, signal, viewChild, ViewEncapsulation } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenu, MatMenuTrigger } from '@angular/material/menu';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\nimport { NgxActionDirective } from './action.directive';\n\nconst buttonGap = 12;\nconst buttonDimensions = 40;\n\n/**\n *\n * @param element\n * @param destroyRef\n * @param box\n * @param defaultSize\n */\nconst resizeSignal = (\n element: () => ElementRef<HTMLElement> | undefined,\n box: ResizeObserverBoxOptions = 'border-box'\n): Signal<ResizeObserverEntry | undefined> => {\n\n const value = signal<ResizeObserverEntry | undefined>(undefined);\n\n effect(onCleanup => {\n const el = element()?.nativeElement;\n if (!el) {\n return;\n }\n\n const initialValue: ResizeObserverEntry = {\n borderBoxSize: [],\n contentRect: new DOMRect(),\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n target: el\n };\n\n value.set(initialValue);\n\n const ro = new ResizeObserver(entries => {\n value.set(entries[0] || initialValue);\n });\n\n ro.observe(el, { box });\n onCleanup(() => {\n ro.disconnect();\n });\n });\n\n return value;\n};\n\n@Component({\n selector: 'ngx-actions-group',\n templateUrl: './actions-group.component.html',\n styleUrl: './actions-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatIcon,\n MatIconButton,\n MatTooltip,\n MatMenu,\n MatMenuTrigger\n ]\n})\nexport class NgxActionsGroupComponent {\n protected readonly hiddenActions = computed(() => {\n const maxVisible = this.getMaxVisibleAction(this.hostWidth());\n return this.iconButtons().slice(maxVisible);\n });\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n private readonly iconButtons = contentChildren<NgxActionDirective, ElementRef<HTMLElement>>(NgxActionDirective, { read: ElementRef });\n\n private readonly container = viewChild.required<ElementRef<HTMLElement>>('container');\n private readonly hiddenContainer = viewChild.required<ElementRef<HTMLElement>>('hiddenContainer');\n\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n\n private readonly hostSize = resizeSignal(() => this.hostElement);\n private readonly hostWidth = computed(() => Math.ceil(this.hostSize()?.contentRect.width || 0));\n\n private readonly visibleActions = computed(() => {\n const maxVisible = this.getMaxVisibleAction(this.hostWidth());\n return this.iconButtons().slice(0, maxVisible);\n });\n\n public constructor() {\n\n effect(() => {\n const buttons = this.iconButtons();\n\n if (buttons.length === 0) {\n return;\n }\n\n const visibleButtons = this.visibleActions();\n const containerEl = this.container();\n visibleButtons.forEach(button => {\n const element = button.nativeElement;\n containerEl.nativeElement.appendChild(element);\n });\n\n const hiddenButtons = this.hiddenActions();\n const hiddenContainerEl = this.hiddenContainer();\n if (hiddenButtons.length > 0) {\n hiddenButtons.forEach(button => {\n const element = button.nativeElement;\n\n const hasMenu =\n element.classList.contains('mat-mdc-menu-trigger');\n\n if (hasMenu) {\n this.renderer.listen(element, 'click', (event: MouseEvent) => {\n event.stopPropagation();\n });\n }\n\n hiddenContainerEl.nativeElement.appendChild(element);\n });\n }\n });\n }\n\n private getMaxVisibleAction(width: number): number {\n\n const maxNumberOfActions = Math.floor(width / (buttonDimensions + buttonGap));\n\n const maxVisibleActions = Math.max(1, maxNumberOfActions);\n\n const totalButtons = this.iconButtons().length;\n\n if (maxVisibleActions >= totalButtons) {\n return totalButtons;\n }\n\n // -1 => Allows for the more button to be displayed\n return maxVisibleActions - 1;\n }\n}\n","<div #container class=\"container\">\n <ng-content select=\"button, [ngxAction]\"></ng-content>\n @if (hiddenActions().length > 0) {\n <button\n matIconButton\n class=\"more-actions-button\"\n [matMenuTriggerFor]=\"menuActionsGroup\"\n matTooltip=\"{{ intl?.moreActions ?? 'More actions' }}\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n }\n <mat-menu #menuActionsGroup=\"matMenu\" class=\"actions-group-menu\">\n <div #hiddenContainer></div>\n </mat-menu>\n</div>\n","import { ChangeDetectionStrategy, Component, inject, input, output } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\n\ntype AppBarMode = 'standard' | 'condensed';\n\n@Component({\n selector: 'ngx-app-bar',\n templateUrl: './app-bar.component.html',\n styleUrl: './app-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIcon, MatIconButton, MatTooltip],\n host: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '[class.condensed]': 'mode()===\"condensed\"'\n }\n})\nexport class NgxAppBarComponent {\n public mode = input<AppBarMode>('standard');\n public title = input.required<string>();\n public subtitle = input<string>();\n public helpUrl = input<string | URL>();\n public withBackButton = input<boolean>(false);\n\n public readonly goBack = output();\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n private helpPopup: Window | undefined;\n\n protected openHelp(): void {\n const params = [\n `height=${screen.height}`,\n `width=${screen.width}`,\n 'fullscreen=yes'\n ].join(',');\n\n if (this.helpPopup) {\n this.helpPopup.close();\n }\n\n this.helpPopup = window.open(this.helpUrl(), 'help_popup', params) ?? undefined;\n this.helpPopup?.moveTo(0, 0);\n }\n\n protected triggerGoBack(): void {\n this.goBack.emit();\n }\n}\n","@if (withBackButton()) {\n <button matIconButton matTooltip=\"{{ intl?.back ?? 'Back' }}\" (click)=\"triggerGoBack()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n<header class=\"{{ mode() }}\">\n <h1 class=\"title\">{{ title() }}</h1>\n @if (subtitle()) {\n @if (mode() === 'condensed') {\n <mat-icon>chevron_right</mat-icon>\n }\n <h2 class=\"subtitle\">{{ subtitle() }}</h2>\n }\n</header>\n\n<section class=\"actions\">\n <ng-content />\n @if (helpUrl()) {\n <button matIconButton matTooltip=\"{{ intl?.help ?? 'Help' }}\" (click)=\"openHelp()\">\n <mat-icon>help</mat-icon>\n </button>\n }\n</section>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\ntype ContentPadding = 'none' | 'default';\n\n@Component({\n selector: 'ngx-column',\n templateUrl: './column.component.html',\n styleUrl: './column.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxColumnComponent {\n public readonly contentPadding = input<ContentPadding | undefined>(undefined);\n}\n","<ng-content select=\"ngx-column-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: 'h2[ngxBarTitle], h3[ngxBarTitle], h4[ngxBarTitle], h5[ngxBarTitle], h6[ngxBarTitle]',\n standalone: true\n})\nexport class NgxBarTitleDirective {}\n","import { InjectionToken, type InputSignal, type ModelSignal, type TemplateRef } from '@angular/core';\n\nexport type FilterType = 'toggle' | 'complex';\n\ninterface NgxBaseFilter {\n readonly label: InputSignal<string>;\n readonly active: InputSignal<boolean>;\n readonly type: FilterType;\n}\n\nexport interface NgxToggleFilter extends NgxBaseFilter {\n readonly type: 'toggle';\n readonly active: ModelSignal<boolean>;\n}\n\nexport interface NgxComplexFilter extends NgxBaseFilter {\n readonly selectedFilterLabel: InputSignal<string>;\n readonly templateRef: TemplateRef<unknown>;\n readonly type: 'complex';\n}\n\nexport type NgxFilter = NgxToggleFilter | NgxComplexFilter;\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const FILTER_TOKEN = new InjectionToken<NgxFilter>('FILTER_TOKEN');\n","import { Directive, forwardRef, inject, input, TemplateRef } from '@angular/core';\n\nimport { FILTER_TOKEN, type NgxComplexFilter } from './filter-chip.model';\n\n\n@Directive({\n selector: 'ng-template[ngxFilter]',\n standalone: true,\n providers: [{ provide: FILTER_TOKEN, useExisting: forwardRef(() => NgxFilterDirective) }]\n\n})\nexport class NgxFilterDirective implements NgxComplexFilter {\n public readonly type = 'complex';\n public readonly label = input.required<string>();\n public readonly active = input.required<boolean>();\n public readonly selectedFilterLabel = input('');\n public readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { Directive, forwardRef, input, model } from '@angular/core';\n\nimport { FILTER_TOKEN, type NgxToggleFilter } from './filter-chip.model';\n\n\n@Directive({\n selector: 'ng-template[ngxFilterToggle]',\n standalone: true,\n providers: [{ provide: FILTER_TOKEN, useExisting: forwardRef(() => NgxFilterToggleDirective) }]\n})\nexport class NgxFilterToggleDirective implements NgxToggleFilter {\n public readonly type = 'toggle';\n public readonly label = input.required<string>();\n public readonly active = model.required<boolean>();\n}\n","import { CdkConnectedOverlay, CdkOverlayOrigin, type ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { LowerCasePipe, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChildren, effect, ElementRef, inject, input, output, type Signal, signal, type TemplateRef, viewChild, ViewEncapsulation } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatBadge } from '@angular/material/badge';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatChip, MatChipOption, MatChipSet, MatChipTrailingIcon } from '@angular/material/chips';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatSlideToggle } from '@angular/material/slide-toggle';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\nimport { FILTER_TOKEN } from './filter-chip.model';\n\nconst resizeSignal = (\n element: () => ElementRef<HTMLElement> | undefined,\n box: ResizeObserverBoxOptions = 'border-box'\n): Signal<ResizeObserverEntry | undefined> => {\n\n const value = signal<ResizeObserverEntry | undefined>(undefined);\n\n effect(onCleanup => {\n const el = element()?.nativeElement;\n if (!el) {\n return;\n }\n\n const initialValue: ResizeObserverEntry = {\n borderBoxSize: [],\n contentRect: new DOMRect(),\n contentBoxSize: [],\n devicePixelContentBoxSize: [],\n target: el\n };\n\n value.set(initialValue);\n\n const ro = new ResizeObserver(entries => {\n value.set(entries[0] || initialValue);\n });\n\n ro.observe(el, { box });\n onCleanup(() => {\n ro.disconnect();\n });\n });\n\n return value;\n};\n\n@Component({\n selector: 'ngx-filters-group',\n templateUrl: './filters-group.component.html',\n styleUrl: './filters-group.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [\n MatIcon,\n MatIconButton,\n MatChip,\n MatChipOption,\n MatChipTrailingIcon,\n MatChipSet,\n MatTooltip,\n NgTemplateOutlet,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n MatSlideToggle,\n FormsModule,\n MatBadge,\n LowerCasePipe\n ]\n})\nexport class NgxFiltersGroupComponent {\n public readonly resetFilters = output();\n public readonly folded = input<boolean>();\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n // #region Overlay\n protected readonly overlayOrigin = signal<CdkOverlayOrigin | undefined>(undefined);\n protected readonly overlayContent = signal<TemplateRef<unknown> | undefined>(undefined);\n protected readonly overlayOpen = signal<boolean>(false);\n protected readonly moreFiltersOverlay = signal<boolean>(false);\n protected readonly overlayPositions: ConnectionPositionPair[] = [{\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n offsetY: 16\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 16\n }];\n // #endregion\n\n // #region Filters\n protected allFilters = contentChildren(FILTER_TOKEN);\n protected readonly activeFiltersAmount = computed(() => this.invisibleFilters().filter(filter => filter.active()).length);\n\n protected readonly visibleFilters = computed(() => {\n const lastFittingIndex = this.lastFittingIndex();\n if (lastFittingIndex < 0) {\n return [];\n }\n\n return this.allFilters().slice(0, lastFittingIndex);\n });\n\n protected readonly invisibleFilters = computed(() => {\n const lastFittingIndex = this.lastFittingIndex();\n if (lastFittingIndex < 0) {\n return this.allFilters();\n }\n\n return this.allFilters().slice(lastFittingIndex);\n });\n\n private readonly filterContainerRef = viewChild.required<ElementRef<HTMLElement>>('container');\n private readonly filterContainerPadding = computed(() => Number.parseFloat(globalThis.getComputedStyle(this.filterContainerRef().nativeElement).paddingInline));\n\n // #endregion\n\n // #region Host\n private readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly hostSize = resizeSignal(() => this.hostElement);\n private readonly hostWidth = computed(() => Math.ceil(this.hostSize()?.contentRect.width || 0));\n // #endregion\n\n // #region MeasureRow\n private readonly measureRowRef = viewChild<ElementRef<HTMLElement>>('measureRow');\n private readonly measureRowSize = resizeSignal(() => this.measureRowRef());\n private readonly measureRowWidth = computed(() => Math.ceil(this.measureRowSize()?.contentRect.width || 0));\n // #endregion\n\n // #region StaticFields\n private readonly staticFieldsRef = viewChild<ElementRef<HTMLElement>>('static');\n private readonly staticFieldsSize = resizeSignal(() => this.staticFieldsRef());\n private readonly staticFieldsWidth = computed(() => Math.ceil(this.staticFieldsSize()?.contentRect.width || 0));\n // #endregion\n\n private readonly lastFittingIndex = computed(() => {\n const hostWidth = this.hostWidth();\n if (!hostWidth) {\n return -1;\n }\n\n const availableSpace = hostWidth - (this.staticFieldsWidth() + (2 * this.filterContainerPadding()));\n const filters = Array.from(this.measureRowRef()?.nativeElement.querySelectorAll<HTMLElement>('mat-chip-option') ?? []);\n\n if (availableSpace - this.measureRowWidth() >= 0) {\n return filters.length;\n }\n\n return this.getLastFittingIndex(availableSpace, filters);\n });\n\n protected emitResetClicked(): void {\n this.resetFilters.emit();\n }\n\n private getLastFittingIndex(availableSpace: number, elements: readonly HTMLElement[]): number {\n const firstEl = elements[0];\n\n if (!firstEl || availableSpace <= 0 || availableSpace - firstEl.offsetWidth < 0) {\n return -1;\n }\n\n let residualAvailableSpace = availableSpace;\n\n const lastFittingIndex = elements.findIndex(el => {\n residualAvailableSpace -= el.offsetWidth + 16;\n return residualAvailableSpace <= 0;\n });\n\n return lastFittingIndex >= 0 ? lastFittingIndex : elements.length - 1;\n }\n}\n","@if (folded()) {\n <section\n class=\"filter-container\"\n #container\n [matBadge]=\"activeFiltersAmount()\"\n [matBadgeHidden]=\"activeFiltersAmount() <= 0\">\n <button\n mat-icon-button\n aria-label=\"All filters\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"\n this.overlayOrigin.set(trigger);\n this.overlayContent.set(moreFilters);\n this.overlayOpen.set(true);\n this.moreFiltersOverlay.set(true)\n \"\n matTooltip=\"{{ intl?.allFilters ?? 'All filters' }}\">\n <mat-icon>filter_alt</mat-icon>\n </button>\n </section>\n} @else {\n @if (allFilters()) {\n <section #measureRow class=\"measure-row\">\n <mat-chip-set>\n @for (f of allFilters(); track $index) {\n <mat-chip-option [selectable]=\"false\" [selected]=\"f.active()\">\n {{ f.label() }}\n @if (f.type === 'complex' && f.selectedFilterLabel()) {\n <span class=\"selected-label\">: {{ f.selectedFilterLabel() }}</span>\n }\n @if (f.type === 'complex') {\n <mat-icon matChipTrailingIcon>arrow_drop_down</mat-icon>\n }\n </mat-chip-option>\n }\n <mat-chip #overflowMeasure>\n +00 {{ intl?.filters ?? 'Filters' | lowercase }} (00 {{ intl?.actives ?? 'Actives' | lowercase }})\n <mat-icon matChipTrailingIcon>arrow_drop_down</mat-icon>\n </mat-chip>\n </mat-chip-set>\n </section>\n }\n\n <section class=\"filter-container\" #container>\n @if (this.visibleFilters().length) {\n <mat-chip-set>\n @for (f of visibleFilters(); track $index) {\n @if (f.type === 'toggle') {\n <mat-chip-option\n selectable=\"true\"\n [selected]=\"f.active()\"\n (selectionChange)=\"f.active.set($event.selected)\">\n {{ f.label() }}\n </mat-chip-option>\n } @else {\n <mat-chip-option\n [selectable]=\"false\"\n [selected]=\"f.active()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"\n this.overlayOrigin.set(trigger);\n this.overlayContent.set(f.templateRef);\n this.overlayOpen.set(true);\n this.moreFiltersOverlay.set(false)\n \">\n {{ f.label() }}\n @if (f.selectedFilterLabel()) {\n <span class=\"selected-label\">: {{ f.selectedFilterLabel() }}</span>\n }\n <mat-icon\n [class.is-overlay-open]=\"this.overlayOpen() && this.overlayContent() === f.templateRef\"\n matChipTrailingIcon>\n arrow_drop_down\n </mat-icon>\n </mat-chip-option>\n }\n }\n </mat-chip-set>\n }\n <section class=\"static\" #static>\n @if (invisibleFilters().length; as invisibleFiltersAmount) {\n <mat-chip-set>\n <mat-chip\n cdkOverlayOrigin\n [class.filter-active]=\"activeFiltersAmount()\"\n #trigger=\"cdkOverlayOrigin\"\n (click)=\"\n this.overlayOrigin.set(trigger);\n this.overlayContent.set(moreFilters);\n this.overlayOpen.set(true);\n this.moreFiltersOverlay.set(true)\n \">\n +{{ invisibleFiltersAmount }} {{ intl?.filters ?? 'Filters' | lowercase }} ({{\n activeFiltersAmount()\n }}\n {{ intl?.actives ?? 'Actives' | lowercase }})\n <mat-icon\n [class.is-overlay-open]=\"this.overlayOpen() && this.overlayContent() === moreFilters\"\n matChipTrailingIcon>\n arrow_drop_down\n </mat-icon>\n </mat-chip>\n </mat-chip-set>\n }\n <button\n mat-icon-button\n aria-label=\"Reset filters\"\n (click)=\"emitResetClicked()\"\n matTooltip=\"{{ intl?.reset ?? 'Reset' }}\">\n <mat-icon>settings_backup_restore</mat-icon>\n </button>\n </section>\n </section>\n}\n\n<ng-template #moreFilters>\n @if (allFilters()) {\n @for (f of allFilters(); track $index) {\n @if (f.type === 'toggle') {\n <section class=\"filter\">\n <mat-slide-toggle labelPosition=\"before\" [(ngModel)]=\"f.active\">\n {{ f.label() }}\n </mat-slide-toggle>\n </section>\n } @else {\n <section class=\"filter\">\n <div class=\"title\">\n <span class=\"label\">{{ f.label() }}</span>\n <span class=\"value\">{{ f.selectedFilterLabel() }}</span>\n </div>\n @if (f.templateRef) {\n <ng-container *ngTemplateOutlet=\"f.templateRef\"></ng-container>\n }\n </section>\n }\n }\n }\n</ng-template>\n\n@let overlayOrigin = this.overlayOrigin();\n@let overlayOpen = this.overlayOpen();\n@let overlayContent = this.overlayContent();\n@if (overlayOrigin && overlayOpen && overlayContent) {\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin\"\n [cdkConnectedOverlayOpen]=\"overlayOpen\"\n (detach)=\"this.overlayOpen.set(false)\"\n cdkConnectedOverlayHasBackdrop=\"true\"\n backdrop\n (backdropClick)=\"this.overlayOpen.set(false)\"\n cdkConnectedOverlayPanelClass=\"filter-group--overlay\"\n cdkConnectedOverlayBackdropClass=\"filter-group--overlay--backdrop--transparent\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayGrowAfterOpen]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"32\">\n <div class=\"filters-group--overlay--container\">\n @if (moreFiltersOverlay()) {\n <div class=\"filters--title\">\n <span>{{ intl?.filters ?? 'Filters' }}</span>\n <button\n mat-icon-button\n aria-label=\"Reset filters\"\n (click)=\"emitResetClicked()\"\n matTooltip=\"{{ intl?.reset ?? 'Reset' }}\">\n <mat-icon>settings_backup_restore</mat-icon>\n </button>\n </div>\n }\n <div class=\"filters--content\">\n <ng-container *ngTemplateOutlet=\"overlayContent\"></ng-container>\n </div>\n </div>\n </ng-template>\n}\n","import { Directive, ElementRef, inject, type Signal, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { type FormControl, NgControl } from '@angular/forms';\n\n@Directive({\n selector: 'input[ngxSearchInput]',\n /* eslint-disable @typescript-eslint/naming-convention */\n host: {\n '(blur)': 'blurred.set(true);',\n '(focus)': 'blurred.set(false);'\n }\n})\nexport class NgxSearchInputDirective {\n public readonly blurred = signal<boolean>(false);\n public readonly value: Signal<string>;\n\n private readonly ngControl = inject(NgControl);\n private readonly input = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly control = this.ngControl.control as FormControl<string>;\n\n public constructor() {\n this.value = toSignal(this.control.valueChanges, { initialValue: '' });\n }\n\n public focus(): void {\n this.input.nativeElement.focus();\n }\n\n public reset(): void {\n this.control.reset();\n }\n}\n","import { afterRenderEffect, ChangeDetectionStrategy, Component, computed, contentChild, effect, inject, input, signal, untracked, ViewEncapsulation } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxLayoutIntl } from '../providers';\nimport { NgxSearchInputDirective } from './directives/search-input.directive';\n\n// type SearchBarContainerSize = 'medium' | 'small';\n\n@Component({\n selector: 'ngx-search-bar-container',\n templateUrl: './search-bar-container.component.html',\n styleUrl: './search-bar-container.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIcon, MatIconButton, MatTooltip]\n /*\n host: {\n '[class.small]': 'size()===\"small\"'\n }\n */\n})\nexport class NgxSearchBarContainerComponent {\n // inputs\n public readonly folded = input<boolean>(false);\n\n /*\n protected size = input<SearchBarContainerSize>('medium');\n protected sizeButtonAttributeName = input<string>();\n protected sizeButtonAttributeValue = input<string>();\n */\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n protected readonly manualFoldingState = signal<boolean>(true);\n protected readonly isFolded = computed(() => this.folded() && this.manualFoldingState() && !this.searchText());\n\n protected readonly searchInput = contentChild(NgxSearchInputDirective);\n protected readonly searchText = computed(() => this.searchInput()?.value());\n\n /*\n private hostElement = inject(ElementRef);\n private renderer = inject(Renderer2);\n */\n\n public constructor() {\n\n /*\n afterRender(() => {\n const containerElement = this.hostElement.nativeElement;\n const buttons = containerElement.querySelectorAll('button') as NodeListOf<HTMLElement>;\n\n buttons.forEach((button: HTMLElement) => {\n if (this.sizeButtonAttributeName()?.trim() && this.sizeButtonAttributeValue()?.trim()) {\n this.renderer.setAttribute(button, this.sizeButtonAttributeName(), this.sizeButtonAttributeValue());\n }\n\n });\n });\n */\n\n afterRenderEffect(() => {\n const searchInput = this.searchInput();\n if (!searchInput) {\n return;\n }\n\n if (!this.isFolded() && this.folded()) {\n searchInput.focus();\n }\n });\n\n effect(() => {\n const baseFoldStatus = this.folded();\n\n if (baseFoldStatus) {\n const searchText = untracked(this.searchText);\n const blurred = this.searchInput()?.blurred();\n\n if (blurred && !searchText) {\n this.manualFoldingState.set(true);\n }\n }\n });\n }\n\n protected toggleFolded(): void {\n this.manualFoldingState.update(folded => !folded);\n }\n\n protected resetInput(): void {\n const searchInput = this.searchInput();\n\n if (!searchInput) {\n return;\n }\n\n searchInput.reset();\n searchInput.focus();\n }\n}\n\n","@if (isFolded()) {\n <button\n matIconButton\n aria-label=\"Open search bar\"\n (click)=\"toggleFolded()\"\n matTooltip=\"{{ intl?.openSearchBar ?? 'Open search bar' }}\">\n <mat-icon>search</mat-icon>\n </button>\n} @else {\n <ng-content select=\"[ngxSearchInput]\"></ng-content>\n\n @if (searchText()) {\n <button\n matIconButton\n aria-label=\"Clear button\"\n (click)=\"resetInput()\"\n matTooltip=\"{{ intl?.deleteSearch ?? 'Clear search' }}\">\n <mat-icon>close</mat-icon>\n </button>\n } @else {\n <mat-icon class=\"icon-search-bar\" aria-hidden=\"false\" aria-label=\"Search icon\" fontIcon=\"search\" />\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, ViewEncapsulation } from '@angular/core';\n\nimport { NgxBarTitleDirective } from '../directives';\nimport { NgxFiltersGroupComponent } from '../filters-group';\nimport { NgxSearchBarContainerComponent } from '../search-bar-container';\n\n@Component({\n selector: 'ngx-column-bar',\n templateUrl: './column-bar.component.html',\n styleUrl: './column-bar.component.scss',\n imports: [NgTemplateOutlet],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxColumnBarComponent {\n protected hasRightContent = computed(() => this.filtersGroup() ?? this.searchBarContainer());\n protected hasTitle = computed(() => !!this.barTitle());\n\n private readonly filtersGroup = contentChild(NgxFiltersGroupComponent);\n private readonly searchBarContainer = contentChild(NgxSearchBarContainerComponent);\n private readonly barTitle = contentChild(NgxBarTitleDirective);\n}\n","@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n\n@Component({\n selector: 'ngx-layout',\n templateUrl: './layout.component.html',\n styleUrl: './layout.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxLayoutComponent {\n}\n","<ng-content select=\"ngx-app-bar\"></ng-content>\n<ng-content select=\"ngx-main-bar\"></ng-content>\n<!--\n The ng-content's is not clearly defined yet. The potential use-cases are:\n - Display GPD bars\n - Display warnings\n -->\n<div class=\"extra-content\">\n <ng-content></ng-content>\n</div>\n<section class=\"content\">\n <ng-content select=\"ngx-panel\"></ng-content>\n</section>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'ngx-main-bar',\n templateUrl: './main-bar.component.html',\n styleUrl: './main-bar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NgxMainBarComponent { }\n","<ng-content select=\"ngx-actions-group\"></ng-content>\n<ng-content select=\"[ngxContentLeft]\"></ng-content>\n<div class=\"right\">\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\ntype Appearance = 'transparent' | 'default';\ntype ContentPadding = 'none' | 'default';\n\n@Component({\n selector: 'ngx-panel',\n templateUrl: './panel.component.html',\n styleUrl: './panel.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n '[attr.appearance]': 'this.appearance()'\n }\n})\nexport class NgxPanelComponent {\n public readonly appearance = input<Appearance | undefined>(undefined);\n public readonly contentPadding = input<ContentPadding | undefined>(undefined);\n}\n","<ng-content select=\"ngx-panel-bar\"></ng-content>\n<section class=\"content\" [class.no-padding]=\"contentPadding() === 'none'\">\n <ng-content></ng-content>\n</section>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, inject, input, output, ViewEncapsulation } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\n\nimport { NgxActionsGroupComponent } from '../actions-group';\nimport { NgxBarTitleDirective } from '../directives';\nimport { NgxFiltersGroupComponent } from '../filters-group';\nimport { NgxLayoutIntl } from '../providers';\nimport { NgxSearchBarContainerComponent } from '../search-bar-container';\n\n@Component({\n selector: 'ngx-panel-bar',\n templateUrl: './panel-bar.component.html',\n styleUrl: './panel-bar.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatIcon, MatIconButton, MatTooltip, NgTemplateOutlet]\n})\nexport class NgxPanelBarComponent {\n // inputs\n public withBackButton = input<boolean>();\n public closable = input<boolean>();\n\n // output\n public readonly backClicked = output();\n public readonly closeClicked = output();\n\n protected readonly intl = inject(NgxLayoutIntl, { optional: true });\n\n protected hasRightContent = computed(() => !!(\n this.searchBarContainer()\n ?? this.filtersGroup()\n ?? this.closable()\n ?? (!this.hasTitle() && this.actionsGroup())\n ));\n\n protected hasTitle = computed(() => !!this.barTitle());\n\n private readonly actionsGroup = contentChild(NgxActionsGroupComponent);\n private readonly filtersGroup = contentChild(NgxFiltersGroupComponent);\n private readonly searchBarContainer = contentChild(NgxSearchBarContainerComponent);\n private readonly barTitle = contentChild(NgxBarTitleDirective);\n\n protected emitBackClicked(): void {\n this.backClicked.emit();\n }\n\n protected emitCloseClicked(): void {\n this.closeClicked.emit();\n }\n}\n","@if (withBackButton()) {\n <button\n mat-icon-button\n aria-label=\"Back button\"\n matTooltip=\"{{ intl?.back ?? 'Back' }}\"\n (click)=\"emitBackClicked()\">\n <mat-icon>arrow_back</mat-icon>\n </button>\n}\n\n@if (hasTitle()) {\n <ng-content select=\"[ngxBarTitle]\"></ng-content>\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n} @else {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n}\n\n@if (hasRightContent()) {\n <div class=\"right\">\n @if (hasTitle()) {\n <ng-container [ngTemplateOutlet]=\"actionsGroup\"></ng-container>\n } @else {\n <ng-container [ngTemplateOutlet]=\"contentLeft\"></ng-container>\n }\n <ng-content select=\"ngx-filters-group\"></ng-content>\n <ng-content select=\"ngx-search-bar-container\"></ng-content>\n <ng-content select=\"[ngxContentRight]\"></ng-content>\n @if (closable()) {\n <button\n mat-icon-button\n class=\"close-button\"\n aria-label=\"Close button\"\n matTooltip=\"{{ intl?.close ?? 'Close' }}\"\n (click)=\"emitCloseClicked()\">\n <mat-icon>close</mat-icon>\n </button>\n }\n </div>\n}\n\n<ng-template #actionsGroup>\n <ng-content select=\"ngx-actions-group\"></ng-content>\n</ng-template>\n\n<ng-template #contentLeft>\n <ng-content select=\"[ngxContentLeft]\"></ng-content>\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["resizeSignal"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hug/ngx-layout",
3
- "version": "22.0.0-alpha.10",
3
+ "version": "22.0.0-alpha.12",
4
4
  "description": "HUG Angular - layout component",
5
5
  "homepage": "https://github.com/dsi-hug/ngx-components",
6
6
  "license": "GPL-3.0-only",
@@ -202,7 +202,7 @@ declare class NgxPanelComponent {
202
202
  }
203
203
 
204
204
  declare class NgxPanelBarComponent {
205
- hasBackButton: _angular_core.InputSignal<boolean | undefined>;
205
+ withBackButton: _angular_core.InputSignal<boolean | undefined>;
206
206
  closable: _angular_core.InputSignal<boolean | undefined>;
207
207
  readonly backClicked: _angular_core.OutputEmitterRef<void>;
208
208
  readonly closeClicked: _angular_core.OutputEmitterRef<void>;
@@ -216,7 +216,7 @@ declare class NgxPanelBarComponent {
216
216
  protected emitBackClicked(): void;
217
217
  protected emitCloseClicked(): void;
218
218
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxPanelBarComponent, never>;
219
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPanelBarComponent, "ngx-panel-bar", never, { "hasBackButton": { "alias": "hasBackButton"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "backClicked": "backClicked"; "closeClicked": "closeClicked"; }, ["actionsGroup", "filtersGroup", "searchBarContainer", "barTitle"], ["[ngxBarTitle]", "ngx-filters-group", "ngx-search-bar-container", "[ngxContentRight]", "ngx-actions-group", "[ngxContentLeft]"], true, never>;
219
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxPanelBarComponent, "ngx-panel-bar", never, { "withBackButton": { "alias": "withBackButton"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; }, { "backClicked": "backClicked"; "closeClicked": "closeClicked"; }, ["actionsGroup", "filtersGroup", "searchBarContainer", "barTitle"], ["[ngxBarTitle]", "ngx-filters-group", "ngx-search-bar-container", "[ngxContentRight]", "ngx-actions-group", "[ngxContentLeft]"], true, never>;
220
220
  }
221
221
 
222
222
  export { NgxActionDirective, NgxActionsGroupComponent, NgxAppBarComponent, NgxBarTitleDirective, NgxColumnBarComponent, NgxColumnComponent, NgxFilterDirective, NgxFilterToggleDirective, NgxFiltersGroupComponent, NgxLayoutComponent, NgxLayoutIntl, NgxMainBarComponent, NgxPanelBarComponent, NgxPanelComponent, NgxSearchBarContainerComponent, NgxSearchInputDirective, provideNgxLayout };